4.6 KiB
4.6 KiB
name, phases, description
| name | phases | description | |
|---|---|---|---|
| deferred-decisions |
|
记录开发中被延期的技术方案/决策,并在关联任务出现时主动提醒用户。 当对话中出现"以后再做"、"先不做"、"defer"、"延期方案"、"备选方案"、 "递进方案"等语义时触发。也用于浏览、管理已有的 deferred items。 |
Deferred Decisions Skill
追踪开发中被延期的技术方案,在合适时机主动提醒用户。
存储
数据文件: .opencode/data/deferred/registry.md
该文件是 Agent 的结构化记忆,不是面向人类的文档。每个 deferred item 是一个 H3 级标题块。
操作 A:记录延期方案
触发识别
当对话中出现以下模式时,Agent 应主动提议记录:
- 讨论了多种方案,选择了一种,明确说其余"以后再做"
- 实现了基础版本,提到了可递进升级的高级版本
- 发现了可以改进的点,但当前优先级不够
流程
1. 从对话中提炼:
- 选择了什么方案(chosen_alternative)
- 延期了什么(标题 + context)
- 为什么延期(deferred_reason)
- 什么时候可以做(prerequisite)
- 涉及哪些领域(tags)和文件(related_files)
2. 生成 slug 形式的唯一 ID(如 ecosystem-lod-switching)
3. 读取 .opencode/data/deferred/registry.md(不存在则用模板创建)
4. 在 "## Active Items" 区域末尾、"---" 分隔线之前追加新条目
5. 向用户确认已记录,展示条目摘要
条目模板
### [item-slug] 简短标题
- **status**: deferred
- **tags**: tag1, tag2, tag3
- **recorded**: YYYY-MM-DD
- **source_chat**: [简短描述](chat-uuid)
- **prerequisite**: 实施前提条件(可选,无则写 "无")
- **related_files**:
- path/to/file1.cs
- path/to/file2.cs
- **context**: |
延期方案的具体内容,2-5 行描述。
包含方案的要点和实施思路。
- **chosen_alternative**: 当时选择的方案简述
- **deferred_reason**: 延期的原因
字段说明
| 字段 | 必填 | 说明 |
|---|---|---|
| ID(方括号内) | 是 | slug 形式,全局唯一 |
| status | 是 | deferred / reminded / in_progress / done / cancelled |
| tags | 是 | 逗号分隔的领域标签,用于关联匹配 |
| recorded | 是 | 记录日期 |
| source_chat | 否 | 来源对话标识 |
| prerequisite | 否 | 实施前提条件 |
| related_files | 否 | 关联代码文件路径 |
| context | 是 | 延期方案的具体内容 |
| chosen_alternative | 是 | 当时选择了什么 |
| deferred_reason | 是 | 延期原因 |
操作 B:关联提醒
触发条件
由 AGENTS.md 中的"延期方案匹配"规则触发,或当用户任务涉及已有 deferred item 的领域时自动触发。
流程
1. 读取 .opencode/data/deferred/registry.md
2. 提取当前任务的关键词和涉及文件
3. 匹配 status=deferred 的 items:
- tags 与当前任务关键词有交集
- related_files 与当前任务涉及文件有重叠
- prerequisite 描述的条件可能已满足
4. 如匹配到,在回复开头简要提醒:
"提醒:你之前有一个延期方案 [item-title] 与当前任务相关。要一并处理吗?"
5. 如用户同意,将该 item 的 status 改为 in_progress
提醒原则
- 每个 item 在同一会话中最多提醒一次
- 只提醒 status=deferred 的 items(reminded/in_progress 不重复提醒)
- 提醒应简洁,不打断用户的主线任务
操作 C:状态管理
| 用户动作 | 状态变更 | 额外操作 |
|---|---|---|
| "开始做 X" | deferred → in_progress | 无 |
| "X 完成了" | in_progress → done | 移到 "Completed / Cancelled Items" 区域 |
| "X 不需要了" | any → cancelled | 移到 "Completed / Cancelled Items" 区域 |
| Agent 提醒后用户确认 | deferred → in_progress | 无 |
移动条目
将条目从 "Active Items" 剪切到 "Completed / Cancelled Items" 区域时,保留完整内容,仅修改 status。
操作 D:浏览/回顾
当用户问"有哪些延期方案"、"deferred list"、"待办方案"等时:
1. 读取 registry.md
2. 列出所有 status=deferred 的 items 摘要表:
| ID | 标题 | Tags | 记录日期 | 前提条件 |
3. 如用户要求按 tag 过滤,只展示匹配项
Registry 文件模板
当 .opencode/data/deferred/registry.md 不存在时,用此模板创建:
# Deferred Decisions Registry
## Active Items
(暂无延期方案)
---
## Completed / Cancelled Items
(暂无已完成或已废弃的方案)
自迭代日志
本节记录使用本 Skill 过程中发现的必要检查项。
已知必要检查
(暂无)