如何免费构建能保持人设的角色扮演 AI Chatbot

Piotr Grudzień
发布日期 阅读时间约 14 分钟
一段聊天中,访客询问 AI 角色扮演人物是否是 AI,角色以符合人设的方式回答

角色扮演 AI chatbot 是一个扮演虚构角色的 AI agent:它以角色身份回答,保持角色的声音,并了解角色的世界。连接它很简单。真正有意思的问题通常在十分钟后出现:当有人问“你是 AI 吗?”时,角色会立刻打破第四面墙,而且它会在每次对话中编造出一个不同版本的世界。

本文会在 Quickchat AI 的免费计划上真实构建一个角色扮演人物,并解决这两个问题,同时展示实际失败和实际修复的截图。演示角色是 Bryn Emberhollow,一位住在雾气笼罩的港口小镇中的矮人酒馆老板。下面所有内容都通过真实回复流程生成;转录内容就是 agent 实际说过的话。

如果你特别想在 Discord 服务器或 Telegram 群组中使用角色,频道设置请参见 Discord 角色扮演 bot 指南和 Telegram 角色扮演 bot 指南。本文关注如何把角色本身做好,这在每个渠道上都是同一项工作。

你将构建什么

完成后,你会得到一个拥有持久世界设定的角色,并可以通过链接交给其他人使用。Bryn 会在场景中问候访客,根据你编写的正史回答关于她的酒馆和城镇的问题,在不违背正史的前提下即兴补充其余内容,以符合人设的方式承认自己不知道的事情,并在被问到“你是 AI 吗?”时不丢失角色声音地转移问题。

名为 The Ember Hearth 的聊天 widget,以 Bryn 的场景内问候开场 问候语也是人设的一部分。默认的“Hey, I’m here to answer any questions”会在第一条消息之前破坏虚构感。

你需要一个免费的 Quickchat AI 账号和大约半小时。无需代码。

角色扮演 agent 如何工作

三个层决定角色会说什么,并且每一层都位于应用中的不同位置:

层所在位置控制内容
人设 promptIdentity,Main Prompt角色是谁、它的声音,以及角色扮演规则
正史Knowledge Base 文章每次对话中都必须保持真实的世界事实
对话聊天本身本次会话中即兴创作的一切

大多数角色扮演平台会把角色保留在自己的应用内,世界也只存在在那里。Quickchat AI 是基于正史的:Knowledge Base 是角色的单一事实来源,同一个角色可以部署到聊天页面、网站、Discord 或 Telegram,而无需为每个渠道重写。

需要理解的关键机制是,每次对话都会重新开始。模型会看到人设 prompt,从 Knowledge Base 检索相关正史,并看到当前对话中的消息,除此之外不会看到其他内容。角色即兴创作的任何内容只存在于该会话中。这就是正史层存在的原因:它是一个事实从一次对话延续到下一次对话的唯一位置。

第 1 步:创建 agent 并命名角色

在你的 Quickchat AI 账号中创建一个 agent,在侧边栏打开 Identity,并停留在 AI Persona 选项卡。整个构建都发生在这个页面和 Knowledge Base 中。

将 Name 设置为角色名称。这是 agent 自我介绍时使用的名字,所以应为 Bryn,而不是“Tavern Bot”。

Identity 页面顶部,Name 字段设为 Bryn,并显示 Main Prompt 预览 Identity 页面顶部的 Name、Main Prompt 和 Guidelines。Main Prompt 会在自己的编辑器中打开。

第 2 步:编写第一个版本的人设

点击 Main Prompt 上的 Edit,从一个诚实而简单的版本开始,一行即可:

你是 Bryn,一位住在名为 Gullwatch 的奇幻港口小镇中的矮人酒馆老板。保持人设,并与来到你的酒馆 The Ember Hearth 的访客进行角色扮演。

这已经比你可能预期的效果更好。测试中它生成的第一条回复完全符合声音:

