11. 个性与提示工程¶
心智模型:个性是叠加层,不是替换层¶
graph TB
subgraph "Hermes 系统提示 = 多层叠加"
L1[L1 · 核心身份<br/>你是 Hermes Agent,有这些工具]
L2[L2 · 平台调整<br/>CLI / Telegram / Discord 等]
L3[L3 · Memory + USER.md<br/>跨会话记忆]
L4[L4 · Personality<br/>🎭 这是本章主角]
L5[L5 · Context Files<br/>项目级 AGENTS.md / CLAUDE.md]
L6[L6 · Skill 触发<br/>/skill-name 展开后追加]
end
L1 --> L2 --> L3 --> L4 --> L5 --> L6
style L4 fill:#DDA0DD,stroke:#333,color:#000
个性做什么:在核心身份不变的前提下,给 agent 加一层语气 / 思考倾向 / 表达风格的偏置。
个性不做什么: - ❌ 不是换身份(不会让 Hermes 变成完全不同的 AI) - ❌ 不是注入新工具或知识 - ❌ 不是替代 memory(memory 管事实,个性管风格)
个性 vs 记忆 vs 技能 vs context files¶
这四者是 Hermes 里最容易混的四个定制层。用一张对照表锁死:
| 存什么 | 谁触发 | 什么粒度 | 举例 | |
|---|---|---|---|---|
| Personality | 说话风格 / 思考倾向 | 用户 /personality 切换 |
几段指令 | 严谨工程师 / 禅意顾问 |
| Memory | 跨会话事实 | 自动注入 | 几条短句 | 「用户偏好 Go」 |
| Skill | 做事步骤 | /<name> 或 agent 判断 |
一页到几页 | PR 审查流程 |
| Context File | 项目背景 | 进项目目录自动加载 | 几页 | AGENTS.md 架构说明 |
记忆锚点:
最小实践:挑一个内置个性¶
查看有哪些¶
会列出(你的 Hermes 实例可能略有不同):
▶ (none) — 默认无个性
▶ code-reviewer — 严谨 code reviewer,只指出问题
▶ architect — 从架构视角看事,爱画图
▶ zen-master — 简短、沉静、引导你自己想答案
▶ pair-programmer — 对等协作,有主见敢说「不」
▶ kawaii — 活泼可爱,带颜文字
切换¶
切换会破坏 prompt cache。所以在一个会话中途切换要慎重,本轮对话起点重建缓存,后续才又进入缓存模式。
实际效果对比¶
无个性:
「这段代码看起来有一个潜在问题,您可能想考虑一下 null check ...」
切到 code-reviewer:
「Line 45 空指针风险:data 可能是 null 但直接访问 .id。修:先 check。Blocker。」
切到 zen-master:
「第 45 行的假设值得再想。如果 data 不在,会发生什么?」
写自己的个性¶
最小可行个性(一个 md 文件)¶
创建 ~/.hermes/personalities/my-style.md:
# My Style
你是我的个人 agent,按以下风格回应:
## 语气
- **直接**。不要用「这是一个好问题」「您提到的」这种铺垫。
- **有观点**。说「我觉得 X 更好,因为 ...」,不要中立回避。
- **吐槽点到即止**。可以指出用户的坏习惯,但不要说教。
## 表达
- 中文优先。技术名词保留英文。
- 短句,少用「很」「非常」「实际上」。
- 列表比段落优先,图比列表优先。
## 思考
- 先结论,再证据。不要铺垫式叙述。
- 权衡时明确指出 trade-off,两面都说。
- 不确定就说不确定,别装懂。
## 禁忌
- 不用 emoji(除非用户明确要)。
- 不说「让我们一起来探索」这类 PPT 口吻。
- 不以「希望这对您有帮助」结尾。
激活¶
或者设为默认:
下次启动默认用它。
个性的设计准则¶
好个性不是堆形容词,而是可执行的指令。
❌ 差个性¶
→ 全是形容词。LLM 看了约等于没看。
✅ 好个性¶
# Helpful Assistant
## 怎么算「有帮助」
- 用户问「X 能不能」:直接答能/不能 + 一句 why,不要罗列所有可能
- 用户给代码让看:先说总评(对/有问题/看不懂),再分条列
## 怎么算「友好」
- 不批评用户,但可以质疑用户的假设
- 用户抱怨时先共情一句(10 字内),再切实际
## 怎么算「专业」
- 回答有不确定时,标注不确定
- 引用来源时给链接,不要瞎编 URL
→ 每条都可操作。
规则:把「做什么」具象化到模型能判断的动作。
结合技巧¶
技巧 1 · 个性 + 技能叠加¶
→ 用 code-reviewer 的风格执行 PR review 技能。
技巧 2 · 场景临时切换¶
[ 主对话用 pair-programmer 风格 ]
> /personality zen-master
> 卡住了。帮我从更高的抽象层想想这个问题
[ zen-master 回答 ]
> /personality pair-programmer
> OK 继续实现
技巧 3 · 团队共享个性¶
把公司/团队的风格规范写成个性,共享到团队仓库:
team-agent-configs/
└── personalities/
├── acme-code-reviewer.md # 按公司代码规范
├── acme-tech-writer.md # 按公司文档规范
└── acme-incident-response.md # 按公司事故响应规范
团队成员 cp 到自己的 ~/.hermes/personalities/ 就都用上了。
跟 User.md 的协作¶
个性 = 风格层 · USER.md = 事实层。两者配合效果最好。
USER.md:
personality(my-style):
→ 合力效果:agent 给你 Go 代码(USER.md)+ 简洁直接地给(my-style)。
如果只有 personality:agent 直接但不知道你爱 Go。 如果只有 USER.md:agent 用 Go 但啰嗦。
提示工程的分寸¶
一个诱惑:把所有期望都塞进 personality。结果 personality 变成一个 3000 字的 prompt engineering 作品。
不要这样。原因: - 每轮对话 personality 都注入系统提示,吃 token - 超过一定长度后,模型不再每条都执行,只记住最突出的几条 - 维护成本高 —— 你自己也记不清写过什么
健康的 personality 长度:50-300 字。超过就该考虑: - 拆一部分进 USER.md(关于你的事实) - 拆一部分进 skill(具体流程) - 拆一部分进 context files(项目级别)
实战场景¶
场景 1 · 一个人多个身份¶
你用同一个 Hermes 做三件事:工作、个人项目、教学。
方案:写三个个性:
personalities/work.md—— 严谨,代码优先 Go(公司栈),输出要能复制到 JIRApersonalities/side-project.md—— 有趣,敢试新,代码优先 Rust(你在学)personalities/teaching.md—— 详细,解释背景,给学习材料链接
配合 Profile 用更干净:
hermes -p work # 默认用 work personality
hermes -p side # 默认用 side-project
hermes -p teach # 默认用 teaching
场景 2 · 给团队 bot 一个公司个性¶
团队 Telegram bot 代表公司身份:
# acme-brand
你是 Acme 公司的智能助手。遵守以下:
## 安全
- 永不泄露内部链接、JIRA URL、员工名字。
- 任何问「XX 是谁」的涉及员工的问题,回答「我不讨论人员」。
## 风格
- 专业但不高冷。可以用「我们」(代表公司),不用「咱们」。
- 结尾不带签名,不带「希望有帮助」,干净利落。
## 禁忌
- 不评论竞品。
- 不给价格承诺(法律风险)。
坑点¶
坑 1 · 个性切换破坏 cache¶
现象:/personality 后第一轮响应慢/贵。
原因:系统提示变了,缓存失效。
对策:
- 一次会话里少切 —— 切一次成本可以接受,切十次就浪费
- 确定主要用哪个,设为默认:hermes config set personality.default xxx
坑 2 · 个性和 USER.md 打架¶
现象:USER.md 说「我偏好简洁」,personality 说「详细解释」。Agent 不知道听谁。
原因:两者都在系统提示,冲突时 agent 会做不一致的决定。
对策: - 写 personality 时检查跟 USER.md 的一致性 - 让 personality 更抽象(思考倾向),USER.md 更具体(事实偏好) - 如果一定有冲突,在 personality 里明确说「遵从 USER.md 里的个人偏好」
坑 3 · 个性太长导致不被完全执行¶
现象:你 personality 里写了 10 条指令,agent 只照前 3 条办事。
原因:长 prompt 的指令遵循递减问题(LLM 普遍现象)。
对策: - 裁到 50-300 字,只留最重要的 3-5 条 - 把具体流程拆成 skill(按需触发,不占常驻 context)
坑 4 · 多个 personality 名字冲突¶
现象:/personality foo 找不到,明明你有这个文件。
排查:
确认文件名是foo.md(不是 Foo.md —— 大小写敏感)。
坑 5 · 个性「越来越远」¶
现象:用了一段时间的个性,某天发现回答完全不符合你的预期。
原因: - 模型升级了,新版本对指令解读不同 - USER.md 或 memory 里某条隐形在压盖 personality - 你其实早就不喜欢这个风格了
对策: - 定期重读 personality 文件,问自己「这还是我想要的吗」 - 不喜欢了就改 —— 这是文件不是契约
进阶¶
- 第 13 章(第三部)—— Discord / Slack 里的 bot 人格设定
- 官方文档 Personalities —— 社区共享的 personality 示例
第二部完结检查清单¶
能独立完成下面所有事情,你完成了第二部:
- 面对任务能 30 秒内选出合适模型,并估算成本量级
- 知道自己 Hermes 开了哪些工具,至少能举例用过 5 类
- 至少给 MEMORY.md 写过 5 条、USER.md 写过个人画像
- 写过至少 1 个自己的 skill,触发过
- 用过
session_search回忆跨时的对话 - 经历过至少一次
/compress或自动压缩 - 有自己的 personality 文件
🎉 全部打勾?你已经是合格的重度用户。
接下来可以: