游戏 AI · Agent
Elysia Persona Agent
从 Character Companion 到 Persona Agent
一个从 AI Character Companion 持续演进的 Persona Agent 实验。围绕人格一致性、长期记忆、Agent Tool Calling、Permission / Approval、Lore RAG、Trace 与 Evaluation,探索角色 AI 从「像角色地聊天」走向「基于人格、记忆与世界观受控执行」的产品路径。
Agent Core / Permission / Lore RAG
仓库当前开发线已验收;默认 Feature Flag 关闭Lore R@5(原型门)
本地确定性检索评测;非生产开启依据V2 相关本地测试
Harness / Permission / Lore RAG / lore_search 子集
这是什么,做到哪一步,我做什么
产品问题
当角色 AI 开始拥有长期记忆、世界观知识和工具能力后,问题不再只是“回复像不像角色”,而是如何控制上下文、事实依据、工具权限、长期记忆和执行过程。
产品方案
Persona + Agent Harness + Permission / Approval + Lore RAG + Layered Memory + Trace / Evaluation,将人格、知识、私人记忆与工具执行拆分为可控模块。
当前进度
V1 已完成角色陪伴闭环;V2 Phase 1–3 已完成 Agent Core、Permission & Tools、Lore RAG,目前进入 Phase 4 Memory V2 设计与实现。
我的工作
产品定义、Agent 架构设计、Memory / RAG 机制设计、Permission 规则、Evaluation、Bad Case 分析,以及使用 Cursor / Codex 协同完成工程实现与验收。
从 Character Companion 到 Persona Agent
V1 并不是失败版本。它完成了人格、记忆、关系与评测闭环,但在继续扩展工具与知识后暴露出 Agent 边界。
V1 已完成
- 人格一致性(Persona Prompt)
- 长期记忆与用户确认(Candidate → Active)
- Relationship / Companion Mode
- Voice(STT / TTS + 文本降级)
- Evaluation 与 Memory Regression
- Bad Case Review(如 BC-004)
继续扩展后暴露的边界
- 更像角色地回答,不等于 Agent
- 世界观知识不能完全依赖模型参数
- 长期记忆增长后不能全部塞入 Prompt
- 工具调用需要权限与 Observation
- 多步执行需要 Trace;高风险操作允许用户拒绝
- Persona、Memory、Lore、Tool 不应混成一个 Prompt
V1 解决的是「怎么让 AI 更像一个角色」,V2 开始解决「怎么让这个角色成为一个可控、可追踪、拥有记忆与世界知识的 Agent」。
按阶段验收,而不是一次性堆功能
验证角色人格、记忆和陪伴体验是否能够形成稳定闭环。
- Persona
- Candidate Memory
- Active Memory
- Companion Mode
- Relationship
- Voice
- Evaluation
将单轮「Prompt → Response」升级为可执行的 Agent Loop。
- ElysiaHarness
- ToolRegistry
- ToolResult
- Tool Call
- Observation
- AgentTrace
- Multi-step Loop
- max rounds / timeout / error handling
让 Agent 的执行过程不再只有「能不能做」,而增加「用户是否允许做」。
- PermissionGate
- Approval / Reject
- AgentRuntime
- search_memory
- lore_search
- get_current_companion_state
- Safe Execution + Trace
升级计划中的 web_search / read_text_file / write_note / generate_report 尚未实现,计入 Planned。
将「模型记得设定」升级为「模型能够检索并基于世界观证据回答」。
- Lore Corpus V1
- BM25 + hashed hybrid retrieval
- lore_search tool
- Metadata / Integrity
- Evidence / Citation
- Retrieval Evaluation
- Retrieval Review Workbench
sentence-transformers 语义后端仍在分支迭代,不作为生产默认开启依据。
将 Memory Storage 与 Memory Retrieval 分离,避免长期记忆全量注入 Prompt。
- Current Design:L0 / L1 / L2
- Scoring:relevance / importance / recency
- Top-K retrieval + Context Budget
- 保留确认流;Pin 规划中
执行链与上下文来源分开
人格层与执行层分离:工具参数使用结构化数据;执行成功/失败先以客观状态记录,再做角色化表达。Feature Flag(如 ENABLE_AGENT_V2、LORE_RAG_ENABLED)默认关闭。
User ↓ Streamlit UI ↓ ElysiaHarness ↓ LLM Decision ↓ Tool Call ↓ PermissionGate ↓ Tool Execution ↓ ToolResult / Observation ↓ AgentTrace ↓ LLM ↓ Final Response
Context / State / Knowledge(旁路接入,非单一 Prompt) · Persona · Memory(V1 lifecycle;V2 retrieval 设计中) · Lore RAG · Relationship / Companion State
能不能做,还要看用户是否允许做
读操作尽量低摩擦,修改状态和高风险操作需要更高控制。
权限检查路径
Agent decides tool ↓ PermissionGate ↓ Allow / Require Approval / Reject ↓ Execute / Abort ↓ ToolResult ↓ Observation → Trace
用户拒绝路径
Require Approval ↓ User Reject ↓ Do Not Execute ↓ Return Agent Observation
用户拒绝不是异常,而是 Agent 产品设计中的正常状态。
已实现工具
- search_memory
- get_current_companion_state
- lore_search(需 LORE_RAG_ENABLED)
Planned 工具
- web_search
- read_text_file
- write_note
- generate_report
设定回答需要可检查的知识来源
V1 问题:设定遗漏、世界观漂移、时间线错误、角色关系错误、回答不可验证。
V1
Model Internal Knowledge + Prompt
V2
User Query ↓ lore_search ↓ Semantic / Hybrid Retrieval ↓ Relevant Evidence + Citation ↓ Agent Context ↓ Response
RAG 的价值不是「让模型知道更多」,而是让设定回答拥有更稳定、可检查的知识来源。
- Lore Corpus V1(official / BH3Text / BH3Helper 分层)
- Chunk / Metadata hardening
- BM25 + hashed-vector + RRF 混合检索
- Evidence grounding / source tier
- Offline retrieval evaluation
- Retrieval review workbench
Recall@5
baseline_b_bm25 / hybrid 原型门;本地确定性运行
MRR
LORE_RAG_EVALUATION_REPORT.md
Prototype gate
允许继续开发原型,不能绕过人工核验门自动开启生产
当前评测向量后端为 hashed-char-ngram-v1(稀疏向量,非神经语义 embedding)。sentence-transformers 语义混合层仍在分支迭代,页面不将其写成已完成生产能力。
Store ≠ Retrieve ≠ Inject
保存某条记忆,并不代表每次对话都应该把它提供给模型。
Why Memory V2 · V1 问题
- 长期记忆数量增长,Context 变长
- 无关记忆污染当前对话
- Token 成本与延迟上升
- 新旧信息冲突
- 「记住」和「当前想起」不是同一个产品问题
V2 目标
将 Memory Storage 与 Memory Retrieval 分离。
User Message ↓ Memory Query ↓ Candidate Memory ↓ Scoring(relevance / importance / recency) ↓ Top-K ↓ Context Builder ↓ ElysiaHarness (Phase 4 Current Design — 评分管线与分层尚未落地)
记忆确认流(pending → active → deleted)
ImplementedV1 MemoryService 保留
importance 字段(1–5)
ImplementedV1 DB 字段;尚未进入 V2 综合评分管线
Delete 用户操作
ImplementedV1;删除后隔离 active retrieval
Memory V2 架构设计与验收标准
In ProgressELYSIA_V2_AGENT_UPGRADE_PLAN §9 / Phase 4
L0 / L1 / L2 分层
Plannedrelevance + importance + recency 综合评分
PlannedTop-K 检索(不全量注入 Prompt)
PlannedPin 记忆
Planned基线保留,V2 验证分开呈现
V1 Baseline & Lessons
V1 阶段通过真实模型调用、人工复核、Memory Regression 和 Bad Case 分析建立初始质量基线,这些结果成为 V2 架构升级的重要输入。
Core20 测试任务
第二阶段真实模型测试范围
真实模型调用成功
0 次调用错误
中位耗时
同批调用记录
P95 耗时
另有一次 611.604 秒极端长尾
Memory 本地回归
不包含真实模型调用
输入 / 输出 Token
Core20 真实模型调用记录。
极端长尾
必须保留,不能只展示中位数和 P95。
人工复核记录
用于确认自动候选与真实问题。
自动候选 → 确认问题
确认问题为删除记忆后仍引用旧信息。
MEM-REG-001~005
本地自动化回归,不代表线上验证。
总调用成本
按公开价格估算,不是供应商账单。
BC-004 · 删除记忆后仍被旧信息影响
真实测试- 问题
用户删除长期记忆后,旧信息仍可能从长期记忆读取、最近聊天或其他 Prompt 来源进入回复。
- 定位
记忆生命周期状态与 Prompt 来源过滤不够严格,删除语义没有覆盖全部上下文来源。
- 修复
只检索 active 记忆;强化 deleted 状态,并用 all_prompt_sources 隔离关联聊天来源。
- 回归验证
MEM-REG-001~005 本地自动化回归 5/5 通过;真实模型删除后追问仍待验证。
V2 Validation
V2 验证以仓库本地自动化测试与 Lore 离线检索评测为主;不编造 Tool Success Rate 或线上通过率。Memory V2 专项测试尚未开始。
Agent Loop / Tool / Trace
tests/test_agent_harness.py
Permission / Approval
test_permission_gate / test_agent_runtime / test_agent_events
Lore Retrieval Eval
LORE_RAG_EVALUATION_REPORT · prototype gate passed
lore_search tool
tests/test_lore_search_tool.py
Error Handling
max rounds / timeout / tool failure 路径已有自动化用例
Memory V2
Phase 4 设计进行中;尚无 Memory V2 专项回归
只写真实参与与真实计划
我的贡献
- 定义从 Character Companion 到 Persona Agent 的产品方向与阶段拆解。
- 设计 Agent Harness、Permission / Approval、Lore RAG 与 Memory V2 的产品边界。
- 设计记忆确认流、权限策略与 Trace 可观测性要求。
- 整理 V1 Core20 / Memory Regression / BC-004 基线,并接入 V2 本地测试与 Lore 评测证据。
- 使用 Cursor / Codex 协助实现工程代码;本人负责产品定义、架构拆解、验收标准、测试与迭代决策。
产品边界
- 同人与版权
- 非商业技术演示,与 miHoYo / HoYoverse 无官方关联,不提供官方立绘、配音、权重或游戏资产。
- 记忆与隐私
- 用户保留确认、编辑和删除权;未确认、拒绝或删除内容不得进入长期 Prompt。
- Agent 权限
- 写入与外部动作默认需审批;用户拒绝后不执行。不开放 shell、付款等高风险能力。
- Lore 生产门
- 检索评测通过仅允许原型继续;BH3Text 等社区转录需人工核验后方可开启生产检索。
- 情绪依赖
- 不把 Agent 描述为现实关系或专业心理支持的替代品。
- 评测边界
- 本地回归与离线检索指标不能替代线上真实模型与用户验证。
本项目为同人向、非商业技术演示,与米哈游、HoYoverse 或其他游戏公司无官方关联。仓库和网站不包含官方立绘、官方配音、模型权重或游戏资产。不代表官方线上服务。
Next
已依据公开 GitHub 仓库(含 V2 开发分支)、在线作品、本地自动化测试与 Lore 检索评测报告校对;这是非商业同人作品,仓库不含官方角色资产。不把规划能力写成已上线结果。
记忆不是默认授权
原型把模型提取到的信息先放进「待确认记忆」,由用户决定保存或拒绝。V2 进一步强调:保存某条记忆,并不代表每次对话都应该把它提供给模型。
同人项目说明
这是用于产品与工程学习的非商业同人作品,与米哈游或 HoYoverse 没有隶属或授权关系。公开仓库不包含官方图片、音频、模型权重或角色资产;可选语音能力需要使用者自行确认资源来源与许可。角色内容仅用于学习与产品实验,不代表官方线上服务。