针对 Codex 中模糊且泛滥的原创术语的应对策略

@u1
日语2天前 · 2026年7月18日
336K
492
43
4
1.1K

TL;DR

作者分享了一种名为语义生成(semantic-generation)的提示词工程技能,该方法强制 AI 在命名对象和角色前先将其映射到具体定义,从而避免技术设计和文档中的逻辑错误。

Codex 的常见问题

Codex 的一个常见问题是倾向于使用定义模糊的术语来设计或实现功能。根据我的经验,这个问题在 Claude 中稍少一些,但在 Codex 中,5.5 版本存在这个问题,5.6 版本依然存在。以下是对此问题的应对措施。

例如,一份研究报告的某个部分有一个标题叫"压缩点"。阅读正文时,这个术语在三个含义之间摇摆不定:"对话历史达到设定数量时"、"开始自动摘要的阈值"以及"摘要实际开始的时刻"。行文流畅,看起来像是技术解释。然而,一旦一个术语同时作为起始条件、数值和事件,解释的对象就变得不明确。结果,研究结论不幸地被引向了错误的方向。

受这次失败的启发,我创建了一个名为 semantic-generation 的技能。虽然这个名字听起来像是一种文本生成技术,但实际上我改变的是在撰写文本之前对词语的定义。

问题的结构与影响

存在一个问题,即日语术语"压缩点"本身含义不清,但当 Codex 被指出这一点时,它首先试图将其修复为解释不足的问题,然后是标题表达的问题。它没有立即意识到自己混淆了起始条件和执行事件。

在同一会话中,类似的事情发生了。由于原因尚不清楚,计划是进行测试,从结果中隔离原因,然后选择应对措施。Codex 将这个过程总结为"将观察结果汇总到一个统一的地方"。

汇总的目标不是观察结果本身,而是从测试中获得的数值或记录。此外,汇总数值并非目的,而是隔离原因的手段。

通过将其概括为一个简短的短语,以下顺序消失了:

  1. 原因尚不清楚。
  2. 进行测试。
  3. 从结果中隔离原因。
  4. 隔离后选择应对措施。

"将观察结果汇总到一个统一的地方"看起来合理。正因为它看起来合理,它掩盖了未组织好的部分,并成为后续设计的前提。

原始术语的更正列表无法阻止它

考虑改进时,有人建议记录更正后的词语与对应含义,并带入下一个会话。

我想阻止的不是"再次使用之前用错的词"。而是在目标不明确时先放置一个词,并基于这个词进行思考。即使你列出错误词汇表,下次又会出现一个新的生造词。

因此,我没有采用更正列表,而是改变了策略,在每个会话开始时,在创建原始术语之前,先创建候选词列表

应对措施) 在设计前强制创建候选词列表

我决定让 AI 创建一个自定义术语对应表,然后在加载该文件后进行设计。

对应表包含以下七列:

  • 来源
  • 目的
  • 具体对象
  • 角色
  • 上下文
  • 候选词
  • 初始定义

列的顺序很重要。候选词在最右边,只有在填写了具体对象和角色后才能填写。

如果候选词在最左边,人们可能会先写出"压缩点"这个词,然后稍后创建符合该词的解释。这只会在我想要阻止的生成顺序内重现。

角色也按行放置。如果你想用同一个词处理起始条件和事件,就拆分行。然后,在"用一个词完成"的压力下,正在处理两个对象的事实就变得可见了。

通过这样做,生成式 AI 本身可以在词语变得模糊时注意到,并且我能够积极禁止在词语仍模糊时使用它们。

总结

生成式 AI 不擅长让空白保持空白。即使目标或目的尚未确定,只要放置一个看似合理的词,它就能继续生成文本。这种流畅性在设计上可能很危险。

semantic-generation 不是寻找好词的技能。它是一个让 AI 在尝试使用原始术语时暂停片刻,选择合适词语的技能。

目标是什么?是条件、状态还是事件?出于什么目的处理它,之后会发生什么?

只有为那些已经写好的行,我们最终才在末尾赋予一个名称。乍一看,这似乎绕了弯路,但总比从"压缩点"这样一个词重建整个设计要短。

semantic-generation 技能

