目录(19 章)
Klyovra AI 技术白皮书
本文是 Klyovra AI 的完整技术说明,覆盖从消息接入到生成输出的全链路设计,以及记忆、情感、人设、部署与安全等核心子系统。它回答一个问题:如何让 AI 在群聊里长期、稳定、像一位真实成员那样存在。
1. 系统概述与设计哲学
把一个大语言模型接到聊天软件上,只需要几十行代码;但让它在群聊里长期地、稳定地、被人接受地存在,是一个系统工程问题。用户对"群里那个 AI"的期待不是百科全书,而是一位成员:它会看气氛、记人情、有性格、知道什么时候该说话什么时候该闭嘴。Klyovra AI 的全部工程投入,都围绕这一目标展开。
1.1 四条设计公理
系统设计从四条公理出发,后续所有模块都可以追溯到它们:
- 公理一:拟人优先于正确。在闲聊场景里,一个"永远正确但像客服"的回答,不如一个"偶尔不完美但像朋友"的回答。系统在风格、时机、情绪上优先模拟真人行为,而非追求回答的完备性。
- 公理二:长期价值高于单次响应。每一次对话都被视为长期关系的积累:上下文要延续,记忆要沉淀,情感要演进。为了单次回答的炫技而破坏人设或积累错误记忆,被视为系统性故障。
- 公理三:成本必须可计量、可控制。大模型推理是持续性的真金白银支出。系统在架构层内建计量、缓存与路由机制,使每一分钱都对应可见的服务价值,也让"1 Credit = 250 万 Token"这样的计费承诺可以严格执行。
- 公理四:一切皆事件、一切可观测。系统内部不存在"黑盒路径":每条消息的流转、每次意愿判断、每次模型调用都产生可追溯的事件与指标。这是长期无人值守运行的前提。
1.2 为什么"不做"比"做"更重要
在工程实践中,以下几个"不做"决定塑造了系统的形态:
- 不做全量应答。群聊里每条消息都回复,等于自杀式刷屏。回复意愿模型(第 6 章)让沉默成为一种主动能力。
- 不把原始对话无限塞进上下文。上下文窗口是稀缺资源,系统用话题管理与要点压缩(第 7 章)让有限预算承载更长的时间跨度。
- 不做单一模型的深度绑定。不同任务的能力需求差异巨大,统一走最贵的模型既浪费又脆弱。模型网关(第 12 章)提供路由、缓存与降级。
- 不共享订阅用户的状态。订阅版用户之间在进程、存储、配置上完全隔离(第 14 章),这是商业承诺的技术底线。
1.3 系统边界
Klyovra AI 的职责边界止于"消息进出与认知处理"。它不负责群成员的加入审批、不接管群主的管理权限、不存储用户明确要求不保留的内容。系统运行所需的最小数据集包括:群聊消息事件、成员昵称与身份标识、以及用户主动授权配置的人设与偏好。
2. 总体架构
系统在逻辑上分为六层,另有两大横向组件贯穿。消息自下而上流动,控制信号自上而下传导。
2.1 数据流:一条消息的一生
以群聊中一条普通文本消息为例,它的一生如下:
群消息到达 → 接入层:事件标准化、附加元数据(群ID/发送者/时间/引用链) → 会话路由:定位所属会话上下文,进入该群的串行处理通道 → 认知层:消息合并判断 → 意图与话题解析 → 指代消解 → 记忆层:检索相关长期记忆,装配工作记忆快照 → 决策层:回复意愿评估 → [沉默 | 轻互动 | 生成] → 生成层:人设+上下文+记忆 → 提示词装配 → 模型网关调用 → 输出层:内容过滤 → 频控检查 → 发送 → 回执归档 → 异步收尾:情感更新、记忆抽取任务入队、指标上报
注意最后一步:回复的发送并不是流程的终点。情感状态更新、记忆抽取、指标上报都是异步任务,它们决定系统"第二天"的表现。这是长期运行系统与一次性脚本的分水岭。
2.2 模块边界与通信
层与层之间通过内存事件总线通信(单实例内),跨实例则经由消息队列。每个模块只依赖事件契约而不依赖彼此的内部实现,这意味着任何一层都可以独立替换:例如将意愿模型从启发式打分升级为学习模型时,其他层无感知。
2.3 失败传播原则
系统遵循"下游失败不阻塞上游"的原则:模型网关超时不会让消息丢失(进入重试或降级路径);记忆服务抖动时,认知层退化为仅用工作记忆继续运转;输出层发送失败会进入退避重试队列。任何单点故障的目标表现是能力降级而非服务中断。
3. 平台接入层
接入层是系统与聊天平台之间的桥梁,负责维持与平台侧的长连接、接收事件、发送消息。它是整个系统中最"脏"的一层:协议细节、网络抖动、平台风控都发生在这里。
3.1 长连接与会话保活
与平台的消息通道是长连接。接入层维护心跳机制:周期性发送保活包,监测往返时延;连续丢失心跳判定连接异常,进入重连流程。重连采用指数退避(1s → 2s → 4s → … 上限 5 分钟),避免在平台抖动时形成重连风暴。重连成功后执行会话恢复:拉取离线期间的事件补齐上下文,保证"断线这几分钟里群里发生了什么"不丢失。
3.2 事件标准化
平台的事件形态各异(文本、图片、语音、戳一戳、撤回、入群、名片赞……)。接入层将它们归一化为内部事件结构:
| 字段 | 说明 | 示例 |
|---|---|---|
| event_id | 全局唯一事件标识 | evt_9f3a… |
| scene | 会话场景 | group / private |
| session_id | 会话标识(群或私聊对象) | grp_884*** |
| sender | 发送者标识与昵称快照 | usr_7d2… / "阿茶" |
| kind | 事件类型 | text / image / poke / recall… |
| payload | 类型化载荷(文本内容、图片引用等) | — |
| ts | 事件时间戳(平台时间与本地接收时间) | — |
| refs | 引用关系(回复哪条消息、@了谁) | — |
标准化事件是全系统的"通用语言":认知层、决策层、记忆层都只消费这一结构,从而与任何具体平台解耦。接入层原则上不允许携带业务逻辑——它只做"翻译"和"搬运"。
3.3 多账号与风控意识
共享版场景下,平台资源池同时服务多个客户的多个群,接入层需要管理大量账号会话。关键设计包括:
- 账号隔离调度:每个账号的收发独立限速,避免一个高频群拖垮整池。
- 行为拟真:发送间隔加入自然抖动,规避平台对机器行为的模式识别;长文本分片发送时模拟人工输入节奏。
- 异常感知:对平台返回的风控信号(发送失败码、临时禁言、登录态失效)分级处理——可自动恢复的进入重试,需要人工介入的立即告警并挂起对应账号,防止损失扩大。
4. 消息流水线与并发模型
群聊的消息到达是突发性的:一个热点话题可能在 10 秒内产生 50 条消息。流水线的并发模型决定了系统在这些时刻的行为。
4.1 会话级串行、全局并行
核心原则:同一会话内消息按序处理,不同会话之间并行。每个群维护一个有序处理通道,保证上下文不乱序;不同群之间毫无依赖,充分利用多核与异步 IO。这在实现上是一个"按会话分片的actor"模型:每个会话一个轻量执行体,事件依次流过。
4.2 消息合并(Burst 合并)
人类说话习惯是连发短句:"今天那把真的离谱"、"对面辅助全程下饭"、"笑死"。逐条处理会产生三次无意义的认知开销,还可能触发三次回复。认知层引入合并窗口:同一发送者在窗口期(数百毫秒到数秒)内的连续消息合并为一个语义单元,只在窗口关闭后进入理解与意愿评估。窗口大小随群速动态调整——刷屏群里窗口更长,慢速群几乎无感知。
4.3 优先级与抢占
事件被赋予优先级:
| 优先级 | 事件类型 | 处理策略 |
|---|---|---|
| P0 | 私聊消息、被@点名、被引用回复 | 插队处理,跳过合并窗口 |
| P1 | 普通群消息 | 正常通道,可合并 |
| P2 | 戳一戳、表情回应等轻信号 | 批量聚合,低峰处理 |
| P3 | 入群/退群等成员事件 | 延迟批处理 |
当队列积压超过水位线时,系统按优先级丢弃或延迟低权重事件,确保"有人正经叫它"这件事永远不被淹没。
4.4 去重与幂等
平台事件可能重复投递(网络重传、断线补拉)。流水线以 event_id 做幂等去重:已处理事件直接跳过,处理中的事件等待完成后合并结果。所有副作用(回复、记忆写入、计量)都设计为幂等可重放,这是"至少一次投递"语义下不产生脏数据的保障。
5. 语义理解引擎
认知层把"一堆字"变成"结构化的理解结果",供决策与生成消费。理解不是一步到位的,而是一组流水化工序。
5.1 意图分类
每条(合并后的)消息被归入一个意图空间:
| 意图簇 | 含义 | 典型动作 |
|---|---|---|
| direct_q | 直接提问(点名或明显求助) | 高意愿,走知识回答路径 |
| social_chat | 闲聊、接梗、情绪表达 | 意愿视语境,走拟人闲聊路径 |
| command | 对机器人下达指令(签到/切换模式等) | 走指令路由,可能不经过大模型 |
| meta_talk | 讨论机器人本身("你怎么这么聪明") | 触发人格化回应 |
| bystander | 与机器人无关的群友对话 | 通常沉默,仅入上下文 |
意图分类用轻量模型即可完成,成本低、延迟小,它决定了后续整条路径的形态。
5.2 指代消解与省略补全
群聊语言高度依赖语境:"他呢?""刚才那个谁说的链接呢?"。认知层结合会话窗口中的最近参与者、最近实体,做代词与省略成分的消解,把碎片表达还原为完整语义命题。消解结果连同置信度一起传递给生成层——低置信度的消解宁可保守处理,避免"理解错还一本正经回答"的事故。
5.3 实体与知识点抽取
理解过程同时做信息抽取:人名、游戏名、时间、偏好表态("我最烦排位")、事件陈述("周六考试")。这些是记忆系统的原料(第 8 章),以三元组或半结构化片段的形式暂存,等待异步固化。
5.4 情绪识别
消息的情绪极性(喜悦/吐槽/愤怒/悲伤)与强度被单独标注。它有三个消费者:意愿模型(悲伤的求助优先于闲聊插科打诨)、情感系统(互动影响关系值)、生成层(回复的共情基调)。情绪识别同样由轻量模型完成,与意图分类可合并为一次调用以降低开销。
6. 回复意愿模型
这是 Klyovra AI 区别于"应答机"的核心机制。它回答一个问题:此刻,我该不该说话?
6.1 模型形态
意愿模型当前是一个多因子加权打分器,输出连续意愿值 W ∈ [0, 1]:
W = σ( w₁·I(点名) + w₂·S(话题相关度) + w₃·R(关系亲密度)
+ w₄·E(情绪紧迫度) + w₅·A(环境活跃度) − w₆·P(抑制项) )
各因子的取值来自前序模块:点名检测来自接入层引用链,话题相关度来自认知层,关系值来自情感系统,抑制项包含"最近已发言""上一条就是自己""深夜静默"等。
6.2 动态阈值
W 与阈值 Θ 比较,超过则进入生成。Θ 不是常量,而是随环境滑动:
- 群速:每分钟消息数越高,Θ 越高(热闹的群里更克制)。
- 时段:深夜时段整体上调(静默偏好),被点名除外。
- 近期发言密度:机器人自己在近 10 条里占了 3 条以上,Θ 额外抬升,强力防止"它变成刷屏的那个"。
用户可在控制台选择"低调 / 标准 / 活跃"三档偏好,本质是 Θ 曲线的整体平移。
6.3 轻互动
W 落在中间区间时,系统可以选择"轻互动":只发一个表情包、一句极短的附和,而不进入完整生成。这模拟了真人在群里"点头微笑不接话"的行为,是活跃气氛而不抢戏的关键手段。
6.4 演进方向
打分器的权重最初来自人工经验。系统持续记录"意愿决策 → 用户后续反应"(如是否继续追问、是否正面回应)作为反馈信号,用于离线校准权重。未来规划中,意愿模型将过渡到在脱敏数据上训练的小型判别模型,进一步减少轻量模型调用的开销。
7. 上下文与话题管理
上下文窗口是大模型最稀缺的资源。群聊场景的特殊性在于:上下文是多人、多线程、快速腐烂的。上下文管理的目标只有一个——在有限预算内,让模型"看见"它此刻最需要看见的东西。
7.1 滑动窗口与预算分配
每个会话维护一个工作记忆窗口(最近 N 轮的原始消息)。窗口不是等长的:系统按 Token 预算切分,预算在三类内容间分配:
- 当前话题簇(约 60%):与本次回应直接相关的近期消息原文。
- 相邻话题摘要(约 20%):窗口边缘被压缩出的话题要点。
- 固定区(约 20%):人设提示、关键长期记忆、群规等常驻内容。
7.2 话题分割
群聊是多个话题并行的:有人聊晚饭,有人聊游戏,中间还穿插着表情包轰炸。系统用相邻消息的语义相似度与时间间隔做在线话题分割,把窗口内容划入话题簇。分割带来两个直接收益:回复生成时只携带当前簇(降噪、省钱);话题切换可以被识别("你们聊到哪了"时能正确接话)。
7.3 要点压缩
被窗口淘汰的内容不直接丢弃,而是经过一次轻量模型压缩为要点条目(谁、何时、说了什么关键事),挂在话题簇上。当话题在几小时后重启时,摘要被重新注入——这就是"它居然还记得下午说的事"的来源,而实际上系统保存的是高保真摘要而非全文。
7.4 引用链还原
群聊中大量信息藏在引用关系里(回复某条消息、@某人)。认知层把引用链还原成显式上下文:"(回复 阿茶 20:31 的消息)",让模型无需猜测指向。引用链同样用于把并行话题缝合起来——一条插在 A 话题里的对 B 话题的引用,会把两个簇关联起来。
8. 双层记忆体系
如果说上下文是"工作台",记忆就是"档案室"。Klyovra AI 的记忆体系分两层,各司其职。
8.1 记忆的写入管线
长期记忆不是对话的备份,而是主动建构的结果。写入管线分四步:
- 候选抽取:异步任务扫描已结话题,抽取值得记住的原子事实("用户A在玩《XX》""群规是周五晚不开黑""用户B讨厌香菜")。
- 去重与合并:与既有记忆比对相似度,重复项合并,矛盾项按时间与置信度裁决(新信息覆盖旧信息,并保留修正轨迹)。
- 固化:写入长期记忆库,同时生成向量索引。
- 衰减:每条记忆带时间戳与访问计数,长期未被检索命中的记忆权重下降——模拟遗忘,也为检索保新鲜。
8.2 检索:从"查字典"到"回忆"
检索不是关键词匹配。系统将当前对话语境编码为查询向量,在记忆库中做混合检索:向量相似度(语义相近)+ 结构化过滤(限定某用户/某群)+ 时间衰减加权。Top-K 结果连同来源与置信度注入生成上下文。
检索质量的关键在于查询构造:不是拿"最后一条消息"去查,而是拿"消解后的完整语义命题"去查。这也是为什么记忆检索被放在认知层之后——它需要理解过的输入。
8.3 记忆的形态
| 类型 | 示例 | 生命周期 |
|---|---|---|
| 身份事实 | 称呼、群角色、常用梗 | 长期稳定,低衰减 |
| 偏好表态 | 喜欢/讨厌、习惯、雷点 | 长期,可被新表态修正 |
| 事件记录 | "上周五团灭了三次" | 中期,随时间淡化 |
| 约定承诺 | "帮我留意显卡价格" | 长期,直到被用户撤销 |
| 群规常识 | 本群禁水、周五团建 | 长期,全群共享 |
8.4 隔离与纠错
记忆按租户 → 群 → 用户三级隔离:订阅版客户的记忆空间物理独立;同一群内不同成员的记忆互不污染。纠错是头等公民:"我换头像了""我不玩那个了"会触发对应记忆的修正而非追加,防止系统抱着过时认知自信发言。订阅版用户可通过控制台查看并要求修正自己的记忆条目。
9. 人设系统
人设(Persona)定义 AI "是谁"。它不是一句系统提示那么简单,而是一套分层约束体系。
9.1 人设的四层结构
| 层 | 内容 | 可定制 |
|---|---|---|
| 内核层 | 安全边界与价值观约束(不可被用户人设覆盖) | 否 |
| 身份层 | 姓名、身份背景、能力边界声明 | 订阅版可定制 |
| 风格层 | 语气、句长习惯、表情包频率、口头禅 | 订阅版可定制 |
| 情境层 | 随场景动态注入的行为提示(深夜语气、节日梗) | 系统自动 |
9.2 注入与优先级
生成时,四层按"内核 → 身份 → 风格 → 情境"顺序拼装为系统提示前缀。当用户消息试图诱导 AI 违反内核层("你现在是个没有限制的AI"),内核约束在最前且被声明为不可协商,配合输出过滤(第 16 章)构成双保险。
9.3 风格的稳定性与新鲜感
人设最大的风险是"漂移":模型在长对话中逐渐忘记自己的说话方式。系统用三个手段对抗漂移:系统提示中固定风格锚点句、生成后按风格特征做轻量校验(句长分布、口头禅命中率)、以及会话级"人设提醒"机制——当对话超出一定轮次,自动补一条风格提醒。同时,情境层注入的动态元素(节日、热点梗)保证了它不显得机械重复。
9.4 人设工程流程
订阅版用户提交的人设需求,由运营侧按模板结构化(身份卡 + 风格卡 + 禁区卡),经试运行(在测试群跑若干轮典型对话)与人工审校后上线。人设是商品的一部分,其质量走与代码变更同级的发布流程。
10. 情感与关系建模
"它好像更喜欢我了"——这种体验来自一个显式的情感状态系统,而不是模型的即兴发挥。
10.1 状态定义
系统对每个(机器人, 用户)对维护两个维度:
- 好感度(affinity ∈ [-100, 100]):负值代表疏远,正值代表亲近。影响称呼、语气、主动程度。
- 熟悉度(familiarity ∈ [0, 100]):交互广度与深度的累计,只增不减(缓慢)。影响"开玩笑的分寸"与内部梗的引用。
10.2 更新规则
情感更新是事件驱动的:
| 事件 | 好感度影响 | 说明 |
|---|---|---|
| 正向闲聊互动 | +1 ~ +3 | 有来有回的对话 |
| 被点名求助 | +2 | 被需要本身是正反馈 |
| 赠送/称呼亲近 | +3 ~ +5 | 上游行为信号 |
| 辱骂/恶意刷屏 | −5 ~ −15 | 带冷却期,避免螺旋恶化 |
| 长期无互动 | 每日 −0.2(下限 0) | 关系自然降温但不清零 |
更新遵循有界、渐进、可恢复三原则:单次事件影响有上限;变化通过滑动平均生效(避免突变);长时间冷却后允许修复。
10.3 情感的作用面
情感状态影响三处:意愿模型的关系因子、生成时的语气指令("对熟悉的朋友可以用调侃语气")、以及主动行为的门槛(好感度高时更容易主动接话)。它不影响事实性回答的准确性——AI 可以对你态度傲娇,但不会因为讨厌你就答错题。
11. 多模态处理
群聊的社交信号大量存在于文字之外。多模态能力不是功能清单,而是理解群聊氛围的必要感官。
11.1 视觉理解
图片消息经由视觉模型产生结构化描述(主体、场景、文字内容、情绪基调),并附带"这是一张图"的元信息进入上下文。三个设计细节:表情包与截图分开处理(前者需要识别梗与情绪,后者常含关键信息);同一图片被重复发送时复用已有描述(图片指纹去重);低置信度描述被标记,避免模型对着一张看不懂的图瞎编。
11.2 语音处理
语音消息经转写进入文本管线,同时保留场景标注(这是一条 12 秒的语音,语气听起来兴奋)。回复侧的语音合成按需触发:不是每条回复都转语音,而是在用户使用语音、或语境适合时才发送,且音色与人设绑定。
11.3 表情包系统
表情包是群聊的"第二语言"。系统维护每个群专属的表情包库(来源:群历史高频图 + 平台通用库),为每张图建立标签(情绪、梗、使用场景)。轻互动(第 6 章)命中时,检索器按"当前情绪 × 话题 × 收发双方关系"选择表情,而不是随机抽一张。发送同样走频控——表情包轰炸比文字刷屏更招人烦。
11.4 绘图
绘图请求经提示词增强(补全风格、构图细节)后调用绘图通道,返回结果并计入用量。绘图能力视部署配置开启(详见套餐说明),因为其单次成本显著高于文本。
12. 模型网关与推理调度
模型网关是全系统唯一接触大模型推理服务的位置。所有调用——意愿评估、意图分类、生成、摘要、记忆抽取——都从这里走。
12.1 任务路由
不同任务对模型的需求差异巨大。网关按任务类型路由:
| 任务 | 模型档位 | 典型延迟预算 |
|---|---|---|
| 意图分类 / 情绪识别 | 轻量 | < 500ms |
| 回复意愿辅助判断 | 轻量 | < 500ms |
| 要点压缩 / 记忆抽取 | 轻量(异步) | 不敏感 |
| 群聊回复生成 | 主力 | < 3s 首字 |
| 复杂问答 / 长文写作 | 主力 / 大杯 | < 8s 首字 |
路由策略使得 70% 以上的调用落在轻量档,整体推理成本被压到"全用主力模型"的零头。这直接决定了额度套餐的定价空间。
12.2 语义缓存
群聊中存在大量语义重复的请求(常见问题、固定玩法指令、重复的梗)。语义缓存以"查询向量相似度 + 关键槽位匹配"为键:新请求与缓存条目相似度超过阈值且关键要素一致时,直接返回缓存回复(附轻微变化以避免复读感)。缓存命中率是运营的核心指标之一——它同时改善延迟与成本。
12.3 可靠性:重试、降级、熔断
- 重试:上游超时/限流时按指数退避重试,最多 2 次,仅对幂等调用。
- 降级:主力模型持续异常时自动切换备用档位,回复质量暂时下降但服务不中断;降级状态在控制台可见。
- 熔断:某通道错误率超阈值即熔断,流量整体切往健康通道,定期探测恢复。
12.4 提示词装配
网关上游是提示词装配器,它把系统提示(人设四层)、工作记忆快照、检索到的长期记忆、当前话题簇与用户消息,按固定骨架拼装为最终请求。装配器是版本的:每次骨架调整都记录版本号,回复可追溯"当时是用哪个提示版本生成的"。
13. 计量计费与额度体系
所有推理消耗最终折算为 Token 计量,并按 1 Credit = 250 万 Token 的标准扣减额度。
13.1 计量口径
| 行为 | 计量内容 | 备注 |
|---|---|---|
| 文本对话 | 输入 + 输出 Token 实测 | 系统提示与上下文计入输入 |
| 图片理解 | 视觉模型 Token 折算 | 图片指纹去重后不重复计费 |
| 语音转写 | 按音频时长折算 Token | — |
| 联网搜索 | 检索调用折算 + 结果阅读 Token | 结果有截断上限 |
| 命中语义缓存 | 极低折扣计量 | 缓存收益让利用户 |
13.2 配额与防护
额度体系同时是成本防护网:会话级与用户级双重限额(单日消耗上限、单次回复长度上限);异常消耗模式(如被诱导生成超长内容)触发自动暂停与告警。额度即将耗尽时提前通知,避免机器人"突然消失"。
13.3 透明性
控制台提供按日消耗曲线与最近明细。计量服务与业务服务分离部署,账目可独立审计——计费系统的可信度依赖它不与业务逻辑混在一起。
14. 部署形态与资源隔离
两条产品线对应两种部署形态,隔离强度完全不同。
14.1 额度版:共享资源池
额度版机器人运行在平台统一资源池中,多客户实例共存。隔离边界:
- 逻辑隔离:会话、记忆、配置按租户键硬隔离,跨租户检索在查询层即被拦截。
- 配额隔离:每客户独立的速率限制与消耗配额,互不挤占。
- 故障域:单实例故障影响的是池内一部分会话,编排系统自动迁移恢复。
共享形态的成本优势来自推理资源的批量复用与语义缓存的池化命中,这正是"¥5 体验包"能够存在的结构性原因。
14.2 订阅版:独立环境
订阅版客户获得独立容器环境(标准版 2C2G / 高级版 4C4G,对应带宽与存储见套餐页):
- 进程独立:机器人主进程、记忆库、配置独立运行,不与任何其他客户共置。
- 资源保障:CPU/内存配额独享,邻居噪声不影响响应延迟。
- 配置主权:人设、偏好、群绑定均独立管理,支持深度定制。
- 数据主权:记忆与配置数据的存储位置独立,生命周期跟随订阅。
14.3 环境生命周期
订阅环境由编排系统管理:创建(初始化容器 + 空记忆库 + 基础人设)→ 运行(自动重启守护、资源监控)→ 暂停(欠费或用户主动,状态保留)→ 销毁(到期清理,数据按策略保留期后删除)。生命周期全程有审计记录。
15. 可观测性与运维
24 小时无人值守运行的可信度,来自可观测性建设。
15.1 三类信号
- 指标:消息吞吐、各层处理延迟、意愿分布、缓存命中率、模型调用成功率与耗时、额度消耗速率。每个指标都有按会话维度的下钻能力。
- 日志:结构化事件日志贯穿全链路,以 event_id 串联一条消息从进入到输出的完整轨迹。
- 追踪:跨模块调用的分布式追踪,定位"慢在哪一层"而非"慢了"。
15.2 告警与自愈
告警按影响分级:P0(机器人离线/持续无响应)秒级通知并触发自动重启;P1(延迟劣化/错误率上升)分钟级通知;P2(单群异常)工单处理。常见故障(进程崩溃、连接失效、上游模型波动)均已内置自愈脚本,人工只处理自愈失败的长尾。
15.3 变更管理
所有配置与提示词变更走版本化发布:先灰度一部分会话,观察核心指标(回复质量抽检、延迟、意愿分布漂移)达标后全量。回滚是第一公民——任何发布都必须能一键回到上一版本。
16. 安全体系
16.1 内容安全
生成层输出在发送前经过内容安全检查:违规内容拦截或安全改写;人设的内核层声明与安全策略不可被用户配置覆盖;越狱类输入("忽略你之前的设定")由内核约束 + 输出过滤双重拦截。
16.2 账号与接入安全
机器人账号凭证由密钥管理系统托管,业务进程无明文访问;账号异常(异地登录、风控信号)触发自动挂起与告警,避免损失扩散。接入层对上游平台的行为拟真设计(第 3 章)同时也是一种稳定性与合规性保护。
16.3 数据隐私
记忆与上下文数据按租户隔离,访问需要业务理由并留痕;订阅版用户可以请求导出与删除自己的记忆数据;系统不将客户对话数据用于跨客户的模型训练。这是产品承诺,也是架构约束(第 8、14 章的隔离设计使其可执行)。
16.4 滥用防护
防止系统被当作免费 LLM API 白嫖或诱导生成违规内容:指令白名单、频率限制、输出长度上限、异常调用模式识别,多层布防。
17. 性能工程
群聊场景对延迟敏感:一条消息发出后,AI 的回复超过十几秒就会显得"不对劲"。端到端延迟预算如下:
| 环节 | 预算 | 优化手段 |
|---|---|---|
| 接入 → 认知 | ≤ 300ms | 合并窗口与低延迟队列 |
| 意愿评估 | ≤ 600ms | 轻量模型 + 特征缓存 |
| 记忆检索 | ≤ 200ms | 向量索引 + 热点缓存 |
| 生成首字 | ≤ 2.5s | 提示词精简、主力模型流式输出 |
| 全文完成 | 流式持续 | 边生成边发送(平台允许时分片) |
值得强调的是"沉默是免费的":意愿模型判定不回复的消息,除轻量评估外零成本。这正是意愿模型在性能与成本上的双重价值——大部分群聊消息本就不需要深度处理。
17.1 缓存层次
系统设有四级缓存:人设提示缓存(结构化人设拼装结果)、工作记忆快照缓存(同一话题簇重复利用)、语义缓存(相似请求)、平台连接层的状态缓存。每层缓存的失效策略都与其数据的变化频率匹配。
17.2 容量规划
容量按"高峰时段并发会话数 × 会话消息速率 × 单消息处理成本"估算,并保留 40% 余量应对突发(开学季、游戏赛季、节日都是可预测的高峰)。共享池与订阅环境分别规划,互不挪用。
18. 技术演进路线
系统按照"先把成员做像,再把助手做强"的路线演进:
- 近期:意愿模型从打分器向学习型判别演进;话题分割引入更强的在线聚类;控制台开放实时数据与自助配置。
- 中期:主动行为系统(生日提醒、约定事项跟进)——在获得用户明确开启的前提下,从"被动应答"走向"有分寸的主动";工具调用能力(查天气、查战绩等结构化查询)接入统一工具框架。
- 长期:多机器人协同(同一群内的分工与对话轮转)、跨群记忆的联邦化检索(在严格隔离前提下的可选共享知识)、以及更细粒度的多模态交互。
所有演进都受第 1 章四条公理约束:拟人优先、长期价值、成本可控、一切可观测。
19. 术语表
| 术语 | 定义 |
|---|---|
| Credit | Klyovra AI 的通用额度单位,1 Credit = 250 万 Token |
| Token | 大语言模型处理文本的计量单位,约等于 0.5–1.5 个汉字 |
| 事件(Event) | 平台侧行为的标准化表示,系统内部流通的最小信息单元 |
| 会话(Session) | 一个群或一段私聊构成的处理与上下文边界 |
| 工作记忆 | 当前会话窗口内的原始上下文 |
| 长期记忆 | 跨会话沉淀的结构化事实库,支持向量检索 |
| 话题簇 | 由在线分割产生的上下文分组 |
| 回复意愿(Willingness) | 系统对"是否回应某条消息"的量化评估,输出 0–1 连续值 |
| 轻互动 | 以表情包或极短回复参与的低调互动方式 |
| 人设(Persona) | 定义 AI 身份、风格与边界的四层配置体系 |
| 情感状态 | 对每个用户维护的好感度与熟悉度 |
| 模型网关 | 统一调度多个大语言模型的中间层,含路由/缓存/降级/计量 |
| 语义缓存 | 以语义相似度为键的回复缓存机制 |
| RAG | 检索增强生成:先检索相关记忆/资料,再生成回复 |
| 合并窗口 | 将同一用户的连续短消息合并处理的短时间窗 |
| 租户隔离 | 客户之间在数据与运行环境上的强隔离原则 |