あませpaper-daemon
デモを試す ↗

AGENTLINK / CHAT-NATIVE AGENTS

チャットを、
1ターンで終わらせない。

普通のchatを「答える場所」だけでなく、仕事が終わるまで継続するAIエージェントの実行枠にしたい。そのために、会話の寿命と仕事の寿命を分ける。

LONG-RUNDURABLE STATEWORKER HANDOFFIDEMPOTENCY
01 / THE GAP

1レスポンスと、仕事の長さは違う。

チャットAIは、考えることもツールを使うこともかなり強くなった。一方で実作業は、1回のモデル応答より長い。ブラウザを待つ、外部サービスを確認する、別端末を使う、失敗から復旧する、複数workerへ分ける。数分で終わらない仕事は普通にある。

そこでAgentLinkの根本目的は、モデルの物理ターンが終わっても、仕事まで終わったことにしないこと。人間は普通のchatから依頼し、そのchatをAIエージェントのcontrol / execution slotとして使う。実際のoperational truthは、1レスポンスの記憶だけに置かない。

02 / DURABLE TRUTH

会話より外に、続きの場所を持つ。

続けるために必要なのは「前の会話を全部もう一度読む」ことだけではない。何が完了したか、次に何をするか、誰がworkerを持っているか、外部effectはもう起きたか。こうした状態をdurable state、checkpoint、receiptとして残す。

✓ chat-turn-1 gather_context → completed
✓ chat-turn-2 prepare_result → completed
! chat-turn-3 external effect recorded → process lost
✓ receipt found deliver_result:v1
✓ chat-turn-4 resume → SKIP duplicate effect → completed

大事なのは、processが消えたこととjobが消えたことを同一視しないこと。結果が不明な時も、失敗と決めつけて外部操作を二重実行しない。

03 / PUBLIC DEMO

まずブラウザで触る。次にコードで確かめる。

公開した Chat Long-Turn Continuity Demo v0.1.0 は、この考え方をproduction codeを出さずに切り出したMITデモ。複数のfresh Python processをchat turnに見立て、途中で意図的にprocess lossを発生させる。

さらにブラウザ版ではlocalStorageをdurable stateに見立て、Turn 3の後に本当にページを再読込してからTurn 4でresumeできる。3番目のturnは外部effectのreceiptを書いた直後、step completionを書く前に停止する。4番目のturnは同じstateを読み込み、receiptを見つけるので外部effectをもう一度実行しない。

04 / RUN IT

依存なしで動かす。

git clone https://github.com/paper-daemon/AgentLink.git
cd AgentLink/demos/chat-long-turn-continuity
python3 run_demo.py

credentials、外部API、third-party Python packageは不要。公開デモの目的は「ChatGPT内部を再現した」と主張することではなく、AgentLinkが必要としているcontinuity contractを、誰でも検査できる小さい形にすること。

05 / NEXT

chat-native agentを、もっと本物に近づける。

次はworker handoff、stale ownership、turn budget、複数lane、より長いcheckpoint chainを公開デモ側でも増やしていく。production AgentLink側では、PC・ブラウザ・サービス・端末をまたぐ長時間実行をchatから扱うことが本丸。

この問題に興味がある人、失敗ケースを持っている人、テストを書きたい人はGitHubへ。公開MIT surfaceにはgood first issueも置いている。

Chat should outlive one response.

まずブラウザで触って、方向が必要だと思ったらGitHubでStarして公開実験を追ってもらえるとうれしい。

デモを試す ↗