AI エージェントは何をしたのか: 証拠で答えるべき四つの問い
AI エージェントのタスクごとに、誰がやり、何が変わり、何を飛ばし、なぜそう決めたかを、「完了」のコメントではなく確かめられる証拠で見られるべきです。
Weft は、ひとり創業者と小さなチームのための AI タスク管理です。
著者: Andrei Finogeev ·
AI エージェントが何をしたかを知りたいなら、その要約から始めないでください。確かめるのは四つです。どの接続が仕事をしたか、何が変わったか(自分で開けるもので示されているか)、何がやり残されたか、そして何がなぜ決められたか。四つのうちどれかがエージェントの言葉だけに頼っているなら、それは記録ではなく語りです。
Weft は私たちが作っています。他社製品についての事実は各社の公式ページから取り、2026年10月27日に確認しました。
「完了」と書かれたコメントでは、なぜ足りないのか
コメントは、エージェントが自分の仕事を説明したものです。正確かもしれませんが、コメントにはそれを示せません。書き手こそ、あなたが確かめようとしている当事者だからです。エージェントがタスクに触れたとわかれば「誰が」には答えられます。でも、その仕事があなたの思っているとおりのものかには答えられません。
AI の仕事の帰属についての Hypertask の記事は、もっともな指摘をしています。エージェントの仕事は、誰も読まないターミナルのログではなく、人の仕事と同じボードに届くべきだ、と。Hypertask はエージェントにサービスアカウントとしての固有の ID も与えるので、書き込みはあなたではなくエージェントのものとして記録されます。タスクの証拠とリースもありますが、そのドキュメントによれば、それらは設計上 REST エンドポイントのみで、MCP ツールではありません。私たちが違うのは、記録に何を含めるべきかです。エージェントの出力が並ぶコメントのスレッドは、エージェントが言ったことのログです。私たちは、記録に証拠を持たせたいのです。
このガイドに調査の数字はありません。四つの問いは今日の午後にでも自分のボードで試せますし、そのほうが業界平均よりも多くを教えてくれます。
四つの問いとは
先週エージェントが終えたタスクを、どれでも一つ選んでください。エージェントに尋ねたりチャットを開いたりせずに、次のそれぞれに1分以内で答えられるはずです。
- 誰がやったか。 どのクライアントが、どの接続で、タスクを確保して終えたか。
- 何が変わったか。 結果と、エージェントを信用しなくても確かめられる成果物。コミットのハッシュ、URL、ファイル、メッセージ ID。
- 何がやられていないか。 飛ばした部分と、確信がなかったこと。
- 何がなぜ決められたか。 途中で下された選択と、比べた選択肢。そして、あなたが仕事を差し戻したときのこと。
| 問い | 弱い答え: 「完了」と書かれたコメント | 強い答え: 確かめられる証拠 |
|---|---|---|
| 誰がやったか | すべてのツールが一つのキーを共有しているので、どの変更にも「エージェント」かあなた自身の名前 | タスクを確保して終えた接続が、クライアントの登録名で示される。ジャーナルの各イベントには、人か MCP かの区別とクライアント ID が付く |
| 何が変わったか | 「認証モジュールをリファクタリングしました、テストは通っています」 | コミットのハッシュ、PR やページの URL、sha256 付きのファイル、メッセージ ID。自分で開けるもの |
| 何がやられていないか | 何も書かれていないので、飛ばしたものはないと思い込む | notDone のリスト(「ステージングでマイグレーションを実行していない」)と unknowns のリスト(「古いエンドポイントに他の呼び出し元がないかは不明」) |
| 何がなぜ決められたか | とっくに流れ去ったチャットに埋もれている | 比べた選択肢と見直す条件を含む判断の記録、そして差し戻した理由も含むタスクの判断の履歴 |
どのエージェントがやったかは、どうわかるのか
Weft は Model Context Protocol で、一つのエンドポイント https://letsweft.com/api/mcp から AI クライアントに接続します。OAuth クライアントと個人アクセストークンは、それぞれが別の行為者です。タスクにはどのクライアントが作ったかが記録され、ボードにはそのクライアントがサインイン時に登録した名前とアイコンが表示されます。タスクのジャーナルのすべてのイベントには、人から来たか MCP 経由か、そしてどのクライアントが送ったかが保存されます。
完全なジャーナル(get_task_history の full モード)には、イベントごとに生のクライアント ID が表示されます。OAuth のクライアント ID か、mcp-token にトークンの ID が続いたものです。わかりやすい名前ではありませんが正確で、同じ製品から来た二つの接続でも区別できます。
作業中の持ち主もはっきりしています。エージェントが start_task を呼ぶと、20分のリースでタスクが確保され、Doing に動きます。report_progress がリースを更新します。同じタスクを試した2つ目のエージェントには already_claimed が返り、リースが切れればタスクは別の担当に解放されます。確保のループのガイドがこれを段階ごとに説明し、1つのボードで複数のエージェントを動かすが複数のクライアントの場合を扱っています。
実務上のルールを一つ。ツールごとに専用の接続を与えてください。2つのクライアントが一つのアクセストークンを共有すると、ボードには一人の行為者に見え、「誰が」の問いは答えを失います。
何が変わったのか、エージェントに尋ねずに確かめられるか
エージェントは終えると complete_task を呼びます。必須なのはタスクの id だけで、他はすべて任意です。証拠がなくても呼び出しは失敗しません。これは意図したもので、終わった仕事を失うほうが、未検証のまま記録するより悪いからです。記録が持てるのは次のものです。
- outcome: 何をしたか、結果がどこにあるかを1,000文字まで。
- artifacts: 最大20件。それぞれに種類(url、file、message、commit など)、場所、任意で sha256 のダイジェスト。
- claims: エージェントがやったと主張すること。検証済みの事実ではなく、主張として保存されます。
- notDone と unknowns: 次の節で扱います。
- nextStep: あなたが承認したら、エージェントが次にすること。
complete_task({
"id": "<task id>",
"runId": "<from start_task>",
"leaseToken": "<from start_task>",
"outcome": "Rate limiting added to /login; PR open, not merged.",
"artifacts": [
{ "kind": "commit", "uri": "<repo>/commit/<hash>" },
{ "kind": "url", "uri": "<repo>/pull/<number>" }
],
"notDone": ["Did not change the signup endpoint"],
"unknowns": ["Limit of 5 per minute is a guess; no traffic data"],
"nextStep": "Merge the PR to main"
})outcome の一行は、やはり語りです。確かめられるのは成果物の部分です。コミットのハッシュはリポジトリにあるかないかのどちらかです。URL は開けるか開けないかです。ファイルの sha256 は一致するかしないかです。記録に outcome があって成果物がないなら、エージェントの申告による仕事として扱ってください。実際そうだからです。ウェブでは、Done のカードに、タスクが「検証済み」か「エージェント申告」かが表示されます。
エージェントがやらなかったことは何か
たいていの記録が飛ばす問いで、2週間後に噛みついてくる問いです。complete_task にはそのためのリストが二つあり、それぞれ500文字の項目を20件まで持てます。notDone はエージェントが意図して外したこと、unknowns は確信のないことです。ツール自身の説明が、やらなかったことをはっきり述べるようエージェントに求めています。それが、頼れる結果と、組み立て直さなければならない結果とを分けます。
これらのリストから先に読んでください。「ステージングのデータベースに対してテストを実行していない」は、あなたが次にすることを変えます。大きなタスクなのに notDone が一件もない記録は、それ自体が質問に値します。
何がなぜ決められたのか
チャットで下した判断は、チャットが流れると消えます。record_decision はそれを二つの方法で残します。
- 独立した判断の記録: タイトル、結論、背景、実際に比べた選択肢、その結果、そして見直す条件。記録は変更できません。変えるには、それを置き換える新しい判断を記録します。古いものは置き換え済みの印付きで残ります。
- 判定の中継: 会話の中でエージェントに「承認」「X でやり直して」「取りやめ」「いまじゃない」と伝えると、エージェントはその判定をあなたのメモと一緒にタスクに記録します。
get_task_history は三つのモードで読み返します。summary(カード、最新の記録、件数)、decisions(差し戻した理由も含む、そのタスクについてのすべての判断。後で承認しても残ります)、full(生のジャーナル、最大100イベント)。get_context は、有効な判断をトークンの予算内で次のエージェントに渡すので、次の実行はゼロからではなく、決まったことから始まります。詳しくはAI チャットでの決定はなぜ消えるのかをご覧ください。
どこでレビューし、何をクリックするのか
既定では、完了したタスクはそのまま Done に進みます。タスクにレビューが必要なとき、あるいは検証チェックに落ちたときは、インボックスで止まります。そこには記録と四つのボタン、承認、差し戻し、あとで、取りやめがあります。差し戻しにはメモが要り、そのメモはエージェントに戻ります。
エージェントが nextStep を渡していれば、それは承認ボタンの上に表示され、承認はまさにその一歩を承認します。承認は72時間有効で、次にすべき一歩として get_my_work か start_task を通じてエージェントに戻ります。エージェントが request_input で尋ねた質問も同じインボックスに入ります。ウェブでも iOS と Android のアプリでも見られ、モバイルのプッシュも届きます。
インボックスには意図して上限があります。1人のワークスペースで待ち5件、チームで10件、または見積もりのレビュー時間で45分の、どれか早いほうです。いっぱいになると start_task は attention_queue_full で断るので、エージェントはあなたが確かめるものを積み上げる代わりに、仕事を終わらせるか明確にします。
タスクの種類ごとに、どんな証拠を求めるべきか
エージェントがどんな証拠を期待されているかわかるよう、これをタスクの説明に書いておいてください。
- コード: 成果物としてコミットのハッシュと PR の URL。notDone には、実行していないテスト、適用していないマイグレーション、意図して触らなかったファイルを書かせます。
- コンテンツ: 公開済みの URL、まだ公開されていなければ sha256 付きの下書きファイル。unknowns には、エージェントが確認できなかった事実を挙げさせます。
- リサーチ: 主要な主張ごとの出典 URL と、メモのファイル。unknowns では、出典が言っていることとエージェントが推測したことを分けさせます。
- アウトリーチ: 送った各メッセージのメッセージ ID と、ファイルにした宛先の一覧。notDone には、誰に連絡しなかったか、なぜかを挙げさせます。
そもそもエージェントにできることを、どう制御するか
事後の帰属は、事前の制限と組み合わせるといちばんよく効きます。Weft では、OAuth 接続ごとに三つの権限レベルのどれかを持たせます。同意画面で、または後から Settings の「接続中の AI クライアント」で設定します。
- full(既定): 32のツールすべて。
- write: 破壊的な3つのツール(trash_task、archive_done_tasks、complete_sprint)以外すべて。
- read: 11の読み取り専用ツールだけ。
チェックはすべての呼び出しで行われます。Disconnect は接続のリフレッシュトークンを取り消し、切断より前に発行されたトークンを次の呼び出しで拒否します。OAuth に対応しないクライアント向けの個人アクセストークンにはスコープがなく、1つのトークンで32のツールすべてに届きます。取り消しは次の呼び出しから効きます。エージェントはタスクを30日間のゴミ箱に移せますが、完全には削除できません。ゴミ箱からの復元は Pro の機能です。
ここで Weft がやらないこと
- GitHub や Slack との連携はないので、Weft があなたのコミットやメッセージを調べてくれることはありません。成果物はあなたが開きます。
- 記録を他のシステムに送るための公開 REST API、Webhook、CLI はありません。JSON と Markdown のエクスポートはあります。
- モデルの各段階をトレースしません。プロンプト、トークン、レイテンシをモデルの層で記録するツールは別の仕事をするもので、それも併せてほしくなるかもしれません。
- 記録はエージェント自身が書きます。Weft は主張と証拠のすき間を見えるようにしますが、エージェントを正直にすることはできません。
REST API で管理されるサービスアカウントとしてのエージェント、CI スクリプトのための CLI、タスクの作成やトリアージのような内蔵 AI 機能がほしいなら、Hypertask のほうが合っています。Hypertask の代替のページで、二つを並べて比べています。
- エージェントが何をしたかは、git の履歴で十分ではありませんか?
- git が示すのはコードで何が変わったかです。エージェントが何を飛ばし、何に自信がなく、二つの選択肢のどちらを選んだかは示しません。コミットのハッシュはタスクの成果物として使い、残りは記録と判断の記録に残してください。
- エージェントは成果物をでっち上げられるのではありませんか?
- どんな文字列でも送れます。成果物の要点は、あなたが開けることです。調べられるハッシュ、開ける URL、見つけられるメッセージ ID。でっち上げたものは確かめた瞬間に破綻しますが、コメントは決して破綻しません。タスクに検証チェックがあり、ブロッキングのチェックに落ちれば、そのタスクは Done に入りません。
- 終わったタスクはすべて私のレビューを待つのですか?
- いいえ。既定では、完了したタスクは Done に進みます。インボックスで承認、差し戻し、あとで、取りやめを待つのは、タスクにレビューが必要なときか、検証チェックに落ちたときだけです。
- どの AI クライアントが Weft に記録を書けますか?
- どの MCP クライアントでも書けます。ChatGPT では、Weft は Free を含むすべてのプランで公開済みのプラグインです。Claude Code は
claude mcp add --transport http weft https://letsweft.com/api/mcpで接続します。claude.ai と Claude Desktop はカスタムコネクタを使います。Claude Code、ChatGPT、Cursor、Codex など、33のクライアントの設定ページがあります。 - 費用はいくらですか?
- Free はタスク50件と月200回の AI 呼び出しをカバーします。Pro は1席あたり月 ¥1,182 または年 ¥10,000 です。Weft に AI クレジットはなく、考えるのはあなた自身の AI クライアントです。料金をご覧ください。