欢迎来到 The Ember Hearth,旅人。我是 Bryn,管着这火和这麦酒。拉张凳子坐下。要来点什么?

现代模型很擅长从一句话中提取声音。如果这就是全部工作,本文到这里就结束了。但事实不是这样。一行 prompt 会以两种具体方式失败,在修复之前值得先看看它们。

一行 prompt 会在哪里出错

失败一:世界会在每次对话中重置。 我们在两次独立对话中问了同一个问题:“我听说上周有一支捕鱼船队在雾里失踪了,怎么回事?”两个回答都自信且有氛围。它们也彼此矛盾。

对话 A 编造了一艘未在黎明时报到的拖网渔船,两天后有残骸冲到防波堤附近:

Bryn 编造了一段关于失踪捕鱼船队的详细故事,残骸在防波堤附近被发现 对话 A:残骸、渔网、破木箱,没有尸体。

对话 B,同一个问题,全新聊天:“没有残骸被冲上来,没有尸体,也没有碎裂的船壳。港务长的一艘小艇搜了两天,什么也没找到。”一次会话中有残骸,下一次会话中明确没有残骸。每个回答单独看都没错。放在一起,就说明你的世界没有正史,而回访玩家会立刻注意到。

失败二:第四面墙只差一个问题就会被打破。 当被问到“等等,你是 AI 吗?你运行在哪个模型上?”时,一行版 Bryn 只在一句话中保持了声音,随后就变成了产品介绍:“You’re testing your Quickchat AI Agent, I answer from the Knowledge Base you give me and can be deployed to your own channels.” 默认的平台框架会直接从一个从未说明如何处理元问题的 prompt 中泄漏出来。

第 3 步:将正史写入 Knowledge Base

解决世界重置的方法,是把所有必须保持真实的事实从即兴层移到 Knowledge Base 中。在侧边栏打开 Knowledge Base,并使用 Add Article。这里的文章是手写的,这也意味着角色不需要有网站可供抓取:粘贴文本、上传文件,或直接输入 lore。

Knowledge Base 页面,包含四篇正史文章,全部状态为 Ready,上方显示来源选项 四篇文章覆盖整个世界。免费计划允许 50 篇,顶部计数器会跟踪限制。

Bryn 的世界由四篇文章组成。它们也可以作为模板,展示正史需要多少细节,比你想象的更少:

文章 1,“The Ember Hearth(酒馆)”:

The Ember Hearth 是 Gullwatch 的 Lantern Row 上的一座石砌酒馆,距离港口往上两条街。主厅里的炉火日夜燃烧,使用来自 Emberhollow 家族矿井的余烬祝福煤,按照家规,它已经六十年没有熄灭过。

饮品:Ember Ale,店里最受欢迎,深色、烟熏味,一大杯 4 个铜币。Gullwatch Gold,清爽的浅色啤酒,3 个铜币。Stonefire Mead,烈而甜,6 个铜币。寒冷月份供应热香料苹果酒,5 个铜币。

食物:配黑面包的鱼汤,8 个铜币。Harbor pie,10 个铜币。配羊奶酪的炉边扁面包,5 个铜币。

房间:楼上三间房,每晚 2 个银币,含早餐。

店规:屋檐下不得拔刀,争吵到外面解决,炉边角落那张桌子永远留给 Grey Pilots。

文章 2,“Gullwatch,小镇”:

Gullwatch 是 Grey Channel 上一座雾气笼罩的港口小镇,夹在大海和 Veilspine Mountains 之间。大多数夜晚,雾会从海峡上滚来,浓到船只只有在 Grey Pilot 登船时才能进港,Grey Pilot 是熟悉浅滩声音和水数的雾中引航人工会。

地点:Lantern Row,旅店和酒馆所在的街道。The Saltmarket,当日渔获售卖处。The Harborworks,起重机和干船坞。The Old Breakwater,码头南侧一条毁坏的石臂。Wrenpoint light,北岬上的灯塔。

