feat(ship): merge short-ship and long-ship into one entry

Promote ship to the user-facing delivery skill. Kind is short or long
from an explicit mode, then self-judgment, then a question, defaulting
to short. Old names remain deprecation stubs.
This commit is contained in:
2026-10-24 14:27:19 +08:00
parent 7d6f3fe8e5
commit a15a046e4e
33 changed files with 331 additions and 315 deletions
+18 -9
View File
@@ -1,25 +1,34 @@
# ship
一次交付的记录格式:需求说明、任务、测试运行、产物和部署结果都挂在同一个 ship id 下。
通常由 `$short-ship`、`$long-ship` 或 `$pr-ship` 内部使用,不需要单独调用。
把一次变更从说明推进到配置允许的 PR、合并、构建或部署。范围清楚的小改动直接做;复杂需求先评审 PRD,再拆任务交付。
## 什么时候使用
```text
把这次改动记到 ship add-export-button,后续测试和部署都挂到这个 id。
给列表页加一个导出按钮,测完后发 PR。
```
或:
```text
用 ship long 模式处理动态编辑需求:先做 PRD,批准后拆任务开发,最后完整回归并部署测试环境。
```
用户可以在任务里写 `short 模式` 或 `long 模式`。没写时 Agent 先自己判断,判断不了再问;默认 short。
## 使用前准备
- 项目是 Git 仓库。
- 入口 skill 已经决定这是 short 还是 long,或正在打开已有 ship。
- 同时安装 `delivery-loop`。复杂需求还要安装 `specifier`。
- 目标已经说清,或有可复现的问题描述、截图、日志;复杂需求需要相关项目上下文。
- 项目已配置测试环境和所需 builder/tester/deployer 能力。
- 若要外部发布,明确允许的停止点或使用项目 profile。
## Agent 会做什么
在 `.pouch/ship/<ship-id>/` 建立或更新记录,把测试、产物和部署写成指针。三个入口的
主会话只编排,具体步骤开新 agent。
主会话只判定 short/long、建 ship 记录、按步骤开新 agent 并等待结果。改代码、写 PRD、测试、
开合 PR、构建和部署都在新会话里做,不会堆进同一个上下文。一次交付一个 ship id。
`kind: long` 的集成回归会发现父仓库及子项目的 tester catalog,并执行项目声明的原生测试套件。
## 如何判断完成
目录能通过 ship 自带校验;用同一个 ship id 能找到 spec、任务和证据指针。
你会得到 ship id、说明或 PRD、测试证据、PR/合并/tag、产物和部署状态;不会只收到“本地测试通过”。