Files
mnote/bugs/03-rust-web/done/3-20-acp-request-permission-no-response-v1.md
T
lix-2026 a2cb1338c8 chore: 保存当前架构收口与 bug 修复快照
归档本轮 P0/P1 bug 修复、设计审查迁移、AI selection scope 收口与 stream contract 调整,并保留当前 05 主线迁移起点。
2026-05-18 17:01:35 +08:00

1.7 KiB

3-20 [done][bug] ACP incoming request 只记录日志不响应 v1

发现时间:2026-05-17

状态:[done]

关联主线:03-rust-web

1. 问题定义

ACP client 收到 session/request_permission 等 incoming request 时当前只记录日志,没有返回协议响应。

2. 证据

3. 影响

  • ACP agent 侧可能等待到超时。
  • 权限请求无法进入用户确认或自动拒绝流程。
  • run 状态可能卡在进行中,SSE 输出也无法表达真实阻塞原因。

4. 建议修复

  • 为已知 request type 实现明确响应:允许、拒绝或要求人工确认。
  • 未支持的 request type 也应返回结构化 error,而不是只日志。
  • 增加 ACP request/response 协议测试。

5. 修复

  • acp_client.rs 将 ACP 子进程 stdin writer 作为共享 Arc<Mutex<BufWriter<_>>> 传入后台 reader loop。
  • acp_client.rs 对带 id + method 的 incoming request 写回 JSON-RPC error 响应,当前无权限确认 UI 时明确拒绝,避免 agent 等待超时。
  • acp_client.rs 增加 mock ACP server 测试,覆盖 session/request_permission 主动请求必须收到响应。

6. 验证

  • cargo test --manifest-path rust/Cargo.toml -p mnote-web test_incoming_permission_request_gets_response -- --nocapture
    • 结果:1 passed
  • cargo test --manifest-path rust/Cargo.toml -p mnote-web acp_client -- --nocapture
    • 结果:6 passed