从原作文本中提炼人格,
构建可持续交互的 IP 角色 Agent。

将分散的角色描写,
组织为可追溯的人格依据,
驱动具有原作特征的交互。

看它如何回应 原文驱动 · IP 人格提炼与还原
↓

完整案例

从一段原文,
到一句角色回应。

把原作中的人物特征整理为可调用的材料,再结合当下情境,形成具有角色个性的回应。

01保留原作中的表达。

“突然翻到有的人小时候写给我的‘和好小纸条’,还是小时候可爱啊。”

“因为我都直接用行动表达了。”

02提炼稳定的人格与表达。

结合角色经历与表达,保留亲近立场、短句节奏,以及调侃与真心交错的方式。遇到明确的情感表达,也允许直接回应。

亲近立场短句与留白自然回应情感
IP
IP 人物角色对话
DeepSeek · 对话展示

03在当前情境中作出回应。

Caleb人格工作流
人物有过去。
回应有依据。
今天有点想你。 ↵
理解→决策→表达→校验
IP 人物

巧了。
我也想你,今天还格外想。

原文 → 人格 → 持续交互
角色交互界面示意
106万+原文字符
810原始章节
11人格模块
145人格规则

人格提炼

同一个人,
不止一种回应。

把人物写成一串标签之后,
还需要理解:
他在什么情境下,为什么这样回应。

从设定,到情境

一次性长 Prompt

若只留下标签,回应容易走向同一种模板。

“温柔、可靠、体贴……”
标签描述了特征,却没有展开选择的依据。

分层人格工作流

把情境、人格依据与回应方式逐一连接。

同一人格,保留不同情境下的回应空间。

原文依据→人格决策→情境化表达→审核与记忆

人格的来处,
可以回到原文。

剧情、短信、通话、朋友圈。
不同文本写下同一个人物,
也藏着不同的时间与世界。

短信 · 剧情 · 约定
原文节选 167 章

还有剧情叙述、分支选项、活动、人物资料与界面文案。

605资料单元
默认主世界584
平行世界 / AU16
混合内容4
未确定1
728 章进入主世界资料池保留来源,再核验事实适用性
↗

37 个一级目录分组,按资料单元组织主世界、AU 与混合内容。

记住的不只是台词。
还有选择。

他在乎什么,害怕什么,
面对冲突时如何取舍。
这些,才构成人格的内核。

稳定的内核
适用于当下的选择

面向 IP 人物的人格建模。人格材料与运行流程分层组织,迁移时替换材料并适配角色规则。

还原人物,
也保留原作中的关系。

人物的立场形成于具体经历与关系之中。保留原作中的身份关联、共同经历与冲突依据,让 IP 人物在提及他人时延续原有的判断与态度。

IP 人物 · 原作关系
IP 人物居于中心;三层环带分别表示同窗与挚友、同僚与协作、冲突与边界。
同窗与挚友共同成长 · 情感立场
同僚与协作职责关联 · 共同行动
冲突与边界事件依据 · 披露限制
原作关系网络 · 同一人物保留多重身份与立场

保留关系事实,
让人物态度有据可循。

同一个人,既可能是同学,也是曾经并肩工作的同事。提取时保留不同身份与时间范围;交互时按人物实体检索相关事实,为称呼、态度和信息披露提供依据。

53条关系类事实

工作流程

先理解,再选择。
最后,才开口。

检索找到依据,决策确定回应。
表达完成台词,审核检查偏离。
每一步有自己的职责。

→→→→→
用户消息 / 后台情景← 已验证的状态与记忆,参与下一轮交互
PythonFastAPIPydanticBGESQLiteReactTypeScript

对话之外,
时间也在继续。

活动有起止,约定有时间。
生活为交流提供依据,
也让主动联系有了来由。

让日程成为回应的依据。

保存日程与约定记录活动起止、通讯状态与到期时间
用户询问近况
按需查询当前活动

读取有效日程,提供本轮事实依据。

处于休息或等待状态
管理回复时机

结合睡眠与通讯规则,安排等待和发送。

约定到期或情景触发
进入人格决策

结合约定与人物立场,判断是否主动联系。

组织表达与审核实际送达后更新状态与记忆

每条记忆,都有出处。

模型提出候选,后端核验消息与原文引文。短期状态、长期事实和关系变化分别管理。

原始消息→引文校验→有效记忆
记忆如何保持有效

用户事实核对用户来源;普通情绪不自动成为长期事实。支持记忆替换、失效与周期整理,候选文本不能代替证据。

时间,也能触发交互。

生活日历提供可查询的活动,睡眠与通讯状态影响回复时机,明确约定可以触发到期联系。

日历与活动情景触发人格决策
生活素材如何参与交互

从主世界资料池抽取并核对后,保留 2,116 条素材候选,涵盖活动、技能、职责、条件、习惯与偏好。运行排程依据已选择的规则与事件生成可查询的活动。

只记住真正发出的内容。

