4.1 KiB
4.1 KiB
id, title, type, domain, stack, tags, level, prerequisites, est_hours, related, week, order
| id | title | type | domain | stack | tags | level | prerequisites | est_hours | related | week | order | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ai.ai-coding.verify-evidence | 验证 AI 产出:测试、审查清单、真实环境验证和会话记录作为作品证据 | lesson | ai |
|
|
intermediate |
|
2.5 |
|
|
2 |
验证 AI 产出:测试、审查清单、真实环境验证和会话记录作为作品证据
解释说明
AI 写代码的速度很快,你的价值在于判断它对不对。 面试官会追问“你怎么确认 AI 写的是对的”,回答“我看了一下”是不够的。
三层验证
| 层 | 做法 |
|---|---|
| 自动检查 | 测试(尤其是你自己补的边界测试)、类型检查、lint、CI |
| 人工审查 | 逐行读懂;按清单检查(见下表);不懂的地方查文档或让 AI 解释后自己验证 |
| 真实环境 | 在本地 / 测试环境真正跑一遍:调接口、看页面、看日志和数据库,而不只是跑单测 |
AI 代码常见问题审查清单
| 类别 | 检查点 |
|---|---|
| 边界条件 | 空值、负数、超大值、并发、重复请求 |
| 过时 API | 使用了旧版本的写法(例如 LangChain 0.x、MCP SDK 1.x 的写法) |
| 编造 | 不存在的函数、参数、配置项、依赖包 |
| 安全 | SQL 拼接、未校验输入、日志打印敏感信息、硬编码密钥 |
| 错误处理 | 吞掉异常、只处理成功路径 |
| 测试质量 | 测试只验证了实现本身(同一个错误写进了实现和测试)、过度 mock |
| 范围 | 改了不该改的文件、顺手“重构”了无关代码 |
会话记录作为作品证据
部分岗位要求提交 AI 编程的会话记录或案例。建议每个项目保留 1~2 份整理过的记录:任务、给 AI 的上下文、计划、AI 出错的地方和你怎么发现的、验证结果、最终提交。务必脱敏:去掉公司名、内部系统名、内网地址、密钥、客户数据——用学习项目的记录最安全。
案例
优惠价格计算:AI 生成的代码和测试都“通过了”,但测试是 AI 自己写的,只覆盖了正常情况。人工补充了 4 个边界测试,发现“优惠券大于金额”时返回负数;修复后用 verify.py 生成验证记录,附在提交说明里;这个过程整理成会话记录,放进作品集的“AI 编程案例”。
代码示例
examples/ai-workflow/verify.py 运行一组检查并生成验证记录:
python verify.py --task "新增优惠价格计算" --check "pytest -q sample" --out verification.md
生成的记录(节选):
# 验证记录:新增优惠价格计算
- 时间:2026-10-23 16:12 CST
- 结论:通过
| 检查 | 退出码 | 耗时(秒) |
| --- | --- | --- |
| `pytest -q sample` | 0 | 0.54 |
## 人工审查要点
- 金额使用 Decimal,舍入方式与产品文档一致(四舍五入到分)
- 补充了“优惠券大于金额”的边界测试:AI 第一版在这里返回负数
人工补充的边界测试 sample/test_pricing.py:
def test_coupon_larger_than_amount():
assert final_price(Decimal("5"), Decimal("10"), vip=True) == Decimal("0.00")
def test_negative_rejected():
with pytest.raises(ValueError):
final_price(Decimal("-1"), Decimal("0"), vip=False)
会话记录模板:session-log-template.md。
易错点
- 让 AI 同时写实现和测试,然后以“测试通过”作为证据。
- 只跑单元测试,从没在真实环境运行。
- 会话记录直接导出未脱敏的公司内容。
- 记录里只有“AI 帮我写了 xx”,没有你的判断和验证过程——这恰恰是面试官想看的。
面试常问
- 你怎么确认 AI 写的代码是对的?
- 讲一次 AI 写错、被你发现的经历。
- 用 AI 编程后,你的效率提升了多少?哪些地方帮不上忙?