edit | blame | history | raw

2026-06-29 FLSR 入口接通

用户目标

Coder@m4c 身份完成 P-20260629-frame-link-scoped-read-contract 下的 M4C-FLSR-02:接通用户实际 agent / MCP / m4c 入口,让用户提供 mindraw://localhost?documentId=...&elementId=<frameId> 后,agent 能调用 m4c frame-only resolver 返回目标 Frame 内容,而不是只回答 FRAME_SCOPE_UNAVAILABLE

已完成事项

  • 定位原因:MD-FLSR-01 / M4C-FLSR-01 的安全边界已通过;用户实际 agent 返回 FRAME_SCOPE_UNAVAILABLE 是因为 agent 入口没有自动路由到 m4c frame context resolver。
  • 新增 m4c agent-facing resolver:m4c-frame-link-agent-resolver.mjs
  • 接入既有 m4c-mcp-alpha resolve-frame-link 命令。
  • 输出 agent-facing JSON,只包含 promptableTextreadScope、scope audit 和 leak guards,不输出整份 drawing.excalidraw
  • 回写统一台账,标记 M4C-FLSR-02 完成。

关键决策

  • 真实 App API 可用时优先消费 Mindraw mindraw.app.get_live_frame_context
  • live API 不可用时,只允许受控 registry / selected-package 做 frame-filtered fallback。
  • 没有 live API / registry / selected package 或缺少 elementId 时继续返回 FRAME_SCOPE_UNAVAILABLE,不做 document read fallback。
  • 本轮不是正式 MCP server,不做 H8 release、真实 AI provider、Google Stitch、direct package write 或 .assets 写入。

文件变更

  • /Users/ar/Projects/ExcalidrawX/02-P/plan-progress.markdown
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/m4c-frame-link-agent-resolver.mjs
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/m4c-mcp-alpha.mjs
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/README.md
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C1.source/CODEGRAPH.md
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/K2.项目管理/联调QA/2026-06-29-M4C-FLSR-02AgentEntryResolver.md
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/FrameLinkScopedRead/qa/m4c-flsr-02-agent-entry-resolver-check.md
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/FrameLinkScopedRead/qa/m4c-flsr-02-agent-resolver-smoke.json
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/FrameLinkScopedRead/qa/m4c-flsr-02-agent-resolver-output.json

验证

  • node --check:resolver 与 m4c-mcp-alpha PASS。
  • m4c-frame-link-agent-resolver.mjs smoke:PASS。
  • m4c-frame-link-agent-resolver.mjs resolve:目标 Frame A 文本可读。
  • m4c-mcp-alpha resolve-frame-link:目标 Frame A 文本可读。
  • 缺少 elementId:返回 FRAME_SCOPE_UNAVAILABLE
  • 外部 Frame B sentinel、token、endpoint、runtime path 泄漏扫描:PASS。
  • git -C p.mindrawforcodex/03-O diff --check:PASS。
  • codebase-memory-mcp cli index_repository:PASS。

Git

  • m4c 03-O commit:17f5106c8f5636b2bb44c8f85428370b81d98839

未决问题

  • 如果用户要求任意 agent 无命令自动调用,需要 PM 另拆正式 MCP / connector registration 或 Mindraw registry discovery 任务。

后续进展

  • 用户在 Terminal 亲自执行 m4c-frame-link-agent-resolver.mjs resolve --input "请只读取这个 Frame:mindraw://localhost?documentId=mdoc_m4c_frame_scope_reverse_20260629&elementId=frame_scope_target_a_001" --registry ... --capability /private/tmp/m4c-flsr-02-missing-write-api.json
  • 输出 ok=truereadScope="frame-only"promptableText 仅含目标 Frame A 文本 FLSR_TARGET_FRAME_A_ONLY
  • scopeAudit.outsideTextIncluded=falsescopeAudit.fallbackToDocumentRead=falseleakGuards.documentReadFallbackAllowed=false
  • PM 判定 M-体验07 命令式入口用户复验 PASS。
  • 仍在推进 M4C-FLSR-03:把命令式入口收敛为当前 Codex / agent 的零命令或低摩擦 Frame link 入口。