006 · 多倉庫 agent 的失憶解方
講者用「神燈精靈給你一個失憶版天才工程師」的比喻,拆解 agent 為何被侷限在單一 repo、又沒有跨 session 記憶,並展示他做的 meta-harness 怎麼解決。
原標題:A Genius With Amnesia - Victor Savkin, Nx
重點摘要
- agent 被空間綁住agent 一次只能讀寫一個 repo,看不到整個系統可能橫跨的成百上千個 repo,也因此沒辦法自動對齊上下游的程式碼。
- agent 沒有記憶每個 session 都是一張白紙,前一次做過什麼、為什麼這樣改,agent 完全不記得,人類反而變成 agent 的記憶。
- 一個改動要解釋七次講者用 UI、module 1、module 2、platform 四個 repo 的改動流程示範,同一個變更為了往下游傳遞、修 bug,前後得跟 agent 重新解釋七次。
- Polygraph 掃出跨倉庫的依賴圖分析使用者能存取的所有 repo(自己的加上開源的),抽出 dependency graph 與 metadata,過程不動任何一行程式碼,讓 agent 讀寫時像在操作同一個大 codebase。
- session 可以換機器、換 agent 接手因為完整的 trace 與 log 都被記錄下來,同事可以在另一台機器用不同的 agent(例如從 Claude 換成 Codex)接手同一個 session,記憶照樣延續。
- 也能反過來讓 agent 自己找 repo 或找舊 session不必手動選 repo,可以直接叫 agent 找出依賴某個版本套件的所有 repo 並更新,或是找出過去哪個 session 做過類似的事拿來參考。
時間軸
時碼點下去會跳到影片的那一段。
| 時碼 | 段落 | 重點 |
|---|---|---|
| 00:00 | 開場比喻 | 講者提出比喻:許願要最強工程師,精靈給了 Carmack,卻只留下他千分之一的能力,而且每次對話都會忘記前一次講過什麼,這就是今天的 agent。 |
| 00:55 | 舉例說明 | 以 UI、module 1、module 2、platform 四個 repo 為例,示範一個改動要往下游傳遞時,得靠人類重新解釋多少次。 |
| 02:42 | 兩類根本問題 | 這種痛苦可以歸成兩類:agent 一次只能看一個 repo 是空間侷限,每個 session 都是一張白紙是沒有記憶,人類因此變成 agent 的記憶體。 |
| 03:29 | 空間侷限的代價 | agent 看不到跨 repo 的關係,沒辦法對齊上下游程式碼,也沒辦法在改動當下順便更新所有下游的消費者,只能靠人類一次次不完整地轉述。 |
| 04:36 | 用 graph 描繪工作全貌 | 真正該給 agent 看的,是底層由所有 repo 組成的依賴圖,加上頂層每一次 agentic session 的紀錄,這張圖才完整描述一個組織的程式碼跟它是怎麼長出來的。 |
| 06:33 | 提出 Polygraph | 講者把這套解法定調成一種與 agent 無關的 meta-harness,取名 Polygraph,並強調重點是這個概念,不是某個特定工具。 |
| 06:51 | 建立跨倉庫依賴圖 | Polygraph 掃描使用者能存取的所有 repo(自己的加上開源的),抽出 metadata 拼成一張統一的依賴圖,過程完全不動任何一行程式碼。 |
| 08:53 | CI 當成一個整體 | 一個 session 若橫跨多個 repo 就會有多個 PR 與多條 CI,Polygraph 把它們當成單一向量處理,某個 repo 的 CI 失敗時能自動判斷該修哪一邊。 |
| 10:27 | 現場示範建立 session | 講者選了後端與前端兩個 repo、指定 Claude 當 agent,只下一個指令就讓兩個 repo 同時完成一個牽動 API 的改動。 |
| 12:41 | 省下一次重新解釋 | 這次改動只解釋了一遍,前後端就同步完成且彼此一致,講者強調這已經省下一次原本必須發生的重新解釋。 |
| 14:13 | session 可以換人換工具接手 | 因為完整的狀態與 trace 都被保留,同事能在別台機器用不同 agent(例如從 Claude 換成 Codex)接手同一個 session;review PR 時也能直接還原對方當時的完整狀態,不必開口問人。 |
| 16:13 | 讓 agent 自己找 repo | 不必手動挑 repo,可以直接請 agent 找出所有依賴某個套件版本的 repo 並更新,或是找出過去哪個 session 做過類似的事可以參考。 |
| 17:55 | 從既有 session 拉進新 repo | 即使不是從 Polygraph CLI 開始,也能在既有的 Claude session 裡臨時把一個開源 repo(vtest)拉進來,讓 agent 直接讀完整原始碼。 |
| 19:02 | 收尾:解除空間與時間限制 | Polygraph 讓 agent 拿到組織能觸及的全部程式碼,也拿到每一次 session 的完整記憶,等於把原本各自為政的開發者連成一個共享記憶的整體。 |
值得記的話
名詞與人物
| Polygraph | 講者做的這個 agent-agnostic meta-harness,把使用者能存取的多個 repo 串成一張依賴圖,並保留每次 agentic session 的完整記憶。 |
|---|---|
| Nx | 講者 Victor Savkin 所在的公司。 |
| meta-harness | 包在既有 agent 外層的一層框架,同一份程式碼與記憶可以讓不同 agent(如 Claude、Codex)共用。 |
| Carmack | 開場比喻裡提到的工程師,用來代表「頂尖能力」的參照對象。 |
| CI | 持續整合流程,這場用來說明多個 repo 同時有多條 CI 時該怎麼判斷責任歸屬。 |
| Codex | 講者示範中拿來跟 Claude 對照的另一款 agent,展示同一個 session 可以換不同 agent 接手。 |
| Context7 | 講者提到的替代方案,他認為不如直接把整個開源 repo 拉進 session,讓 agent 讀真正的原始碼。 |
| vtest | 講者示範中臨時拉進 session 的一個開源 repo,用來讓既有 Claude session 讀懂並解決自己 repo 裡的問題。 |
| trypolygraph.com | 講者在結尾提供的網站,供聽眾自行試用 Polygraph。 |
延伸
- GitHub 存取權限如何界定「使用者能看到的所有 repo」,這場只提到會拿來分析,沒有展開細節。
- vtest 這個開源函式庫本身的功能,這場只提到把它拉進 session 當範例,沒有介紹它做什麼。
- 中途換 agent(從 Claude 換成 Codex)接手同一個 session 的實際限制,這場只展示可行,沒有講技術細節。