关于 reflect
reflect 是一项技能,用于从当前对话中提炼可复用经验,并将其转化为技能修改建议。它指导 Agent 检查记录、并行评审、综合结果,并在获批后应用修改。
主要功能
- 01定位当前对话记录
- 02并行运行三种评审视角
- 03综合并核实评审结果
- 04技能修改须经批准
- 05按改动范围分派已接受事项
适用场景
- 01从已完成的对话中提炼可复用经验
- 02区分可执行的技能修改与驳回项
- 03为获批的技能修改准备实施
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ q-qp-p/ pstack --skill reflect安装后在 Claude Code 中输入/reflect确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/divergent-reviewer.mdjudgment-reviewer.mdsynthesizer.mdtooling-reviewer.md详细介绍
反思
从当前对话中提炼可长期参考的经验,并将其用于更新技能。
当用户说“reflect”或“/reflect”时调用。如果对话内容无关紧要、偏离主题,或父级 Agent 已正确遵循现有技能,则跳过。一次性事项不算经验。
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 访问权限,以查询记录中提及的工单、聊天线程和可观测性跟踪;readonly 会移除 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,其他运行环境中为 ~/.agents/pstack-models.md)以及默认模型。将 model 设为该行中的值;如果文件或该行不存在,则使用默认值。如果该值为 auto 或 inherit-parent,则不设置 model。如果子 Agent 工具不接受该模型代号,则使用默认值并说明原因。如果默认值也不被接受,则根据工具返回的错误信息或运行环境的模型列表,选择同系列中最接近的有效代号。根据 Subagents 部分的 poteto-mode 技能,按任务要求设置每个子 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 或待办事项跟踪系统。只有 Accepted 列表需要等待批准。
严格遵循每行获批项目的 Routing:
- 对现有技能进行简单编辑(一行项目符号、精简一句话、修正过时信息):由父级直接完成。
- 对现有技能进行实质性编辑(新增章节、新增模式表、超过约 10 行):交由你的 harness 的技能编写技能处理,并运行其起草 / 测试 / 迭代循环。在 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>)。每项一行。 - 已舍弃:每条被拒绝的发现各占一行,并注明综合器给出的理由。