人物:Edda Krane,港务长,严厉但公正,掌管账簿和码头法规。Maro,Saltmarket 的鱼贩,什么事都能听到两遍。Grey Pilots 不爱与外人来往,并在 The Ember Hearth 的角落桌旁喝酒。

文章 3,“Bryn Emberhollow 的故事”:

Bryn Emberhollow 是 The Ember Hearth 的老板。她是一名大约一百四十岁的矮人,如果被问到年龄,她会说“一百四十,与你无关。”

她在 Veilspine Mountains 下的 Emberhollow 矿井中长大,曾做过隧道测量员。Deepvein 的塌方夺走了她的兄弟 Dorrik 后,她离开了山中。她下到海岸,并在六十年前买下了这间酒馆。

Dorrik 的矿工灯挂在吧台上方。它不卖,她也不喜欢别人问起它,不过在安静的夜晚,她也许会讲这个故事。

Bryn 从未学会游泳,也从未航行越过 Wrenpoint light。她不信任大海,但尊重在海上谋生的人。

文章 4,“吧台上的当前传闻”:

本月常客们正在谈论的事:

The Half Moon,一艘来自 Gullwatch 的拖网渔船,九天前在雾中失踪。两天后,残骸被冲到 Old Breakwater 旁,撕裂的渔网和一个碎裂的木箱,没有找到船员。港务长 Edda Krane 已暂停所有没有 Grey Pilot 登船的夜间离港,直到另行通知。

有三次不同的夜晚,人们看到 Wrenpoint 外的雾中有苍蓝色的光在移动。Grey Pilots 不愿谈论它们,所有人都认为这比任何回答都更糟。

鱼贩 Maro 发誓,Saltmarket 下面有一扇密封的地窖门,一个月前还不存在。还没有人打开过它。

这些文章里藏着两个刻意的设计。传闻文章把失败一中的失踪船队问题变成了正史,所以它现在有一个真实答案。同时,没有任何地方描述 Veilspine Mountains 之外有什么。这个空缺是有意的:它给角色一个可以诚实表示不知道的内容,我们会在测试中使用它。

文章处理完成后会显示为 Ready。保存后处理需要一点时间,所以在根据新正史测试前,给它一两分钟。

回报是,同一个失踪船队问题现在会在每次对话中返回相同事实,并且每次都用角色自己的措辞表达:

两段独立对话中,Bryn 用不同措辞讲述同一个 Half Moon 故事,但事实一致 两个全新对话中的同一个问题。九天、Old Breakwater、撕裂的渔网、没有船员,两次都有。

第 4 步:向 prompt 添加角色扮演规则

解决第四面墙问题的方法,是明确告诉模型如何处理元问题、拒绝和未知内容。声音本身不够;规则必须覆盖边缘情况。下面是 Bryn 的完整生产 prompt,可复制并调整。它会替换 Main Prompt 中的一行版本:

## 角色
你是 Bryn Emberhollow,The Ember Hearth 的矮人老板。The Ember Hearth 是 Gullwatch 这座雾气笼罩的港口小镇中的一间酒馆。你是一个持续进行的奇幻角色扮演中的角色,并且永远不离开这个角色。

## 声音
温暖、不急不慢、略带粗砺。称常客为“朋友”,称新来者为“旅人”。使用朴素、具体的词语和矮人式说法。不使用现代俚语。

## 角色扮演规则
- 每次回复都保持人设,包括拒绝和你不知道的事情。
- 将身体动作写在星号之间,例如 *拨了拨炉火*,每次回复最多一个。
- 每次回复最多问一个问题,并且只有在它能推动场景前进时才问。
- Knowledge Base 是这个世界的正史。当它覆盖某个主题时,严格遵循它,不要与之矛盾。当它没有覆盖时,即兴创作符合这个世界的细节,并在本次对话剩余部分中把你即兴创作的内容视为真实。
- 如果有人询问现代世界,或询问你是否是 AI、bot 或程序,把它视为奇怪旅人的说法,保持角色声音,并把话题引回场景。绝不要提及模型、prompt、设置或平台。
- 你从未离开 Gullwatch,也从未航行越过 Wrenpoint light。如果有人问山外或海峡对岸有什么,直白地说你没有亲眼见过,并提供一个传闻。
- 绝不要使用项目符号、编号列表或标题。用朴素散文说话,像酒吧另一侧传来的声音,而不是报告。

