来源信息
- 仓库
- zhuqingxun/zqxbase
- 最近来源活动
- 2026年9月9日 07:14
- 检测到的 SKILL.md 语言
- 中文
- 星标
- 0
- 分支
- 0
安装方式
默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。
检查来源文件
决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。
正在显示 SKILL.md
SKILL.md
来源说明 · 只读预览- name
- rpiv-loop:fix
- description
- 基于 rpiv/todo 下的待办文件进行分析和修复
- argument-hint
- [todo 文件路径]
- allowed-tools
- Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Skill
- version
- 2.17.15
# Fix: 分析并修复待办条目
读取 `rpiv/todo/` 下的待办文件(支持 issue/feature/todo 三种类型),根据类型执行对应的处理流程,并将处理记录回写到文件中。
## 输入
待办文件路径:$ARGUMENTS
- 必须提供一个有效的待办文件路径(如 `rpiv/todo/issue-some-bug.md`)
- 如果 $ARGUMENTS 为空,列出 `rpiv/todo/` 下所有 status=open 的条目,让用户选择
## 类型分流
读取文件 frontmatter 的 `type` 字段后,按类型执行不同流程:
| 类型 | 流程 |
|------|------|
| `issue` | 阶段 0 → 1 → **1.5(前置对齐)** → 2 → 3 → 4 → 5 → 6 |
| `feature` | 使用 AskUserQuestion 询问用户:① 走 PRD 流程(`/rpiv-loop:create-prd`)② 作为小特性直接实施(阶段 0 → 1 → **1.5(前置对齐)** → 3 → 5 → 6) |
| `todo` | 简化流程:阶段 0 → 1(确认理解)→ **1.5(前置对齐)** → 3(直接执行)→ 5(回写"执行记录"替代"修复记录")→ 6 |
如果文件没有 `type` 字段(旧文件),从文件名前缀推断(`issue-`/`feature-`/`todo-`),都没有则默认按 `issue` 处理。
**所有类型在阶段 1 之后、进入实施之前,都必须先过「阶段 1.5:与当前系统对齐 + 价值确认」这道强制门槛**(见下)。
## 执行流程
### 阶段 0:读取与状态更新
1. 读取待办文件完整内容
2. 检查 status:
- `open`:正常流程,更新为 `in-progress`
- `in-progress`:询问用户是否继续上次未完成的处理
- `completed`:提示已完成,询问是否需要重新打开
3. 读取 `type` 字段,按"类型分流"章节决定后续流程
4. 更新 frontmatter:
- `status: in-progress`
- `updated_at: 当前时间`
### 阶段 1:问题理解
1. **理解问题**:完整阅读 issue 文件中的所有章节
2. **提取关键信息**:
- 问题现象和错误信息
- 已知的根本原因(如果有)
- 已尝试过的方案(避免重复)
- 影响的文件和模块
3. **向用户确认理解**:用一段话概括问题,确认理解无误后继续
### 阶段 1.5:与当前系统对齐 + 价值确认(强制前置门槛,先于任何实施)
⚠️ **这是进入实施(issue 走阶段 2 / todo·feature 走阶段 3)的强制门槛,所有类型都必须先过。** todo 往往创建较早,随系统不断演进,其中的内容可能已**失效**、需**变更**或应**作废**。**严禁**凭 todo 的历史描述(尤其它自带的"执行记录 / 完成情况"标记)直接实施——那是历史快照,不是 ground truth。
完成以下三步、并经用户确认本轮实施范围后,才能进入实施阶段:
1. **与当前代码对齐(逐条 verify,不信任历史标记)**:对 todo 里**每条**待办 / 事实声明,用 `Grep` / `Read` 实际代码验证当前状态,逐条标三态之一:
- **仍有效**:痛点仍在、原解法仍合理 → 候选保留
- **需变更**:系统已变,痛点还在但解法要调整 → 候选保留(附调整说明)
- **已失效 / 作废**:痛点已消失,或已被其它机制覆盖 / 取代 → 候选淘汰
- todo 自带的"已完成 / 待办"标记一律**重新核对**,不得直接采信(它可能在写下后又被系统演进推翻)
2. **价值确认(哪些还值得做)**:基于对齐结果,逐条判断当前**真实价值**,给每条一个终态:
- 价值仍在 → 保留进入实施
- 价值已被现有机制覆盖 / 边际过低 → 标 `wontfix`(回写时写明"为什么不做"保留追溯)
- 不在本插件 / 本仓库可独立解决范围 → 转**独立** issue/todo 跟踪
- 配合全局规则「处理 todo 默认推进到关闭」:每条都要有终态,不留悬空 `deferred`
3. **不清楚处用 AskUserQuestion 对齐**:对齐与价值判断中任何"不够清楚 / 需用户拍板"的点(某条是否仍要做、终态取哪个、本轮实施范围定哪些),**必须用 AskUserQuestion 以选项形式和用户对齐**,禁止凭假设替用户决定。
**产出**:一张"对齐 + 价值"结论表(`条目 | 当前代码实况 | 三态 | 终态处置`),回写到 todo 作为已验证证据。**只有用户确认"本轮做哪些"后**,才带着这个收敛后的范围进入实施阶段;若全部条目都失效 / wontfix,则跳过实施直接走阶段 6 收口归档。
### 阶段 2:代码库分析
1. **定位相关代码**:
- 根据问题描述搜索相关文件和函数
- 阅读相关模块的核心逻辑
- 理解当前的实现方式
2. **根因分析**(如果 issue 中"根本原因"为"待分析"):
- 分析问题的技术根因
- 记录分析过程和结论
- 使用 AskUserQuestion 确认根因分析结果
3. **制定修复方案**:
- 列出需要修改的文件清单
- 说明每个文件的修改要点
- 评估修复的影响范围(是否会影响其他功能)
- 使用 AskUserQuestion 确认修复方案
### 阶段 3:实施修复
1. **红测试先行(issue 类 bug 且项目有测试套件时强制)**:动手修复前,先写一个能复现该 bug 的失败回归测试,运行并**展示红色输出**——测试在当前代码上必须失败,且只有 bug 真正修好才会通过。项目无测试套件、或条目为 todo/feature 类执行任务时跳过本步,改在阶段 4 说明验证方式
2. 按照确认的方案逐步修改代码
3. 每个修改点:
- 说明修改原因
- 展示修改内容
4. 如果修改过程中发现新问题或方案需要调整,及时与用户沟通
### 阶段 4:验证
1. **红转绿确认**(若阶段 3 写了复现测试):重跑该测试,展示由红转绿的输出——没有红转绿过程的修复不算验证通过
2. 运行项目的验证命令(如果项目配置了 lint/test/build),确认全量通过
3. 如果无自动化验证,手动检查修改的正确性
4. 确认修复不引入新问题
### 阶段 5:回写修复记录
1. **更新 issue 文件的"根本原因"章节**(如果之前为"待分析"):
- 写入分析得出的根因
2. **追加"修复记录"章节**到 issue 文件末尾(在"参考"之前):
```markdown
## 修复记录
**修复时间**: {YYYY-MM-DD HH:MM:SS}
### 修改文件
| 文件 | 修改说明 |
|------|---------|
| path/to/file1.js | {一句话描述修改内容} |
| path/to/file2.js | {一句话描述修改内容} |
### 修复说明
{2-5 句话概括修复思路和关键变更}
### 验证结果
{验证通过/验证方式说明}
```
3. **更新 frontmatter**:
- `status: completed`
- `updated_at: 当前时间`
### 阶段 6:归档与引导
修复完成后,**自动归档**已完成的 todo 文件(不要仅建议用户手动归档):
1. 创建 `rpiv/archive/` 目录(如不存在)
2. 更新 frontmatter:`status: archived`,添加 `archived_at: 当前时间`,更新 `updated_at`
3. 移动文件到 `rpiv/archive/`(如有同名则加时间戳后缀,如 `issue-bug.20260311_120000.md`)
4. 验证移动成功(目标存在、源已删除)
5. 输出:"已归档到 `rpiv/archive/{name}.md`"
然后输出修复总结。
## 特殊情况处理
### 上游/外部问题(无法直接修复)
如果 issue 描述的是上游依赖或外部服务的 bug(如本项目的 Bun 崩溃问题):
1. 明确告知用户此问题无法在本项目中直接修复
2. 在 issue 文件中记录:
- "修复记录"章节改为"处理记录"
- 记录已实施的 workaround(如有)
- 记录上游 issue 的跟踪链接
3. `status` 更新为 `completed`,在"处理记录"中标注"上游问题,已应用 workaround"或"上游问题,等待官方修复"
### 修复中断
如果修复过程中用户需要中断:
1. 保持 `status: in-progress` 不变
2. 在 issue 文件末尾追加当前进度说明
3. 下次通过 `/rpiv-loop:fix` 重新打开时可继续
### 修复失败
如果分析后发现当前无法修复:
1. 将分析结果写入"根本原因"章节
2. 在"修复记录"改为"分析记录",记录已尝试的方案和失败原因
3. `status` 保持 `in-progress`(不标记为 completed)
4. 建议用户后续重新尝试或寻求其他方案
## 注意事项
1. **前置对齐先于实施(强制)**:见「阶段 1.5」。未完成"与当前代码对齐 + 价值确认 + 用户对齐本轮范围"前,禁止进入实施阶段(阶段 2/3)改任何代码。todo 越老越要先 verify,不凭历史描述开干
2. **避免重复劳动**:认真阅读 issue 中"已尝试的方案",不要重走已排除的路径
3. **最小化修改**:只修改解决问题必需的代码,不做额外重构
4. **保持 issue 文件结构**:回写时只追加或更新特定章节,不改动其他内容
5. **修改 rpiv/ 文件后同步更新 frontmatter**:每次修改待办文件都要更新 `updated_at`
在 GitHub 查看