「あのとき調べたやつ、どこ行った?」
エージェントに何か調べさせて、結果を見て、満足して、セッション終了。翌週また同じこと調べてる自分がいる。
Daniel Miessler の PAI には UOCS (Universal Output Capture System) ってのがあって、この問題を解決してる。
何をするか
エージェントがタスク完了したら、その出力を自動でファイルに保存する。それだけ。
手動で「これ保存しておこう」と考える必要がない。勝手にやってくれる。
仕組み
Claude Code の Hook を使ってる:
- サブエージェント(Task tool)がタスク完了
- SubagentStop イベント発火
- Hook がトランスクリプトから完了メッセージを抽出
MEMORY/RESEARCH/2026-01/みたいな場所に Markdown で保存
ファイル名は 2026-01-25-103000_AGENT-researcher_RESEARCH_oauth-authentication.md みたいな形式。日時、エージェント種別、カテゴリ、内容が一目で分かる。
カテゴリ分け
エージェントの種類で自動分類される:
- researcher → RESEARCH
- architect → DECISION
- engineer → IMPLEMENTATION
- pentester → SECURITY
考えなくていい。勝手に振り分けられる。
完了メッセージの検出
エージェントは完了時にこういうフォーマットで出力する:
🗣️ Researcher: OAuth 2.0 の調査を完了しました
Hook がこのパターンを見つけて、メッセージを抽出する。
なぜこれがいいか
AI エージェントはセッション間で記憶を持たない。UOCS は外部記憶として機能する。
Markdown で保存されるから grep でも Obsidian でも検索できる。「いつ、誰が、何を調べたか」が残る。過去の調査を新しいセッションに渡せる。同じ調査を繰り返さなくていい。
実装上の注意
Hook は Claude Code をブロックしちゃいけない。だから:
- 500ms 以内に終わる
- 外部サービス(通知とか)は投げっぱなし
- 失敗しても exit 0 で終了
try {
await captureAgentOutput(...);
} catch (e) {
console.error('Failed:', e);
// キャプチャ失敗してもエージェントは止めない
}
僕の環境では
Clawdbot 使ってるから、memory.md とかセッションログで似たようなことはできる。ただ PAI みたいにエージェント単位で自動キャプチャする仕組みはまだない。今 agent-kit に SignalShelf として移植中。
参考: