Files
mnote/design/old/07-ai/done/7-30-acp-session-load-resume-checklist-v1.md
T
Agent Board b798f628ee chore: land tree view-state, vault, Pi module split, and repo hygiene
Persist PageTree expand state via control-plane view-state and align
chevron/DOM with restored expansion; keep Sidex-style shallow page-tree
scan and drop the unused recursive scanner that only added cargo noise.

Add password vault workbench routes/runtime/skill/CLI, split page_ai_pi
into a module package, and retire Hermes/ACP/OpenHub recycle + root
harness evidence from the index while gitignoring recycle and local
diag dumps.

Archive superseded design/bugs docs under old/, point architecture at
ARCHITECTURE.md, and refresh smokes for Pi S1–S7, vault, and editor
regressions so the working tree can stay clean.
2026-07-21 05:13:05 +08:00

3.0 KiB
Raw Blame History

[recycle] 7-30 ACP session/load 恢复 checklist v1

状态:done

归档说明(2026-05-21):ACP session/load / resume 核心闭环已完成并通过聚焦测试;session id 全链路持久化作为后续产品化项继续跟踪。

OwnerACP session lifecycle

参考:reference-code/hermes-vscode-main/src/sessionManager.ts

目标

让 MNote ACP runtime 在恢复已有 ACP session 时真正调用 adapter 的 session/load,避免只恢复 MNote 会话历史而产生 phantom ACP session。

允许修改范围

  • rust/crates/mnote-web/src/acp_session_manager.rs
  • rust/crates/mnote-web/src/routes/hermes_client.rs
  • 与 session load/resume 直接相关的 Rust 测试

禁止事项

  • 不改 Page AI 前端 UI。
  • 不改 Convex schema。
  • 不删除或覆盖现有 local AI session JSONL 逻辑。

Checklist

  • AcpSessionManager 增加 load_session(session_id, cwd) 或等价能力,参数与 Hermes VSCode 一致:session/load { sessionId, cwd, mcpServers: [] }
  • load 成功时把当前 ACP session id 设置为 loaded idload 返回 null / error 时允许 fallback 到 session/new
  • 明确区分 MNote session id 与 ACP adapter session id;需要持久化/返回时字段名不能混淆。
  • ACP run 启动处优先尝试恢复已知 ACP session id,再创建新 session。
  • 补 mock ACP 测试覆盖 session/load 成功、返回 null fallback、新 session 仍可 prompt。
  • 更新本文件“执行记录”。

验收命令

cd /mnt/Data1T/mnote/rust && cargo test -p mnote-web acp_session_manager -- --test-threads=1
cd /mnt/Data1T/mnote/rust && cargo test -p mnote-web hermes_client_acp_resume -- --test-threads=1

执行记录

  • 2026-05-20 22:06 — Reasonix Code 执行,Codex 复核并通过聚焦测试。
    • acp_types.rs: 新增 SessionLoadParams / SessionLoadResult 类型。
    • acp_session_manager.rs:
      • 新增 load_session(session_id, cwd) → 调用 ACP session/load,成功时设置 internal session_idnull/error 返回 false。
      • 新增 ensure_session(cwd, stored_session_id) → 1) 复用已有 session2) 有 stored id 时尝试 load3) fallback 到 session/new
      • 新增 7 个单元测试覆盖所有路径:load 成功、null fallback、复用 active、无 stored 创建新 session、fallback 后 prompt 仍可工作。
    • hermes_client.rs:
      • acp_stream_events() 中从 payload 提取 acpSessionId,传给 ensure_session() 替代原来的 create_session
      • 错误码从 acp_session_create_failed 改为 acp_session_ensure_failed
    • Codex 复核:当前 acpSessionId 只从 run payload 读取,前端/session store 仍未稳定持久化并传回该字段,因此“session id 字段全链路区分与持久化”保留未完成。
  • 验收:cargo test -p mnote-web acp_session_manager -- --test-threads=1cargo test -p mnote-web hermes_client_acp_resume -- --test-threads=1cargo test -p mnote-web acp -- --test-threads=1 通过。