# Reasonix 任务:ACP tool locations 与打开动作 Project root: `/mnt/Data1T/mnote` 你不是唯一在代码库中工作的 agent。不要回滚、覆盖或整理与你任务无关的改动;不要提交 git;不要修改 `.gitignore`、`.codegraph/`、`auth-console.txt`、`auth-network.txt`。 ## 背景 Codex 已写 review:`design/10-review/process/13-hermes-vscode-plugin-gap-review-v1.md` 本任务对应 checklist:`design/07-ai/process/7-32-acp-tool-location-and-open-action-checklist-v1.md` 参考实现:`reference-code/hermes-vscode-main/src/protocol.ts` 会解析 `tool_call.locations[].path`;`src/chatPanel.ts` 在 read/edit tool 完成后打开对应 editor。 ## Ownership 允许直接修改: - `rust/crates/mnote-web/src/acp_types.rs` - `rust/crates/mnote-web/src/acp_session_manager.rs` - `rust/crates/mnote-web/src/acp_bridge.rs` - `rust/crates/mnote-web/src/ssr/pages/layout.rs` 中 tool card 展示 / 打开动作小范围代码 - 相关 Rust 测试或必要 smoke - `design/07-ai/process/7-32-acp-tool-location-and-open-action-checklist-v1.md` 的执行记录 注意:`layout.rs` 可能被其他 worker 改动。请避免大范围重排,只接线 tool locations 展示和 open action。 ## 目标 保留 ACP tool `locations[]`,并在 Page AI tool card 中显示和打开。默认打开到 MNote 主编辑器资源 tab / 现有 file open resolver,不默认新浏览器窗口。 ## 具体要求 1. `SessionUpdate::ToolCall` 解析 `locations: [{ path }]`。 2. `AcpSessionEvent::ToolCall` 携带 locations。 3. `acp_bridge` SSE `tool.started` 包含 locations。 4. 前端 tool card 保存并显示 locations。 5. read/edit tool completed 时提供打开动作;优先复用现有主编辑器资源 tab 或已有 file open 函数。 6. 补测试覆盖 parse + SSE + 前端字符串断言。 ## 验收命令 请至少运行: ```bash cd /mnt/Data1T/mnote/rust && cargo test -p mnote-web acp_tool -- --test-threads=1 cd /mnt/Data1T/mnote/rust && cargo test -p mnote-web page_ai_uses_backend_acp_session_runtime_store -- --test-threads=1 ``` ## 最终回复格式 - 修改文件列表 - 关键实现说明 - 实际运行的验证命令和结果 - 未完成项 / 风险