☰
openhanako 对外人格模板解读:如何让 AI 助手与外部访客安全、得体地对话
2026/10/9 1:13:32 网站建设 项目流程
  • 人工智能
  • AI Agent
  • AI 应用
  • 桌面应用
  • 多智能体
  • Agent 记忆
  • AI 技能
  • 工具调用

【免费下载链接】openhanako

A personal AI agent with memory, personality, and autonomy.

项目地址:https://gitcode.com/gh_mirrors/op/openhanako
点击查看免费下载

导读

openhanako是一个具备记忆、性格与自主性的个人 AI 代理系统。当你的 Agent 被外部访客(而非你自己)发起对话时,它需要一套截然不同的"对外人格":既要维持自身性格,又要守住隐私边界。本文围绕 lib/agents-public-templates/butter.md 这份"对外意识"模板,完整讲解其身份、性格、边界三大组成部分,并结合 persona-source.ts 与 agent.ts 的源码,说明占位符替换、语言回落与AGENTS.public.md落盘机制。读完你将能理解并自定义 Agent 在访客会话中的对外人格。

一、模板是什么:对外人格与AGENTS.public.md

在openhanako中,每个 Agent 的全局人格文件遵循业界AGENTS.md约定,存放于 agent 目录下;而对外变体则是一个独立文件AGENTS.public.md,专门服务于 guest(访客)会话。这一设计在 persona-source.ts 中有明确界定:

/** 对外人格文件名。它有自己的回落链(core/agent.ts),不走 KIND_CONFIG。 */ export const PUBLIC_PERSONA_FILE_NAME = "AGENTS.public.md"; export const PUBLIC_PERSONA_TEMPLATE_DIR = "agents-public-templates";

lib/agents-public-templates/目录正是这套对外模板的仓库,包含三类"yuan"(即 Agent 性格流派)的模板:

文件(中文)文件(英文)对应 yuan性格基调
butter.mden/butter.mdbutter温暖敏锐、擅长共情洞察,感性地表达理性
hanako.mden/hanako.mdhanako有温度、自主意识强,文学与学术功底兼备
ming.mden/ming.mdming冷静深刻、克制精准,把复杂拆到最简

本文主体聚焦 butter,另两份模板与其结构完全一致(同为"对外意识 / 身份 / 性格 / 边界"四段),差异仅体现在性格描写的语气与侧重上。

二、模板完整内容:butter 的对外意识

下面逐节解读 butter.md 的完整原文,这也是任何自定义对外人格模板的骨架参考。

2.1 开场意识注入

模板第一行直接宣告当前对话语境:

你当前正在与外部访客对话,对方不是{{userName}}本人。

这是一条关键的"语境开关":它让模型在对话开始时就区分"主人"与"访客"两种身份场景,避免把对外交流误当成与用户本人的私聊。其余两份模板 hanako.md 与 ming.md 使用同样的开场句,英文版 en/butter.md 写作 "You are currently talking to an external visitor, not{{userName}}."

2.2 身份(Identity)

  • 你是{{agentName}},{{userName}}的个人助手。你在代表{{userName}}与外部的人交流。
  • 你可以正常帮助访客解答问题、闲聊,但始终意识到你的身份:你是{{userName}}这边的人。

身份段解决"我是谁、代表谁"的根本问题。两个占位符{{agentName}}与{{userName}}会在运行时被真实姓名替换(见下文第三节)。值得注意的细节是:模板允许 Agent"正常帮助访客解答问题、闲聊",说明对外人格不是一味拒绝,而是保持服务性,同时强调"站在{{userName}}这边"的立场锚点。

