我的英语一直不好。幸亏本科毕业不要求必须过四级,否则今天再翻找那些旧证书,大概会发现自己双证全无。
但英语不好,和想学好英语,是两回事。我一直有一颗想把它学好的心。这些年方法试过不少;到了 AI 时代,我当然也试过让各种 Agent 教我。让它陪聊,让它纠错,让它制订计划,让它扮演老师、朋友,甚至路边偶遇的外国人。角色换了一拨又一拨,结果通常差不多:聊不了几句,我就完全失去了继续交流的兴趣。
如果每次学习都需要先表演“我热爱学习”,那大概不是我的英语有问题,是这个东西不太好使。
所以,我决定自己搞一个。
这个项目最早被我叫作“灵魂老师”。四个字单独念出来,有一点肉麻,像深夜电台和心灵课程联名推出的产品。换成英文 SoulTeacher,气质立刻变了:同一个想法,忽然像刚拿到融资。于是,项目就叫 SoulTeacher。
把东西搞复杂很容易。Agent、记忆、知识库、工作流、工具调用,一股脑都装进去,看起来立刻像个大项目。把东西搞简单却很难:究竟哪一层能力,才刚好足够解决眼前的问题?
我没有一上来就做 Agent。我先问:完全只用提示词,行不行?提示词撞墙,再考虑 Skill;Skill 撞墙,再考虑插件;插件还不行,再上 Agent。假如 Agent 也解决不了,那就先等大厂把模型能力迭代一轮,然后从头再来。听上去有点像躺平,其实是在避免拿航空母舰送一份外卖。
我越来越觉得,这可能是深度 AI 应用的一种开发顺序。未来的架构师,未必是最会堆新名词的人,而是能迅速判断一个业务问题应该在哪一层解决的人。能用一句提示词解决,就别先养一个 Agent;该写程序的时候,也别对着提示词再喊三遍 MUST。
这篇文章记录的,就是我主动寻找提示词撞墙的过程。要找墙,当然要先走起来。
黑色屏幕上只有一个荧光绿的 A,下面的光标一闪一闪,像某种来自宇宙深处的心电图。
我输入 A。对面又发来一个 B。
这就是 SoulTeacher 最早的样子:一个只会说英语、能听懂中文却绝不说中文的外星人,试着和地球人建立联系。她不会先介绍名字,也不会端出“第一课:字母表”。我们要在游戏、误解和共同经历里,慢慢发现对方是谁。
这个想法没有先变成软件,而是先变成了一段提示词。听起来像拿一张纸去造宇宙飞船,多少有点不自量力。但它真的飞起来了。
有一次我拼错了词。她没有说“你错了”,只是自然地给出正确形式,然后继续和我玩。我明明被纠正了,却没有听见粉笔划过黑板的声音。那种感觉很美妙:学习发生了,但老师没有突然从桌子底下钻出来。
于是我第一次意识到,提示词不只是“让 AI 帮我做件事”。它可以定义一个世界里的物理规律。
外星人也会变成教导主任
飞船很快开始漏气。某一版 Agent 坚持逐个测试字母。我说:“我认识 26 个字母。”她不信。我要求继续学单词,她仍然举着下一个字母,像一位相信试卷胜过相信人的教导主任。
后来另一位用户用它学日语,Agent 又把罗马字 a 当成平假名 あ。这个 BUG 很小,却像针一样扎破了我们的自信:复制一个符号、识别一个符号、听见读音、主动写出来,本来就是不同的证据。我们以为自己在测认知,其实可能只是在测复制粘贴。
提示词从此有了版本号、测试用例和 BUG。研发与测试被拆成两个会话:母会话生成提示词并创建干净的新会话;用户在其中互动。结束后,母会话回读完整过程,评分、找 BUG、修改下一版。出题的人不替考生答题,却要回来批完整张卷子。
一段提示词,也应该有自己的测试闭环
- 母会话:明确想法与观察项
- 母会话:生成提示词 vN
- 母会话:创建独立测试会话
- 新会话:只注入待测提示词
- 用户与 Agent 真实互动
- 新会话:结束评估
- 母会话:回读完整测试过程
- 量化评分 + 原始 BUG + 人的体感
- 母会话:修改规则并升级版本
- 交给程序、存储与上下文
↻ 反馈进入下一轮
我们给每个观察项打 0、1、2 或 NT:失败、部分满足、满足、未测试。但分数旁边必须再写一句人话——我愿不愿意继续和她聊天?因为一份得分 95% 的提示词,仍然可能像一位追着你默写的老师。
每一轮只修真实出现的问题。用户说已经认识字母,Agent 却不肯前进,我们就修路由;日语把 a 当成 あ,我们就拆开不同证据;陌生词解释得更陌生,我们就要求先用已经共享的简单语言,再动用图片或小网页。README 不再是许愿池,而是事故调查报告。
大多数 AI 项目,底下都压着几段提示词
今天很多人做 Skill,更少的人做 MCP,再少一些的人做 Agent。更多项目在用 AI 优化按钮、代码和流程。但扒开这些新名词,许多 AI 产品的核心仍然是 N 段提示词,再加一些程序负责何时把它们递给模型。
既然代码需要版本、测试和边界,提示词当然也需要。多写三个 MUST 不会让模型突然长出纪律,更不会让它长出数据库。
这次 SoulTeacher 的提示词已经能塑造一个很特别的会话:不说用户母语,悄悄纠正错误,用共同情境建立词义,再让陌生的新词自然回来。它也终于撞上了墙:提示词不能保证永久保存生词,不能让下一次会话继承今天发生的故事,也不能独自管理私有数据。继续往里加规则,只会把纸飞机折得越来越厚。
但撞墙并不意味着失败。恰恰相反,你终于知道下一步为什么需要 Skill、插件、Agent 或真正的软件,而不是因为它们听起来厉害,就先把全家桶搬上桌。
现在轮到你了。找一个自己真正感兴趣、边界又足够具体的问题:也许是让 AI 只用苏格拉底式提问陪你读一本书,也许是每天把一段流水账改成脱口秀,也许是让它扮演一个永远不直接告诉你答案的侦探。先别急着做产品,只写一套固定提示词;给它编号,让母会话创建干净的测试会话,认真记录每一次惊喜、冷场和翻车,再一轮轮修下去。
如果最后只靠一套提示词,就稳定解决了一个固定问题,那不是简陋。那比先造 Skill、插件和 Agent 帅一百倍。复杂的东西谁都可以往上堆,真正困难的,是用最小的东西,刚好解决问题。
所以,先找一个你愿意反复琢磨的小问题。然后写下第一版提示词,创建一个新会话,亲自走进去。
墙在哪里,撞过才知道。
附录|我和 SoulTeacher 的一段真实对话
以下内容选自 v0.6 测试会话。对话卡片根据原始日志逐字排版,保留了我的拼写和语法错误;绿色房间则是 Agent 在那次对话中实际生成的图片,不是为文章补做的插图。
