关于 reflect
reflect 是从对话中提炼长期有效经验并分流到技能修改或待办事项的 Agent 技能。它通过并行评审和综合整理形成结论,并要求获批后才应用接受的修改。
主要功能
- 01定位当前对话记录
- 02并行运行三种评审视角
- 03整理接受、拒绝和待办项
- 04技能修改须经批准
适用场景
- 01从会话中提取可复用经验
- 02评审技能变更中的长期发现
- 03将获批改进分配到现有或新技能
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mdsmithaustin/ pstack --skill reflect安装后在 Claude Code 中输入/reflect确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/divergent-reviewer.mdjudgment-reviewer.mdsynthesizer.mdtooling-reviewer.md详细介绍
Reflect
从当前对话中挖掘可长期复用的经验,并将其用于更新技能。
当用户说“reflect”或“/reflect”时调用。如果对话无关紧要、偏离主题,或已有技能已涵盖相关内容且父级遵循正确,则跳过。一次性情况不算经验。
1. 定位当前转录
父级在启动多个子任务前,先找到自己的转录文件:此工作区转录存储中最新的会话。使用 pstack-harness 技能定位。不要读取其他工作区的转录存储。这样会越过工作区边界,读取无关项目中的私人聊天记录。
ls -t <agent-transcripts>/*.jsonl <agent-transcripts>/*/*.jsonl <agent-transcripts>/*/subagents/*.jsonl 2>/dev/null | head -10
这涵盖旧版平铺式(<id>.jsonl)、当前嵌套式(<id>/<id>.jsonl)和子 Agent(<parent>/subagents/<child>.jsonl)布局。读取每个候选文件的第一行 JSONL。选择 message.content[0].text 包含本次对话开场用户提示的文件。如果没有匹配项,则改为传入本次会话的简明摘要。
2. 并行启动三位审查者
在一条消息中发起三个 Task 调用,subagent_type: general-purpose,并按下表设置 model,使用 Agent 模式(readonly: false)。审查者需要 MCP 访问权限,以便查询转录中提及的工单、聊天记录和可观测性追踪;readonly 会移除 MCP。使用 pstack-harness 技能启动。该技能的 Spawn a role 部分会解析角色并构建此 CLI 的启动调用。
每位审查者和综合者都要在 pstack 模型配置中指定角色行及默认值。使用 pstack-harness 技能解析其模型、effort 和 Agent 类型。该技能的 Spawn a role 部分还涵盖缺失配置、inherit-parent 和无效值。
| 视角 | 角色行 | 默认 model | 提示词模板 |
|---|---|---|---|
| 判断 | reflect judgment, divergent, synthesizer | opus | references/judgment-reviewer.md |
| 工具 | reflect tooling | opus | references/tooling-reviewer.md |
| 发散 | reflect judgment, divergent, synthesizer | opus | references/divergent-reviewer.md |
逐字传入每个模板,并在标记处替换为转录路径或摘要。审查者会在 Task 响应正文中返回发现。
3. 综合
发起一个 Task 调用,subagent_type: general-purpose,model 使用 reflect judgment, divergent, synthesizer 角色行中的值(默认 opus),使用 Agent 模式(readonly: false)。它会通过 MCP 抽查核实引用;readonly 会移除 MCP。逐字传入 references/synthesizer.md,并在标记处内嵌每位审查者的完整输出。它会返回一份 Accepted / Rejected / Backlog 列表。
4. 结构化强制检查
将任何可由 lint 规则、脚本、元数据标志或运行时检查更可靠地强制执行的 Accepted 项移至 Backlog。参见 encode-lessons-in-structure 原则技能。
5. 应用
展示综合器输出的完整“接受 / 拒绝 / 待办”列表,并在应用任何已接受的编辑前等待明确批准。用户选择要应用的子集,也可以重新指定路由。技能变更会影响组织中未来的所有 Agent。不要自动应用。
将每条普通待办事项提交到团队的 DevEx 或待办事项跟踪器,无需等待。安全、隐私、身份验证、数据和权限边界相关发现除外。请将这些发现保密,并直接报告给操作人员。切勿在公共跟踪器、问题、PR 或评论中发布或链接这些发现。只有已接受列表需要等待批准。
严格遵循每行获批内容中的路由:
- 对现有技能进行简单编辑(一行要点、收紧句子、修正过时信息):由上级直接处理。
- 对现有技能进行实质性编辑(新章节、新模式表、超过约 10 行):遵循
../poteto-mode/playbooks/authoring-a-skill.md中的编写指南,并执行草稿 / 测试 / 迭代循环。 tune description: <skill path>(技能存在,但应触发时未触发):按照../poteto-mode/playbooks/authoring-a-skill.md重写描述,并执行描述优化循环(测试应该触发和不应该触发该技能的表述)。new skill: <kebab-name>:按照../poteto-mode/playbooks/authoring-a-skill.md创建技能。不要临时自行设计格式。
如果环境中提供了 SKILL.md 验证器,请在宣布完成前对每个修改过的技能运行验证。
6. 向用户总结
简短列出,不要写引言:
- 已应用的编辑:
<skill path>。每项用一行说明变更内容。 - 新建的技能:
<skill path>。每项用一行说明(少见)。 - 已提交到 DevEx 跟踪器的待办:
<issue title>(<tags>)。每项用一行说明。 - 已舍弃:每条被拒绝的发现单独占一行,并说明综合器给出的理由。