リファレンス

プロジェクト設定

プロジェクト設定ファイルの場所と上書きのルール、各フィールドに指定できる値とデフォルト値。

プライベートベータはまもなく開始します。CodeDAG はまだインストールできません。ウェイトリストに登録しておくと、招待を順次メールでお送りします。
GitHubで編集

プロジェクト設定は、プロジェクト内のすべてのワークフローに共通のデフォルト値を決めます。決められるのは、同時に実行するタスクの数、タスクとワークフロー全体を完了後に自動承認するかどうか、使えるエージェント、そしてエージェントを指定していないタスクを任せるエージェントです。ワークフローファイルの対応するフィールドと、投入コマンドのオプションは、どちらもプロジェクト設定より優先されます。プロジェクト設定を変更しても、影響するのはそのあとに投入したワークフローだけです。

設定を書く場所

プロジェクト設定は 2 つのファイルに分かれており、どちらもプライマリリポジトリの .codedag/ ディレクトリにあります。共有設定にはチーム共通のデフォルト値を、ローカル設定にはこのコンピューターだけの値を書きます。

ファイル適用範囲.codedag リポジトリと一緒に共有されるか書くのに向いているもの
.codedag/settings.jsonc共有設定。同じ .codedag リポジトリを使うすべてのメンバーに適用されますはいチームで統一するレビューポリシーと、同時実行数の上限およびデフォルトのエージェントの、チーム共通のデフォルト値
.codedag/local/settings.local.jsoncローカル設定。このコンピューターのこのプロジェクトにだけ適用されますいいえ。cdg init が生成する .codedag/.gitignore で、local/ が無視されますチームとは異なる同時実行数の上限とデフォルトのエージェント

cdg init は、この 2 つのファイルを生成します。共有設定は、空のオブジェクト {} です。ローカル設定には、初期化で決まったデフォルトのエージェントと同時実行数の上限のうち、共有設定と異なる値だけが書き込まれます。どちらのファイルも削除でき、存在しないファイルは空のオブジェクトとして扱われます。

ファイル形式と、書き間違えた場合の動作

どちらのファイルも JSONC 形式です。JSONC は、標準の JSON に // と /* */ のコメントを書けるようにした形式です。それ以外の書き方は、JSON に従う必要があります。トップレベルはオブジェクトでなければならず、最後のフィールドの後ろにカンマは書けません。

ファイルを解析できない場合や、以下で説明する 5 つのフィールドのいずれかの値が不正な場合、検証や投入など、プロジェクト設定を読み込む必要のあるコマンドはすべて失敗します。デフォルトの設定に切り替えて実行を続けることはありません。エラーには、問題のあるファイルと、解析に失敗した行と列、または値が不正な理由が示されます。報告されるのは、ファイルごとに最初の 1 か所だけです。

フィールド名を書き間違えても、ほかのフィールドはそのまま有効です。フィールド名は大文字と小文字が区別され、CodeDAG が認識しないキーは読み飛ばされます。cdg dag validate と投入時の検証は、そうしたキーを含むファイルごとに unsupported-setting の警告を 1 件出し、書き間違えたキーと、サポートされているすべてのフィールド名を一覧表示します。警告があっても、検証は失敗しません。投入時には、警告を一度確認すれば、そのまま先へ進めます。

同じフィールドを複数の場所に書いた場合

同じフィールドを両方のファイルに書いた場合は、ローカル設定が優先されます。上書きはフィールド全体を単位として行われ、配列も例外ではありません。共有設定に ["claude", "codex"]、ローカル設定に ["claude"] と書いた場合、有効になるのは ["claude"] で、2 つのリストはマージされません。

ローカル設定に書かれていないフィールドには、共有設定の値が使われます。あとでチームが共有設定を変更すれば、このコンピューターの値も一緒に変わります。初期化でローカル設定に書き込まれるのは、共有設定と異なる値だけです。そのため、チームが共有設定に書いた値は、新しいメンバーにもそのまま適用されます。上書きしたフィールドを共有設定の値に戻したい場合は、そのフィールドをローカル設定から削除します。どちらのファイルにも書かれていないフィールドには、フィールドの表にあるデフォルト値が使われます。

プロジェクト設定の優先順位は、ワークフローファイルと投入コマンドより下です。ワークフローファイルに対応するフィールドを書いた場合や、投入時に上書き用のオプションを付けた場合は、そちらが優先されます。1 つのワークフローまたは 1 回の投入に限って調整するを参照してください。すべての設定元を含めた優先順位の全体は、デフォルト値と優先順位を参照してください。

