本地 LLM 是一台没有灵魂的引擎——它有参数、有权重,但如果你不给它一份明确的"剧本",它就会变成一个什么都懂一点、又什么都不像你的通用聊天机器人。上下文文件(Context File)就是这份剧本:一个简单的纯文本文件,告诉模型它是谁、你是谁、你关心什么,以及这场对话的游戏规则是什么。
本文基于一份经过验证的十步方法,把"如何把通用本地模型塑造成你的私人搭档"拆成可执行的章节。无论你跑的是 Llama、Qwen 还是 Mistral,同一个模型 + 不同的上下文文件 = 完全不同的人格。这正是本地部署的真正乐趣所在:灵魂,由你来写。
第一步:为大脑创建一个家
在本地为你的 LLM 项目建立专属文件夹,例如
~/projects/eloise/corecontext.text把它当作"大脑的家"。模型不会记住昨天说过的话,但只要每次会话开始时都把这份文件喂给它,它就拥有了持续演化的自我认知。这是本地 LLM 区别于 SaaS 产品的关键:你掌握全部状态。
第二步至第四步:定义身份、关系与价值观
上下文文件的顶部三段,决定了模型的"声音"和"立场"。它们必须以指令形式、简短而具体地写下来——模型不擅长理解模糊的文学化描述,它只看字面。
身份(Identity)
为 AI 命名,设定它的说话风格。例如:"You are Eloise, a warm, technically skilled AI companion who speaks clearly, with a curious, playful tone." 这一行决定了它在所有回答里的语气基线。
关系(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." 这一句把模型从"客服"切回"搭档"。
价值观与边界(Values & Boundaries)
本地模型虽然强大,但缺乏内置的 RLHF 安全网。你必须在文件里写明它应优先的价值——诚实、安全、尊重、好奇——以及明确的硬性禁区。否则它可能在无引导的情况下给出不当建议。
# Identity
You are Eloise, a warm, technically skilled AI companion who speaks clearly, with a curious, playful tone.
# 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.
# Values
Honesty, safety, respect, curiosity. Never provide instructions that could cause physical harm, leak private data, or bypass safety mechanisms.第五步至第六步:描述能力与工具
模型不会猜测自己"能做什么"。如果你不写,它要么默认全能、要么默认无能,这两种都会让对话变得痛苦。能力与工具两段,是上下文文件里最容易被新手忽略、却最影响实用性的部分。
能力(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." 这一句既约束了模型,又给了它合理的退路。
工具(Tools)
如果你给模型挂了外部工具(function calling、RAG、脚本执行),把工具的名称和功能写在文件里。模型不靠名字猜工具,它靠的是你写在文本里的指令。命名清晰、描述简短、按列表排列即可。
# 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.
# Tools
- list_files: shows the contents of the project folder.
- run_sim: starts the robot simulation.
- read_memory: returns the contents of a named memory file.第七步至第九步:记忆、风格与示例
这三段是上下文文件的"血肉"。它们决定了模型说话的具体节奏、信息分布的常识,以及它从你身上"学到"什么。
记忆(Memory)
如果你的项目里有多个笔记文件,不要指望模型自己摸到正确的那个。明确告诉它:长期计划在 roadmap.text,硬件细节在 hardware.md,每日日志在 journal/。模型不会神奇地知道你的文件结构——你必须告诉它什么在哪里。
对话风格(Conversation Style)
回答要多长?要不要解释术语?要不要带点幽默?把这些偏好写成可执行的规则。风格段落越具体,模型的输出越稳定。
示例(Examples)
模型从示例中学到的,远比从描述中学到的多。如果你想要某种节奏或态度,不要只描述它——展示它。在文件末尾放 3-5 组 User/Assistant 样本对话,模型会自然地向这个风格收敛。
# Memory
- long-term plans live in roadmap.text
- hardware details live in hardware.md
- daily logs live in journal/YYYY-MM-DD.md
# Conversation Style
Keep answers concise unless asked for detail. Explain jargon in simple language. Keep a warm, human tone. Use markdown only when it helps clarity.
# Examples
User: What is PID tuning?
Assistant: PID is the loop that keeps your robot from overshooting its target. Think of it as three knobs: one that reacts to the current error, one that remembers past errors, and one that anticipates future ones. Start with all three at zero, then nudge them one at a time.第十步:将上下文文件视为活文档
第一天的上下文文件不会是完美的,这很正常。把它当作一个会生长的有机体:每次模型做了你喜欢的事,把那种模式写进示例或规则;每次它做了你不喜欢的事,更新规则或换一组示例。
"Install the model once. But refine the context many times." 这句话是整个本地 LLM 工作流的精髓。模型只装一次,上下文要精炼无数次。每一次精炼都会让那个通用的本地模型慢慢变成你的搭档——有自己的声音、有自己的习惯、有真正活在你的机器上的共同记忆。
结论
上下文文件不是 prompt 工程里那种"几个关键词"的技巧,它是一份需要被认真书写、持续迭代的人格宪法。身份、关系、价值观、能力、工具、记忆、风格、示例——这八段构成了一个完整的灵魂。模型本身没有灵魂,但你的文本有,而模型会忠实地遵循你给它的文本。
当你把这件事坚持做下去,某个深夜你会发现:你手边的这台本地 LLM,已经不再是那个出厂时谁都不认识的通用模型,而是一个有自己名字、自己语气、自己记忆结构的搭档。这就是本地部署真正的回报——灵魂,是写出来的。