系列:「邊做邊補:用一個 AI 代理 mesh 專案,補齊 AI 工程師該有的能力」— 第 10 天
紀錄日期:2026-09-21
能力區:十二區回顧(重點第 7、9、11 區)|類型:做
工作草稿,已存網站草稿、尚未發表。以下是專案證據自評,不是能力認證;Day 08、09 的發表日期仍由作者決定。
Day 1 說好在第 10、20、30 天重貼地圖。今天的任務是讓分數可比較:同一格十天前和十天後,要在量同一件事。
「有」代表有能跑的實例與證據;「半」代表部分成立但限制仍大;「弱」代表只有零件;「無」代表本系列沒有足夠成果支持。它評的是這個專案提供的練習證據,不能拿來說我已精通整個領域。
專案正在分析要不要局部採用開源控制面、執行工具與桌面入口。這件事逼我重看第 7 區「用輪子與造輪子」:以前只會列功能,今天要看接點、保證、退出成本。
另一方面,Day 8 寫多 AI 審協定,把第 11 區叫成「工程判斷」。回頭看 Day 1,原本第 11 區其實是「持續進化:從軌跡學習」。做過 review,不代表已經把執行軌跡回餵成持續改善的系統。這是分類漂移,應該在今天更正,而不是順手把分數升上去。
我以為有更多程式、更多 review 輪次,就能把更多格從弱改成有。現在看來,必須先問新增的證據屬於哪一格,以及它到底驗到了什麼。
| # | 能力區(沿用 Day 1) | Day 1 | Day 10 暫評 | 依據與限制 |
|---|---|---|---|---|
| 1 | Agent 基礎與範式 | 有 | 有(沿用) | 這輪沒有重跑全生命週期 |
| 2 | LLM 基礎與推理 | 半 | 半 | 沒有新的模型基準證據 |
| 3 | 上下文工程 | 半 | 半 | 還沒量 context 上限與裁切代價 |
| 4 | 記憶與 RAG | 半 | 半 | 召回品質沒有新增完整驗收 |
| 5 | 工具與協定 | 有 | 有 | Day 9 跨 Rust/TS canonical bytes;本日新增單份 receipt 驗證器,整套加密仍未完成 |
| 6 | Coding Agent | 有,最強 | 有 | 多 AI review 有實際修正,也有誤判;不保留「最強」這種無共同量尺的評語 |
| 7 | 框架:用輪子與造輪子 | 弱 | 半 | 有上游接點查證及反例,尚無 Paperclip 整合 E2E |
| 8 | 觀察與動作空間 | 弱 | 弱 | 尚無本系列新增真機驗收 |
| 9 | 評估 | 弱 | 半 | Day 3–6 的採用率、持久化與量尺反例;距離穩定 benchmark 仍有差距 |
| 10 | 後訓練與 Agentic RL | 無 | 無 | 沒有訓練實驗 |
| 11 | 持續進化:從軌跡學習 | 無 | 無 | 有 review 紀錄,但沒有回餵後改善的對照證據 |
| 12 | 多 Agent 協作 | 有 | 有 | 沿用既有 fan-out/presence 證據,跨裝置可靠性仍需補 |
這張表的提升很有限:第 7 區從弱到半,第 9 區從弱到半。其他格並不因為專案忙了十天就自動變好。「沿用」也明確表示本輪沒有重新驗證。
今天第 7 區的新增證據尤其具體。原先組合文件把 Paperclip 事件封套的 SHA-256 拿來比輸出 SHA-256。查原文後發現不是同一份 bytes,於是寫離線腳本驗三個案例:封套與輸出不同、metadata 改變、換行改變。3/3 通過的是反例測試,不是上游整合。
另一個修正是 watchdog:它是配置後的事後審查 agent,不能直接當成自己的完成前安全閘。選型能力就是能指出「上游有什麼」「我還要補什麼」「今天尚未證明什麼」,而不只是把兩個方塊連起來。
同一天接著做 receipt 驗證器,碰到一個很適合拿來檢查自評的問題:已有 Ed25519 函式,是否就算完成第 5 區的協定整合?
還不算。驗證器需要一把可信公鑰,而「對方傳來的公鑰」與「已授權裝置的公鑰」不是同一件事。因此這一小步把預期身分、task、attempt、adapter、nonce、scope 與執行位置全部由呼叫端提供;信任根的 enrollment、撤銷與 epoch 新鮮度留給後續工作。函式本身不去相信 receipt 自報的身分。
測試也因此分成兩種攻擊:一種是改內容卻不重簽,應該在驗簽時失敗;另一種是把不屬於這次任務的內容重新簽好,應該在任務綁定時失敗。只有前者變紅,不能說後者也被擋住。
這件事讓第 5 區多一個實作證據,也讓第 9 區多一種測試設計,但我不因此把第 9 區改成「有」。本輪仍不是固定資料集的品質評估,也沒有完成跨裝置 E2E。地圖的格子保留原分數,詳細進度放進證據欄,兩者才不會互相灌水。
receipt_verifier.rs 的暫時「全部放行」基線先跑出 2 passed/8 failed;實作後,整個 mesh_crypto 模組第一輪回歸 25 passed/0 failed。兩次都不是零命中,exit code 分別為 101、0。測試用固定測試私鑰產生真簽章,沒有讀使用者的私鑰,也沒有呼叫真實 AI 任務。
最有用的一個案例,是修改裝置、task、attempt 等預期欄位後重新簽名。這樣能把「密碼學驗簽」與「任務授權綁定」分開測:前者可以是真的,後者仍然應該拒絕。
這份證據目前只支持純函式的行為。沒有驗證跨機傳輸、EpochManifest 的授權/撤銷、rotation 或 Paperclip 完成回寫;原 coordinator 的 receipt_verified 也還沒有因此自動變成密碼學驗證旗標。
審查後又補了 4 個測試函式,涵蓋非第一筆 receipt、遺漏欄位、空的呼叫端預期值,以及非 object/非標準簽章表示。最終整個 crypto 模組 29 passed/0 failed,exit 0(新增 helper 14、既有 15)。空 expectation 與真正的 receipt mismatch 改成不同錯誤,但空身分仍然拒絕。
這一輪讓我更清楚第 9 區的練習是什麼:不只讓測試數增加,而是用另一種資料形狀走到原本沒驗的分支;記錄第一輪 25 個與最後 29 個各自對應的版本,也不把基線的八個紅燈包裝成八個既有漏洞。
最後一輪 AGY 與 Claude 都回 APPROVE,沒有 blocker;補強後 cargo check --locked --offline 也再次 exit 0。這兩份審查只涵蓋本次單份驗證器,不代表 EpochManifest、coordinator 或整個產品已通過驗收。原始 log 與 source hash 留在本機開發證據目錄,摘要寫回 m5.md。
第 7 區要再前進,需要一張真票從接收、執行、保存產物到取消/失敗回報的整合測試。第 9 區需要固定資料集和可以比較的基準。第 11 區需要證明軌跡回餵之後,相同任務的品質真的改善,而不是只多存一份日誌。
Day 8 的工程判斷素材可以算跨第 6、9、12 區的練習;它依然有價值,只是不該拿來填第 11 區。保留原本的空格,才看得到下一步真正缺的東西。
每次改分數都附一個可重跑的案例,並寫出它沒測的範圍。回顧時先對齊分類名稱,再看分數。若只是讀過設計,先記「讀過」;部署、測試、真機與日常使用,各有各的證據。
依實際開發進度補協定傳輸的量測或整合 spike。今天不提前把還沒完成的驗簽、rotation 或票券接線寫成成果。
來源:本系列 Day 1、Day 3–9 本機草稿;專案 m5.md 歷史報告與 2026-09-21 節;Paperclip run-log、watchdog。歷史測試數字為引用既有報告,沒有在本輪重跑。
今天再對照原始目的,才看清楚「開源元件很多」與「產品需求已滿足」之間還有距離。Orca 的開發操作台、Paperclip 的任務管理、Hermes 的執行與學習能力,各自值得研究,但接起來之後仍須證明私人記憶可攜、使用者修正會被採用,以及手機不依賴桌面。
這輪的成果是比較與實驗設計,不能填成已整合、已部署或已提升品質。我把下一個判準改寫得更貼近使用:輸入、修正、保存、重啟、換執行器後回想;再測桌面關機與記憶匯出。手機獨立不必偷換成「全部模型都離線」,但使用哪個推論服務、送出哪些資料,必須明確。
設計建議已記入專案 MESH-COMPOSITION §12;目前仍是候選,尚未改動產品行為。這也提醒我,能力地圖要記錄的不只是實作數量,還有是否辨識出自己正在解錯層次的問題。
擴大選型後,OpenJarvis 的選定測試 44 個、MemOS 儲存測試 23 個、Hermes 記憶工具測試 57 個通過;mem0 則跑了真正的本機模型、保存、重啟搜尋與刪除流程。這些數字不能相加變成產品完成度,也不能拿來排誰比較好。
OpenJarvis 在測試程式提供全部記憶的 prompt 中回答新的偏好,但 store 還有舊記錄;mem0 的此次設定搜尋同時拿到新舊偏好。MemOS 與 Hermes 的程式明確更新成功,卻還沒有證明模型能自行決定正確更新。混在一起就會得到不公平的排名。
另一個反例是刪除:搜尋空了,歷史紀錄仍在。我得把「不再拿來回答」和「整份資料已遺忘」分開標示。手機那格也維持空白:偵測到 iPhone 不等於測試完成,開發工具因手機鎖定而失敗,結果是 BLOCKED。
這輪是驗證練習與選型素材;只有一個合成偏好,沒有足夠證據提高長期學習品質的評分。下一輪要用相同的自然語言修正/明確更新雙軌資料集再比較。
第二批用英文時間、中文飲料、中英切換語言,寫入修正後另開程序回想。先用 qwen2.5-coder:7b 測 MemOS 得到兩例正確;Hermes 卻因需要至少 64K context 而拒絕啟動。因此改用本機已有的 Llama 3.2,獨立設定 65536 context,兩者整批重跑,沒有略過原生限制。
這次三例的新程序回答都未達標。MemOS 的 lightweight pipeline 檢索 packet 只選到舊紀錄;本探針未接後續 memos_search/get 工具,不能當整套產品成績。Hermes 的真實 memory tool loop 則出現新增新值卻保留舊值、工具參數錯誤。這是單次小模型組合測試,不足以判定框架優劣。
我也把 MemOS 的實際歷史文字連同來源、時間匯出,再用自己寫的實驗 adapter 匯入 Hermes。儲存成功,模型卻答 UNKNOWN。移除匯入項後仍是 UNKNOWN,不能把原本就失敗的 recall 當成撤回成功證據;來源和匯出檔也都還在。
因此文章中的「記住了」分三格:資料是否保存、是否正確召回、舊偏好是否確實失效。這一輪補的是可重現失敗與邊界,不增加產品完成度,也沒有做整套替換的決定。完整條件和原始證據見工作樹 MESH-COMPOSITION §14 與 m5 round2;草稿尚未發布。
Letta Code 也補了實際 local CLI 測試:memory-only 設定下,模型把更新指向不存在的記憶檔;修正後的新對話仍回 UNKNOWN。原生匯出通過檔案雜湊核對,但匯出的只是初始模板,不能寫成「記憶退場已完成」。local backend 也不等於全域設定完全不動,測試後已清除自身 agent 登錄。手機雖已連線,鏡像仍要求先鎖定螢幕;PocketPal 真機測試尚未完成,不補造數字。
第二批 review:AGY 對最終文字證據邊界 APPROVE;Claude 初審要求六項方法修正,已補入 §14,但最終複核 exit142 timeout,沒有第二份最終 APPROVE。正式 double-gate 未完成;未採用/提交/發布。原始初審與 final timeout 分別保存。
本篇素材截止於桌面開源候選的第二批實驗與其證據邊界。仍是未發布草稿;收尾不代表未完成測試或審查已通過。後續手機實測與新的開發切片移到下一篇,避免混淆不同批次條件。