変更が反映されるタイミング

設定を変更しても、影響するのはそのあとに投入したワークフローだけです。ワークフローの同時実行数の上限、レビューポリシー、各タスクが使うエージェント、マージコンフリクトを解決するセッションが使うデフォルトのエージェントは、いずれも投入時に、その時点の設定に従って確定します。投入済みのワークフローは、そのあとの変更の影響を受けません。

フィールド

プロジェクト設定のフィールドは 5 つで、どれも省略できます。

フィールド型どちらのファイルにも書かれていない場合cdg init がローカル設定に書き込むか
maxConcurrency整数1共有設定の値と異なる場合に書き込みます
taskAutoAcceptedalways、done、none のいずれかalwaysいいえ
dagAutoAcceptedalways、done、none のいずれかdoneいいえ
availableAgentsclaude、codex を要素とする、空でない配列サポートされているすべてのエージェントを使えますいいえ
defaultAgentclaude または codexcodex。使えるエージェントのリストにない場合は、リストの先頭の項目共有設定の値と異なる場合に書き込みます

maxConcurrency

maxConcurrency は、同時に実行するタスク数のデフォルトの上限です。ワークフローファイルに maxConcurrency を書いていないワークフローに使われます。値は整数でなければなりません。正の整数を書くと、最大でその数のタスクが同時に実行され、0 または負の数を書くと、上限を設けないという意味になります。小数や、引用符で囲んだ "3" を書くと、どちらもエラーになります。どちらのファイルにも書かれていない場合は 1 になり、タスクは 1 つずつ実行されます。

--max-concurrency を指定せず、共有設定にもこのフィールドがない場合、cdg init がローカル設定に書き込む値は、登録したレプリカの数に 1 を足した数、つまりワークスペースの総数です。あとでレプリカを追加して初期化し直したときに、この値がどう更新されるかは、ローカル設定を残した場合を参照してください。

デフォルトの分離ブランチモードでは、実際の同時実行数が、利用できるワークスペースの数を超えることもありません。そのため、この値をどれだけ大きくしても、効果があるのはワークスペースの数までです。共有ワークスペースモードは、ワークスペースの数による制限を受けないため、この値がそのまま実際の上限になります。値が 1 より大きい場合、maxConcurrency を書いていない共有ワークスペースモードのワークフローでも、互いに依存しないタスクが同じワークスペースで同時に実行されます。タスクを 1 つずつ実行する必要がある場合は、ワークフローファイルに maxConcurrency: 1 と書いてください。

.codedag/local/settings.local.jsonc
{
  // ほかのフィールドはそのままにする
  "maxConcurrency": 3 // プライマリリポジトリとレプリカ 2 つで、最大 3 つのタスクを同時に実行する
}

taskAutoAccepted

taskAutoAccepted は、プロジェクト内のタスクに適用されるデフォルトのレビューポリシーです。タスクの完了後に自動承認するか、止まってレビューを待つかを決めます。使われるのは、タスクに autoAccepted が書かれておらず、ワークフローに taskAutoAccepted が書かれておらず、投入時に --task-auto-accepted も付けていない場合だけです。値は always、done、none のいずれかです。それぞれの意味は、自動承認に指定できる値を参照してください。どちらのファイルにも書かれていない場合は always、つまり自動承認になります。

チームのタスクがデフォルトですべて止まり、人のレビューを待つようにしたい場合は、共有設定に none と書きます。

.codedag/settings.jsonc
{
  "taskAutoAccepted": "none" // すべてのタスクが完了後に止まり、人のレビューを待つ
}

dagAutoAccepted

dagAutoAccepted は、プロジェクト内のワークフローに適用されるデフォルトのレビューポリシーです。すべてのタスクのレビューが終わったあとに、ワークフロー全体を自動承認するか、止まって結果全体についての結論を待つかを決めます。使われるのは、ワークフローファイルに dagAutoAccepted が書かれておらず、投入時に --dag-auto-accepted も付けていない場合だけです。値は always、done、none のいずれかです。それぞれの意味は、自動承認に指定できる値を参照してください。どちらのファイルにも書かれていない場合は done、つまり自動承認になります。

このフィールドは、タスクのレビューポリシーとは独立しています。タスクは自動承認のままにして、各ワークフローの終了前に一度だけ確認したい場合は、このフィールドだけを設定します。

.codedag/local/settings.local.jsonc
{
  // ほかのフィールドはそのままにする
  "dagAutoAccepted": "none" // タスクは通常どおり自動承認し、ワークフロー全体は終了前に自分の確認を待つ
}

