# 规格与工单

保存已定决策，切出能独立验收的小闭环。

## 聊天里的决定，下一次还能找到吗？

昨天确认了保存失败时保留输入，今天换了会话，agent 却把表单清空。决定留在长聊天里，没有变成可查的实施依据；另一种问题是规格太长，旧细节盖住了真正工作。

规格要解决的是决定如何传递。它应让新会话知道什么已定、什么没定，以及完成时要拿出什么证据，而不是增加另一份容易失效的说明。

## 只写已经确认的行为

把目标、行为、范围外事项和验收方式写清楚。对于尚未决定的同步策略，直接标为待确认；不能为了让文档完整，就把自己的猜测写成需求。

- **目标与行为** 谁要完成什么，系统怎样回应？
- **边界与未知** 这次不做什么，哪些问题仍需决定？
- **验收方式** 哪些操作和结果能够证明行为成立？

> They're just a projection of the decisions made during grilling.
>
> — Matt Pocock, [source](https://x.com/mattpocockuk/status/2083563195671667176), 2026-08-01
>
> 本站译意：规格只是反复追问中已作决策的文字投射。

Figure: 规格、纵向工单与 ADR 的关系 ([d06-spec-lifecycle](/diagrams/d06-spec-lifecycle.zh.svg))

## 工单先贯穿一条完整路径

`/to-spec` 收拢已定决策，`/to-tickets` 再切成小而完整的纵向能力。第一张先连接输入、处理与输出，验证路径接得上，再逐步扩展。

这条细小的端到端实现常叫 tracer bullet。它并非 Matt 原创术语；重点是尽早得到系统能否协作的反馈，而非先把每一层分别写满。

Figure: 分层完成后再集成，与先贯通输入、处理、输出的纵向切片对照。 ([s06-tracer](/art/s06-tracer.zh.svg))

## 给材料安排不同的寿命

Matt 的实践倾向把工单放在 tracker，规格用后清理，长期决定放进 ADR。需要审计、协作或追溯的团队，应先约定归档政策，不能把个人习惯写成统一删除要求。

<!-- compare -->
| 材料 | 保存什么 | 何时处理 |
|---|---|---|
| 规格 | 已定目标、行为、边界、验收 | 实施后按团队政策清理或归档 |
| 工单 | 一个小闭环、依赖、证据 | 跟随交付，留在追踪器 |
| ADR | 长期决定及其理由 | 长期保留，变化时注明替代关系 |

## 练习：收藏功能先交哪一片？

先预测「前端做完、接口做完、存储做完」能否分别证明收藏可用。再只选一条内容，写一张从点击到持久保存的小工单。

Figure: 收藏工单的任务、依赖、范围外、失败观察、成功观察与验收证据六栏。 ([s06-ticket-anatomy](/art/s06-ticket-anatomy.zh.svg))

### 让一条内容的收藏可验收

- 任务：点击收藏并保存，刷新后仍显示已收藏。
- 依赖：内容 ID、现有用户身份、可用的存储接口。
- 范围外：批量收藏、筛选和多端同步。
- 失败时观察到：保存失败有提示，不能显示假成功，并允许重试。
- 成功时观察到：点击、保存、刷新后，状态与存储一致。
- 验收证据：记录一次成功操作和一次模拟保存失败的结果。

参考思路: 这张工单覆盖输入、处理与输出，能独立演示。若接口尚不存在，先明确前置依赖或把最小接口纳入闭环，不能留一个无法验收的空壳。

> **本站推论**
> 本站建议：把下一张工单留给取消收藏，先证明一个方向的状态能正确保存。具体切分仍应由已有依赖与风险决定。

## 怎样才算完成？

交出一张能独立验收的工单，列明依赖、失败与成功观察、证据位置。读者无需回看聊天就能执行它；未确认事项不能悄悄变成实施前提。

带着这张工单进入[实现与反馈](/zh/implementation-and-feedback)，实际跑出验收结果。

## 速查

- **规格存决定** 已定与未定分开，验收写具体。
- **工单交能力** 先贯穿输入、处理、输出。
- **长期留理由** ADR 与临时材料分别管理。

## 来源

- [Matt Pocock · 2026-08-01](https://x.com/mattpocockuk/status/2083563195671667176)
- [Tracer Bullets](https://www.aihero.dev/tracer-bullets)

非官方、非商业的学习整理，与 Matt Pocock 无隶属或背书关系。所引作品版权归原作者；MIT 复用内容另附版权与许可声明。

本页说明图内嵌的 CSS 片段改编自 Archify（https://github.com/tt-a1i/archify），MIT 许可，完整许可如下。

### 完整许可：Archify (tt-a1i/archify)

```text
MIT License

Copyright (c) 2026 tt-a1i (Archify)
Copyright (c) 2025 Cocoon AI

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
