AGENTLINK / CHAT-NATIVE AGENTS
チャットを、
1ターンで終わらせない。
普通のchatを「答える場所」だけでなく、仕事が終わるまで継続するAIエージェントの実行枠にしたい。そのために、会話の寿命と仕事の寿命を分ける。
1レスポンスと、仕事の長さは違う。
チャットAIは、考えることもツールを使うこともかなり強くなった。一方で実作業は、1回のモデル応答より長い。ブラウザを待つ、外部サービスを確認する、別端末を使う、失敗から復旧する、複数workerへ分ける。数分で終わらない仕事は普通にある。
そこでAgentLinkの根本目的は、モデルの物理ターンが終わっても、仕事まで終わったことにしないこと。人間は普通のchatから依頼し、そのchatをAIエージェントのcontrol / execution slotとして使う。実際のoperational truthは、1レスポンスの記憶だけに置かない。
会話より外に、続きの場所を持つ。
続けるために必要なのは「前の会話を全部もう一度読む」ことだけではない。何が完了したか、次に何をするか、誰がworkerを持っているか、外部effectはもう起きたか。こうした状態をdurable state、checkpoint、receiptとして残す。
✓ 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が消えたことを同一視しないこと。結果が不明な時も、失敗と決めつけて外部操作を二重実行しない。
まずブラウザで触る。次にコードで確かめる。
公開した 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をもう一度実行しない。
依存なしで動かす。
cd AgentLink/demos/chat-long-turn-continuity
python3 run_demo.py
credentials、外部API、third-party Python packageは不要。公開デモの目的は「ChatGPT内部を再現した」と主張することではなく、AgentLinkが必要としているcontinuity contractを、誰でも検査できる小さい形にすること。
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して公開実験を追ってもらえるとうれしい。