端到端:用 Cursor Agent 完成「小功能 + 单测 + PR 描述」并附人工验收清单

端到端:用 Cursor Agent 完成「小功能 + 单测 + PR 描述」并附人工验收清单

很多「Agent 演示」停在聊天窗口里的绿勾。工程上的完成定义更硬: 用户可见的小功能 + 可复跑的单测 + 别人读得懂的 PR 描述 + 人工勾选的验收清单。少任何一块,都只是草稿。

本文给一条可复制的端到端路径。界面以当前 Cursor 为准;示例偏通用,不绑定未核验的收费档位。

摘要

  1. 垂直切片:一个可测的用户可见结果。
  2. 任务卡:目标、范围、禁止、验收命令。
  3. 先红后绿:夹具约束 Agent。
  4. 最小 diff :限路径,审 --stat。
  5. PR 模板:动机/范围/测试/风险/非目标。
  6. 人工清单:合入权永远在人。

结论:闭环标准是「别人只看 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 起草、人负责准确性。

今晚可执行

  1. 选一个真的小功能写任务卡。
  2. 按五步跑通红绿。
  3. 用模板开 PR(即便是 draft)。
  4. 用人工清单自审一遍。

可复制提示词块

把关键约束写成可粘贴块,减少每次临场发挥:

text 复制代码
【模式】按任务选择 Ask / Agent / Manual
【目标】一句话可测结果
【允许路径】...
【禁止】密钥、出网、无关重构、改测试骗绿
【验收命令】...
【交付】diff --stat + 命令输出 + 风险一句

提示词块应进 Prompt 库或团队模板,而不是散落在聊天记录。变更时走评审,避免「口头最新版」。

验证与回滚

任何实战步骤都要回答两问:怎么知道成功?失败如何回滚?成功标准尽量是命令退出码或明确文件存在性;回滚尽量是 git checkout / git revert / 关掉某 MCP 分组。把回滚写进任务卡,Agent 较少在恐慌中扩大爆炸半径。

建议在文末「今晚可执行」里强制包含一次回滚演练:故意改错再撤回来,确认肌肉记忆。

与 Token、权限的交叉约束

实战文若只教「怎么做」,不提成本与权限,读者会在真实项目里付学费。固定提醒:

  1. 上下文只挂本任务需要的文件与提示。
  2. 写与出网工具默认关,用时再开。
  3. 新会话交接用手写摘要,不靠无限滚动历史。
  4. 密钥只走环境变量,示例仓走检查清单。

这些句子可以重复出现在多篇实战里------重复的是纪律,不是车轱辘新闻。

团队落地差异

个人仓库可以激进试错;团队仓库要默认保守。落地时把「可选项」与「必选项」分开:必选项进公约与 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 本分支最后一提交

人审时的十分钟协议

  1. 看 --stat 是否越界(2 分钟)。
  2. 本地跑同一验收命令(3 分钟)。
  3. 扫 diff 有无密钥与调试残留(2 分钟)。
  4. 读 PR 风险与非目标(2 分钟)。
  5. 决定合并 / 打回 / 要补(1 分钟)。

超时说明切片太大,下回减小功能,而不是延长人审忍耐。

失败时的剧本切换

若出现乱改:停闭环,切 10-07 排障剧本。若漏测:回到红测步骤,禁止继续加功能。闭环的纪律,比一次演示成功更重要。

演示给同事看的口播顺序

先展示任务卡 → 红测输出 → --stat → 测试绿 → PR 五字段 → 人审勾选。不要从聊天自信总结开场。口播顺序本身就是在训练团队什么叫完成。

执行证据清单

  1. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  2. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  3. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  4. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  5. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  6. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  7. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  8. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  9. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  10. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  11. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  12. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  13. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  14. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  15. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。
  16. 检查项:确认本任务的允许路径、禁止项、验收命令与回滚方式已写进任务卡,并在完成后保存命令输出作为证据。

边界

  • 不涉及未授权访问或破坏性操作。
  • 合入策略遵守你的团队权限模型。
  • draft 未发布。

小功能闭环练的是交付肌肉;Agent 是器械,验收清单才是动作要领。

相关推荐
hudou_k1 小时前
使用WorkBuddy开发项目的实践经验
ai编程·workbuddy
熊猫钓鱼>_>1 小时前
Kotlin Multiplatform for OpenHarmony 实战:为 Landscapist 实现图片加载适配
开发语言·kotlin·华为云·ai编程·harmonyos·鸿蒙·openharmony
OpsEye1 小时前
上线大模型只是第一步,用好 AI 离不开完整的成本管控
javascript·ai编程
ZzT2 小时前
rtk 拆解:git log 输出压掉 98%,8 万星的 token 代理适合哪些场景
ai编程
秋天的一阵风2 小时前
🧐 为什么大厂 RAG 从不用纯向量检索?
前端·面试·ai编程
mont evergreen2 小时前
RTMP 连接单元测试之旅
单元测试·音视频·源码解读
漂着的圆木2 小时前
模型本地沙箱MXC:Copilot Agent工具受限与Ollama发现核对
agent·github copilot·ollama·mxc·工具权限
七夜zippoe2 小时前
多 Agent 协作架构:Supervisor 模式——主管 Agent 调度实战
数据库·ai·架构·agent
是Dream呀2 小时前
Dropout 是暂退法还是丢弃法?我用 TextIn xParse 做了一个术语对账台
人工智能·agent·textin·ai数据层基础设施