This repository has been archived on 2026-07-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
OpenCodeInit/.opencode/skills/deferred-decisions/SKILL.md
2026-05-03 21:09:59 +08:00

4.6 KiB
Raw Blame History

name, phases, description
name phases description
deferred-decisions
all
记录开发中被延期的技术方案/决策,并在关联任务出现时主动提醒用户。 当对话中出现"以后再做"、"先不做"、"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 的 itemsreminded/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 过程中发现的必要检查项。

已知必要检查

(暂无)