注入位置与优先级 · 系统提示词之前/之后/对话顶部/底部
为什么注入位置重要
同一内容放在不同位置,模型看到的效果可能完全不同。系统提示词之前的内容拥有最高优先级,对话底部的内容在模型的"注意力焦点"里最突出。选择正确的位置能显著提升提示词的效果。
五种注入位置
位置 1:系统提示词之前
在现有系统消息之前插入。适合最高优先级的框架性指令——模型最先看到这条指令,后续所有内容都在它的约束下处理。
典型场景:
- "所有回复必须使用中文"
- "你是一个安全审计专家,必须对每个回答进行安全检查"
位置 2:系统提示词之后
追加到系统消息末尾。这是最常用的位置——扩展现有系统提示词而不替换它。
典型场景:
- 模式注入:正式写作、分步推理风格
- 角色补充:在基础角色之上增加特定行为约束
位置 3:对话顶部
在对话历史中第一条用户消息之前插入。适用于开头需要出现一次的场景上下文。
典型场景:
- "本次项目是 XXX,背景信息是 YYY"
- 一次性注入一段参考资料
位置 4:对话底部
在最近一条用户消息之前插入。适用于应该保持在模型注意力焦点中的提醒或动态上下文。
典型场景:
- "请记住用户当前正在处理的文件是 main.py"
- 每次对话都要提醒的重要细节
位置 5:指定深度
在距消息列表末尾的特定深度处插入(比如深度 4 = 距底部四条消息处)。用于相对于最近对话轮次的精确控制。
注入位置的限制
RikkaHub 有一个重要的自动限制:不会在用户消息和紧随其后的含工具调用的助手消息之间插入注入。原因是某些提供商(如 DeepSeek)要求这两条消息必须相邻,否则推理会失败。
这个限制是自动应用的,不需要你手动处理。
优先级与合并
优先级
每个注入有一个优先级值(整数)。当多个注入针对同一位置时:
- 数字越大,越先注入
- 同位置同角色的注入会合并为一条消息(而不是分散成多条)
合并的好处是保持对话结构整洁,避免产生多条独立的系统消息降低模型的注意力。
角色
注入可以是"用户"角色或"助手"角色。同一位置但不同角色的注入不会被合并,会保持独立。
实战示例
假设你有三个注入:
| 注入 | 位置 | 优先级 | 内容 |
|---|---|---|---|
| 正式模式 | 系统提示词之后 | 10 | "以简洁正式的商务风格写作" |
| 安全检查 | 系统提示词之前 | 20 | "所有回复前进行安全检查" |
| 项目背景 | 对话顶部 | 5 | "本次项目是 XXX" |
实际效果:
- 首先注入 "安全检查"(系统提示词之前,优先级 20)
- 然后是助手的系统提示词
- 然后注入 "正式模式"(系统提示词之后,优先级 10)
- 然后注入 "项目背景"(对话顶部,优先级 5)
- 然后是历史消息和最近的用户消息
调试注入效果
注入不会立即显示在界面上。如果想确认注入确实生效了:
- 打开对话 → 历史抽屉 → 设置
- 某些版本的 RikkaHub 允许查看"发送给模型的完整消息列表"(开发或调试模式)
- 或者最简单的方式:在系统提示词里加一条能确认的指令(比如"回复开头必须说 [已加载正式模式]"),看模型是否遵守
禁用但不删除
每个注入(模式注入 / 知识库条目)都可以单独禁用。禁用后不会注入,但配置保留,随时可以重新启用。这比反复创建删除更高效。