端到端:用 Cursor Agent 完成「小功能 + 单测 + PR 描述」并附人工验收清单
很多「Agent 演示」停在聊天窗口里的绿勾。工程上的完成定义更硬: 用户可见的小功能 + 可复跑的单测 + 别人读得懂的 PR 描述 + 人工勾选的验收清单。少任何一块,都只是草稿。
本文给一条可复制的端到端路径。界面以当前 Cursor 为准;示例偏通用,不绑定未核验的收费档位。

摘要
- 垂直切片:一个可测的用户可见结果。
- 任务卡:目标、范围、禁止、验收命令。
- 先红后绿:夹具约束 Agent。
- 最小 diff :限路径,审
--stat。 - PR 模板:动机/范围/测试/风险/非目标。
- 人工清单:合入权永远在人。
结论:闭环标准是「别人只看 PR 也能复验」,不是「Agent 说完成了」。
结论卡
| 阶段 | 产出物 | 失败样子 |
|---|---|---|
| 任务卡 | 可测目标 | 「优化一下」 |
| 红测 | 失败输出 | 先改码再补测 |
| 实现 | 限路径 diff | 顺手重构 |
| PR | 五字段描述 | 空描述求审 |
| 人审 | 勾选清单 | 只看聊天摘要 |
闭环流水线

任务卡 → 红测 → 最小改 → PR → 人审。
人工验收清单字段与任务卡对齐,避免两端各说各话。
选一个足够小的功能
好例子:给已有服务加一个纯函数校验、修一个边界条件、为 API 增加一个已约定的查询参数。
坏例子:半天上新架构、「顺便」换状态库。
垂直切片口诀:一个用户可见结果,一条验收命令,一张允许路径表。
Agent 执行五步(提示可复制)

1. 贴卡
text
【目标】当输入为空字符串时,validate_name 返回 False 且不抛异常
【允许】src/names.py, tests/test_names.py
【禁止】格式化全仓、改无关模块、出网
【验收】pytest tests/test_names.py -q
【交付】先给出红测;等我确认后再改实现;最后填 PR 模板
2. 要红测
明确:「先只加/改测试并跑到红,不要改实现。」贴失败输出。
3. 限改
确认后:「仅改允许路径,保持最小 diff,跑到绿,贴 --stat 与测试输出。」
4. 跑绿
同一条验收命令;禁止换一条「更好跑」的命令假装完成。
5. 写 PR
按模板生成描述;人负责改语气与补风险。
PR 描述模板

| 字段 | 内容 | 人工看什么 |
|---|---|---|
| 动机 | 用户可见结果 | 值不值得合 |
| 范围 | 文件列表 | 有无越界 |
| 测试 | 命令+结果 | 是否真绿 |
| 风险 | 回滚点 | 能否快速撤 |
| 非目标 | 没做什么 | 有无偷加戏 |
可粘贴骨架:
markdown
## 动机
## 范围
## 测试
## 风险与回滚
## 非目标
## 人工验收
- [ ] diff 未越界
- [ ] 测试本地复跑
- [ ] 无密钥残留
人工验收清单

