Skip to content

Releases: istb16/dev-orchestra

v1.2.1

Choose a tag to compare

@istb16 istb16 released this 25 Oct 07:47
6f47d3b

1.2.1

プロジェクトごとに、役割(設計、実装、レビューなど)への指示を書いておけるようになりました(#350)。あわせて、Windows で書き換え中の状態ファイルが一瞬「無い」と読まれることがあった不具合を直しました(#358)。互換性を壊す変更はありません。

足したこと:役割ごとの指示と、作業単位のテストの段取り

  • instructions.<role> に、役割ごとの指示を書けます。役割は orchestrator、architect、implementer、review_fixer、reviewers、design_reviewers です。その場に文章で書くか、{file: <path>} でリポジトリの中のファイルを指します。レビュアーの席ごとにも書けます
  • ほかのキーと違い、全体の設定とプロジェクトの設定の両方に書いた指示は、全体のものの後にプロジェクトのものを続けてつなげます
  • CLI は、指示を ## Project instructions の見出しでプロンプトに入れます。指示は CLI 自身の決まりの後に置かれ、それより弱いものとして扱われます。レビュアーへの指示は見る観点を足すことにだけ使え、指摘を出さない・種類を飛ばす・重大度を下げるといった指示には従いません
  • 読めないファイル、普通のファイルでないもの、32 KB を超えるもの、リンクを通るものは、指示なしで走り、note: で知らせます
  • プロジェクトの設定や指示のファイルは、レビューする対象のブランチと一緒に来ることがあります。そのため、これらに触れる変更は高リスクとして扱います。プロジェクトの設定に書かれた指示は、config validate、doctor、review run が役割ごとに知らせます
  • implementation.unit_tests: after_merge にすると、作業単位は lint と型の確認までにとどめ、テストは取り込んだ後にまとめて流します。データベースやポートを取り合うテストのためのものです
  • implementation.worktree_files に、作業単位の worktree に写す、git が無視しているファイル(config/database.yml など)を書けます
  • status に、指示の一覧(Instructions:)、オーケストレーターへの指示、Unit tests: の行が出ます。指示があるときは、承認待ちの行に「指示も見せて承認を求める」と出ます。summary、units status、config show、doctor にも出ます。--json には、キーを足しただけです

変えたこと

  • 作業単位の worktree に写すファイル(CLI の設定ファイル、プロジェクトの設定、計画、決定事項)も、implementation.worktree_files と同じ確認を通すようにしました(#354)。リンク越しのものや、普通のファイルでないものは写さず、note: で知らせて copies_skipped に記録します
  • 自分で書く adapter:Provider.file_read_tools で、CLI がファイルを読む道具の名前を複数書けます(#362)。既定は file_read_tool から作るので、file_read_tool だけを設定している adapter はそのまま動きます

直したこと

  • Windows で、書き換え中のファイルを読むと、一瞬「無い」と判断されることがありました(#358)。os.replace で置き換える間、ファイルの名前が一瞬どこにも無くなるためで、動いているジョブや状態が「無い」と読まれることがありました
    • 書き込みは atomic_file.rename_over を通るようにしました。Windows 10 1709 以降では、名前を一度で差し替える置き換え(SetFileInformationByHandle の POSIX の流儀)を使います。対応していないボリュームでは、そのボリュームを覚えて os.replace に戻ります
    • 読み込み(read_json、read_text、read_text_strict)は、os.path.isfile ではなく、開いた結果で「無い」と判断します。FIFO やデバイスは読みません
    • ウイルス対策ソフトが置き換えた直後のファイルをつかむと、読み込みが数秒待つことがあります。待った後は正しく読めます
  • agy 1.4.7 で、ファイルを読む道具の名前が read_file(引数は Path)になっていました。道具の使い方の報告(Read <path>)と、実機の確かめで、view_file と両方を受け付けます(#362)

実機で確かめた CLI

  • claude 2.1.309(architect のセッションの再開)
  • codex 0.163.0
  • agy 1.4.7

詳しくは CHANGELOG を参照してください。

v1.2.0

Choose a tag to compare

@istb16 istb16 released this 22 Oct 09:27
899c569

1.2.0

plan を「作業の単位」に分けて、単位ごとに、あるいは並べて実装できるようになりました(#343)。単位を書かない plan は、これまでどおり 1 回の実行で進みます。互換性を壊す変更はありません。

足したこと:作業の単位

  • plan に ## Units の節(yaml の一覧)を書くと、作業を単位に分けられます。単位ごとに name、kind(feature、fix、refactor、docs、test、ci、integration)、files、depends_on を書き、単位ごとに ### Unit: <name> の節を置きます
  • units check は、動かせない単位の分け方を断ります(終了コード 2)。たとえば、並べて動く 2 つの単位がファイルを共有している場合や、共有ファイル(implementation.hub_paths)を integration 以外の単位が触る場合です。問題がなければ、実行の順番を段(wave)ごとに出します
  • run implementer --unit <name> で 1 つの単位を実行します。ほかの単位と並べて動くときは、今の作業ツリーから作ったその単位だけの git worktree の中で動き、並べる相手がいなければその場で動きます
  • worktree で動いた単位は units merge <name> で取り込みます。ファイルごとに git merge-file を使い、作業ツリーだけを変えます。衝突したときは .ai/execution/units/<name>-conflicts.md に説明を残して終了コード 7 で止まり、オーケストレーターが review_fixer に解消させます。解消した後は units merge <name> --resolved で記録します
  • レビュアーには毎回、衝突を解消したファイルと、単位が自分の担当の外で変えたファイルを伝えます
  • units status は単位ごとの状態と始められる単位を、units clean は残った worktree の片付けを行います。jobs cancel は単位のジョブの worktree も消します
  • jobs wait に複数のジョブ ID を渡せるようになりました。すべての終わりを待ち、--any を付けると最初の 1 つの終わりを待ちます。ID が 1 つのときの動きは変わりません
  • run architect --unit と units join で、単位ごとに architect に設計させ、1 つの plan にまとめられます。レビューと承認はまとめて 1 回です
  • 新しい implementation の節で、max_parallel(1〜8、既定 2)と hub_paths(既定は CHANGELOG のファイル)を決められます

変えたこと

  • 1 つの plan の作業の単位は、まとめて implementer の試行 1 回分として数えます(#343)。plan のハッシュで最初の単位を実行したときに budgets.implementer を 1 回使い、ほかの単位は追加なしで加わります。同じ回の中で単位をやり直したときだけ、もう 1 回使います。新しい plan のハッシュ(新しい承認)か budget reset で次の回になります。run architect --unit も同じ考え方で budgets.architect を使います。total_delegated_runs と max_runtime_seconds はこれまでどおりすべての実行を数え、--unit なしの run は 1 回使います。budget show は今の回を出し、--json に passes を足しました
  • 作業の進め方の指示(references/workflow.md)を、安く済むように見直しました。CLI の動きは変わりません
    • 設計の依頼では、短い plan を求めます。背景は path:line を挙げた箇条書き、テストは 1 行に 1 つ、手順ごとに触るファイルと関数を書きます。修正の依頼では、指摘のない節はそのまま残します
    • 実装の依頼では、手順に要るものだけを読み、lint と型の確認は手順ごとに 1 回にするよう求めます
    • 実装の手順が 4 つを超える plan は、手順のまとまりごとに順番に動く作業の単位に分けます。数の上限はありません。その場で 1 つずつ動き、試行は合わせて 1 回分です
    • 小さな実装や修正は、その役割に light の段があればそれで動かします
  • 実行がもういない作業の単位は、どこで読んでも失敗として記録するようになりました(#345)。これまでは units clean だけでしたが、units status と run implementer --unit でも、running のまま担当のプロセスがいない単位を failed にします。そのため、その単位を待っていた単位は units clean なしで始められます。run implementer --unit と units join は、plan の Files to Modify にない単位のファイルについて、units check と同じ warning: を出します。単位の worktree に .claude/settings.local.json を写すのは、Claude がその単位を動かすときだけです
  • 自分で書く adapter:Provider.worktree_files(既定 ())で、作業の単位の worktree に写す、git が無視しているファイルを指定できます(#345)

直したこと

  • Windows で、日本語などの ASCII 以外の文字がパイプやファイルへの出力で化けていました。Python はパイプやファイルに ANSI コードページ(日本語の Windows では cp932)で書く一方、オーケストレーターは jobs wait や jobs show --output などの出力を UTF-8 として読むため、任せたエージェントの日本語の返事が文字化けしていました。パイプとファイルへは UTF-8 で書くようにしました。コンソールへの出力は変わりません
  • このため PowerShell(5.1 も 7 も)で出力を取り込む場合($x = dev-orchestra ... や別のコマンドへのパイプ)は、[Console]::OutputEncoding を UTF-8 にしていないと、こんどはそちらで化けます。[Console]::OutputEncoding を UTF-8 にするか、前の出力にしたいときは PYTHONIOENCODING=cp932 を設定してください。PYTHONIOENCODING、PYTHONUTF8、-X utf8 を設定した場合は、常にそれに従います

実機で確かめた CLI

  • claude 2.1.307(architect のセッションの再開)

詳しくは CHANGELOG を参照してください。

v1.1.2

Choose a tag to compare

@istb16 istb16 released this 21 Oct 19:27
b9c2181

1.1.2

長い実行の途中経過の知らせ方を設定で選べるようになり、止まっているかもしれない実行に気づけるようになりました(#330)。設定しなければ、途中経過の出し方はこれまでと変わりません。

足したこと

  • 新しい progress の節で、長い実行の間にオーケストレーターがユーザーへ何を伝えるかを決められます
    • progress.updates:auto(既定)はこれまでどおり。true は architect の実行をすべて裏で動かし、review run もすべて --progress 付きで裏で動かします。false は「止まっているかもしれない」の知らせだけを残します
    • progress.interval_seconds:途中経過を出す間隔(30〜3600 秒、既定 180)
    • progress.quiet_notice_seconds:この時間(既定 600 秒、0 で無効)新しいツールの行が出ない実行は、途中経過で may be stuck: no new tool line for 12m03s のように知らせます。知らせるだけで、実行を止めることはしません
  • jobs show と jobs wait はこの知らせを note: の行で出し、--json の activity に quiet_seconds と may_be_stuck を足しました。review run --progress はレビュアーごとに出します
  • .ai/jobs/<id>.activity のツールの行に時刻 t が付きます。止まっている時間はこれで測ります
  • status に Progress: の行と progress キーを、config show に Progress: の行を足しました
  • jobs wait を --timeout なしで呼ぶと、60 秒ではなく progress.interval_seconds(既定 180 秒)待つようになりました。--timeout を付ければそちらが優先されます

変えたこと

  • config validate は、null を受け付ける設定の多く(review.parallel、design.require_approval、optimization.*、workspace.*、progress.* など)について、問題の文に or null を添えるようになりました。例:review.parallel: must be true or false, or null。変わったのは文面だけで、受け付ける値と問題の並び順は同じです。config validate --json や doctor --json の文面で照合しているスクリプトは、新しい文面に合わせてください
  • CI のテストを分けて走らせるようにしました。OS と Python の組ごとに、Windows は 3 つ、macOS と Ubuntu は 2 つのジョブに分かれ、Tests (<os>, Python <version>, <part>/<parts>) という名前になります。すべてが通ったときだけ Tests ジョブが通ります。ブランチの保護で古い Tests (<os>, Python <version>) を必須にしていた場合は、Tests を必須にしてください。macOS は Python 3.11 だけで試します
  • tests/run_parallel.py に --shard I/N、--timings PATH、--write-timings PATH、--split MODULE.CLASS を足しました。--shard なしで動かしたときは、これまでと同じテストを流します

直したこと

  • Windows で Claude Code やエディターが settings.json を開いていると、hooks install と hooks uninstall が「could not be written」で失敗していました。置き換えを最大 25 回やり直すようにしました。それでも失敗したときは、ファイルを元のまま残します
  • reviewer set --role で役割を変えたとき、その席の関連度のルールを外すようにしました(設定のウィザードと同じ動き)。外したことは知らせます。同じコマンドで --relevance を指定した場合はその値を使い、always は役割にかかわらず残します

実機で確かめた CLI

  • claude 2.1.303、codex-cli 0.163.0(architect のセッションの再開)

詳しくは CHANGELOG を参照してください。

v1.1.1

Choose a tag to compare

@istb16 istb16 released this 15 Oct 07:59
428f608

1.1.1

実機の CLI で確かめるスクリプトの不具合を直したリリースです。プラグインとしての動きは 1.1.0 から変わりません。

直したこと

  • 日本語の Windows の画面(cp932)で scripts/smoke_live.py を動かすと、すべての確認が終わってトークンを使った後、結果を表示するところで、画面に出せない文字(em dash など)のために UnicodeEncodeError で止まっていました。結果が見られず、確認をやり直す必要がありました。dev-orchestra コマンドと同じ対策を入れ、出せない文字は \u2014 のような形で表示するようにしました(#322)

実機で確かめた CLI

  • claude 2.1.290、codex-cli 0.162.1、agy 1.3.5

詳しくは CHANGELOG を参照してください。

v1.1.0

Choose a tag to compare

@istb16 istb16 released this 15 Oct 06:59
256b67d

1.1.0

設計の前に、決めるべき点をまとめてユーザーに質問できるようになりました(#319)。既定では無効で、設定しなければ動きはこれまでと変わりません。互換性を壊す変更はありません。

設計の前の質問

  • design.ask_questions を auto か true にすると、オーケストレーターが要件について質問し、続いて run architect --questions で architect がコードを読んだうえでの質問を出します。どちらも plan を書く前に、まとめてユーザーに尋ねます
  • auto は質問が必要なときだけ、true は毎回 architect の質問を 1 回出してから設計します
  • 質問は design questions record で記録し、ユーザーの答えは design questions answer で残します。選んだ選択肢(--option)、ユーザー自身の言葉(--text)、「おまかせ」(--delegate)のどれかです
  • 未回答の質問がある間は、plan を書く run architect、design approve、run implementer が新しい終了コード 6 で止まります
  • 決まった内容は decisions.md と plan の ## Decisions 節に残り、design レビューでは前提としてレビュアーに渡します。決定そのものへの指摘は、ユーザーに返します
  • 承認の後に答えを変えると、承認は無効になります(decisions-changed)
  • 質問の回数は design.max_question_rounds(既定 2)、architect の質問の実行回数は budgets.architect_questions(既定 3)で制限します
  • status と status --json(design_questions)に質問の状態が出ます。止まる理由にはしません
  • design.require_approval: false(誰も見ていない実行)では、質問は出して記録しますが答えは待たず、未回答のものを architect に任せて進みます

実機で確かめた CLI

  • claude 2.1.290、codex-cli 0.162.1、agy 1.3.5

詳しくは CHANGELOG を参照してください。

v1.0.0

Choose a tag to compare

@istb16 istb16 released this 12 Oct 06:54
99f3443

1.0.0

dev-orchestra の最初の安定版です。ここから先はセマンティックバージョニングに従い、互換性を壊す変更は 2.0.0 で出します。

何ができるか、codex-plugin-cc との違い、Claude Code だけでも使う意味は、紹介記事にまとめました。

約束すること

一覧は README の「Compatibility」にあります。

  • 設定の形式(version: 1):キー、型、受け付ける値。既定値が変わるときは CHANGELOG の Changed に、前と後の値を書きます
  • コマンド、オプション、終了コード:足すことはあっても、消したり意味を変えたりはしません
  • --json の出力:キーは足すだけです。各コマンドのキーと値の一覧は references/json.md にあります
  • .ai/ の形式:足すだけです
  • 組み込みの adapter(claude、codex、agy、mock)の動き
  • 自分で書く adapter:読み込みの決まりと、references/providers.md の最小の例が使う部分(resolve_latest、build_command、option_keys など)

画面に出る文面、notes・warnings の文面、adapter のそれ以外の部分、.ai/ の内部のファイルは約束の対象外です。

0.24.0 からの変更

  • --json の出力の形を references/json.md にまとめました
  • 古い名前の _resolve_latest を定義したままの adapter に、doctor が気づいて名前を改めるよう伝えます。組み込みの adapter を継承したものも同じです
  • パスの一覧のない古いスナップショットは、review run が断り、status も取り直すよう伝えます。高リスクのパスに当たるレビュアーが、黙って外れることがなくなりました
  • config setup は、resolve_latest のない adapter を adapter の失敗として伝えます

0.23.0 以前から上げる場合は、0.24.0 のリリースの「今までと変わること」もご覧ください。

実機で確かめた CLI

  • claude 2.1.290、codex-cli 0.162.1、agy 1.3.3

詳しくは CHANGELOG を参照してください。

v0.24.0

Choose a tag to compare

@istb16 istb16 released this 12 Oct 04:07
bbe9b12

1.0.0 に向けた整理

1.0.0 で守る互換性の約束を決め、古い版のためだけの処理を消しました。1.0.0 の前に互換性を壊す、最後のリリースのつもりです(#242)。

互換性の約束を決めました

  • 約束の対象は、README の「Compatibility」の一覧にまとめました。CHANGELOG、CONTRIBUTING、各リファレンスはそこを指します
  • 自分で書く adapter は、読み込みの決まりと、references/providers.md の最小の例が使う部分だけを約束します。それ以外の Provider の部分は、これまでどおり minor で変わることがあり、CHANGELOG の User adapters の項目に書きます
  • state record、budget consume、progress record もほかのコマンドと同じく約束の対象です
  • 隠しオプション run --job-file、テスト用の環境変数、.ai/ の内部のファイル、--json の notes/warnings の文面は、約束の対象外と明記しました(#311)

今までと変わること

  • 自分で adapter を書いている場合:_resolve_latest を resolve_latest に改めてください。古い名前は呼ばれません(#311)
  • config prune はなくなりました。0.6.0 より前の、既定値をすべて書いた設定も、書いたとおりに読みます。上書きを消すには config reset を使ってください(#312)
  • 0.23.0 より前に入れた Claude 用のコピー(~/.claude/skills/dev-orchestra)が残っていると、インストーラとアンインストーラはそれに触れず、手で消すよう伝えて終わります。消してからインストールし直してください(#312)
  • 古い版が残したものは読みません:0.4.0 より前の .ai/、0.4.2・0.9.0 より前の台帳やトークンの集計、changed_paths のない古いスナップショットは、読み替えません(#312)
  • high_risk_paths は、既定と同じ並び(順不同)のときだけ既定とみなします(#312)

実機で確かめた CLI

  • claude 2.1.290、codex-cli 0.162.1、agy 1.3.3

詳しくは CHANGELOG を参照してください。

v0.23.0

Choose a tag to compare

@istb16 istb16 released this 12 Oct 01:00
ca613c6

設定の書き間違いと、レビューの関門を緩める設定を知らせます

  • 読まれないキーを知らせます:reveiw: や review.timout_seconds のような書き間違いは、これまで黙って無視されていました。config validate の Warnings、doctor の注記、config set の警告で、似ている正しいキーと一緒に知らせます。警告なので、終了コードや doctor --strict は変わりません(#281)
  • プロジェクトの設定がレビューの関門を緩めていると知らせます:レビューを受けるブランチは、プロジェクトの設定ファイルも一緒に持ち込めます。reviewers や review.max_review_iterations などが、グローバルの設定や既定より緩い場合、config validate、doctor、review run で警告します。値はそのまま効きます(#279)

今までと変わること

  • design.require_approval と、リポジトリの外を指す workspace.dir は、グローバルの設定からだけ読みます。プロジェクトの設定に書いたものは無視し、警告します。計画の承認なしで進める設定を続けるには、次のように移してください(#279)

    dev-orchestra config set --scope global design.require_approval false
    
  • ファイルを変える run の、出力が止まったときの時間制限が 300 秒から 1200 秒になりました。実装役が 5 分を超えるテストを動かしているあいだに、止まったとみなされて打ち切られていました。レビュー役と読むだけの run は 300 秒のままです(#273)

  • state record test と state record re-test は ok と failed だけを受け付けます。failure や NG は合格と読まれ、テストが落ちたままレビューに進んでいました(#287)

  • workflow remove は、使用中のワークフローを消しません。--force で消せます(#285)

  • review.re_review_severities と review.parallel を検査します。[Critical, High] のように大文字で書いた重大度は、これまで何も止めていませんでしたが、書いたとおりに止めるようになります(#277)

  • .dev-orchestra.yaml を持つサブディレクトリから動かすと、すべてのコマンドがその設定を読みます(#282)

  • PyYAML がない環境では、タブで字下げした設定や、アンカー・エイリアス・タグ・ブロックスカラーを使う設定を、行番号を付けて断ります(#275、#278)

  • workspace.dir は空でない文字列でなければなりません(#281)

主な修正

  • CLI が終わっても、残ったプロセスが出力を握っていると、run が止まらなかったのを直しました
  • Windows で、npm が入れた claude.cmd や codex.cmd を起動できるようにしました
  • 日本語の Windows で、パイプで渡した UTF-8 のプロンプトが cp932 と読まれていたのを直しました
  • 日本語の名前の未追跡ファイルや、大きな未追跡ファイルが、黙ってレビューの対象から落ちていたのを直しました
  • 何も言わずに 0 で終わったレビュー役を、失敗したレビュー役として扱います
  • review triage を並べて動かしても、判定が失われないようにしました
  • インストーラとアンインストーラの、Git Bash や PowerShell での不具合をいくつか直しました

ほかにも多くの修正があります。0.22.0 以降の変更のレビューで見つかった指摘も直しています(#308)。

実機で確かめた CLI

  • claude 2.1.290、codex-cli 0.161.0、agy 1.3.3

詳しくは CHANGELOG を参照してください。

v0.22.0

Choose a tag to compare

@istb16 istb16 released this 06 Oct 11:56
8de6b2f

実装役の時間制限が 60 分になりました

これまで、設計役・実装役・修正役(run)とレビューは、同じ時間制限 review.timeout_seconds(30 分)を使っていました。実装役は 30 分を超えることがあり、伸ばそうとするとレビュー役の上限も一緒に伸びていました。run の時間制限をレビューと分けました(#258)。

run:
  timeout_seconds:
    orchestrator: 1800
    architect: 1800
    implementer: 3600
    review_fixer: 1800
  • 実装役の既定は 3600 秒(60 分)、ほかの役は今までどおり 1800 秒です
  • dev-orchestra config set run.timeout_seconds.implementer 5400 のように、役ごとに変えられます。プリセットを選び直しても消えません
  • --timeout を付けると、その回だけ上書きできます
  • config show の「Deadlines」で、役ごとの時間制限と、それを決めたファイルが見られます
  • 時間切れのときのメッセージに、効いた設定と、--timeout で伸ばせることが出ます

今までと変わること

review.timeout_seconds は、レビュー役(review run と run <レビュー役のid>)だけに効くようになりました。この設定を変えていた場合は、run の時間制限が変わります。

  • 実装役のために 3600 などに上げていた場合: 実装役は既定で 3600 のまま。設計役・修正役は 1800 に戻ります。レビュー役のために上げたのでなければ、review.timeout_seconds を下げ直してください
  • 900 などに下げていた場合: run は 1800(実装役は 3600)に延びます。前の上限を残すには run.timeout_seconds.<役> を設定してください
  • 1800 のままの場合: 実装役だけが 3600 になります

出力が止まったときの時間制限(review.idle_timeout_seconds、300 秒)は、今までどおり両方に効きます。

実機で確かめた CLI

  • claude 2.1.290、codex-cli 0.160.0、agy 1.3.0

詳しくは CHANGELOG を参照してください。

v0.21.0

Choose a tag to compare

@istb16 istb16 released this 06 Oct 08:26
acc073a

返事の言語を設定できます

dev-orchestra を使うと、英語の資料を読んだあとに、オーケストレーターの返事が英語にずれることがありました。決まりを書くだけでは防げなかったため、返事の言語を設定で持ち、Claude Code のフックで守らせるようにしました(#254)。

dev-orchestra config set language.reply ja
  • language.reply に言語のタグ(ja、es、zh-TW など)を書くと有効になります。書かなければ、今までと何も変わりません
  • 設定すると、あなたの Claude Code の設定(~/.claude/settings.json)にフックが入ります。何を書いたかを表示し、元のファイルを settings.json.dev-orchestra-backup に残します。書き込みたくないときは --no-hooks を付けます
  • config setup --language <タグ>、ウィザードの最後の質問、dev-orchestra hooks install|uninstall|status でも扱えます
  • フックは、dev-orchestra を使った会話だけで動きます。発言のたびに設定した言語で答えるよう念押しし、返事が違う言語なら 1 回だけ書き直させます。コード、パス、引用などは英語のままで構いません
  • 文字で見分ける 20 言語(日本語、中国語、韓国語など)と、よく使う語で見分ける 6 言語(英語、スペイン語、フランス語、ドイツ語、ポルトガル語、イタリア語)を判定します。ほかのラテン文字の言語は念押しだけです
  • language.rewrite: false で書き直しを止め、念押しだけにできます
  • フックは次の会話から効きます。Claude Code だけで動き、Codex と Antigravity では効きません

互換性の約束をまとめました

1.0.0 に向けて、何を守るかを README の「Compatibility」(日本語の README は「互換性」)にまとめました(#242)。

  • 守るもの: 設定の形式、コマンドとオプションと終了コード、文書にある環境変数、--json の出力(項目は足すだけ)、.ai/ の形式、組み込みの adapter の動き、Python の最低の版と対応するプラットフォーム
  • 守らないもの: 自分で書く adapter の土台 Provider、人が読む出力、保守用のスクリプト、内部のモジュールなど

古い版からの移行をやめました

  • 0.4.0 より前の平らな .ai/(.ai/plan.md などが直下にある形)は、取り込まなくなりました。見つかるとコマンドは止まり、どうすればよいかを表示します。ファイルは動かしません。取り込みたいときは、先に 0.20.0 を一度動かしてください
  • 0.4.1 以前の予算の記録の古い項目名 workflow は読みません
  • これが 1.0 の前の最後の互換性を壊す変更の予定です

確認した CLI のバージョン

claude 2.1.290 で、設計役のセッションの継続を確認しました。codex 0.160.0 と agy 1.2.17 も、実機の確認に通っています。

詳しくは CHANGELOG を見てください。