markdown
1---
2name: semantic-generation
3description: |
4 一种生成流程,在撰写目标文档(设计材料、基于需求的设计、研究报告、原因隔离计划、应对措施计划、命名、推理顺序总结)之前,首先提交一个对应表(指称表)作为独立的交付物,以在词语之前固定指称对象和角色。
5 触发条件:撰写设计材料、创建设计文档、撰写研究报告、撰写应对措施计划、命名、决定状态名/条件名/类型名/方法名、总结推理顺序、指称表、对应表。
6 不触发条件:引用用户原始文本、简单的机械性编辑、重用现有名称、固定输出、闲聊、仅使用已建立术语即可撰写的短句。
7---
8
9# semantic-generation — 在词语之前固定目标的流程
10
11如果在目标不明确时先放置一个词(通常是现场生造的词),并基于该词进行思考,那么与指称对象的偏差将传播到日语语句、设计语句和代码标识符中,而无法得到纠正。此技能强制规定"先独立提交对应表,然后将正文作为其副本撰写"的序列。
12纪律标准由 [[referent-before-label]] 规则持有。
13
14## 应用标准
15
16当以下任一情况适用时使用。如果无法判断,则视为适用。
17
181. 撰写设计材料、基于需求的设计、研究报告、原因隔离计划或应对措施计划。
192. 命名(公共规范、状态名、条件名、事件名、值或记录的类型名、方法名、布尔名)。
203. 尝试将用户给出的推理顺序总结为简短的工作标签。
21
22## 正常流程
23
24### 1. 首先将对应表保存为独立的交付物(两阶段提交)
25
26在撰写正文任何一个字之前,将对应表保存为一个独立的文件。
27
28- 保存位置:工作目录下的 `referent-table-<slug>.md`(如果交付物在 `output/` 下,则放在同一目录)。
29- 保存后记录 sha256(例如,`shasum -a 256 <path>`)。该记录成为"对应表是在正文之前创建的"证据。仅将表格放在已完成文档的开头并不证明生成顺序。
30
31### 2. 对应表的格式(禁止更改列顺序)
32
33| 来源 | 目的 | 具体对象 | 角色 | 上下文 | 候选词 | 初始定义 |
34
35- **候选词固定在最右边。在填写具体对象和角色之前,保持候选词列为空。** 这是为了通过格式使"先决定词,后附加目标"的顺序变得不可能。
36- 从封闭选项中选择角色:`起始条件 / 状态 / 事件 / 值 / 记录 / 目的 / 手段`。如果同一个词指代多个角色,则拆分行。
37- 在"上下文"中,使用原文中的词语写出用户给出的推理顺序(例如,测试 → 隔离 → 应对措施)。不要与角色列混合。
38- 表格通常限制在 1–6 行。如果超过,在含义变化的边界处拆分表格。
39- 完成后,确认即使隐藏候选词列,仅凭"具体对象"列也能清楚理解其含义。
40
41### 3. 填写候选词
42
43- 优先使用用户术语和已建立术语。
44- 当放置其他新词时,在"初始定义"列中写入"X 指的是…"。不要引入无法写出定义的词;直接在正文中使用具体对象的描述。
45
46### 4. 将正文作为对应表的副本撰写
47
48- 仅使用对应表中列出的词作为正文的核心词汇。
49- 在日语语句、设计元素和代码标识符三层之间保持相同的对应关系(例如,"历史记录量达到 250K" = 起始条件 → 条件名 / "自动摘要开始" = 事件 → 事件名/方法名 / "自动摘要进行中" = 状态 → 状态名。不同的角色应有不同的名称)。
50- 不要将工作标签(省略目的、目标和判断的抽象名词短语)用于框架或标题。如果想使用,尝试在表格中写出该短语的指称对象;如果做不到,请用具体的语句撰写。
51
52## 出现问题时的初步行动
53
54- 如果意识到在尚未提交对应表的情况下开始撰写正文,不要稍后添加表格来继续。丢弃正文,重新独立提交对应表,然后重新生成正文。
55- 如果被指出表格中某一行不正确(指称对象或角色混淆),不要添加解释;重写相关行,然后重新生成正文的相应部分。
56- 在无法加载此技能的环境中,在开始正文之前,将一个至少包含 6 列(来源、目的、具体对象、角色、上下文、候选词)的表格作为独立文件保存。
57
58## 备注
59
60- 不要在本技能正文中包含用于验证的测试输入或预期答案(以保持验证的独立性。测试在单独目录的 fixtures 中管理)。
61- 目标不是与错误术语列表进行匹配。匹配目标是"文档自身声明的对应表"。

