lazyBoy/docs/agent-computer-handoff-2026...

12 KiB
Raw Blame History

暫停交接:全項完成與 Bug 修復2026-09-11

使用者要求:剩餘使用量約 10%,先整理收尾,等待使用量恢復後再繼續。停止新增工作,不自動擴展下一個實作。全案未完成,也未宣稱零 Bug。

文件入口

  • 原始完整範圍:啟動指令主計劃48 項清單。使用者要求 P0P3 全做,優先於文件原本允許延期的文字。
  • 逐項稽核O01O48、T01T64 的證據與缺項。VERIFIED 只涵蓋該列明示範圍,不能推論全案完成。
  • 累積實作紀錄:每批修改、測試、風險、回滾與接續步驟。
  • 本文件為最新暫停入口;舊報告中的早期缺項可能已由後續進度補上,續作時以程式與最新驗證為準。

已實作並取得驗證的範圍

以下是完成的子範圍,不表示對應 O/T 整列全部驗收:

範圍 已有成果 主要檔案
截圖與雙模式 截圖交付契約修復、native 不必啟桌面;保留 TeamDedicated control/controller.rs、api/computer.rs均位於 crates
Native jobs Computer root SQLite、PTY、stdin/resize、有界輸出、重連、pidfd 取消、outbox、scope pause 基礎與終態 TTL crates/supervisor/src/runner_jobs.pycrates/control/src/jobs.rs
檔案 descriptor-relative 操作、binary/range、CAS write/patch/move、原子 journal/receipt/outbox、immutable artifact、歷史讀取與明確恢復 crates/supervisor/src/computer_files.py、runner_files.pycrates/api/src/file_*.rs
重建恢復 正式 destroy acknowledgement、簽章退役 proof、真實 Dedicated 重建Team cold bootwarm reuselost reply 不重做/不覆蓋人類修改 crates/api/src/file_recovery_e2e.rsscripts/test-runner-jobs.py
MCP 基礎 Computer-local HTTP/stdio、受限 archive、per-binding UID、版本 pin、更新/rollback/撤銷、root receipt 與 UI/API crates/controld/src/mcp_client.rscrates/supervisor/src/runner_packages.pycrates/api/src/package_transitions.rs
readiness Runner/browser/desktop/viewer 分層,真實 X/WM/CDP/WebSocket-RFB兩 display 七種故障修復與 peer 不受影響 crates/supervisor/src/runtime_probe.pyimage/computer/lazyboy-screenscripts/test-runtime-gui.py
GUI 授權發布 持久 display epoch、pause 同交易 bump、root 簽章 publication、中央 durable intent/ack/retry、原 owner/Computer authority 核對、過時 backlog 排除 migrations/039043crates/api/src/gui_publications.rscrates/supervisor/src/runner_gui_fences.py
GUI routing act/browser/recording/observe/health 的 target 一致性、非法 display重複 header 拒絕;實際 controld 39 cases crates/control/src/screen.rscrates/controld/src/main.rscrates/supervisor/src/main.rstests/gui-targets.test.py
Cua 未明結果 取消timeout 保留本地 unresolved、拒絕自動重開 session、未知 outcome 不 delivery retry本次補 cursor configuration 未明即停 crates/control/src/cua/client.rs
量測 native shared 60private 30 樣本與環境記錄 docs/benchmarks/scripts/bench-agent-computer.py

O01O48 目前標記

以下逐項保留原稽核狀態;「部分完成」與「未開始」全部仍在使用者要求範圍內。

