mcpField
R
reflect

reflect

github.com/michael-denyerAgent 工作流3.6k945 次安装今天更新
代码仓库

关于 reflect

reflect 是一种 Agent 技能,用于从对话中提取可复用经验,并将其整理为技能修改建议。它面向主动调用“reflect”或“/reflect”的用户,并要求保护转录隐私、在修改前获得批准。

主要功能

  1. 01查找当前会话转录
  2. 02并行采用三种审查视角
  3. 03综合发现并进行结构检查
  4. 04技能修改前须获批准
  5. 05按范围和类型分派修改

适用场景

  1. 01从已完成的对话中提炼可复用经验
  2. 02审查现有技能的修改建议
  3. 03整理待办事项并提交至 devex

MCP 相关

该技能要求审查者和综合者使用 MCP,查询转录中提及的工单、聊天记录和可观测性跟踪数据。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/michael-denyer/pstack-claude --skill reflect

安装后在 Claude Code 中输入/reflect确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
divergent-reviewer.md
judgment-reviewer.md
synthesizer.md
tooling-reviewer.md
scripts/
claude-project-dir.mjs
find-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, synthesizerreferences/judgment-reviewer.md
工具reflect toolingreferences/tooling-reviewer.md
发散reflect judgment, divergent, synthesizerreferences/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 调度则沿用会话的推理强度。

评论

支持 Markdown