git diff --stat仅含允许路径。- 单测命令本地复跑为绿。
- 无密钥/调试残留。
- PR 非目标与动机一致。
- 回滚方式写明(revert/特性开关)。
- 高风险项已人工点过关键路径。
Agent 可以起草清单勾选建议; 合入按钮只由人按。
端到端计时(参考节奏)
| 分钟 | 动作 |
|---|---|
| 0--5 | 写卡、开分支 |
| 5--15 | 红测往返 |
| 15--35 | 最小实现与变绿 |
| 35--45 | PR 描述与自检 |
| 45--60 | 人工验收与修改 |
超时就减范围,不加班硬扩。
和系列文的连接
- 委派卡(10-06)→ 本任务卡字段同源。
- 夹具最小 diff(10-06)→ 红测约束。
- 排障剧本(10-07)→ 乱改时止损。
- 团队公约(10-03)→ 人审门禁。
端到端文是把零件组装成一次可演示的交付。
案例:空字符串校验
任务如上。Agent 若改了格式化与命名风格,按乱改剧本回退无关 hunk,重申禁止项。最终 --stat 两文件、测试绿、PR 五字段齐全、人审勾选后合并。案例价值在模板,不在函数本身。
踩坑
- 让 Agent「顺便写 PR」却不给模板 → 空话。
- 验收命令每次变化 → 无法复验。
- 人审只看 Agent 自信总结 → 漏越界。
- 把演示数据密钥写进测试 → 安全事故。
FAQ
Q:Ask 模式能做完整闭环吗?
A:Ask 适合设计与审 diff;改码与跑测用 Agent/终端,高风险用 Manual。
Q:没有 pytest 怎么办?
A:换成你仓库真实命令;关键是「同一命令可复跑」。
Q:PR 必须 AI 写吗?
A:不必。AI 起草、人负责准确性。
今晚可执行
- 选一个真的小功能写任务卡。
- 按五步跑通红绿。
- 用模板开 PR(即便是 draft)。
- 用人工清单自审一遍。
可复制提示词块
把关键约束写成可粘贴块,减少每次临场发挥:
text
【模式】按任务选择 Ask / Agent / Manual
【目标】一句话可测结果
【允许路径】...
【禁止】密钥、出网、无关重构、改测试骗绿
【验收命令】...
【交付】diff --stat + 命令输出 + 风险一句
提示词块应进 Prompt 库或团队模板,而不是散落在聊天记录。变更时走评审,避免「口头最新版」。
验证与回滚
任何实战步骤都要回答两问:怎么知道成功?失败如何回滚?成功标准尽量是命令退出码或明确文件存在性;回滚尽量是 git checkout / git revert / 关掉某 MCP 分组。把回滚写进任务卡,Agent 较少在恐慌中扩大爆炸半径。
建议在文末「今晚可执行」里强制包含一次回滚演练:故意改错再撤回来,确认肌肉记忆。
与 Token、权限的交叉约束
实战文若只教「怎么做」,不提成本与权限,读者会在真实项目里付学费。固定提醒:
- 上下文只挂本任务需要的文件与提示。
- 写与出网工具默认关,用时再开。
- 新会话交接用手写摘要,不靠无限滚动历史。
- 密钥只走环境变量,示例仓走检查清单。
这些句子可以重复出现在多篇实战里------重复的是纪律,不是车轱辘新闻。
团队落地差异
个人仓库可以激进试错;团队仓库要默认保守。落地时把「可选项」与「必选项」分开:必选项进公约与 CI,可选项进个人笔记。新人第一周只要求必选项达标(例如去密钥、diff 不越界、测试命令可复跑),避免被工具宇宙吓退。
若团队有 AtomGit / 内网 Git,把模板仓作为唯一入口,比每人自行拼装更少分叉。
失败案例复盘模板
text
日期:
任务目标:
使用的模式与模型(如可知):
失败类型(卡住/乱改/漏测/权限/密钥):
关键 diff 或日志:
根因(规则冲突/上下文脏/范围不清/...):
规则或模板改动:
预防措施负责人与到期日:
两周一次把复盘模板过一遍,实战文章里的清单才会进化;否则清单会停在「写的时候很对,用的时候没人翻」。
度量:什么叫变好了
可选取的轻量指标(不必上复杂平台):
- 越界文件次数 / 周
- 排障新会话次数 / 周(止损是否变快)
- 红测先行任务占比
- 示例仓密钥扫描告警数
- 站会是否人人能出示
--stat摘要
指标用于改进模板,而不是考核惩罚。惩罚会逼人隐藏近失,这与安全目标相反。
任务卡全文示例(可复制)
text
【目标】空字符串输入时 validate_name 返回 False 且不抛异常
【允许】src/names.py tests/test_names.py
【禁止】全仓格式化、改无关模块、出网、改测试断言骗绿
【验收】pytest tests/test_names.py -q
【步骤】1) 只交红测 2) 我确认 3) 最小实现到绿 4) 填 PR 模板
【回滚】git revert 本分支最后一提交
人审时的十分钟协议
- 看
--stat是否越界(2 分钟)。 - 本地跑同一验收命令(3 分钟)。
- 扫 diff 有无密钥与调试残留(2 分钟)。
- 读 PR 风险与非目标(2 分钟)。
- 决定合并 / 打回 / 要补(1 分钟)。
超时说明切片太大,下回减小功能,而不是延长人审忍耐。
失败时的剧本切换
若出现乱改:停闭环,切 10-07 排障剧本。若漏测:回到红测步骤,禁止继续加功能。闭环的纪律,比一次演示成功更重要。
演示给同事看的口播顺序
先展示任务卡 → 红测输出 → --stat → 测试绿 → PR 五字段 → 人审勾选。不要从聊天自信总结开场。口播顺序本身就是在训练团队什么叫完成。
执行证据清单
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
- 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
边界
- 不涉及未授权访问或破坏性操作。
- 合入策略遵守你的团队权限模型。
- draft 未发布。
小功能闭环练的是交付肌肉;Agent 是器械,验收清单才是动作要领。