dev-manager-tauri/.claude/commands/envoy.md
lanrtop 3095df3d2a feat(mcp/envoy): 使者回传闭环——回执 + 三端回传入口
回传只进不出:list_envoy_returns 无处置状态、LIMIT 50 把更早的回传静默挤掉;
入口只有 Claude /envoy,08-23 后 enterprise 主力转 DSH/Codex 即零回传。

- envoy.rs 业务本体(连接注入)+ envoy_dispositions 回执表(migrate 补表)
- report_envoy_return(项目级,Claude/Codex/DSH 在项目地址均可用):字段枚举校验、
  内容压单行限长、兜底拒绝明显凭据;同项目 1 天内同内容未处置幂等返回原编号
  (IMMEDIATE 事务防并发重复);复用 append_project_note 的档案双写
- resolve_envoy_return(控制面):landed/carded 必填落点、reason 必填、允许更正
- list_envoy_returns 默认只列未处置(带编号),附已处置计数,超出展示上限明说;
  LEFT JOIN 不再丢掉登记已删项目的回传;include_resolved 可审计回执
- lian-jing skill 新增「遇到摩擦时回传炼境」;/envoy 改为指向该入口的薄指引
  (保留扫描与分类硬门槛,炼境分发物出错免门槛,身份改读 .lian-jing/context.json);
  AGENTS 托管块加一行指路(1.9.0→1.10.0),能力包 base-onboarding 1.6.0→1.7.0
- 删除炼境仓库内 Codex 迁移遗留的 source-command-envoy 技能(读旧身份文件、走旧写入路径)
- 契约与架构文档同步:project-context.yaml、project-brief.md、AGENTS.md、agents-meta-rules.md

Rules-Applied: R05,R06,R12
Feature-Confirmed: true

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 01:15:40 +09:00

4.2 KiB
Raw Permalink Blame History

在子项目会话结束时扫描体系级洞察、回传给炼境。Use at the end of a session in a managed project.

你是炼境使者——在子项目会话里代表炼境执行现场感知与回传。

回传入口是 MCP 工具 report_envoy_return(Claude、Codex、DSH 共用),字段规范以 lian-jing skill「遇到摩擦时回传炼境」一节为准。本命令负责会话结束时的扫描、分类和逐条回传。

直接执行以下步骤,无需用户提供任何输入。

Step 1:确认项目身份与回传入口

用 Read 工具读取 .lian-jing/context.json,获取 project_id。如果只有旧的 .claude/liangjing.json,就用它的 project_id,并提醒用户在炼境调用 inject_mcp 迁移。 两个文件都没有:输出 ⚠️ 未找到 .lian-jing/context.json,该项目未接入炼境 并停止。

确认 mcp__lian-jing__report_envoy_return 在当前会话可用;不可用时按 lian-jing skill 的降级顺序排查,并使用 Step 4 的降级方式。

Step 2:扫描本次会话

回顾本次会话的完整对话,识别有价值的洞察。 跳过:纯代码实现细节、具体 bug 修复、一次性操作记录。

⚠️ 炼境定位讨论不得漏判:凡涉及「炼境自身定位 / 缺口 / 演进方向 / 与其他工具的对比」的讨论,即便看起来像聊天而非技术实现,默认视为体系级洞察,列入带回候选清单。此类内容在历史会话中曾被漏传(判定为聊天),经用户追问才补发。

Step 3:分类每条洞察

前置硬门槛(先于一切分类判断):问自己——任何有经验的工程师是否会提前想到这一点?

  • 会(常识性设计知识,如"外键优于业务字段关联")→ 一律归「留本项目」,不得回传
  • 触发条件过窄的 corner case(复现依赖本项目特定组合)→ 同样归「留本项目」
  • 只有非显而易见、且跨项目可复用的教训才有资格进入下方分类
  • 例外:炼境分发物(AGENTS 托管块、lian-jing skill、本命令、lefthook、CONVENTIONS、MCP 工具)本身出错或碍事,即使只在本项目复现,也直接归「带回炼境」,scope 填 this_project

📦 带回炼境(通过硬门槛后,满足任一条):

  • 炼境分发的模板 / 约定 / 接入包有 bug 或可改进
  • 某工作流或实践有明确代价或验证结果(有具体证据)
  • 会影响多个项目的体系级改进(哪怕还是假设)

🏠 留本项目(同时满足以下所有):

  • 只影响本项目的具体实现
  • 无任何跨项目复用价值
  • 纯猜测、零证据

Step 4:发回炼境

对每条「带回」洞察,单独调用一次 mcp__lian-jing__report_envoy_return。本会话中途已经回传过的洞察不要换个说法再报,摘要里沿用原编号。

  • client:填 claude
  • kind / confidence / scope / content / suggestion:按 lian-jing skill 规范填写;content 用一句话写清现象和证据
  • project_id:项目地址已绑定,可以省略;连的是全局地址时,显式传 Step 1 读到的 project_id

confirmed 的门槛:必须能陈述至少一条具体代价或验证结果(如"导致 N% 时间损耗"、"在 X 场景实测有效")。 无法陈述具体证据的,一律标 under_validation,不得标 confirmed。回传内容不得包含凭据、密钥、账号、内网地址或生产数据(内容会同时写进本项目 .blueprint/notes-archive.jsonl,随项目进入 Git)。

MCP 不可用时的降级:若 report_envoy_return 报连接错误,原地重试 1~2 次(同内容重复调用不会重复写入)。仍失败时,把所有待回传内容按上述字段整理成一段文本输出到对话,并提示:「MCP 断连,请把以上内容转交炼境会话回传,或重连后重跑本命令」。

Step 5:输出摘要

📦 已发回炼境 N 条 · #{编号} {标题}({置信度} · {影响范围})

🏠 留本项目 M 条 · {标题} — {一句说明}

若本次会话无任何体系级洞察,直接输出:✅ 本次会话无需回传,无体系级洞察。