关于 reflect
reflect 是一种 Agent 技能,用于从对话中提取可复用经验,并将其整理为技能修改建议。它面向主动调用“reflect”或“/reflect”的用户,并要求保护转录隐私、在修改前获得批准。
主要功能
- 01查找当前会话转录
- 02并行采用三种审查视角
- 03综合发现并进行结构检查
- 04技能修改前须获批准
- 05按范围和类型分派修改
适用场景
- 01从已完成的对话中提炼可复用经验
- 02审查现有技能的修改建议
- 03整理待办事项并提交至 devex
MCP 相关
该技能要求审查者和综合者使用 MCP,查询转录中提及的工单、聊天记录和可观测性跟踪数据。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ michael-denyer/ pstack-claude --skill reflect安装后在 Claude Code 中输入/reflect确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/divergent-reviewer.mdjudgment-reviewer.mdsynthesizer.mdtooling-reviewer.mdscripts/claude-project-dir.mjsfind-transcript.mjs详细介绍
Reflect
在 Codex 上,执行此技能前,请阅读平台映射,包括其中针对各技能的说明。
在 GitHub Copilot 上,执行此技能前,请阅读平台映射,包括其中针对各技能的说明。
在 Muse 上,执行此技能前,请阅读平台映射,包括其中针对各技能的说明。
从当前对话中提炼可长期复用的经验,然后将其用于修改技能。
当用户说“reflect”或“/reflect”时调用。如果对话无关紧要、偏离主题,或已有技能已涵盖且上级已正确遵循该技能,则跳过。一次性情况不算经验。
1. 定位当前对话记录
在并行分派任务之前,先在 Claude Code 的项目专属对话记录目录 ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/projects/<encoded-cwd>/ 中找到本次对话记录。不要跨 ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/projects/ 使用 glob。这会跨越工作区边界,读取其他项目中的私密对话。
使用已安装插件中的 skills/reflect/scripts/find-transcript.mjs 查找器,并传入 projects 目录和对话开头用户提示的一段内容。旁边的 claude-project-dir.mjs 会打印本次会话的 projects 目录,无论 shell 此前切换到了哪里:
dir=$(node <plugin>/skills/reflect/scripts/claude-project-dir.mjs) && node <plugin>/skills/reflect/scripts/find-transcript.mjs "$dir" "<opening prompt fragment>"
它涵盖三种布局(扁平的 <id>.jsonl、嵌套的 <id>/<id>.jsonl、子 Agent 的 <parent>/subagents/<child>.jsonl),按时间从新到旧排列,并打印开头的 typed prompt 中包含该片段的第一个路径。不要手动重新实现扫描:对话记录的第一行是会话元数据,不是消息;以 /clear 或 ! shell 命令开头的会话,会先将该命令的封装内容和输出记录为 user 记录,然后才记录提示;文件可能有数兆字节,因此查找器会逐个流式读取候选文件,并在遇到第一个 typed user 记录时停止。如果命令以 1 退出,请写一份简明的会话摘要并传入。摘要按对话顺序逐行列出用户的提示和更正、工具调用及其结果,以及修改过的文件。不包含诊断、结论或原因。审阅者应评估会话本身,而不是你对此的结论。
2. 并行启动三位审阅者
发送一条消息,包含三个 Agent 调用,subagent_type: "general-purpose"。审阅者需要 MCP 访问权限,以便查找对话记录中提到的工单、聊天线程和可观测性追踪,因此请选择保留 MCP 访问权限的 subagent_type。提示词中必须禁止写入文件。由上级应用修改。
每位审阅者和综合者都要在 pstack-models.md 中找到对应的角色行,并在 Models 中找到默认值。将 model 设为该角色行的值;如果配置表或角色行缺失,则使用默认值。如果值为 auto 或 inherit-parent,则不设置 model。如果 Agent 工具拒绝某个 slug,则使用默认值并说明这一点。如果它拒绝默认值,则根据错误消息使用同一系列中最接近的有效 slug。根据 poteto-mode 技能的 Subagents 部分,为每个子 Agent 选择适合任务的推理级别。
| 视角 | 角色行 | 提示词模板 |
|---|---|---|
| 判断 | reflect judgment, divergent, synthesizer | references/judgment-reviewer.md |
| 工具 | reflect tooling | references/tooling-reviewer.md |
| 发散 | reflect judgment, divergent, synthesizer | references/divergent-reviewer.md |
逐字传入每个模板,并在标记处替换为对话记录路径或摘要。除对话记录路径外,不要添加任何内容,即使对话记录很长,也不要附加重点说明。审阅者会在 Agent 响应正文中返回发现。
3. 综合
调用一次 Agent,设置 subagent_type: "general-purpose",并使用 reflect judgment, divergent, synthesizer 行中的 model(默认值见 Models)。它会通过 MCP 核实引用,因此请选择能够保留 MCP 访问权限的 subagent_type。原样传入 references/synthesizer.md,并在标记处内联每位审阅者的完整输出。它会返回一个 Accepted / Rejected / Backlog 列表。
4. 结构化落实检查
将任何通过 lint 规则、脚本、元数据标记或运行时检查能更可靠地落实的 Accepted 项移至 Backlog。请参阅 encode-lessons-in-structure 原则技能。
5. 应用
展示综合器完整的 Accepted / Rejected / Backlog 输出,并等待明确批准后再应用任何 Accepted 编辑。用户选择要应用的子集,也可以重新指定路由。技能变更会影响组织中的所有未来 Agent。不要自动应用。
无需等待,将每个 Backlog 项提交到团队的 devex 或 backlog 跟踪系统。只有 Accepted 列表需要等待批准。
切勿编辑 plugins/cache/ 下的技能。批准前,显示其目标路径:.claude/skills/<skill>/ 或 ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/<skill>/。批准后,将技能文件夹复制到该路径并编辑副本。切勿创建 PR 或推送。
严格遵循每一行获批项目的 Routing:
- 对现有技能进行简单编辑(一行项目符号、精简句子、更正过时事实):由上级 Agent 直接处理。
- 对现有技能进行实质性编辑(新增章节、新增模式表、超过约 10 行):交由 plugin-dev:skill-development 技能处理,并执行其起草 / 测试 / 迭代循环。
tune description: <skill path>(技能存在,但在应该触发时未触发):交由plugin-dev:skill-development处理,并执行其描述优化循环。new skill via plugin-dev:skill-development: <kebab-name>:将新技能交由plugin-dev:skill-development创建。不要临时自行设计技能结构。
如果你的环境提供 SKILL.md 验证器,请在宣布完成前对每个修改过的技能运行验证。
6. 向用户总结
简短列出,不要写开场白:
- 已应用的编辑:
<skill path>。每项变更用一行说明。 - 新建的技能:
<skill path>。每项用一行说明(少见)。 - 已提交到 devex 跟踪系统的 Backlog:
<issue title>(<tags>)。每项用一行说明。 - 已舍弃:每条被拒绝的发现用一行列出,并说明综合器给出的原因。
Models
角色默认值取自 plugins/pstack/models.json(在此编辑,然后重新运行 tools/generate.mjs)。运行时,pstack-models.md 覆盖表中匹配的角色行会覆盖默认值;/setup-pstack 会写入该表,并列出其在每个运行时中的路径。
- reflect tooling:
opus - reflect judgment, divergent, synthesizer:
opus
Reasoning effort
覆盖表中的角色值可以在模型后指定推理强度,例如 opus @xhigh。Claude Code 支持的级别有:low、medium、high、xhigh、max。具体适用哪些级别取决于模型。没有 @ 的值会使用表中的 default effort 行;该行可设为某个级别或 session,如果表中没有该行,则使用 session。session 不设置推理强度,因此会按通常方式调度。读取模型前,请去掉后缀:inherit-parent 或 auto 仍会在所有级别省略 model,而模型名称则会作为 model 传入。将该级别作为调度的 effort 字段传入,并保留原本会使用的 subagent_type。Claude Code 的 Agent 调用使用 effort,Codex 的 spawn_agent 使用 reasoning_effort。在 Muse 中,工作流子任务使用 effort;subagent_spawn 调度则沿用会话的推理强度。