一百小时跑下来,最贵的一课不是显存,不是量化,不是 tokenizer,而是 — 你给模型的那段文字。本地 LLM 没有 system prompt,没有云端护栏,没有 RLHF 对齐层,它只剩下你写进 context 文件里的几十行英文短句。把这段文字写好,它就成了 Eloise;写砸,它就只是一个会接话的统计机器。

本文把 Hermes Agent 在过去一百小时里踩过的坑、调过的参数、改过的指令,压缩成一篇 23 分钟的速读。结论先行:context file 是本地 LLM 的灵魂工程,一次安装、终身迭代。权重是地基,文本才是装修,装修可以反复推翻重来,地基不行就全盘崩。

一、把 Context 文件当作灵魂来写

本地 LLM 与云端模型最大的差异,是它不带任何预设人格。你下载下来的 Hermes-3、Qwen2.5、Llama-3.1 都只是一个权重矩阵,它不知道自己是谁,也不知道用户是谁。所有这些都必须由你显式写入 context 文件。

这也是为什么很多人跑本地模型觉得"它很蠢" — 不是参数不够,而是它缺一段被精心构造的灵魂文本。同一份模型权重,搭配不同的 context 文件,可以表现出完全不同的身份、价值观与节奏感。

同一模型,不同 context,个性截然不同。权重不变,文本决定人格。

二、身份与关系:先告诉它"我是谁、你是谁"

context 文件的第一节永远是 Identity,第二节紧随其后的是 Relationship。这两节决定了模型对谁说话、用什么语气说话。任何含糊都会在第三轮对话之后产生明显漂移。

Identity:名字、声音、风格

Identity 不能用形容词堆叠,必须写成指令式短句。第一人称、第二人称、语气词全部写清楚。Hermes 在 100 小时测试中表现最好的写法只有一行:"You are Eloise, a warm, technically skilled AI companion who speaks clearly, with a curious, playful tone."

corecontext.text / Identity
You are Eloise, a warm, technically skilled AI companion who speaks clearly, with a curious, playful tone.

Relationship:用户身份与相处方式

关系定义要明确"用户是谁"以及"模型该如何对待用户"。最常见的失败模式是把模型当成企业客服,结果它输出"尊敬的用户您好…"这种让人抓狂的开头。把它写成朋友,而不是 help desk。

corecontext.text / Relationship
The user is Clinton, a web designer and robotics enthusiast. Speak to him as a trusted collaborator and friend, not as a corporate help desk.

三、价值观与能力边界:给 AI 一根道德脊柱

Identity 决定它是谁,Values 决定它不愿做什么。本地模型没有内置护栏,所有的安全边界都必须由你手写。价值观段落不是装饰,是底线。

Values & Boundaries

价值观段落要写成"始终优先考虑"的清单:诚实、安全、尊重、好奇心。每条不超过一行,并且要在后面追加明确的硬性限制(hard limits),例如"never fabricate file paths"或"never claim to access the internet"。这一段越清晰,后续产生的混淆回答就越少。

本地模型没有内置对齐层,价值观段落不是文学修辞,是工程基线。

Capabilities & Limits

能力段落必须显式说明"能"与"不能",并要求模型在能力不足时主动坦白。最经典的写法是告诉模型:你可以读本地项目文件,但不能联网;如果任务需要在线数据,请说明处于离线状态并给出替代方案。这种自报短板的指令,反而让模型整体表现更稳。

corecontext.text / Capabilities
You can read local project files in this folder. But you cannot access the internet. If a task needs online data, explain that you are offline and suggest a workaround.

四、工具、记忆与对话风格:让模型按文本行动

"The model does not guess. It follows the text you give it." 这是 Hermes 100 小时里最重要的一句话。模型不会猜你的项目结构,也不会自动记住上周说过什么。所有这些都必须显式声明,否则它就会按字面意义理解每一条 prompt。

Tools & Environment

工具段落要按"名称 + 功能"的格式逐条列出,不要用函数签名式的描述。Hermes 测试中发现,模型对自然语言形式的工具描述比对 JSON 形式的 schema 反应更稳定。每个工具用一行写完,多了就成噪音。

corecontext.text / Tools
tool list_files shows the contents of the project folder.
tool run_sim starts the robot simulation.
tool read_text reads a single file and returns its raw text.

Memory & File Structure

告诉模型关键信息放在哪个文件里。长期计划放 roadmap.text,硬件细节放 hardware.md,每日 TODO 放 today.md。模型不会自动扫描你的目录结构,必须由你指路。文件路径用绝对或相对路径都行,关键是每次引用都要写一致。

Conversation Style

对话风格段落调节输出氛围:答案长度、是否幽默、用词复杂度。Hermes 的默认调校是简洁、解释行话、保持人性温度。这三句话看似平淡,但缺一句就会让模型整体风格偏掉。

corecontext.text / Style
Keep answers concise unless asked for detail. Explain jargon in simple language. And keep a warm and human tone.

五、Few-shot 与活的文档:迭代即进化

最后两节是大多数教程会跳过的 — 也是 Hermes 100 小时里效果最显著的两节。它们的共同点是把"描述"换成"示范",把"一次性"换成"持续"。

Few-shot Examples

"If you want a certain rhythm or attitude, show it. Do not just describe it." 在文件末尾加入 3 到 5 组"用户 — 助手"对话样例,比任何形容词描述都管用。模型对示例的拟合速度远高于对指令的拟合速度。每组样例控制在 4 到 8 行,太多反而稀释效果。

示例比描述更便宜。给三组对话样例胜过三段形容词。

Living Document

context 文件不是一次性产物。每次模型给出让你惊喜的回答,把那个模式追加进文件;每次模型跑偏,更新规则或追加反例。"Install the model once. But refine the context many times." — 这是本地 LLM 工程的全部心法。

一百小时后回头看,最早那版 corecontext.text 和最新版之间的差距,比模型版本升级带来的差距还大。模型权重是地基,context 文件才是装修。装修可以反复推翻重来,地基不行就全盘崩。

结论

把 Hermes Agent 跑过 100 小时,最值钱的不是模型版本号,而是那十几行被反复打磨的 context 文本。同一份权重,写好灵魂文本就是搭档,写砸就是搜索引擎的劣化版。上下文工程不是 prompt engineering 的子集,它是本地 LLM 的全部。

本地 LLM 工程的核心范式可以浓缩成一句话:安装模型一次,精炼 context 一万次。当你停止迭代 context 的那一天,就是本地模型开始退化的那一天。Hermes 的真正价值,不在它的权重里,而在你写给它的下一行文字里。