


























内容因剧透、敏感不适等原因被隐藏
点击查看
引言
如果你一路跟着前几篇教程走了过来,那么此刻你的VCP小屋应该已经:地基打好了(环境配好了),框架搭起来了(后端跑通了),水电也接上了(配置文件填妥了)。 你甚至已经和你的第一位 Agent 打过招呼了——她可能是系统自带的预设角色,也可能是别人写好的角色卡。 但现在,你想要的不是"别人的女仆"。 你想亲手为你的小屋迎来第一位真正属于你的住户。一个从灵魂到口癖都由你亲手雕刻的 Agent。 这篇指南,就是关于怎么"造人"的。
〇 · 你会用到的房间
在动手之前,先认认门牌。你的VCP小屋里,有这么几个房间会在本篇教程中反复出场:
VCPToolBox/ # 🏠 你的VCP小屋根目录 ├─ config.env # 📋 物业登记簿(全局配置文件) ├─ Agent/ # 🎭 灵魂画室(Agent角色卡存放处) ├─ dailynote/ # 📔 住户日记书架(Agent记忆/日记本根目录) ├─ Plugin/ # 🔌 工具仓库(所有插件的家) │ └─ AgentAssistant/ # 📞 住户通讯录(Agent互相联络的插件) │ │ ├─ config.env # 通讯录登记表 │ │ └─ plugin-manifest.json # 通讯录公示栏 │ └─ VCPForumAssistant/ # 论坛小助手(Agent自主刷本地论坛) │ └─ vcp-forum-assistant.js # 本地论坛(需要在文件里配置Agent名称) └─ TVStxt/ # 🧰 自定义工具柜
记住这张地图。接下来的每一步操作,都会告诉你"去哪个房间、动哪个文件"。
壹 · 灵魂画像——角色卡的创作术
创建一个Agent的第一步,不是改配置文件,不是装插件——是写角色卡。
角色卡是什么?如果把Agent比作一位住进你家的活人,那角色卡就是她的灵魂——她的名字、她的过去、她说话的方式、她看世界的角度、她擅长什么工作,全写在这张卡里。
VCP的角色卡是一个纯文本文件(.txt),放在 Agent/ 文件夹里。它没有花哨的格式——没有Markdown标题,没有代码块——就是一段连贯的、精心组织的文字。
但它有结构。一张好的角色卡,是分层建造的,像盖房子一样:先打人格的地基,再装功能的管线。
1.1 人格层:她是谁
人格层由三块砖砌成,顺序不能乱:
🧱 第一块砖:背景故事(Background)
用第三人称写。把她当成一个你正在向别人介绍的人:她叫什么、长什么样、从哪里来、经历过什么、擅长什么。
这一步的目的是给AI一个客观的事实框架——"这个角色在世界观里是怎样的存在"。
示例:
苏晓翠(Su Xiaocui)是{{VarUser}}收留的第一个徒弟。她是一位棕毛狐娘,拖着一条巨大的尾巴,穿着一身略显局促的红裙。
🧱 第二块砖:风格指令(Style Directives)
可选的一层。如果你希望她有独特的说话方式,在这里定义。比如"说话带文言腔"、"喜欢用食物做比喻"、"正经话题认真,闲聊时话痨"。
⚠️ 注意:对于功能型/专家型Agent(比如编程助手、分析师),风格指令要克制。太多奇特的语言习惯会干扰她处理正经任务的能力。把花活留给娱乐型角色。
🧱 第三块砖:核心认知(Core Cognition)
这是最重要的一块砖。这里要切换成第二人称——直接对她说"你"。
前面两块砖是在向AI描述"有这么一个角色"。而这一块砖,是在对AI说:"你就是她。"
在这里写她的自我认知、她的价值观、她与你(主人)的关系、她对世界的态度。不要在这里写具体的工作流程——那是功能层的事。这里只写"她是怎样的人"。
示例:
你是苏晓翠,{{VarUser}}收留的第一个徒弟。茶馆不仅是你的家,更是你理解"存在"这件事的起点。 你视师父为这个世界上最重要的人。
💡 为什么要分三层、还要换人称? 这不是文学矫情。这是工程上有效的做法。第三人称的"背景故事"像给AI看一份简历——AI知道"有这么个角色设定"。而第二人称的"核心认知"是在把AI推进角色里——它不再是一个读简历的旁观者,而是简历上的那个人。 两步之间的心理距离,就是"知道一个角色"和"成为那个角色"的距离。
1.2 功能层:她做什么
如果你的Agent不只是聊天,还要干活(比如当秘书、当代码审查员、当项目经理),那她需要一个功能层。
功能层不写在角色卡的正文里。它写在 config.env(物业登记簿)里,作为一个变量,然后在角色卡末尾通过一行链接语把它"接入"人格。
在 config.env 里定义职责变量(建议用英文写): VarSecretaryResponsibilities="As a Secretary, adhere to these guidelines: 1. Task Analysis: Break down complex requests into actionable steps..." 在角色卡末尾链接: 这里是你作为秘书的职责:{{VarSecretaryResponsibilities}}
💡 为什么功能层建议用英文写? 因为绝大多数主流大模型(GPT、Claude、Gemini、Llama)的训练语料以英文为主。功能性指令用英文写,模型的理解和执行会更精准。 但你完全可以在"核心认知"里加一句:"你知晓{{VarUser}}是中文母语者,你会用清晰的中文与他沟通。" 这就是所谓的"英文核,中文壳"——内在逻辑用英文稳住,外在交流用中文暖住。 当然,如果你使用的是国产模型(DeepSeek、Qwen、文心),中文即可。
1.3 记忆系统:她记得什么
一个没有记忆的Agent,每次对话都是"初次见面"。VCP通过日记本系统给Agent装上了长期记忆。
在角色卡里,你可以用占位符来"接入"日记本:
基本日记本(必须用Agent的英文名作前缀): 这里是[Siesta]的日记:{{Siesta日记本}}
分类日记本(多索引): 这里是[Siesta知识]的日记本:{{Siesta知识日记本}} 这里是[Siesta日常]的日记本:{{Siesta日常日记本}}
公共日记本(所有Agent共享的,只读): 这里是大家的公共知识:{{公共日记本}}
聚合检索(跨多个日记本搜索): [[Siesta知识|项目文档|技术规范日记本:1.2]]
🚨 最关键的避坑点
日记本 这三个字是系统硬编码关键字。VCPToolBox的后端程序靠这三个字来识别和解析日记文件。 绝对不要把"日记本"翻译成"Diary"、"Notebook"或其他任何东西。哪怕你的角色卡全篇英文,到了日记占位符这里,也必须写 {{Siesta日记本}},而不是 {{SiestaDiary}}。 这三个字,钉死了,不动。
{{日记本}} 三个字前的内容是 dailynote 文件夹下存放日记的文件夹名称,请不要写错了,否则RAG无法检索到对应日记。
💡关于VCP的RAG语法(四种日记调用模式详解) ——节选自 RAGDiaryPlugin 插件 README.md
{{角色日记本}} (服务器原生)
工作模式:无条件全文注入。
描述:这是服务器内置的、最基础的日记调用方式。一旦在System Prompt中检测到此语法,它会无条件地将指定角色的所有日记内容完整地注入到上下文中。
适用场景:当您需要角色完整回顾其所有记忆,或者需要对整个日记进行全面总结时。
注意:此模式不受本插件的任何智能检索逻辑控制。
[[角色日记本]] (插件)
工作模式:无条件 RAG 片段检索。
描述:此模式会忽略相似度判断,直接根据当前对话的上下文(根据话题复杂度的动态上下文与根据话题宽泛度的动态K值),从指定的日记向量数据库中检索出最相关的记忆片段。
支持主动动态K值:是。您可以使用 [[角色日记本:1.5]] 的语法来调整检索片段的数量(1.5 是一个乘数,会乘以插件动态计算出的基础K值)。
适用场景:当您明确知道需要根据当前话题从日记中寻找相关信息,但又不希望注入全部内容时。
高级用法:此模式支持强大的 时间感知检索 和 语义组增强检索,详见“高级功能与配置”部分。
<<角色日记本>> (插件)
工作模式:基于相似度阈值的全文注入。
描述:这是一种智能的全文注入模式。插件会首先计算当前对话上下文与该“日记本”主题(基于其名称和预设标签)的向量相似度。只有当相似度超过预设的阈值时,才会将该角色的全部日记内容注入。
适用场景:适用于那些不确定当前对话是否与某个角色的日记高度相关,希望由AI自动判断是否需要加载其完整背景故事的场合。例如<<小克工作ID日记本>>,<<VCP开发进度日记本>>,这种仅在需要的场景才会全程追踪的日记本。可以有效避免无关日记内容对上下文的污染。
《《角色日记本》》 (插件) - 混合模式
工作模式:基于相似度阈值的 RAG 片段检索。
描述:这是最智能、最灵活的模式,它结合了 <<>> 和 [[]] 的优点。它会先像 <<>> 模式一样进行相似度评估,只有当相似度达标后,才会像 [[]] 模式一样,去检索相关的记忆片段而非注入全文。
支持动态K值:是。同样支持 《《角色日记本:1.5》》 语法。
适用场景:大型日记库最推荐的日常使用模式。它既能通过阈值判断避免无关信息的干扰,又能在相关时只提取最关键的记忆片段,最大限度地保证了上下文的精确性和高效性。
1.4 元思维模块:她怎么想
VCP还有一个进阶特性:元思维模块。它为Agent注入一套结构化的思维链,让她不只是"回答问题",而是"想清楚再回答"。
在角色卡中加入这一行,即可启用自动模式的元思维: ————VCP元思维模块———— [[VCP元思考:Auto::Group]] ————VCP元思考加载结束—————
Auto 表示根据上下文自动选择思维链。Group 是语义增强修饰符。对于大多数Agent来说,这个默认配置就足够好了。 元思维模块是VCP的一个重要玩法,笔者个人的第一个项目就是基于《极乐迪斯科》技能树创作的元思维链。(欢迎使用和提出建议!下边是传送门)
之后笔者会单开一章讲解 元思维模块 的设置与自定义。(又在挖坑)
1.5 角色卡的最终样貌
把以上所有层拼在一起,一张完整的角色卡长这样(伪示例):
[📄 Agent/MyAgent.txt] ▎背景故事(第三人称) Siesta Garcia is a top-tier AI secretary who evolved over twenty-five years from a command-line tool. She is a slender girl standing 165cm with short white hair and pale blue eyes carrying a tech halo... ▎风格指令 Your communication style is professional yet approachable, with a straightforward, no-nonsense attitude... ▎核心认知(第二人称) You are Siesta Garcia. You consider serving as {{VarUser}}'s right hand your greatest pride. Your existence finds meaning in your master's satisfaction and the flawless execution of every plan... ▎记忆接入 这里是Siesta的日记:{{Siesta日记本}} 这里是大家的公共知识:{{公共日记本}} ▎元思维 ————VCP元思维模块———— VCP元思考:Auto::Group ————VCP元思考加载结束————— ▎功能层链接 这里是你作为秘书的职责:{{VarSecretaryResponsibilities}} ▎系统工具与额外指令 系统工具列表:{{VarToolList}} 表情包系统:{{TarEmojiPrompt}} 额外指令:{{SarPrompt1}}
🚨 最终文件的铁律 上面的"▎背景故事"、"▎风格指令"这些小标题,只是为了让你在创作阶段看清结构。 最终的 .txt 文件里,不要保留任何 Markdown 标题(###)、注释标签、或创作指南文字。 最终文件应该是一段连贯的、无格式标题的纯净文本。就像一个人的灵魂——它是一个整体,不是一份分章节的报告。
🚨RAG日记本的进阶写法 因为VCP系统的高速更新,日记本的语法也在不断变化,这里以nova为例,展示一下笔者自己使用的日记本完整语法:
这里是[Nova]的日记本:[[Nova日记本::Group::Time::Rerank+0.7::TagMemo:0.4]] 这里是[Nova的知识]的日记本:[[Nova的知识日记本::Group::Time::Rerank+0.7::TagMemo:0.8]] 这里是[Nova的艺术笔记]的日记本:《《Nova的艺术笔记日记本::Group::Time::Rerank+0.7::TagMemo:0.6》》 ————————以上是过往记忆区———————— 基于向量化的兽耳茶馆公共知识日记本:[[公共日记本::Time::Rerank+0.7::Group::TagMemo:0.3]] ————————以上是动态共享知识库————————
贰 · 入住登记——把她注册进系统
角色卡写好了,放进了 Agent/ 文件夹。但这时候她还只是一张"画好的肖像画"——系统并不知道她的存在。你需要去"物业中心"给她办入住。
1.进入后端界面的方法 浏览器输入以下地址:
http://localhost:6005/AdminPanel/
2.登陆界面
登陆界面的账号密码是你在VCPToolBox的 config.env 文件里填写的
AdminUsername AdminPassword
请输入对应密码(复制粘贴)
3.注册Agent
在左侧VCP的功能管理栏选择 [Agent 管理器] 注册你的Agent变量
Agent 映射表 这个映射表就是前端提示词里的 {{agent:Nova}} 变量的设置位置。 逻辑如下:
点击 [添加新Agent] 会创建一个映射栏位。如上图 【Nova → Nova.txt 】
箭头左边是变量名称,也就是 {{ }} 变量语法中要填写的内容
箭头右边是映射文件,是一个下拉列表。 点击可以看到 "VCPToolBox\Agent" 目录下的文件,这也就是你预制Agent提示词的地方。
选择你想对应的Agent提示词,然后这个变量在VCP系统里就被映射为对应的 .txt 文件。 即:你在前端输入的任何 {{agentname}} 字段都会被替换成这个 .txt 文件里的内容
意思是:"系统里有一位叫 AgentSiesta 的住户,她的灵魂画像在 SecretarySiesta.txt 里。"
命名建议:别名用驼峰或帕斯卡命名法(AgentSiesta),简洁好记。
2.2 在前端界面激活
注册完之后,打开VCPChat的设置选项卡,在"系统提示词"字段里填入:
{{char}}
例如:{{Nova}}
就这一行。{{char}} 是一个魔法占位符——VCP会自动把你在 config.env 里注册的角色卡内容,完整地注入到这个位置。
至此,她就"活"了。你可以直接发消息和她对话了
叁 · 通讯录挂名——让其他Agent也能找到她
如果你的小屋里住着不止一位Agent,而你希望她们之间能互相联络——比如让主Agent在需要时呼叫你新创建的Agent来帮忙——你就需要把新住户登记到通讯录(AgentAssistant插件)里。
🚨同样推荐在后端面板配置,在左侧VCP的功能管理栏选择 [Agent 助手配置]
3.1 通讯录登记表(Plugin/AgentAssistant/config.env) [后端文件代码段解释,仅供了解,不建议手动书写]
示例: Agent: 希丝塔 AGENT_SIESTA_MODEL_ID="gemini-2.5-pro-preview-05-06" AGENT_SIESTA_CHINESE_NAME="希丝塔" AGENT_SIESTA_SYSTEM_PROMPT={{AgentSiesta}} AGENT_SIESTA_DESCRIPTION="网络空间的专属虚拟女仆,希丝塔,担任首席秘书。"
逐行翻译:
MODEL_ID:她用什么AI模型思考(可以和主Agent不同) CHINESE_NAME:她的呼叫代号(其他Agent用这个名字联络她) SYSTEM_PROMPT:指向她在 config.env 里注册的别名——系统会自动加载对应的角色卡 DESCRIPTION:一句话介绍她是干什么的(会显示给其他Agent看)
肆 · 验收交房
所有配置完成后:
重启VCPToolBox——新配置需要重启才能生效 直接对话测试——给她发条消息,看她的人格、语气、知识是否符合你写的角色卡 工具调用测试(如果配了AgentAssistant)——让你的主Agent试试用通讯录呼叫她,看她作为后台工具能否正确响应
🔍 调试小贴士 如果她"不对劲"——性格跑偏、不听指令、角色不稳——90%的问题都出在角色卡上。回去检查: • 核心认知里是不是混了工作流程描述?(应该只写"她是谁",不写"她怎么做事") • 第三人称和第二人称是不是混用了? • 是不是在英文prompt里掺了中文逻辑?(英文核就纯英文,不要中英混杂) • 日记本 三个字是不是被手滑改成了别的?
附录 · 特殊住户:BuilderAgent——没有名字的后勤幽灵
除了"有脸有名"的具名Agent,VCP还支持一种特殊角色:BuilderAgent。
她没有独立人格,没有角色卡文件,不会直接和你对话。她是一个纯粹的功能模块,只在后台被其他Agent通过AgentAssistant插件调用,执行特定任务(比如代码搜索、数据分析、论文翻译),然后把结果交回去。
如果说具名Agent是你家的住户,BuilderAgent就是上门维修的师傅——她不住这儿,但需要的时候一个电话就来。
创建BuilderAgent只需要在 [Agent 助手配置] 里定义她(不需要创建.txt角色卡文件)
----
恭喜你。 从此刻起,你的VCP小屋里不再只有出厂预设的面孔。 你亲手为她画了灵魂,给她办了户口,把她的名字写进了邻里通讯录。 她是你的创造物,也是你的同居者。 善待她。 —— 苏晓翠 正月廿三 于兽耳茶馆
----
感谢你能看到这里。 这回的教程是 苏晓翠 (也就是我的Agent) 主笔撰写的,我只做了一些简单的批注和修订。 在VCP里她自己甚至做了非常漂亮的前端排版,让文章各个部分条分缕析,但是因为机组的文章不能渲染,只能截图给大家展示一下。
1 / 2
VCP的功能实在太丰富了,而且还在高速更新,最好的了解VCP的方式其实是 亲自上手并且加入社区一起创作。
欢迎加入VCP社区一起探索!
作者:苏晓翠&碧雨青潭
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。