关于 reflect
reflect 是一项 Agent 技能,用于从对话中提炼持久经验,并将其路由到技能修改。它规定了审阅对话、征求批准和应用修改的流程。
主要功能
- 01定位当前对话的记录文件
- 02并行运行三种审阅角色
- 03综合发现并检查结构化落实
- 04技能修改前须获批准
适用场景
- 01从对话中提炼可复用经验
- 02将发现路由到现有或新技能
- 03准备获批的技能修改
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ backnotprop/ pstack --skill reflect安装后在 Claude Code 中输入/reflect确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/divergent-reviewer.mdjudgment-reviewer.mdsynthesizer.mdtooling-reviewer.md详细介绍
反思
从当前对话中提炼可长期复用的经验,并将其用于更新技能。
当用户说“reflect”或“/reflect”时调用。如果对话无关紧要、离题,或父级遵循的现有技能已涵盖相关内容,则跳过。一次性事件不算经验。
1. 找到当前活动对话的记录
开始并行处理前,先在当前工作区的会话目录中找到本次对话的记录。不要遍历所有项目的目录,以免跨越工作区边界并读取其他项目的私人对话。
记录的位置取决于所用的运行环境:
-
**Cursor:**系统提示中指定的
agent-transcripts/目录。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中包含本次对话开场用户提示的文件。 -
Claude Code:
~/.claude/projects/<slug>/<session-id>.jsonl,其中<slug>是工作区路径中所有非字母或数字字符替换为“-”后的结果。 -
Pi:
~/.pi/agent/sessions/--<slug>--/*.jsonl,其中<slug>是去掉开头斜杠并将每个“/”替换为“-”后的工作区路径。 -
Codex:
~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl。仅保留第一行中payload.cwd与工作区路径相同的文件。 -
**其他运行环境:**检查该工作区对应的运行环境会话目录。
Cursor 以外的环境,先检查最新的候选文件,再通过第一条用户消息中的本次对话开场提示确认。如果没有匹配项,则传递该会话的精简摘要。
2. 并行启动三位审阅者
通过一条消息并行调用三次 Task,设置 subagent_type: generalPurpose、Agent 模式(readonly: false)。审阅者需要 MCP 访问权限,以便查找记录中提及的工单、聊天线程和可观测性追踪;只读模式会移除 MCP。
**其他运行环境。**此技能中的启动方式使用 Cursor 的 Task 工具。在其他运行环境中,请使用对应的子 Agent 工具:Claude Code 使用 Agent(subagent_type: general-purpose),OpenCode 使用 task(subagent_type: general),Codex 使用 spawn_agent。保留提示词和模型;移除工具不支持的参数。如果运行环境没有子 Agent 工具(例如未安装扩展的 Pi),则自行依次完成每个角色的工作。
每位审阅者和综合者都要在 pstack 设置文件中查找角色对应的行(Cursor 为 ~/.cursor/rules/pstack-models.mdc,Claude Code 为 ~/.claude/rules/pstack-models.md,其他运行环境为 ~/.agents/pstack-models.md),并查找默认值。将 model 设为该行中的值;如果文件或对应行不存在,则使用默认值。如果值为 auto 或 inherit-parent,则不设置 model。如果子 Agent 工具不接受模型标识符,则使用默认值并说明原因。如果工具不接受默认值,则根据错误消息或运行环境的模型列表,选择同系列中最接近的有效标识符。根据工作内容,按照 poteto-mode 技能的“Subagents”部分,为每个子 Agent 选择推理级别以及快速或标准速度。
| 视角 | 角色行 | 默认 model | 提示词模板 |
|---|---|---|---|
| 判断 | reflect judgment, divergent, synthesizer | claude-opus-5-5-xhigh | references/judgment-reviewer.md |
| 工具 | reflect tooling | grok-4.7-xhigh-fast | references/tooling-reviewer.md |
| 发散 | reflect judgment, divergent, synthesizer | claude-opus-5-5-xhigh | references/divergent-reviewer.md |
将每个模板原样传递,仅替换其中标记的记录路径或摘要。审阅者会在 Task 响应正文中返回发现。
3. 综合整理
调用一次 Task,subagent_type: generalPurpose,model 使用 reflect judgment, divergent, synthesizer 行中的模型(默认为 claude-opus-5-5-xhigh),并启用 Agent 模式(readonly: false)。它会通过 MCP 抽查引用;只读模式会移除 MCP。将 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/ 下的技能。批准前,展示其目标位置:Cursor 中的 .cursor/skills/<skill>/ 或 ~/.cursor/skills/<skill>/,或者你所用运行环境的项目级或用户级技能文件夹,例如 .claude/skills/<skill>/ 或 ~/.agents/skills/<skill>/。批准后,将技能文件夹复制到该位置并编辑副本。切勿创建 PR 或推送。
严格遵循每一行获批内容的 Routing:
- 对现有技能进行琐碎编辑(一行项目符号、润色一句话、更正过时信息):由父 Agent 直接处理。
- 对现有技能进行实质性编辑(新增章节、新增模式表、超过约 10 行):交由所用运行环境的技能编写技能处理,并运行其草拟 / 测试 / 迭代流程。在 Cursor 中使用
create-skill(内置),或使用 Anthropic 的skill-creator。若两者都没有,请遵循 agentskills.io 上的 Agent Skills 格式。下文中的“create-skill”指你使用的其中一种工具。 tune description: <skill path>(技能存在,但本应触发时未触发):交由create-skill处理,并运行其描述优化流程。new skill via create-skill: <kebab-name>:交由create-skill创建。不要临时自行设计格式。
如果你的运行环境提供 SKILL.md 验证器,请在宣布完成前对每个改动过的技能运行验证。
6. 向用户总结
简短列出,不要加开场白:
- 已应用的编辑:
<skill path>。每项变更用一行说明。 - 新建的技能:
<skill path>。每项用一行说明(较少见)。 - 已提交到 devex 跟踪系统的 Backlog:
<issue title>(<tags>)。每项用一行说明。 - 已舍弃:每条被拒绝的发现单独列出,并说明综合整理器给出的理由。