Skip to content

核心概念

RSP 把未完成工作、持久化事实、长期理由、作用域指令和已完成历史分开。这种分层让仓库上下文可被发现,同时避免每份产物都成为第二套事实源。

产物基础结构

text
.rsp/
├── rsp-rules.md
├── specs/
│   ├── 00-index.md
│   ├── design.md
│   └── decisions/
├── changes/
├── focus.d/
└── archives/
  • .rsp/rsp-rules.md 是生成的、与工具无关的后备协议;Skill 可用时优先使用 rsp Skill。
  • .rsp/specs/ 保存持久化的当前事实与已达成共识的设计。所有 00-index.md 都是生成的直接子项导航,不是可编辑事实的归属位置。
  • .rsp/specs/decisions/ 是默认的权威 Decision Record 目录,保存长期理由、备选方案、权衡和后果。
  • .rsp/changes/ 保存未完成工作。每个可执行 Change 都是单个 Markdown 文件。
  • .rsp/focus.d/ 包含选择当前工作的空标记文件。
  • .rsp/archives/ 保留已完成 Change 的历史。

稳定且有作用域的工作流与验证指令属于最近的项目自有 AGENTS.md,位于 RSP 受管区块之外。

一个 Change,一个结果

一个 Change 拥有一个可观察结果,以及共享的验收、验证、审查、归档和回滚边界。它保留规范的 Proposal、Spec、Design、Tasks、Verify 与 Blockers 章节。

让 Change 成为当前计划和最终决定性证据的收敛快照。临时探针、调试过程和日常命令流水属于工作会话,不属于持久化产物。

Change 名称可以是扁平形式(<change>),也可以是一级分组子项(<group>/<change>);递归工作目录无效。下面的精确阻塞项声明依赖:

md
- requires `<change-work-ref>`: <reason>

RSP 不会从自由文本中猜测依赖边。

Groups(分组)

Change Group 是唯一的复合工作形式。不可执行的 <group>/brief 实体存储为 <group>/00-brief.md>,拥有至少两个直接子 Change 共享的目标、约束、已声明切片、完成条件、持久化结果与分组阻塞项。

先创建 Group,再创建子 Change。每个子 Change 独立聚焦、验证、审查和归档。所有已声明的子 Change 完成后才能关闭 Group。重开已关闭的 Group 或已归档的 Change 是显式恢复操作,不会改写 Git 或发布历史。

生命周期与持久化审查

持久化生命周期有意保持很小:

text
open(未完成)→ archived(已归档)

就绪情况、阻塞项、建议操作、分组健康状态与受管状态都是派生结果,不是存储状态。归档前需要独立完成两个语义判断:

  1. 已实现的当前事实或作用域指令是否需要现有或新的持久化归属位置?
  2. 长期理由是否值得写入 Decision Record?

归档用于保留历史,不会自动提升事实。Change 中的 Spec 增量标记是规划辅助;rsp archive 不会把它们复制到 Specs 或 Decision Records。

Decision Record 路由见配置,操作步骤见日常工作流