none に設定すると、結論を出すまで、キューでこのワークフローの後ろに並んでいるワークフローは、どれも開始されません。

availableAgents

availableAgents には、このプロジェクトのワークフローで使えるエージェントを列挙します。claude は Claude Code、codex は Codex を表します。検証と投入のとき、CodeDAG は 2 か所のエージェントをチェックします。各タスクが実際に使うエージェント(タスクに書いた agent。書いていない場合はデフォルトのエージェント)と、mergeConflictAgent の agent です。どちらもこのリストに含まれていなければならず、含まれていない場合は検証に失敗します。エラーには、制限がどのファイルによるものかが示され、対処方法が 2 つ挙げられます。そのエージェントをそのファイルの availableAgents に追加するか、このフィールドを削除するかです。

このフィールドは、意図して制限する場合にだけ使います。たとえば、このプロジェクトでは Claude Code だけを使うとチームで決めている場合です。

.codedag/settings.jsonc
{
  "availableAgents": ["claude"]
}

省略した場合は、サポートされているすべてのエージェントを使え、新しくインストールしたエージェントもそのまま使えます。制限が不要になった場合は、このフィールドごと削除してください。空の配列を書くと、availableAgents must list at least one agent; remove the field to allow all supported agents というエラーになります。リストに claude、codex 以外の値がある場合も、同じくエラーになります。

このリストは、このコンピューターにどのエージェントがインストールされているかとは関係ありません。検証と投入では、これとは別に、インストールのチェックも行われます。ワークフローが実際に使うエージェントのコマンドが PATH にない場合は、agent-not-installed エラーになります。投入が拒否されたを参照してください。

defaultAgent

defaultAgent は、プロジェクトのデフォルトのエージェントです。値は claude または codex です。agent を書いていないタスクは、このエージェントが実行し、そのタスクの mode も、このエージェントの書き方に合わせて検証されます。ワークフローに mergeConflictAgent を書いていない場合、すべてのタスクが終わったあとの統合ブランチへのマージでコンフリクトが起きると、それもこのエージェントが解決します。

どちらのファイルにも書かれていない場合、デフォルトのエージェントは codex です。claude、codex 以外の値を書くと、エラーになります。値そのものは大文字と小文字が区別されず、前後の空白は無視されます。こうして決まったエージェントが availableAgents に含まれていない場合は、代わりに availableAgents の先頭の項目が使われます。たとえば、claude だけを許可しているプロジェクトで defaultAgent を書いていなければ、デフォルトのエージェントは Claude Code になります。

cdg init がデフォルトのエージェントをどう決めるか、いつローカル設定に書き込むかは、デフォルトのエージェントの決まり方を参照してください。あとで変えたい場合は、ローカル設定のこのフィールドを変更します。

.codedag/local/settings.local.jsonc
{
  // ほかのフィールドはそのままにする
  "defaultAgent": "claude"
}

デフォルトのエージェントを変えると、agent を書いていないタスクはすべて、もう一方のエージェントが実行するようになります。そのうち mode を書いているタスクは、書き方が合わなくなって検証に失敗することがあります。また、デフォルトのエージェントは、各メンバーが自分のローカル設定で上書きしている可能性もあります。そのため、複数のコンピューターで実行するワークフローでは、すべてのタスクに agent を明記しておくことをおすすめします。

1 つのワークフローまたは 1 回の投入に限って調整する

プロジェクト設定は、すべてのワークフローに共通のデフォルト値です。1 つのワークフローだけを変えたい場合は、そのワークフローファイルに対応するフィールドを書きます。ある 1 回の投入だけを変えたい場合は、cdg dag submit のオプションを使います。どちらの方法でも、プロジェクト設定は変更されません。

調整したいもの1 つのワークフローに限る場合1 回の投入に限る場合
同時実行数の上限ワークフローの maxConcurrency対応するオプションはありません
タスクのレビューポリシーワークフローの taskAutoAccepted、またはタスクの autoAccepted--task-auto-accepted
ワークフロー全体のレビューポリシーワークフローの dagAutoAccepted--dag-auto-accepted
タスクが使うエージェントタスクの agent対応するオプションはありません

たとえば次のコマンドは、今回の投入に限って、すべてのタスクを完了後に止め、レビューを待たせます。

Terminal
cdg dag submit feature --task-auto-accepted none

2 つの投入オプションの詳しい使い方は、今回の投入に限ってレビュー設定を調整するを参照してください。

関連ページ


最終更新