给 AI 描述 Verse 任务的提示词模板
主课讲了「怎么问才有用」的原则,这一页把原则做成模板。五个模板可以直接复制:新写一个功能、解释一段代码、定位一条编译错误、把一张蓝图翻译成 Verse、给代码列人工验收清单。每个都标了必须填的空。最后附一组反面例子——那些看着像提问、其实什么信息都没给的句子。
一、用法:方括号是必须填的空
下面五个模板里,【 】 里的内容是必须填的空——空着不填,模板就退化成一句普通的提问,效果和不用模板一样。除此之外的所有句子照抄即可,它们的作用是把「输出格式」和「验收标准」提前说死,省掉你后面来回追问的三五轮。
一个通用建议:模板里的编号列表不要删。给 AI 一个编号清单,它的回答通常也会按编号来——这对你逐条核对极有帮助,因为你可以直接说「第 3 条不对,重做第 3 条」,而不必让它整份重写。
二、五个模板
模板一:新写一个功能。最容易翻车的场景,因为「我要什么」这件事你自己往往也没想清楚。这个模板的一半作用是逼你先想清楚。
环境:【UEFN / Unreal Editor】,引擎版本【5.x】,语言 Verse。
我要的行为(不是写法):
【一句话说清「谁、在什么时候、会看到什么」。不要提任何具体语法。】
已有的东西:
【贴出相关的 .verse 代码全文;如果还没有代码,列出已经放进关卡的设备类型。】
边界与约束:
- 玩家中途退出时应该【…】
- 同一帧被触发两次时应该【…】
- 数据需要跨对局保留吗:【需要 / 不需要】
请这样回答:
1. 先给完整代码,再逐段解释。不要只给代码。
2. 把每一处失败上下文单独指出来,并说明为什么它必须待在 if 里。
3. 用到的每个 API,说明它属于哪个模块、需要哪一行 using。
4. 只实现这一个功能。不要顺带加 UI、音效或任何我没要求的东西。
必须填的空:环境与版本、行为(不是写法)、已有代码、至少一条边界情况。第三条尤其重要:没有已有代码,AI 会替你发明一套命名和结构,然后你得手工把它缝进项目里。
模板二:解释一段代码。用在你接手别人的 Verse、或者从文档里抄了一段却不确定它在干什么的时候。注意最后一句——明确禁止它改写。
这是一段 Verse 代码,来自【我的 UEFN 项目 / 官方文档 / 同事】:
【粘贴完整代码,连 using 和注释一起,不要只贴片段。】
请按这个顺序解释:
1. 整体在做什么,一句话。
2. 逐行说明,重点标出三类行:
- 哪些行可能「走不通」(失败上下文),
- 哪些行会挂起(suspends),
- 哪些行会改变状态(set)。
3. 如果我把它放进【creative_device 的 OnBegin / 一个事件回调】里,有什么需要注意的。
4. 用蓝图的说法打个比方,帮我建立对应关系。
不要改写这段代码。我现在只想读懂它。
必须填的空:代码全文、代码来源、你打算把它放在哪。第三项决定了很多答案:同一段代码放在 OnBegin 里和放在按钮回调里,能不能挂起、会不会重入,结论完全不同。
模板三:定位一条编译错误。这个模板的关键在两个「一字不改」和「不要只粘出错那几行」。Verse 的报错经常指向的是症状发生的位置,而原因在别处。
环境:【UEFN / Unreal Editor】,引擎版本【5.x】。
编译报错原文(一字不改,含文件名与行号):
【粘贴完整报错。不要转述,不要「大概是说找不到什么东西」。】
出错文件的全文:
【粘贴整个 .verse 文件。不要只粘报错那几行 —— 原因常在别处。】
我想要的行为是:【一句话。】
请按这个顺序回答:
1. 这条报错在说什么,用我能听懂的话。
2. 它为什么出现在这一行。
3. 最小的修法。如果还有更好的结构性改法,放在后面说,先给最小的。
4. 我以后怎么一眼认出这一类报错。
必须填的空:报错原文、文件全文、你要的行为。第 4 条是白拿的:每问一次错误就顺手换一条「以后怎么认」,几轮下来你自己就不需要问了。
模板四:把一张蓝图翻译成 Verse。核心难题在第一节讲过——你没法把节点图粘进去。所以这个模板的做法是:把图按执行顺序口述成一份结构化清单。写清单本身就已经完成了一半翻译工作。
我要把一段蓝图逻辑翻译成 Verse。节点图没法粘贴,所以我按执行顺序写出来:
入口事件:【Event BeginPlay / 某个 Event Dispatcher / 某个设备事件】
节点序列(按执行线顺序):
1. 【节点名】—— 输入引脚接了【…】,输出接到【…】
2. 【节点名】—— 【…】
3. 【Branch】条件是【…】;True 走【…】,False 走【…】
用到的变量:
- 【变量名】:类型【…】,默认值【…】,Instance Editable【是 / 否】
用到的资产或设备:【…】
请:
1. 给出等价的 Verse 实现。
2. 指出哪些节点在 Verse 里没有一一对应物,你是用什么替代的。
3. 指出哪些地方 Verse 的语义和蓝图不同,尤其是失败与并发。
4. 如果我的描述里有信息缺口,先列出你需要我补充的问题,不要自己填。
必须填的空:入口事件、按顺序列出的节点、变量清单(含类型与默认值)。最后一条「不要自己填」很关键:节点图口述必然有遗漏,让它主动问,比让它猜要省事得多。
模板五:给代码写测试用例。注意最后一句——你要的是一张能拿着在 UEFN 里一条条点的人工清单,不是一套测试框架代码。
这是我的 Verse 代码:
【粘贴全文。】
这个功能预期的行为是:【一句话。】
请列出我该手动验证的场景,分成三组:
1. 正常路径。
2. 边界情况:空容器、数量为 0、上下限、重复触发、同一帧多次触发。
3. 多人与并发:玩家中途加入、玩家中途退出、两名玩家同时触发、
一条 race 分支被取消时另一条的状态。
每一条写成「操作 → 预期结果」两段式,我要照着在 UEFN 里一条条点。
不要写自动化测试框架代码,我需要的是人工验收清单。
必须填的空:代码全文、预期行为一句话。这个模板性价比最高:AI 列边界情况的能力比它写代码的能力更可靠,因为列举不需要它知道 Verse 的精确 API。
三、反面例子:为什么会得到垃圾答案
下面五句都是真实场景里高频出现的提问。它们的共同点是:看起来像个问题,实际上没给出任何可供判断的信息。
| 提问 | 你会得到什么 | 为什么 |
|---|---|---|
| 「Verse 怎么写?」 | 一篇语法概览,和你手头的问题毫无关系 | 这不是任务,是话题。AI 只能猜你想要什么,而它会猜最常见的那一种 —— 那多半不是你的情况 |
| 「这段代码有 bug,帮我看看」(附一张代码截图) | 一堆「可能是…也可能是…」 | 截图里的代码要先被认成文字再被理解,而 Verse 的缩进是语法本身,认错一格结论就变了。永远粘文本,不要粘图 |
| 「别用 if,直接写就行。」 | 一段编译不过的代码,或者一段绕开了失败上下文的假代码 | 你在禁用这门语言的核心机制。AI 通常会顺从你的指令,然后交出一份跑不起来的东西 —— 它不会为了正确而反驳你 |
| 「顺便再加个排行榜、加个音效、再优化下性能。」 | 一份四不像,而且每一件都只做了三分之一 | 一次只问一件事。合并请求会让每一件事都只分到三分之一的注意力,而且出错时你没法定位是哪一段的锅 |
| 「上次那段代码又报错了。」(在一个新开的对话里) | 完全不着边际的回答 | 新对话里模型没有任何关于你项目的记忆。每一轮都要重贴上下文 —— 这不是它偷懒,是它真的看不到 |
把五条反面例子倒过来读,就是五条正面规则:给任务不给话题、粘文本不粘图、不要禁用语言机制、一次一件事、每轮重贴上下文。这五条加起来,比换一个更强的模型管用得多。
四、小测验
五个模板里都有的「必须填的空」,是下面哪一类?