referent-before-label 规则

markdown
1# 在词语之前固定指称对象
2
3<!-- codex-runtime-summary -->
4- 重要:对于目标文档(设计语句、研究报告、应对措施计划、命名、推理顺序总结),在独立提交对应表后撰写正文。禁止在未提交对应表的情况下提交正文。如果开始撰写时没有表格,请丢弃正文并从对应表重新开始。
5- 重要:不要将工作标签(将未组织的工作包裹在抽象名词中的短语)用于框架或标题。不要引入无法写出初始定义的新词或生造词;将目标分解为具体的描述。
6- 重要:在开始目标文档时触发 semantic-generation 技能。即使无法使用该技能,也要首先将至少包含 6 列(来源、目的、具体对象、角色、上下文、候选词)的对应表作为独立的交付物保存。
7<!-- /codex-runtime-summary -->
8
9如果在目标不明确时先放置一个词(通常是现场生造的词),并基于该词进行思考,那么与指称对象的偏差将传播到设计语句、状态名、条件名、方法名和类型名中(如 TASK-52 中的"压缩点"和"将观察结果汇总到一个统一的地方"示例)。此规则旨在阻止此生成过程本身。与错误术语列表进行匹配(词语狩猎)不是应对措施,因为生造词无法枚举。词语波动的标准由 [[terminology]] 持有,而此规则持有"在放置词语之前的流程"。
10
11## 适用范围(目标文档)
12
13仅适用于属于以下任一情况的任务。如果无法判断,则适用。
14
151. 撰写设计材料、基于需求的设计、研究报告、原因隔离计划或应对措施计划。
162. 命名(公共规范、状态名、条件名、事件名、值或记录的类型名、方法名、布尔名)。
173. 尝试将用户给出的推理顺序总结为简短的工作标签。
18
19不适用于引用用户原始文本、简单的机械性编辑、重用现有名称、固定输出、闲聊或仅使用已建立术语即可撰写的短句。
20
21## 持续应用(3 项禁止)
22
23- 重要:在目标文档中,不要在没有独立提交对应表(指称表)的情况下提交正文。对应表必须首先保存在一个与正文分开的单独文件或单独轮次中,然后撰写正文(仅将表格放在已完成文档的开头并不能证明它是"先制作的")。
24- 重要:不要将工作标签用于框架、标题或结论。工作标签是指将未组织的工作包裹在抽象名词中,不包含目的、目标或判断的短语(例如,"总结观察结果")。如果想使用,尝试在对应表中写出该短语所指代的目标;如果做不到,则丢弃该短语并用具体的语句撰写。
25- 重要:当引入除用户术语或已建立术语之外的新词时,在首次出现时写入定义语句"X 指的是…"。不要引入无法写出定义语句的词;直接用语句写出目标。
26
27## 正常流程
28
291. 确定是否属于目标文档(如有疑问,视为适用)。
302. 触发 [[semantic-generation]] 技能,并首先将对应表保存为独立的交付物。
313. 仅使用对应表中列出的词作为核心词汇撰写正文,在日语语句、设计元素和代码标识符之间保持相同的对应关系。
32
33## 出现问题时的初步行动
34
35- 如果意识到在为目标文档撰写正文时未提交对应表,不要稍后添加表格来继续。丢弃正文,重新独立提交对应表,然后重新生成正文。
36- 在技能不可用的环境中,在开始正文之前,将一个至少包含 6 列(来源、目的、具体对象、角色、上下文、候选词)的对应表作为独立文件保存在工作目录中。
二次创作

使用 YouMind 创作爆款文章

收集素材、拆解爆点、生成视觉资产、撰写内容,并在一个 AI 工作空间里完成分发。

了解 YouMind
写给创作者

把你的 Markdown 变成干净的 𝕏 文章

图片上传、表格、代码块,往 𝕏 上手动重排太痛苦。YouMind 把整篇 Markdown 一键转成干净、可直接发布的 𝕏 文章草稿。

试试 Markdown 转 𝕏

更多可拆解样本

近期爆款文章

探索更多爆款文章