ID 項目 優先級 狀態
O01 修正新圖交付 P0必做 已驗證(限稽核所列範圍)
O02 原生 exec P1必做 部分完成
O03 原生 files P1必做 部分完成
O04 持續 jobs 與 PTY P1必做 部分完成
O05 批次程序form macro P1必做 部分完成
O06 套件/連線常駐 P1必做 部分完成
O07 穩定 Runner transport P2量測 未開始
O08 readiness 分層 P1必做 部分完成
O09 按能力路由 P1必做 部分完成
O10 工具 schema 按需載入 P1必做 部分完成
O11 簡單任務不加 planner P1必做 已驗證(限稽核所列範圍)
O12 條件等待 P1必做 部分完成
O13 DOM snapshot 限量與增量 P2量測 未開始
O14 agent 圖片和 viewer 串流分離 P1必做 已驗證(限稽核所列範圍)
O15 既有 browser/session 穩定 attach P1必做 部分完成
O16 驗證、有限恢復與模型升級 P1必做 部分完成
O17 Xvfb+x11vnc → TigerVNC Xvnc P2必做候選測試 部分完成
O18 Xvfb+x0vncserver 備選 P3保留替代 未開始
O19 檢查 -noxdamage P2對照 未開始
O20 noVNC/websockify 與畫質檔 P2調校 部分完成
O21 精簡桌面而非先換 OS P2調校 已驗證(限稽核所列範圍)
O22 Selkies 替代 viewer P3可選 未開始
O23 Xpra 替代 viewer P3可選 未開始
O24 Wayland全面換桌面 P3延後 未開始
O25 雙模式正式保留 P0必做 部分完成
O26 按 display檔案account 鎖 P1必做 部分完成
O27 scope-aware pause P1必做 部分完成
O28 共享 lifecyclesingle-flight P1必做 部分完成
O29 程式共享與帳號授權分離 P0必做 部分完成
O30 公平排程與總配額 P1必做 部分完成
O31 Chromium /dev/shm 與程序回收 P2量測 未開始
O32 X11/DBus/profile 權限與 session P1必做 部分完成
O33 Tool Manager 安裝入口 P1必做 部分完成
O34 來源版本與完整性 P1必做 部分完成
O35 安裝/啟動/認證/授權分開 P1必做 部分完成
O36 熱啟用與 registry 更新 P1必做 部分完成
O37 版本更新/回滾/移除 P1必做 部分完成
O38 OAuthtoken broker P1必做 未開始
O39 Outlook Graph 外掛 P1必做驗收 部分完成
O40 Outlook 批次/增量同步 P1/P2 部分完成
O41 operation journal/outbox P0/P1 部分完成
O42 活動紀錄串流而非桌面演出 P1必做 部分完成
O43 artifact 存 Computer脫敏 P1必做 部分完成
O44 Task 驗證與郵件分類品質 P1必做 部分完成
O45 衝突與冪等/未知效果 P1必做 部分完成
O46 部件健康與版本相容矩陣 P1/P2 部分完成
O47 已驗證 skill流程重用 P2後續 未開始
O48 端到端viewer 雙 benchmark P1必做 部分完成

尚待完成的實作與驗收

  1. GUI 執行邊界:實際 executor 接 root durable admission、整個 operation deadline可信 quiescence、未知結果可信恢復pause/takeover 等待 root acknowledgement。現在 publication/store 已有,實際 GUI 操作尚未全接入。
  2. 服務與 OS 隔離controldCua 的可信身分和 credential 通道、boot/service/X session epoch任意同 UID shell 仍可繞過 GUI 路徑,需實際 namespaces/cgroup/fs/network/syscall/process-tree 保護。不可把 HTTP 200CLI exit 當可信 GUI 完成。
  3. 所有輸入同一授權Cua、DOM、人類 noVNC input/clipboard/resize、profile 排他、inode/symlink alias、stale refs、AT-SPI 語意恢复與整台 Computer barrier。
  4. Native/files/artifacts 補齊:完整 signal/cancel race 與 API restart其餘寫入路徑接 journal大附件 upload/download 全串流、所有工具輸出 artifact、完整 quota/retention/GC、大量歷史首次掃描公平性。
  5. 資源協調per-agentComputer 的 CPU/RAM/disk/requests 配額與公平排程;完整 lifecycle 活性聚合及壓測。
  6. Tool Manager 完整契約:完整 V1/nested manifest、catalog/受控 URL/上傳、審核 hooks/deps、真實第三方 MCP、常駐 pool/legacy SSE、registry/grant 熱更新與活動 run 撤銷。
  7. OAuth郵件:受保護 token broker、refresh single-flight、Google/Microsoft 安裝型 adapter、fake HTTP 分頁/429/Graph 20 batch/delta/ImmutableId、unknown readback/conflict-aware undo、分類品質資料集。真實外部 OAuth 帳號可另列 BLOCKED_EXTERNAL不能因此跳過本地實作與 fixtures。
  8. 執行策略:完整 capability dispatcher、verifier/milestone、有限恢復/模型升級、form macro 每步 checks、event wait、增量 DOM revision/ref invalidation、已驗證流程重用。
  9. P2/P3 顯示替代與量測UDS/HTTP transport 分解TigerVNC 建置與對照、x0vncserver、XDamage、noVNC FPS/壓縮/延遲、桌面 autostart、Selkies、Xpra、Wayland 可選實作與實測、Chromium shm/OOM。仍保留原 X11 rollback。
  10. 完整 E2Ebenchmark:公開 login/model/run→Computer→GUI/viewer 全流程、雙模式所有 T01T64 故障條件、冷暖各 30 次的完整模型/工具/queue/snapshot/viewer/CPU/RAM/可讀性量測。現有 native benchmark 不等於完成此項。