生成可以被打断。已经送达的消息,才进入状态与记忆更新。

第 1 条回复已送达
第 2 条回复等待发送
仅已发送部分进入记忆
交付生命周期示意

人格材料与模型,
各自演进。

远程模型可以承担完整管线;本地 LoRA / QLoRA 接入表达与修订环节,探索模型能力与人格材料之间的分工。

ClaudeGPTGeminiDeepSeek
统一的人格工作流
本地表达1.7B / 9BLoRA / QLoRA

产品思路

让角色成立,
也让系统可持续。

将人格还原转化为可以实现、评估与迭代的产品决策。

人格材料与模型分开组织。

人物身份、动机、原作关系与表达方式分别保存。接入新的 IP 人物时替换对应材料,模型承担理解与表达,工作流继续复用。

将角色知识沉淀为可复用的材料,支持人物迁移与模型适配。

理解情境之后,再决定如何回应。

分析阶段结合有序历史识别当前话题与情感变化;决策阶段选择人物立场与回应方式;表达和审核分别完成语言组织与偏差检查。

为各阶段划定职责与上下文范围,使问题定位和定向修订更清晰。

把角色表现与运行成本一起评估。

围绕同一输入比较全链路轻量模型与表达阶段升级等配置,结合回复表现、Token、修订次数与缓存计费,选择模型分工方式。

通过材料筛选、阶段预算与调用复用,减少持续交互中的重复输入。

让角色持续回应,
也让成本持续可控。

将人格表现交给材料、决策与记忆协同支撑,通过模型选择、提示词精简与调用规则优化,降低持续交互的资源消耗。

轻量模型,也能呈现角色感。

以 Flash-Lite 等低成本模型承载日常对话,将情境理解、人格决策与表达拆分处理,让角色立场与情感回应建立在明确依据之上。

Gemini Flash-Lite
“哟,为了这个退游?
行,算我没白疼你。不过这脾气随谁呢,嗯?”

用户表达因维护角色而退游时,实际生成的情感回应。

减少重复输入,
保留本轮所需的依据。

通过阶段预算、材料筛选、修订输入精简与分析复用,控制每次调用携带的上下文。

71%
Token 用量减少
  1. 按阶段分配历史

    分析、决策、表达与审核使用独立的上下文窗口,避免长历史在整条链路中重复传递。

  2. 只传递所需材料

    完整场景卡参与决策,表达阶段接收筛选后的原文样例与回应计划;审核读取精简的核验视图。

  3. 区分修补与重生成

    局部修订围绕问题清单和相关依据组织输入;需要重新生成时,再传递完整决策。

  4. 精简记忆提取输入

    记忆提取保留用户原文、已发送回复及来源规则,采用最小配置,减少重复人格材料。

  5. 按需查询与复用

    生活事实按用户问题查询;等待期间合并消息,输入未变化时复用已有分析结果。

  6. 压缩重复提示

    简洁提示实验将生成与审核提示合计缩短 42 个字符,保留事实检查职责,控制规则文本长度。

从原文材料,
到可验证的流程。

从材料提炼到交互运行,
覆盖内容生产与工程验证。

主世界章节抽取728 / 728任务完成
生活素材候选2,116核对后保留
新增生活集成测试22 / 22历史验证通过
这套工作流可以用在其他人物上吗?

工作流将人物材料与运行机制分开组织。接入新的 IP 人物时,配置对应原文、人格材料与生活规则,即可沿用分析、检索、决策、表达和审核的流程。

系统如何维持人物的一致性?

以稳定人格内核确定动机与价值排序,以情境规则选择回应方式,再通过事实校验与审核修订检查角色表达。人物立场、原作依据与当轮信息共同参与决策。

测试覆盖了什么?

22 项生活集成测试覆盖等待合并、状态持久化、并发输入、部分发送与重启恢复,全部通过。

主要使用了哪些技术?

Python、FastAPI、Pydantic、SQLAlchemy、SQLite;本地 Sentence Transformers / BGE 检索;React、TypeScript、Vite 前端;多供应商模型 API 与 LoRA / QLoRA 实验。

从体验问题,
推进到具体规则。

聚焦于交互规则定义、角色表现评估与模型方案比较。

  1. 定义交互规则

    参与比较消息等待方案,关注等待中追加消息的体验;确认主动联系的通讯条件,以及约定推迟后的下次检查规则,并要求明确分步目标与验收方式。

  2. 校准角色表现

    提出扩大情境分析的有序历史范围,要求区分相似表达中的情感递进;针对过度限制日常关心与建议的审核规则提出修正,推动重新测试对话。

  3. 比较模型与成本

    推动轻量模型、全链路模型升级和仅表达阶段升级的方案对比;要求在同一输入下检查回复、Token 与费用,并考虑重复运行和缓存命中的影响。

有来处。
也有下一句。

从原文、人格,到持续交互。
一套连接原文提炼与人格还原的 Agent 工作流。