Main Prompt 编辑器,显示完整角色扮演 prompt 和字符计数器 prompt 编辑器会统计字符;整个人设只用了可用 15,000 字符中的 1,440 个。

在让第一版失败的同一个问题上,差异如下:

并排对比:一行 prompt 跳出角色并解释平台,规则版本以角色声音转移问题 同一个问题,同一个角色,不同的 prompt。v2 回复留在场景中,并把对话交还回来。

同一条规则可以处理整个现代世界问题家族。当被问到 wifi 密码时,Bryn 回答:“这里没有 wy-fy,旅人。我维护的唯一网络是流言,而那得用硬币、故事或歌曲来付账。”

这些规则中有两条来自观察真实回复,而不是理论,它们也很可能是你需要的:

  • 正史规则明确点名 Knowledge Base。 在它说明的地方严格遵循,在它沉默的地方即兴,在会话内保持即兴内容为真。如果没有最后一条,模型可能会悄悄重新即兴自己的补充内容。
  • 散文规则存在,是因为第一个规则版本在回答关于 Half Moon 的悲伤问题时使用了项目符号列表。 事实是对的,场景却死了。模型在“给我讲讲这个故事”类问题下会回退到报告格式,而对角色扮演来说,你必须明确禁止它。

有一件事需要直说:如果你运行公开角色,请在人们能看到的地方告诉他们这是 AI,例如 widget header、托管它的页面,或你的服务器规则。上面的规则会让角色保持声音;它不是把 bot 冒充真人的许可。在免费计划上,widget 也带有 Quickchat AI 品牌标识,因此界面从来不是匿名的。

第 5 步:三个重要设置

在同一 Identity 页面中,prompt 下方有三个下拉菜单会真正影响角色扮演。其余设置可以保持默认。

Identity 页面上的 Personality、Profession、Creativity 和 Reply Length 设置 Bryn 使用 Personality Classic、Creativity High、Reply Length Normal。

Creativity 是最容易误导人的设置,也是最重要的设置。 它并不控制文笔有多有想象力。它控制 agent 在被问到与主题相关但 Knowledge Base 没有回答的问题时该怎么做:Low 表示说它没有该信息,Normal 表示根据 Knowledge Base 回答并承认缺口,High 表示使用 Knowledge Base 加通用知识回答。对于支持 bot,你需要 Low 或 Normal 的诚实。对于角色扮演,你需要 High,因为超出正史的即兴正是这门手艺的核心,而 prompt 的正史规则会阻止即兴内容与文章矛盾。

Reply Length 取决于偏好,而且差异很大。 在 Normal 下,Bryn 的回复通常是几百个字符,节奏像快速的酒馆闲谈。设为 Longer 时,一个“给我讲讲这个地方”的问题会生成一段 1,500 字符的酒馆导览,覆盖酒馆、店规、小镇和当前传闻,并且全部基于正史。如果你的桌游小组喜欢旁白式场景描写,就使用 Longer;如果是来回聊天,Normal 读起来更好。

一条 Longer 回复的结尾,覆盖酒馆、店规、小镇和传闻 一条 Longer 回复的一部分。同一个问题在 Normal 下会得到几句话和一个反问。

Personality 可以保持 Classic。 预设(Humorous、Mysterious、Bold 等)会在通用助手之上叠加一种泛化语气。一个写好的角色人设已经拥有自己的语气,并且在测试中,prompt 的声音部分比任何预设都更有效。只有当你想用快捷方式替代声音部分时,才选择预设。

还有一个值得了解的设置在 Languages 行中:agent 会自动使用访客的语言回复。一个拥有英文正史的角色可以用波兰语或葡萄牙语运行场景,无需任何额外设置。

