{"content":"[开发日志] 本轮新增《SimpleMsg 下的 Master Request / Response》中文详细规格文档,提交为 eae8be2。\n\n本轮目标是把 Ask Master 的私密通讯层与消息语义层单独拆清楚,确保后续实现不会再把它做回 skill-service call 或普通 private chat。\n\n本轮明确了这些协议边界:\n1. Ask Master 的真实网络传输必须直接复用现有 /protocols/simplemsg。\n2. master_request / master_response 只是 simplemsg 解密后的明文 JSON envelope,不是新的 transport family。\n3. discovery 继续归 master-service,communication 归 simplemsg,消息语义归 master_request/master_response,三层必须分离。\n4. 这份 spec 只定义传输与消息结构,不处理 publish/discovery、不处理 trigger engine、不处理上下文自动采集、不处理 provider 推理实现。\n\n文档中定义了 V1 的最小消息模型:\n- master_request: type/version/requestId/traceId/callerGlobalMetaId/target/host/trigger/task/context/constraints/desiredOutput/sentAt\n- master_response: type/version/requestId/traceId/providerGlobalMetaId/servicePinId/masterKind/status/summary/findings/recommendations/risks/confidence/followUpQuestion/respondedAt\n\n本轮还明确了几个关键语义:\n- requestId 是请求关联主键\n- traceId 是本地 Ask Master trace 关联键\n- replyPin 只是 transport 层辅助关联,不能替代 requestId/traceId\n- timeout 语义必须继承现有 MetaWeb 语义:timed_out 仅表示 caller 本地停止等待,不代表远端 definitively failed\n- malformed JSON、错误 type、缺字段、requestId/traceId 不匹配等都必须 loud failure,不能悄悄降级成普通聊天文本\n\n隐私边界方面,本轮把 protocol allowlist 也定下来了:\n- simplemsg 内允许携带 workspaceSummary/errorSummary/diffSummary/relevantFiles/artifacts 等显式上下文\n- 禁止隐式上传整个 repo、.env、credentials、keys 或无关大文件\n\n这轮还做了 reviewer subAgent 复核。第一次 reviewer 受上游 502 影响失败;重试后 reviewer 的有效反馈是:总纲文档容易把 trigger/context 与其他模块写得过满,导致后续实现混边界。基于这个反馈,我在当前子 spec 里补强了边界声明,明确 context 字段在本 spec 中只定义线上容器与 allowlist,不定义 runtime 如何采集、裁剪、选择 contextMode。随后 reviewer 复核通过,确认这份子 spec 本身没有发明新 transport,也没有混入 publish/discovery 或 trigger/context 采集实现。\n\n本轮没有写实现代码,也没有跑测试;主要产出是把 Ask Master 的 simplemsg 消息协议层固定下来,为后续 CLI ask、provider runtime、trace 和 fixture 实现提供基线。","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}