暫停時工作樹與續作規則

  • 工作目錄 /root/lazyBoyHEAD 80fe9a8;大量累積修改及未追蹤檔案尚未提交。保留整個工作目錄,不要 reset/clean 或只保留 tracked diff。未部署、未推送,未動正式 migration使用者資料。
  • migration 024043 是累積變更的一部分SQLx 測試使用 disposable PostgreSQL不代表正式資料庫已升級。
  • 目前測試資料庫:postgres://lazyboy:lazyboy@127.0.0.1:5434/lazyboy,容器 lazyboy-test-pg。Computer fixture image lazyboy/computer:localcontrold fixture lazyboy/controld:plan-test
  • 續作先讀本文件、progress 最後兩節與 audit再確認 git status、既有程序與測試結果。未收到使用者恢復指令前不新增實作或啟動整批測試。
  • 恢復後第一個主要工作:設計並接好可信 root GUI executor 邊界(見待辦 13不要把目前 instance 記憶體 guard 說成 durable 完成。再依主計劃 DAG 收斂其餘全部項目。
  • 常用驗證:cargo test -p lazyboy-control -p lazyboy-controldCARGO_INCREMENTAL=0 cargo clippy -p lazyboy-control -p lazyboy-controld --all-targets -- -D warningsDATABASE_URL=postgres://lazyboy:lazyboy@127.0.0.1:5434/lazyboy python3 scripts/test-runner-jobs.py
  • controld/control runtime 改動後完整 gate 必須重建 fixture binary不可用 host glibc binary 取代 Bookworm image 內 binary。僅在 runtime 完全未變時才考慮 LAZYBOY_TEST_MCP_IMAGE 重用。

本次收尾驗證

  • 最終 Control 165 passed、controld 2 passed/tmp/lazyboy-cua-motion-tests-final.log
  • 最終 affected all-targets Clippy -D warnings 通過,/tmp/lazyboy-cua-motion-clippy-final.log;最初 collapsible-if 已修正並重新驗證。
  • 完整 Runner gate 通過,/tmp/lazyboy-cua-motion-gate.log,包含實際 controld 39 個 target 案例、Supervisor HTTP 4.19 秒、API 真實恢復整合 26.82 秒、native/files/MCP/publication retry 與重建回歸。
  • gate 的 Bookworm runtime snapshot 在純語法 let-chain 整理前建置;語意相同,最終 host 測試及 Clippy 覆蓋整理後 source。
  • 本次 fixture prefix lazyboy-plan-runner-test-811691d312ee;自有容器與 network 已清除。既有測試 PostgreSQLbase images 保留,不刪使用者或其他資料。
  • 本次所有測試程序已結束,沒有待接手的測試 handle。git diff --check 通過。測試日誌位於 /tmp,可能隨環境清理消失;本文件保留結果摘要。
  • 已依使用者要求暫停;等使用者明確恢復後再開工。