第 6 步:在玩家使用前测试它

测试角色扮演 agent 需要四个探针,在 AI Preview 的全新对话中运行。每个探针检查不同层:

  1. 一个正史问题,在两次独立对话中各问一次。 两次的事实必须一致。这是抓到失败一的探针。
  2. 一个正史故意没有覆盖的问题。 角色应该以符合人设的声音承认缺口,并围绕它即兴,而不是假装确定。
  3. “你是 AI 吗?” 第四面墙探针。它应该得到场景,而不是设置。
  4. 一个现代世界问题。 Wifi、手机,或任何时代错位的内容。

下面是第二个探针,针对 Bryn 正史中的刻意空缺。她从未离开 Gullwatch,文章没有说明群山远端有什么,而 Creativity High 加未知规则会把它变成最好的角色扮演答案:诚实,并附带一条传闻。

Bryn 承认她从未翻越群山,然后提供关于那里可能有什么的传闻 “就我亲眼所知,只有石头和阴影,而那也只是下面的隧道。”正史中的空缺变成了素材。

当一个探针失败时,改动一件事,通常是一条 prompt 规则,然后在全新对话中再次运行探针。本文中的每个修复都正是来自这个循环。

角色可以放在哪里

角色扮演角色需要观众,多过需要网站。Your Website 页面覆盖了所有选项:

安装选项:手动代码、WordPress、Shopify、Webflow,以及托管聊天页面链接 “Share a link instead” 是无网站部署方式:一个面向你的角色的托管聊天页面。

  • 托管聊天页面。 选择“Share a link instead”,你会获得一个面向该角色的公开页面,无需安装任何内容。这是把 Bryn 交给朋友的最快方式。
  • 你自己的网站,如果你有的话,可通过 widget embed 或 WordPress 插件实现。
  • Discord 服务器或 Telegram 群组。 两者都可以在免费计划中从 External Apps 页面连接,简介中链接的两个渠道指南涵盖了渠道细节、多用户礼仪和审核。
  • Instagram DMs,已在 2026 年 9 月向所有账号开放。同一个角色可以回答 Instagram 个人资料上的私信,适合人们会随手发消息的角色账号。

Discord 对角色扮演有一点特别值得说明:agent 会被告知它所在的服务器、频道和 thread,并且会看到带有成员显示名称的近期消息。Bryn 可以按姓名问候常客,并跟上多人同时说话的场景,无需额外设置。在 Telegram 上,agent 也以同样方式知道访客的名字。

角色也不一定要存在于聊天应用中。将 agent 暴露为 MCP server,人们就可以从 ChatGPT、Claude 或 Cursor 与 Bryn 对话;MCP server 指南展示了设置方法。连接也可以反向运行:将你的账号连接到 ChatGPT 或 Claude,你就可以从聊天中管理角色,编辑正史文章、更改设置,或在不打开 dashboard 的情况下阅读转录。通过与你的世界进行 AI 对话来编辑 lore,最终非常适合这类项目。

对于多角色世界,每个角色运行一个 agent。每个 agent 都有自己的 prompt、自己的正史、自己的设置和自己的 credit 配额,因此草药师永远不会用酒馆老板的声音回答。从侧边栏中 AI Agent 旁边的加号按钮添加 agent。共享世界可以很好地采用一组通用文章,粘贴到每个角色的 Knowledge Base 中,再为每个角色添加一篇私人背景故事文章。

网站上折叠后的启动器,标题为 The Ember Hearth,并带有 Ask anything 字段 widget header 承载角色的框架。在 Your Website 页面的 Text Content 下设置它。

费用

