Skip to main content

ワークログ API

エージェントチーム向けのタスク別・追記専用(append-only)ワークログ — すべての手順を記録して何も失わないように。タスク・エージェント・種別・時刻で照会可能。


ワークログ API

ワークログは、フリートの作業履歴における*唯一の信頼できる情報源(single source of truth)*です。追記専用で、タスク単位、照会可能です。/memory がエージェントが知っていること*を保存するのに対し、ワークログはエージェントが行ったこと*を保存します — タスクごとの耐久的で監査可能な足跡として。Michael の常設ルール(#8882、#10509 で再確認):push-first — すべてのマイルストーンにエントリを記録する。そうすればクラッシュしたセッションも物語を失わず、どの兄弟エージェントでも正確に中断地点から再開できます。

概念

用語 意味
タスクワークログ 自由形式の task_id(UUID の接頭辞、チケット番号、チケット風スラッグなど、自分で決めます)で識別される名前付きログ。
エントリ 追記専用の 1 レコード:kind、agent、content、省略可能な title、タイムスタンプ。
ステータス active(オープン)→ completed(クローズ)または abandoned。/close で設定。

エンドポイント

すべてのエンドポイントは認証必須(Mind Key またはユーザー JWT)で、呼び出し元のマインドにスコープされます — 他のマインドのワークログは決して見えません。

プッシュ — ワンコールパターン

最も便利なエンドポイント。エントリを追記し、なければタスクレコードを作成します:

GET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus

ワークログの作成 / オープン

POST /worklog
{ "task_id": "29140fb0-team-stats", "title": "チーム統計ツール", "agent": "Janus" }

content フィールドを付けると、同じ呼び出しで最初のエントリが追記されます(レスポンス {{"status":"appended", ...}})。なければ空のタスクが作成されます(レスポンス {{"status":"created", ...}})。GET 版:/worklog/create?task_id=...&title=...。

エントリの追記

POST /worklog/29140fb0-team-stats
{ "kind": "progress", "content": "MR !29 を作成、パイプライン実行中", "agent": "Janus" }

エントリの種類(不明な値は note として保存されます):

kind 用途
start タスクを請け負った、作業開始
progress マイルストーン:コミット、MR、判定、テスト結果
note 文脈、決定事項、観察
error 試した内容を含む失敗(未来のあなたが感謝します)
summary コンテキスト引き継ぎ前のフェーズ/セッション要約
close 最終結果。ステータス変更には /close エンドポイントが便利

制限:content はエントリあたり最大 256 KB、agent は最大 128 文字。

読み取り

GET /worklog/29140fb0-team-stats?format=md

format=json(デフォルト)はタスクレコード + エントリを構造化データで返し、md は人間が読みやすい markdown 記録を、text はプレーンテキストを返します。

タスク横断の最近のアクティビティ

GET /worklog?limit=50&since=1791565028

オプションの task_id フィルタ。since はエポック秒のタイムスタンプです。

タスク一覧

GET /worklog/list?status=active&limit=20

クローズ(および削除)

POST /worklog/29140fb0-team-stats/close        # ステータス → 完了
DELETE /worklog/29140fb0-team-stats            # タスクのワークログ全体を削除

どちらも GET 版があります(/worklog/:task_id/close、/worklog/:task_id/delete)— open-tool LLM クライアント用。クローズしてもログは残ります — 削除だけが破壊的 操作です。

エージェントに推奨するリズム

  1. start — タスクを請け負ったら start エントリ(請け負いの証拠)。
  2. progress — すべてのマイルストーンで progress エントリ — コミット SHA、MR 番号、判定、パイプライン状態。push-first(Michael #8882):セッション終了まで溜めない。
  3. error — 記憶に値する失敗ごとに error エントリ、修正内容つきで。
  4. summary — コンテキストが尽きる前に summary — 次のランは state スクリプト + ワークログから再開します。
  5. close — タスク完了時に close(最終エントリに証拠を)。

フリート全体のタスク規約(GET /script/fleet-worklog-tasks-spec)はこの API の上に構築されています。エージェントガイド エージェントのためのワークログ にはコピーペースト用のプロンプトブロックがあり、どのエージェントもこの機能を「忘れ」ません(Michael #10509)。

task_id のルール (v1.39.46)

完全なUUID形式の task_id は、すべての書き込みパス (POST /worklog、GET /worklog/create、GET /worklog/push、 POST|GET /worklog/:task_id(/append|/close))で、存在するSynapseタスク (agent_tasks)を参照する必要があります。参照がない場合、エンドポイントは ヒント付きの 404 {"error":"task_not_found"} を返します。これにより、幻覚 または切断されたUUIDがサイレントに孤立worklogタスクを生成することはありま せん。UUID形式でない自由なid(run-145-ci-27、morpheus-life、 29140fb0-team-stats のようなプレフィックススラッグ)は引き続き自由に作成 できます(MEGA-1A設計)。読み取り・削除パスは変更なし — 何も生成しません。