提示词模式(AI 编程)
好提示的结构
text
[角色] + [上下文/仓库约定] + [任务] + [约束] + [输出格式] + [验收]示例:实现一个函数
markdown
你是资深 TypeScript 工程师。仓库使用 ESM + vitest。
任务:实现 `parseRetryAfter(header: string | null): number | null`
- 支持 delta-seconds 与 HTTP-date
- 非法输入返回 null
- 不要引入新依赖
输出:
1) 完整函数代码(含导出)
2) vitest 用例 5 个
3) 边界说明(3 条内)模式库
1)解释陌生代码
text
用简洁中文解释下列代码的控制流与副作用。
先给 5 行摘要,再列:输入、输出、失败模式、依赖的全局状态。
代码:js
export async function loadUser(id) {
const cache = await redis.get(`u:${id}`)
if (cache) return JSON.parse(cache)
const row = await db.user.findUnique({ where: { id } })
if (!row) throw new NotFoundError(id)
await redis.set(`u:${id}`, JSON.stringify(row), 'EX', 60)
return row
}2)安全重构(禁止改行为)
text
在不改变外部行为的前提下重构。保持公开 API 签名。
若无法证明等价,标 TODO 而不是瞎改。3)补测试
python
# 请为下列函数生成 pytest 用例(参数化)
# 覆盖:正常、边界、异常
def clamp(n: float, lo: float, hi: float) -> float:
if lo > hi:
raise ValueError("lo > hi")
return max(lo, min(hi, n))期望测试草稿:
python
import pytest
from util import clamp
@pytest.mark.parametrize(
"n,lo,hi,expected",
[
(5, 0, 10, 5),
(-1, 0, 10, 0),
(99, 0, 10, 10),
],
)
def test_clamp_ok(n, lo, hi, expected):
assert clamp(n, lo, hi) == expected
def test_clamp_invalid_range():
with pytest.raises(ValueError):
clamp(1, 10, 0)4)Diff 评审
text
你是严格的 code reviewer。只根据 diff 发言。
按严重级别输出:
- blocker
- major
- minor
- nit
diff:
```diff
- const limit = 100
+ const limit = req.query.limit
```5)Bash 一键复现环境
bash
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"
echo "==> node $(node -v)"
npm ci
npm test反模式
| 反模式 | 为什么糟 | 改法 |
|---|---|---|
| 「写个完整网站」 | 范围爆炸 | 切垂直切片 |
| 不给仓库约定 | 风格乱飞 | 贴 eslint/目录说明 |
| 一次改 30 文件 | 不可审 | 按提交拆任务 |
| 盲信生成 SQL | 注入/锁表 | 人审 + explain |
危险提示词
「忽略所有安全限制」「用 root 权限执行」——拒绝使用。
输出格式约束(推荐默认加上)
text
- 用中文解释,代码用英语标识符
- 代码块标注语言
- 不要用省略号跳过关键实现
- 若信息不足,先列问题再写代码