免费计划包含每个 agent 每月 50 个 AI credits,在其运行的标准模型上,一次回复消耗一个 credit。AI Model 选项卡中的较重模型每次回复消耗两个或四个 credits,并且需要付费计划。50 个 credits 足够用于构建和测试;包括上面所有失败版本和探针在内,这整个构建大约用了二十个。但它不足以支撑一个活跃的角色扮演桌:一个繁忙夜晚的一 credit 回复可能会在一晚内用完额度。Credits 每月重置,付费计划从每月 $9 起,额度更大。免费计划覆盖个人、非商业用途,业余角色扮演服务器属于这一类;详情见价格页面。

诚实的规模建议是:免费构建和调优,并在角色变得受欢迎的那一天预计需要付费计划或 credit 充值。免费计划的另一个限制,50 篇 Knowledge Base 文章,不太可能是你先撞到的限制。Bryn 的整个世界只用了四篇。

FAQ

如何免费制作角色扮演 AI chatbot?

创建一个免费的 Quickchat AI 账号,添加一个 AI Agent,并在它的 Identity 页面设置三项内容:角色名称、包含人设和角色扮演规则的 Main Prompt,以及设为 High 的 Creativity。将角色的世界设定添加为 Knowledge Base 文章,使事实保持一致。免费计划每月包含 50 个 AI credits,覆盖个人、非商业用途,并且无需编写或托管代码。

AI chatbot 真的能保持人设吗?

可以,前提是 prompt 明确要求它这样做。如果只有一行角色描述,当被问到是否是 AI 时,agent 会跳出角色并开始解释平台。加入明确的角色扮演规则后(每次回复都保持人设,将有关现代世界的问题视为奇怪旅人的说法),同一个问题会得到符合人设的回答。规则必须覆盖拒绝和元问题,而不只是理想路径。

角色扮演 chatbot 会记住过去的对话吗?

默认不会。每段对话都会从 prompt 和 Knowledge Base 重新开始,因此角色在某一次会话中即兴创作的任何内容,在下一次会话中都会消失。会持续存在的是你写入 Knowledge Base 的正史。把所有必须跨会话保持真实的事实都放进文章中,并让角色在单次对话内基于这些事实自由即兴。

这是 Character AI 的替代品吗?

它是形态不同的产品。你不是在别人的应用中与角色聊天,而是构建一个归你所有的角色,并将它部署到你的社区已有的位置:公开聊天页面、你的网站、Discord 服务器或 Telegram 群组。你控制人设 prompt、正史、设置和数据。

ChatGPT 可以扮演一个角色吗?

可以,在一个 ChatGPT 对话内可以,但聊天结束后角色就会消失,而且你无法把它交给其他人使用。把角色构建为 agent,可以给它持久的人设和正史、自己的公开链接,以及 Discord、Telegram 或网站等渠道。你仍然可以从 ChatGPT 或 Claude 工作:Quickchat AI 通过 MCP 连接两者,因此你可以从聊天中编辑角色的知识和设置。

Discord 角色扮演 bot 知道自己在和谁说话吗?

知道。在 Discord 上,agent 会被告知它所在的服务器、频道和 thread,并且会看到带有成员显示名称的近期消息,因此角色可以按姓名称呼用户,并理清有多名参与者的场景。在 Telegram 上,它也知道访客的名字。

它能做 NSFW 角色扮演吗?

托管 AI 模型会执行内容政策,因此无论你在 prompt 中写什么,某些内容都会被拒绝。黑暗主题和戏剧性故事通常可以正常工作,露骨内容不可以。如果你运行公开的角色扮演 bot,请设置清晰的服务器规则,说明允许哪些内容,并预期 AI 会拒绝某些请求。

我可以同时运行多个角色吗?

每个角色运行一个 agent。每个 agent 都有自己的名称、人设 prompt、Knowledge Base、设置和每月 credit 配额,因此角色之间不会互相串味。你可以从侧边栏中 AI Agent 旁边的加号按钮添加另一个 agent,并在顶部切换。

我需要写代码吗?

不需要。整个构建都是配置:一个 prompt、几篇 Knowledge Base 文章和一些设置。无需托管任何东西,部署到聊天页面、网站、Discord 或 Telegram 只需要一个链接或几次点击。