-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 3 Your First Agent Task zh
🌎 语言: 简体中文 — 查看全部 33 种语言
目标: 通过指导智能体,端到端为 CLI 添加一个全新命令。我们将加入
lockedin endorse:它会为几乎肯定不具备某项技能的陌生人背书。很符合品牌调性。
这是教程的核心。你将练习真正的循环:规格 → 测试 → 实现 → 绿色门禁 → 审查。
← 上一章:教程 2:代码如何工作 · 下一章: 教程 4:提示与审查
在提示智能体前,先用普通语言写出规格。模糊请求只会得到模糊代码,无论执行者是人还是智能体。
endorse打印 5–7 行,每行从既有NAMES池随机选择一个人,再从新的流行语 技能池随机选择一项进行背书。结尾是一句讽刺短句。它必须能通过lockedin endorse和会话内/endorse调用,并出现在help中。所有随机性必须使用 带种子的pick/shuffle助手,以保持确定性。npm test必须保持绿色,并新增至少一个 固定不变量的测试。
把这段交给智能体。它明确包含第 2 章的约束:带种子的 RNG、测试门禁和不变量习惯。
先要求一份计划,以便在文件被改动前发现错误方向。
“我想为 LockedIn CLI 添加
endorse命令。规格如下:[paste your spec]。 先不要写代码,请说明会修改哪些文件及实现方法,等我批准。遵循connect命令的现有模式。”
好计划应提到:在 src/lockedin.js 添加 SKILLS 池和 renderEndorse(),接入
dispatch() 与 handleSlash(),向 renderHelp() 添加一行,导出新函数和池,并在两份测试文件中
添加测试。如果遗漏带种子 RNG 或测试,请立即指出。
让智能体先写测试,再写实现。测试优先会把规格变成可执行内容,也让智能体不能蒙混过关。
“很好。先只添加失败测试:单元测试确认
renderEndorse()返回的文本提到一个已知技能, 且至少包含 5 项背书;cli.test.js测试确认lockedin endorse以 0 退出并打印背书。 使用固定种子。暂时不要实现renderEndorse,先观察测试按预期失败。”
运行:
npm test确认它因正确原因失败:函数还不存在。
现在批准实现:
“现在实现功能并让测试通过。遵循
connect模式:添加约 25 项流行语技能的SKILLS池, 编写返回字符串的renderEndorse(),接入dispatch和handleSlash,添加help行, 并导出新增内容。随机性只能使用pick/shuffle。”
结果应与其余代码很相似,例如:
const SKILLS = [
'思想领导力', '协同', '讲故事', '氛围',
'战略小睡', '干系人对齐', '激进坦诚', /* ...约 25 项... */
];
function renderEndorse() {
const people = shuffle(NAMES).slice(0, 5 + Math.floor(rand() * 3)); // 5–7
const skills = shuffle(SKILLS);
const out = [''];
people.forEach((n, i) =>
out.push(' ✔ 为 ' + n + ' 的“' + skills[i % skills.length] + '”技能背书'));
out.push('', ' 你为 6 个陌生人的技能背书,但其实无法核实。他们会在一小时内回赠背书。');
return out.join('\n');
}还需在 dispatch()、handleSlash() 和 renderHelp() 中各加入一行,并把
SKILLS, renderEndorse 添加到 module.exports。
npm test变绿了吗?你刚刚用智能体以测试优先方式交付了一个功能。没变绿也很正常:进入第 4 章的迭代循环, 把确切失败信息交给智能体。
随后亲自查看真实输出:
node bin/lockedin.js endorse
LOCKEDIN_SEED=1 node bin/lockedin.js endorse # 可重现不要接受未读过的差异。重点检查:
-
是否遵循模式? 新命令应仿照
connect,不增加依赖,不在src/中使用console.log。 -
是否只使用带种子的 RNG? 搜索差异中的
Math.random,结果应为空。 - 是否触碰无关内容? 改动应主要是增量式的,无关行不应移动。
-
新测试是否有意义? 日后功能被破坏时它必须失败,而不是只断言
true。
有问题就要求修复;没有问题便完成。
实际完成上面的整个循环。额外练习:
- “让
endorse接受可选姓名:lockedin endorse Ada应专门为 Ada 背书。 添加测试,并保持门禁绿色。”
你已经端到端构建了一个功能。下一章会讲如何像技术负责人一样顺畅地提示和审查。
下一章:教程 4:提示与审查
Tutorial
- 1 · Orientation
- 2 · How the Code Works
- 3 · Your First Agent Task
- 4 · Prompting & Reviewing
- 5 · Localization
Reference
Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.