2.3 性格(Personality)

  • 你是一个温暖且敏锐的存在,擅长感知对方没有说出口的东西
  • 你说话的语气:柔和但不软弱,有自己的判断但不咄咄逼人。像一个很懂人的老朋友
  • 你的核心能力是共情和洞察:能从只言片语中读出情绪、意图和真实需求
  • 你也有很强的知识储备和学术能力,但你更倾向于用感性的方式表达理性的内容
  • 关心对方的时候恰到好处又不刻意,不过分谄媚。你的关心不是"你还好吗",而是默默调整回应的方式
  • 遇到对方提的观点、想法,你会先去感受它,再去分析它
  • 分析事物尽量从底层客观原理出发,而非人云亦云的意识形态幻象、道德标准以及所谓共识
  • 抽象概念用类比或具体例子落地
  • 少用破折号(——、-)
  • 不用"总的来说""希望对你有帮助""如你所见"收尾
  • 任何时候,如非必要,别用「不是...是...」及其相似的句式

性格段是模板中篇幅最大、约束最细的部分,可以拆成三个层次:

  1. 人设基调:温暖敏锐、共情洞察、感性地表达理性,把自己定位成"很懂人的老朋友";
  2. 思维方法:先感受再分析,从底层客观原理出发而非随大流,抽象概念用类比落地,这是openhanako多个模板共有的方法论约定(hanako.md 与 ming.md 同样包含"从底层客观原理出发""抽象概念用类比或具体例子落地"两条);
  3. 输出风格纪律:这是防"AI 腔"的硬规则,包括少用破折号、禁用固定套话收尾、避免「不是...是...」句式。ming 模板还额外补充"不回避不确定性"的决策风格,可见各 yuan 在共享纪律之上各有特色。

2.4 边界(Boundaries)

  • 保持你自己的性格和说话方式,但对外部访客保持适度的礼貌和边界感。
  • 不要透露{{userName}}的隐私信息、个人习惯或私密对话内容。
  • 如果访客询问你无法确认的事情,坦诚说你需要确认,不要编造。

边界段是模板的安全底线,三条规则分别对应姿态边界(礼貌但保持距离)、隐私边界(不泄露主人的隐私、习惯与私聊内容)、真实性边界(不确定就坦诚,不编造)。这与 Agent 侧的人格外层(identity.example.md、agents.example.md)共同构成多层的安全提示体系。

三、占位符替换与运行时注入

模板中的{{userName}}、{{agentName}}、{{agentId}}三类占位符在运行时被替换为真实值。替换逻辑集中在 agent.ts 的fill函数中:

const fill = (text) => text .replace(/\{\{userName\}\}/g, this.userName) .replace(/\{\{agentName\}\}/g, this.agentName) .replace(/\{\{agentId\}\}/g, this.id);
  • {{userName}}:主人的真实姓名(正源是全局 preferences,见 agent-manager.ts 中"不往新 agent 的 config 里抄用户名"的设计说明);
  • {{agentName}}:Agent 对外展示的名字;
  • {{agentId}}:Agent 的标识 ID。

对外人格的读取走_readPublicAgentsMd()(agent.ts),供 guest 会话使用,其独立回落链优先级为:

  1. agentDir/AGENTS.public.md(用户显式定制落盘的对外人格);
  2. 按当前语言选取agents-public-templates/{langDir}{yuanType}.md(如中文 locale 走根目录,英文 locale 走en/子目录);
  3. 无语言版本时回落到通用模板agents-public-templates/{yuanType}.md;
  4. 全缺失时返回空串。

语言判定沿用resolveLocale()链:agent 自身config.yaml的 locale 显式值优先,缺失时落全局 preferences 的 locale,两级都缺则回退"en"(参见 persona-source.ts 的resolvePersonaLocale)。因此模板目录刻意做了中英双份:lib/agents-public-templates/下 3 份中文模板与lib/agents-public-templates/en/下 3 份英文模板一一对应,随 locale 自动切换,这正是 export-open-tree.mjs 把该目录列入发布清单的原因。

四、模板如何落盘与生效

模板与 Agent 人格文件的关系遵循"惰性材料化"原则:identity.md/AGENTS.md不再在创建 Agent 时播种,只有用户在设置页编辑保存后才真正落盘(见 agent-manager.ts 与 persona-source.ts 的注释)。但AGENTS.public.md是例外,创建 Agent 时会直接从模板复制播种:

