Tenet - インタビューからDAG実行、3重critic、steerメッセージまで備えた長時間AIコーディングハーネス
(github.com/JeiKeiLim)こんにちは。
長時間の自律実行が可能なAIコーディングエージェントハーネスであるTenetを作っているので、共有します。
AIコーディングエージェントを使ってみると、短い作業はかなりうまくこなせますが、数時間以上かかる実装に入ると、すぐに不安定になることが多くありました。
仕様が曖昧になったり、テストは通っていても十分かどうかわからなかったり、途中で方向を変えるのも微妙だったり、セッションが切れると文脈も一緒に失われたりします。
Tenetは、その問題を減らすために作ったハーネスです。
単なる「長く動かすエージェント」というより、長く動かしても方向性と品質を維持できる構造に近いです。
おおよそ次のような流れで動作します。
-
Interview
- まず要件をインタビューで具体化します。
- 必要に応じて技術調査も行います。
-
Visuals / Architecture
- アーキテクチャ図やUIモックアップを作成します。
- UI作業であればバリエーションを複数作成し、どの方向に進むかを先に選べるようにしました。
-
Spec / Harness / Scenarios
- 実装spec、テスト/検証ハーネス、scenarioを文書として残します。
- 「何を作るか」だけでなく、「何をもって合格とみなすか」もあわせて固定します。
-
DAG decomposition
- 作業をdependency graphに分解します。
- 独立したjobは並列実行できます。
-
Autonomous execution loop
- 各jobを実行し、完了後に評価を付けます。
- このループを長時間回せるように設計しました。
評価方法
各jobは完了したからといってすぐ次に進むのではなく、3つのcriticを通過する必要があります。
- code critic: 実装がspecの意図に合っているか
- test critic: 現在あるテストが本当にこのjobを検証するのに十分か
- Playwright e2e eval: 実際のユーザー視点で動作しているか
重要視したのは、これらのcriticが可能な限り作成者の文脈と切り離されたfresh contextで見るようにした点です。
コードを書いたエージェントが自分の成果物を簡単に通してしまうことを減らしたかったのです。
READMEにも書いてありますが、特にテストについては「テストがあるか」よりも、テストが適切に検証しているかのほうが重要だと考えました。
途中でのsteer
長時間動かしていると、人が途中で少し方向を変えたくなることがあります。
Tenetではそのとき、実行内容を最初から説明し直すのではなく、
ただ steer message を投げれば保存され、以後の関連jobで反映されるようにしました。
つまり、
- 今すぐループ全体を止める必要はなく
- 関連する段階で再びpickupする方式です。
文書と作業の痕跡を残すことを重視しました
これを作る中で特に重要だと考えたのは、
結果だけでなく 意思決定と作業の痕跡も一緒に残すこと でした。
.tenet/ の下には次のようなものが残ります。
- interview
- spec
- harness
- visuals
- knowledge
- journal
- steer
- status
- SQLite state
そのため、一度実行して終わるセッション型エージェントというより、
次の作業でも再び参照できる開発記録を継続的に蓄積する構造 を目指しています。
感覚としては、
「フリーランサーや外注に仕事を渡すときに必要な文書化/検証/ハンドオフの構造」を
AI agentの側に持ち込もうとする試みに近いです。
現在の状態
まだ初期段階です。
それでも基本的な流れはすでに実装されており、現在は次のようなものが含まれています。
- Claude Code / OpenCode / Codexアダプター
- MCPサーバー + CLI
- DAGベースのjob orchestration
- SQLite + WALベースのpersistent state
- orphan job recovery
- 3-critic evaluation pipeline
- steer message処理
- .tenet/ 文書構造
実際にこれを使ってかなり長時間動かしてみており、
*6時間以上人の介入なしで実行した後、すぐに使える結果が出ることを確認しました。
今私が毎日使っている実装物のひとつも、tenetを使って得られた結果です。
初期段階のプロジェクトなので荒い部分も多いです。
どのようなフィードバックでも気軽にいただけるとありがたいです.
まだコメントはありません。