| name | skill-self-improver |
| description | Auto-suggest SKILL.md改进。读 evolution-memory event log (~/.nexus/evolution_memory/.event_log.jsonl),找出反复 rollback / 反复 blocked / 反复 manual override 的 stage,生成人工审阅用的 markdown 建议。从不直接改 SKILL.md。 |
Skill Self-Improver — /meta-optimize 后端
跨项目"事后复盘"型 skill:扫描被动事件日志,发现反复在同一个 stage 翻车的信号,然后给出针对该 stage 对应 SKILL.md 的结构化改进建议。
它只生成建议。 它从不直接 patch 任何 SKILL.md —— 真正的修改始终由人类基于这份建议人工完成。这是为了避免"自动改 prompt → 翻车放大"的失控反馈。
When to Use
- 用户说 "/meta-optimize"、"自我优化"、"哪些 skill 该改了"、"复盘 skill 表现"
evolution-memory 已经被动累计了一段时间(≥几十条事件)后
- 项目阶段性收尾、准备进入下一轮 pipeline 前
输入
唯一输入:~/.nexus/evolution_memory/.event_log.jsonl。
每行是一条 log_event.py 写入的 JSON:
{
"timestamp": "2026-05-25T03:14:00+00:00",
"project_dir": "/abs/path/to/project",
"status": "rolled_back",
"stage": "ideation",
"from_stage": "ideation",
"to_stage": "survey_fetch",
"reason": "red_team_consensus"
}
事件日志的 schema 与 hook 协议 不被本 skill 修改 —— 它是只读消费者。
三类模式
| Pattern | 触发条件 (默认阈值) | 信号含义 |
|---|
frequent_rollback | 同一 stage status="rolled_back" ≥ 3 次 | 该 stage 的退出标准太松,skill 反复说"做完了"但其实没做完 |
frequent_skip | 同一 stage status="blocked" ≥ 2 次 | 该 stage 有 gate 反复拦截调用方(很可能是硬卡点 skip 被拒,或 validator 反复失败) |
frequent_manual_override | 同一 (project, stage) 出现 failure → advanced 序列 ≥ 3 次 | 人类反复手动绕过 gate —— 要么 gate 规则错了,要么 skill 应当自己先检查 |
阈值都是 MCP 工具的参数,可以按场景调。
输出
唯一输出:artifacts/skill_improvement_suggestions.md。永远不写任何 SKILL.md。
报告结构:
# Skill Improvement Suggestions
- Generated: ...
- Event log: ...
- Events scanned: N
- Projects covered: M
- Patterns detected: K
> Read me first. 每条都是给人类的建议,没有自动应用。
## Frequent Rollback
### `ideation` — 5 occurrence(s)
- Skill file to consider editing: .agents/skills/idea-brainstorm/SKILL.md
- Projects affected: 3 (`...`)
- Window: 2026-04-01 → 2026-05-20
- Distinct reasons: `red_team_consensus`, `novelty_unknown`
**Suggested SKILL.md improvements:**
- Tighten exit criteria for `ideation`. ...
- Observed rollback reasons: `red_team_consensus`, `novelty_unknown`. ...
- Add a worked example of a borderline case the skill previously got wrong.
<details><summary>Sample events</summary> ... </details>
## Frequent Block / Skip Refusal
...
## Frequent Manual Override (failure → advance)
...
调用方式
两个 MCP tool(在 pipeline-orchestrator 服务里):
skill_self_improver.scan_event_log(...)
scan_event_log(
log_path=None, # 默认 ~/.nexus/evolution_memory/.event_log.jsonl
project_filter=None, # 仅看某一个 project_dir
last_n_projects=None, # 仅看最近 N 个 project_dir(按 first-seen 时间)
)
返回:{log_path, total_events, kept_events, projects, events: [...]}。
skill_self_improver.generate_suggestions(...)
generate_suggestions(
log_path=None,
output_path="artifacts/skill_improvement_suggestions.md",
project_filter=None,
last_n_projects=None,
rollback_min=3,
skip_min=2,
override_min=3,
)
返回:{status, output_path, markdown, patterns, scan_meta}。
output_path=None 时只返回 markdown 不写盘 —— 用于 dry-run。
严格禁区
- 不修改
evolution-memory 的 hook 协议(log_event.yaml / log_event.py 不动)
- 不修改
.event_log.jsonl 自身
- 不自动改任何
SKILL.md —— 输出始终是 markdown 建议给人类
- clean-room 实装(仅按本 SKILL.md 规范设计,不读任何外部 self-optimizer 项目的源码)
与其它 skill 的关系
| Skill | 关系 |
|---|
evolution-memory | 上游生产者:写 .event_log.jsonl |
pattern-promoter | 兄弟:从 lessons/ 提炼 Knowledge Graph;本 skill 从 event_log 提炼 prompt 改进 |
| 各业务 skill (idea-brainstorm / experiment-runner / paper-writing …) | 下游消费者:人类基于本报告决定要不要改它们的 SKILL.md |
核心准则
- 建议而非修改 —— 自动改 prompt 会放大错误,永远把决定权留给人类。
- 失败信号优先 —— rollback / blocked / override 都是失败信号;成功的"安静运行"不需要被分析。
- 跨项目才有意义 —— 单个项目的一次 rollback 是个例,三个项目里同一 stage 三次 rollback 才是 pattern。
- 建议指向"哪些旋钮可以拧",不假设具体怎么拧 —— 措辞由人类来写。