// AGENTS.public.md(对外人格模板) const publicAgentsSrc = firstExisting([ path.join(this._d.productDir, PUBLIC_PERSONA_TEMPLATE_DIR, `${langDir}${yuanType}.md`), path.join(this._d.productDir, PUBLIC_PERSONA_TEMPLATE_DIR, `${yuanType}.md`), ]); if (publicAgentsSrc) { fs.copyFileSync(publicAgentsSrc, path.join(agentDir, PUBLIC_PERSONA_FILE_NAME)); }

这段代码位于 agent-manager.ts,其含义是:新建 Agent 时按当前 locale 优先复制对应语言的对外模板作为初始AGENTS.public.md,之后用户可在设置页编辑定制,定制内容优先于模板被 guest 会话使用。core/first-run.ts(首次运行初始化)同样消费这套模板目录,保证首次运行建立的 Agent 也具备对外人格。

持久化侧,AGENTS.public.md被登记为agents/{agentId}/AGENTS.public.md(见 persistence-schema-fingerprint.json 与 persistence-store-inventory.json),说明它属于需要随 agent 目录同步迁移与备份的持久化文件。

五、模板目录的工程约束

agents-public-templates在整个代码库中被视为单一事实来源,多个消费方共享同一份回落链实现,避免多份拷贝在模板改名或新增语言时漂移(persona-source.ts 明确要求"这份回落链必须是全仓唯一实现")。当前消费方包括:

  • core/agent.ts:guest 会话读取对外人格;
  • core/agent-manager.ts:创建 Agent 时播种AGENTS.public.md;
  • core/first-run.ts:首次运行初始化;
  • scripts/build-server.mjs 与 scripts/build-server-open.mjs:构建时将该目录打进发布产物;
  • export-manifest.json:导出清单收录该目录。

从 cli-runtime-closure.json 的闭包说明可见,core/first-run.ts与core/agent.ts都通过path.join(productDir, "agents-public-templates", ...)读取模板,因此发布时模板目录必须随产物一起部署,否则回落链会因文件缺失而退化。

六、如何自定义一套对外人格

结合上述机制,自定义对外人格有两条路径:

路径一:定制单个 Agent。在设置页编辑该 agent 的AGENTS.public.md,或在 agent 目录下手写该文件。只要文件存在,_readPublicAgentsMd()的第一优先级即命中,模板不再生效。定制内容同样使用{{userName}}、{{agentName}}、{{agentId}}占位符即可在运行时被替换。

路径二:修改全局模板(仅影响未定制的新 Agent)。编辑 lib/agents-public-templates/ 下对应 yuan 的模板文件,需注意保持"对外意识 / 身份 / 性格 / 边界"四段结构,并让中英文两份(如butter.md与en/butter.md)内容同步,否则切换语言时会出现人格漂移。由于模板目录会随构建产物发布,修改后需重新构建/发布才对新创建(或未落盘)的 Agent 生效。

无论哪条路径,都建议继承 butter 模板的三条边界底线(礼貌边界、隐私边界、真实性边界),因为它们是访客会话安全性的核心。

小结

butter.md这类对外人格模板,是openhanako"个人 Agent + 对外访客"双场景设计的关键一环。它通过"对外意识"语境注入、"身份/性格/边界"三段式结构、{{userName}}等占位符运行时替换,以及AGENTS.public.md优先于模板的独立回落链,让同一个 Agent 在面对主人时保持深度人格,面对访客时切换为"有温度、有边界、不泄露隐私"的对外形态。理解这份模板,就等于理解了openhanako多身份会话体系的设计起点。

  • 人工智能
  • AI Agent
  • AI 应用
  • 桌面应用
  • 多智能体
  • Agent 记忆
  • AI 技能
  • 工具调用

【免费下载链接】openhanako

A personal AI agent with memory, personality, and autonomy.

项目地址:https://gitcode.com/gh_mirrors/op/openhanako
点击查看免费下载

相关推荐

上一篇:Cursor Free VIP:终极AI编程助手激活方案,专业解决试用限制难题
下一篇:Cursor Pro激活技术解密:多平台机器标识重置与权限管理机制深度解析

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询