Files
InfoRSI/docs/调研/提示词.md
T

60 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 提示词怎么写:调研结论
2026-10-03 第零轮两次真实测试后,监督者为改提示词派子 Agent 做了两次调研。一次查同类系统"让模型提出方向"那一步的提示词怎么写,一次查写得好的 skill 和系统提示词。这里只记结论和出处。
出处路径相对 `/home/iomgaa/Projects/RivalBits/reference/`(参考项目克隆的同类系统源码和论文),只读。参考项目自己早先的同类调研在 `/home/iomgaa/Projects/RivalBits/research-wiki/reference/` 下:`调研_提示词写作准则.md`、`调研_人写的提示词与skill.md`、`调研_skill写法范例与现状体检.md`、`调研_让研究者真正独立.md`。
## 一、第零轮测出来的教训(本项目自己的证据)
| 问题 | 证据 | 改法 |
|---|---|---|
| 提示词里的例子会被照抄 | 写入口的提示词里唯一的"好例子",本身就是一条好路线(固定圆心求半径)。3 次运行 9 位研究者,第 1 个入口都照它写,连句式都一样 | 例子换成和题目无关的领域,而且给几个类型不同的 |
| 提示词泄露解法 | 研究者角色提示词和提案、挑刺、解释、收尾等任务提示词里,写满了参考项目跑填圆时的具体做法(线性规划、结构起点、扰动后重跑优化、多起点 SLSQP)。5 条关键想法泄露了 4 条 | 全部换成别的领域,或者写成和领域无关的抽象说法 |
| 唯一一个"没人站的路"的例子,会把所有人推到那条路上 | 讨论提示词举的是"没人去看评测",结果每次运行都有人写评测入口 | 只描述形状,不点名方向 |
| 去掉泄露和锚点后,模型自己想得到好方向 | 改提示词后,"联合优化"3 次都出现在入口里(改前 0 次) | — |
| 模型偏爱自己写的东西 | 6 次运行 18 位研究者,认领时都把自己写的入口排第一 | 记作现象;入口不约束后面的提案,暂不改方法 |
## 二、同类系统怎么写"提出方向"
- **例子一律用别的领域,或者不给。**
- OpenEvolve、ShinkaEvolve、alpha-research 的格式示例都是矩阵乘法(`openevolve/openevolve/prompt/templates.py:48-60`、`ShinkaEvolve/shinka/prompts/prompts_diff.py:22-37`)。
- CodeEvolve 用 `exp` 函数,并写"Avoid Over-fitting … The goal is a *new* perspective"(`codeevolve/src/codeevolve/prompt/template.py`)。
- AlphaEvolve 的填圆提示只有题目、接口、判定和时限,没有方法提示和示例(`alphaevolve_repository_of_problems/.../packing_circles_max_sum_of_radii.ipynb` 第 11 个 cell)。
- AI-Scientist v1 把种子例子当作"你已经提过的"放进存档,例子变成了"别再重复"的清单(`AI-Scientist/ai_scientist/generate_ideas.py:19-23, 99-102`)。
- 只写一句"别照抄例子"不够(`papers/AnchoringLLM-Lou_2412.06593.pdf`:"Ignoring Anchor Hints … not sufficient")。
- **先盘点有哪几类做法,再挑。**
- EvoX 要求"span at least two distinct approach families. Don't anchor on one paradigm"(`skydiscover/.../evox/utils/variation_operator_generator.py:25-125`)。
- AdaEvolve 先问"决策变量是什么、连续还是离散、彼此怎么依赖",再要求几个想法"DIFFERENT types, NOT variations of the same approach"(`skydiscover/.../adaevolve/paradigm/generator.py:361-403, 528-541`)。
- DeepScientist 先发散 6–12 个,"If all surviving candidates belong to the same mechanism family, widen once"(`DeepScientist/src/skills/idea/SKILL.md:343-344`)。
- 证据最强的是"先列一长串,再改得不一样"的分步写法(`papers/PromptingDiverseIdeas-Meincke_2402.01727.pdf`)。
- **越线的反例**:EvoX 那段写着"The FULL joint optimization over all these variables is the real problem",AdaEvolve 的示例写着"Use scipy.optimize.minimize with SLSQP"。这两处已经是在给答案,我们不能这样写。
- **框定直接决定方法族。**
- OpenEvolve 第一阶段要求"写显式构造,不要写迭代搜索",卡在 2.377;第二阶段改成"trying fundamentally different approaches"才到 2.634(`openevolve/examples/circle_packing/config_phase_1.yaml:24-34`、`config_phase_2.yaml:24-35`)。
- **几个人用同一个模型时怎么拉开。**
- co-scientist 每次随机抽推理方式(第一性原理、类比、反事实……)(`open-coscientist-agents/.../reasoning_types.py:4-14`)。
- ShinkaEvolve、ThetaEvolve 随机抽系统提示(`ShinkaEvolve/shinka/prompts/prompts_full.py:35-153`)。
- DMAD 证明"给不同的推理方法"比"只换人设"有效(`papers/DMAD-BreakingMentalSet_ICLR2025.pdf`)。
- 先闭门写能减少锚定(`papers/DiversityCollapseMAS-Ideation_2604.18005.pdf`)。
## 三、写得好的 skill 和系统提示词的共同原则
1. **先讲处境和目的,再讲要求。** 说清这一步在做什么、交给谁读、做得好是什么样(`system_prompts_leaks/Anthropic/anthropic-interviewer.md:4-10`;`skills/skills/frontend-design/SKILL.md:9`)。
2. **讲为什么,讲对读者的后果。** 模型能从解释里自己推到没写到的情形(`theory/anthropic_prompting-best-practices.md:69-85`;`system_prompts_leaks/Anthropic/claude-science.md:57`)。
3. **少用大写、"必须"和加粗**(`skills/skills/skill-creator/SKILL.md:302`:"If you find yourself writing ALWAYS or NEVER in all caps … that's a yellow flag")。
4. **要发散,就点出"模型默认会走的路",不给目标答案。** 点名时只写"默认是哪种形状",不写具体内容,否则被点名的内容会变成新的汇聚点(`skills/skills/frontend-design/SKILL.md:38-45, 53`;`theory/anthropic_prompting-best-practices.md:1069-1071`)。
5. **一个具体例子就是一个锚。** 例子要么不给,要么给几个互相不同的(`theory/anthropic_prompting-best-practices.md:94`;Interviewer `:30`:"enough information to set the scope … but not so much that you influence the responses")。
6. **写法跟着失败的类型走。** 判断类、"写成什么样"类的问题,用正面描述怎么做;只有"明知该做、有压力时偷懒"的纪律类问题,才用禁令和"红旗"念头表。禁令用在"写成什么样"的问题上反而更糟,也不要加"除非……"的例外从句(`superpowers/skills/writing-skills/SKILL.md:461-476`)。
7. **"何时做 / 何时不做"成对写,并给默认值**(`skills/skills/discernment-nudge/SKILL.md:72-78`;`superpowers/skills/brainstorming/SKILL.md:86`)。
8. **"做不到、不知道"写成正常结果,说清谁接手**(`superpowers/skills/subagent-driven-development/implementer-prompt.md:76-90`)。
9. **自由度和任务的脆弱程度相配。** 开阔的判断任务给方向,窄桥式的任务给具体步骤(`papers/web/skills-best-practices.md:60-133`)。
10. **自查写成问题,放在动手之前或最后,不要求写出来**(`skills/skills/frontend-design/SKILL.md:53`)。
11. **精简**:只写模型不知道的;读真实运行的记录,删掉让模型白费力气的句子(`skills/skills/skill-creator/SKILL.md:300`)。
## 四、放到本项目时要注意
- 角色模型是 glm-5.3,上面的结论大多是在 Claude 上测的。改完要用真实运行验证,不能只凭写法。
- 研究者子会话不加载 skill(`src/agents/session.ts` 会核对并拒绝)。所以正文的写法可以照搬,"描述写成何时触发""详见某文件、按需读"这类机制用不了。角色提示词每个任务都整份发,等价的按需加载只能由程序按任务挑内容。
- "现在交什么"由程序从 vocab 的字段说明生成(`src/materials/prompts.ts` 的 `closing`)。字段怎么写放在 vocab 的字段说明里,任务提示词不再写一遍。
- 子会话里没有人可问。别人的"问用户、等批准"要改成"在提交里写明不确定的地方,或者不交并写清原因"。
- **不泄露解法**:提示词里不出现任何任务的具体做法、具体数值或参考项目跑出来的具体经历。真实教训改写成不带领域细节的形状。检查办法:用这个任务的关键词搜一遍全部提示词(填圆的关键词:半径、圆心、线性规划、SLSQP、扰动、六角、布局、摆法、结构起点、compute_max_radii 等),搜不到才算过。