話恢復(fù)機(jī)制深度解析)
ai-memory run工作原理原生會(huì)話恢復(fù)機(jī)制深度解析【免費(fèi)下載鏈接】ai-memorySolution for long term memory for agent coding CLIs and to facilitate handoff between different agent vendors項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ai/ai-memoryai-memory 是一個(gè)面向 agent 編碼 CLI 的長期記憶開源方案其核心命令ai-memory run會(huì)為每個(gè)編碼 CLI 透明地創(chuàng)建或恢復(fù)原生會(huì)話讓一條邏輯工作線Workstream在 Claude Code、Codex、OpenCode 等不同廠商的工具之間無縫續(xù)接。本文從新手視角完整拆解 ai-memory run 的會(huì)話恢復(fù)機(jī)制90 秒租約、30 秒心跳、只讀轉(zhuǎn)錄導(dǎo)入是如何協(xié)作保證你換工具不丟上下文的。ai-memory run 是什么一條命令串起多個(gè)編碼 CLI 的會(huì)話沒有 ai-memory 時(shí)你與 Claude Code 的對(duì)話存在 Claude 的本地會(huì)話庫與 Codex 的對(duì)話存在 Codex 的本地會(huì)話庫——兩者互不可見切換工具等于從零開始。ai-memory run是一個(gè)可選啟用opt-in的啟動(dòng)器它把你的原生 harness 啟動(dòng)包成一次托管運(yùn)行并在每個(gè) agent 退出后以只讀方式讀取該 agent 寫入本地的會(huì)話轉(zhuǎn)錄導(dǎo)入到共享的 Workstream 賬本中。常見用法harness 名之后的一切都是原生參數(shù)無需--分隔符ai-memory run claude # 啟動(dòng) Claude Code自動(dòng)綁定當(dāng)前 Workstream # 退出后換 Codex 繼續(xù)同一條邏輯工作線 ai-memory run codex # 或直接裸跑自動(dòng)繼續(xù)最近一次可用的本地會(huì)話 ai-memory run三個(gè)值得先建立的心智模型沒有全局開關(guān)、沒有 switch 命令——用了run就是托管模式同一個(gè)倉庫 worktree 映射到同一條 Workstream多臺(tái)機(jī)器可共享同一份記憶適配器從不寫任何 harness 的私有會(huì)話存儲(chǔ)只讀不寫。三個(gè)核心概念Workstream、租約與 Launch Plan讀懂流程前先記住三個(gè)概念 概念作用Workstream工作流一條邏輯連續(xù)的工作線以(workspace, project, 倉庫指紋, worktree 指紋)定位Lease90 秒可續(xù)租約一條 Workstream 同時(shí)只允許一個(gè)寫入者防止兩個(gè)終端同時(shí)改動(dòng)原生會(huì)話指針Launch Planai-memory 補(bǔ)好創(chuàng)建/恢復(fù)選擇器后的最終原生命令行用戶自帶的參數(shù)永遠(yuǎn)不被改寫一次 ai-memory run 的完整五步拆解第一步解析作用域并獲取 90 秒租約客戶端先解析 workspace/project 作用域與穩(wěn)定的倉庫指紋再向服務(wù)器申請(qǐng)托管運(yùn)行。若另一個(gè)啟動(dòng)器還在收尾客戶端會(huì)在 5 秒窗口內(nèi)每 250ms 重試一次而不是直接報(bào)錯(cuò)——這是兩個(gè)終端交接時(shí)的常見場(chǎng)景。第二步自動(dòng)挑選最近會(huì)話所屬的 harness裸模式不指定 harness時(shí)ai-memory 會(huì)掃描本檢出版 Claude Code、Codex、OpenCode、Pi、Crush、Kimi Code、Command Code 以及 Kiro CLI v2/v3 的本地會(huì)話按更新時(shí)間排序并只保留可執(zhí)行文件確實(shí)可用的候選。對(duì)于已建立established的 Workstream服務(wù)器狀態(tài)優(yōu)先恢復(fù)最近綁定過、且本地仍可用的 harness——絕不會(huì)僅僅因?yàn)榱硪粋€(gè)工具的會(huì)話文件時(shí)間戳更新就去選一個(gè)早已過期的會(huì)話。第三步為每個(gè) harness 生成差異化的原生恢復(fù)命令這是原生會(huì)話恢復(fù)的心臟所在。harness.rs 中的build_launch_plan按 harness 注入對(duì)應(yīng)的會(huì)話選擇器且僅當(dāng)用戶沒有自帶原生選擇器時(shí)才注入Harness新會(huì)話恢復(fù)已有會(huì)話只讀轉(zhuǎn)錄源Claude Code生成 UUID 注入--session-id--resume id~/.claude/projects/**/*.jsonlCodex原生默認(rèn)創(chuàng)建resume id~/.codex/sessions/**/rollout-*.jsonlOpenCode原生默認(rèn)創(chuàng)建--session idopencode.db只讀打開Pi生成 UUID 注入--session-id--session id~/.pi/agent/sessions/**/*.jsonlKiro CLI原生默認(rèn)創(chuàng)建--resume-id uuid$KIRO_HOME/sessions/**Antigravity原生默認(rèn)創(chuàng)建--conversation id~/.gemini/antigravity-cli/conversations/注入恢復(fù)標(biāo)志前啟動(dòng)器會(huì)先在原生會(huì)話庫中只讀核驗(yàn)該會(huì)話是否真實(shí)存在——如果轉(zhuǎn)錄已被刪除就新建會(huì)話并在觀察到新會(huì)話后把 Workstream 重新指過去讓你不會(huì)卡死在一個(gè)壞鏈上。第四步拉起 agent 進(jìn)程并維持 30 秒心跳子進(jìn)程啟動(dòng)時(shí)ai-memory 注入AI_MEMORY_RUN_ID與AI_MEMORY_WORKSTREAM_ID兩個(gè)環(huán)境變量讓生命周期鉤子認(rèn)出這是托管運(yùn)行SessionStart 鉤子把真實(shí)的原生會(huì)話綁定到 Workstream并只注入該會(huì)話還沒見過的便攜式歷史。與此同時(shí)父進(jìn)程每 30 秒發(fā)一次心跳10 秒超時(shí)維持租約服務(wù)器短暫失聯(lián)時(shí)只打印一條提示、靜默重試恢復(fù)后再打印一條心跳已恢復(fù)——你正在終端里的 agent 全程不受影響。第五步退出后只讀導(dǎo)出轉(zhuǎn)錄分批導(dǎo)入賬本子進(jìn)程退出后客戶端依次做四件事等待轉(zhuǎn)錄落盤導(dǎo)出可見的用戶/助手消息、已完成工具調(diào)用與壓縮摘要隱藏推理與私有記錄一律不復(fù)制并記錄為抽取損耗標(biāo)注按400 個(gè)事件或 1MB為一批的有界批次上報(bào)服務(wù)器使用確定性事件 ID 增量源游標(biāo)重試不會(huì)產(chǎn)生重復(fù)歷史把不可變的已脫敏 JSONL 段寫入賬本原樣保留原生進(jìn)程的退出碼返回給 shell。下一個(gè)接手的 harness 收到的只是有界的最近增量——沒有任何 agent 的上下文窗口能安全吞下無界轉(zhuǎn)錄。完整賬本仍然可以在 agent 進(jìn)程內(nèi)用ai-memory workstream-search搜索。原生會(huì)話恢復(fù)的三個(gè)關(guān)鍵細(xì)節(jié)首次采納一鍵續(xù)接已有的本地會(huì)話Workstream 還是空的、且是交互式啟動(dòng)時(shí)ai-memory 只讀不修改該 harness 的會(huì)話庫列出最多 8 個(gè)記錄的工作目錄與當(dāng)前檢出匹配的近期會(huì)話直接回車恢復(fù)最新的輸序號(hào)恢復(fù)指定的輸入0開始全新會(huì)話。其他目錄的會(huì)話永遠(yuǎn)不會(huì)出現(xiàn)在列表里。需要強(qiáng)調(diào)采納只是引導(dǎo)bootstrap行為。一旦有任何 harness 綁定過會(huì)話或貢獻(xiàn)過便攜歷史Workstream 即已建立——之后換工具只恢復(fù)該工具自己綁定的那個(gè)會(huì)話不會(huì)去翻舊的不相干會(huì)話。孤兒會(huì)話回退轉(zhuǎn)錄丟失時(shí)自動(dòng)新建并重指在添加恢復(fù)標(biāo)志之前run.rs 中的build_preflighted_launch_plan會(huì)先在原生存儲(chǔ)中校驗(yàn)綁定會(huì)話。若轉(zhuǎn)錄被刪除、清空或隨沙盒覆蓋丟失ai-memory 會(huì)新建一個(gè)原生會(huì)話等新會(huì)話被觀察到后把同一條 Workstream 重指過去而讀不懂的會(huì)話庫會(huì)被報(bào)告但不會(huì)被誤判為會(huì)話丟失。想刻意跳過綁定會(huì)話時(shí)用--fresh它不能與原生 resume/continue 選擇器同用。顯式選擇器永遠(yuǎn)優(yōu)先原生 --resume 永不被覆蓋如果你已經(jīng)寫了原生選擇器Claude 的--resume、Codex 的resume、OpenCode 的--session、Antigravity 的--conversation等ai-memory 從不改寫只負(fù)責(zé)綁定該會(huì)話并重置不相干的適配器游標(biāo)。這是透明啟動(dòng)器承諾的底線你的原生用法永遠(yuǎn)是權(quán)威。容錯(cuò)設(shè)計(jì)kill -9 與服務(wù)器中斷都不丟會(huì)話正常退出導(dǎo)入轉(zhuǎn)錄、釋放租約、返回退出碼一氣呵成kill -9 強(qiáng)殺租約在 90 秒內(nèi)自動(dòng)過期下一次托管運(yùn)行從上次已提交的游標(biāo)繼續(xù)缺失的尾部可以被補(bǔ)齊導(dǎo)入且已導(dǎo)入的事件不會(huì)重復(fù)服務(wù)器中斷心跳探測(cè)間隔 30 秒、請(qǐng)求超時(shí) 10 秒保證 90 秒租約能扛過普通的服務(wù)器重啟中斷超過一個(gè)租約窗口后舊啟動(dòng)器只有在沒有更新啟動(dòng)器接管時(shí)才允許續(xù)租進(jìn)程啟動(dòng)前服務(wù)器/鑒權(quán)失敗快速失敗——ai-memory 絕不悄悄啟動(dòng)一個(gè)無人管理的 agent。如何深入源碼與官方文檔托管運(yùn)行邏輯集中在兩個(gè) crate閱讀路徑很清晰啟動(dòng)器主流程run.rs——租約、會(huì)話采納、拉起子進(jìn)程、心跳、分批導(dǎo)入都在這里各 harness 原生適配器harness.rs——12 個(gè) harness 的創(chuàng)建/恢復(fù)選擇器規(guī)則與--yolo標(biāo)志翻譯表官方文檔docs/managed-workstreams.md——What happens on each run 五步流程與完整原生適配器行為表真機(jī)驗(yàn)收腳本scripts/managed-workstream-acceptance.sh——跨 harness 真實(shí)會(huì)話往返驗(yàn)證。會(huì)話記憶積累之后你可以在 Web 界面瀏覽由原生會(huì)話編譯出的 wiki 頁面總結(jié)一句話概括 ai-memory run 的工作原理它沒有重造會(huì)話系統(tǒng)而是給每個(gè) harness 的原生會(huì)話套上一層綁定、只讀導(dǎo)入、心跳保護(hù)的托管殼——首次運(yùn)行時(shí)可以采納已有本地會(huì)話切換工具時(shí)自動(dòng)注入正確的 resume 標(biāo)志與有界上下文退出時(shí)把轉(zhuǎn)錄導(dǎo)出進(jìn)共享賬本。從此agent 的長期記憶不再依附于任何單一工具換廠商也能無縫續(xù)寫 【免費(fèi)下載鏈接】ai-memorySolution for long term memory for agent coding CLIs and to facilitate handoff between different agent vendors項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ai/ai-memory創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考