竞品分析与可借鉴技术
COMPETITIVE ANALYSIS
状态:🟡 规划 · 最后核对 2026-08-06
2026-06-25 · 覆盖 Character.AI、SillyTavern、Venus Chub AI、RisuAI、Janitor AI、Eros Engine、Roundtable、Marinara 等
相关文档:architecture · memory-and-context · CHANGELOG
一、各项目概况
| 项目 | 类型 | 核心定位 | 是否开源 |
|---|---|---|---|
| Character.AI | 闭源平台 | 角色扮演,Swipe 重生成,最大用户群 | ❌ |
| SillyTavern (酒馆) | 开源前端 | 连接任意 LLM 的角色扮演 UI,Lorebook + 向量检索 + 聊天向量化 | ✅ |
| Venus Chub AI | 闭源平台 | 60K+ 角色卡库,Lorebook 关键词触发,分支配对话树 | ❌ |
| RisuAI | 开源前端 | Tauri 跨平台,HypaMemory V3 记忆系统,MCP 协议支持 | ✅ |
| Janitor AI | 闭源平台 | 角色扮演,JanitorLLM 免费模型,Chat Memory 摘要 | ❌ |
| Eros Engine | 开源引擎 | Rust 后端,六维亲和力模型,Ghost 机制(角色可以不理你) | ✅ |
| Roundtable | 开源引擎 | Python/Flask,TRPG 主持人风格,隐藏角色特质,记忆沉积 | ✅ |
| Marinara | 开源前端 | 三模式(对话/角色扮演/RPG),AI Game Master,Swipe | ✅ |
二、可借鉴技术清单
1. Lorebook 关键词触发(Venus / SillyTavern)
原理:确定性关键词→内容映射。用户消息中命中关键词→立即注入对应背景。
关键词: "谢拉格" → 注入"谢拉格是泰拉大陆的雪山之国..."
关键词: "绒羽" → 注入"黎博利耳后的绒羽是情绪器官..."
优势:零延迟(不需要 embedding 调用),100% 命中率(不会漏),零 token 浪费(不相关的不注入)。
罗德岛现状:L4 世界知识用向量检索——每轮跑一次 embedding。可以用关键词触发做第一层筛选,冷门查询用向量兜底。
实现难度:低。从 relation_graph.json(303 节点)和 world_lore.json 自动生成关键词→内容映射,启动时加载到内存。每次请求检查用户消息关键词。
2. SupaMemory 实时裁剪(RisuAI)
原理:token 预算快满时,在 LLM 调用之前同步触发一次极简压缩——最旧的 N 条消息→30 token 摘要→替换原始消息。
关键区别:不是后台异步任务(你们 L1→L2 压缩是异步的),而是在生成回复同一轮同步执行。确保 LLM 永远不会看到被截断的 context。
罗德岛现状:L1→L2 压缩是后台任务(summarize_and_extract_task),可能赶不上当前请求。加一条同步保护:当 len(prompt) > 80% * max_context 时,即时裁剪最旧消息。
实现难度:低。20 行,在 chat.py prompt 组装处加一条检查。
3. Swipe 重新生成(Character.AI / Marinara)
原理:用户对回复不满意→左滑→LLM 用同样 context 但更高 temperature 重新生成。可连续滑,选最喜欢的钉住。
罗德岛现状:无。句式重复时用户只能接受或重新发消息。
实现难度:低。约 30 行 JS + 10 行 Python。并行调 LLM 两次(temperature=0.85 和 1.2),返回两条候选。
4. 六维亲和力(Eros Engine)
原理:Eros 用六维取代传统的好感度:warmth、trust、intimacy、intrigue、patience、tension。
| 维度 | 你们现有的对应 |
|---|---|
| warmth | S 向量 warmth ✅ |
| trust | 三维信赖 ✅ |
| intimacy | 信赖 emotional 维度 ✅ |
| intrigue | ❌ 缺失 |
| patience | ❌ 缺失 |
| tension | S 向量 tension ✅ |
新增 intrigue(好奇心/新鲜感):博士说话方式和平时不一样→上升。连续 5 轮平淡→下降。 新增 patience(耐心值):博士沉默多久她等多久。深夜对话中非常重要。
实现难度:中。intrigue 和 patience 可以通过 .char 性格特质推导初始值,对话中动态调整。扩展 somatic_state.py 两个维度。
5. 隐藏角色特质(Roundtable)
原理:每个角色有六个不写进 prompt 但影响后台行为的隐藏字段:
secret: "她曾经在哨位上开过一枪——不是警告,是瞄准"
wound: "父亲说'别走我的老路'——她走了更暗的一条但还是走错了"
want: "被一个人不带军衔地看着"
fear: "有一天耳羽不会再变色"
skill: 精准射击
honesty: 0.7(不撒谎,但也不全说)
这些不是 prompt 内容——是决策引擎的输入。比如:honesty < 0.5→她会在不想回答时绕开话题而不是直接说"我不想谈"。
罗德岛现状:这些信息已经隐含在 .char 的文件里,但没有结构化编码。可以作为一个 JSON 元数据文件从 .char 自动提取。
实现难度:中。需要一个 JSON schema + 提取脚本 + 在 _post_process 中消费。
6. 分支对话树(Venus Chub AI)
原理:对话从任意轮次可以分叉——"如果我当时说了 A 而不是 B 会怎样"。两个分支独立发展,都能回到分叉点。
罗德岛现状:深聊已有回退功能(回退到上一轮)。分支是回退的泛化版本——允许多个分支并存而不是覆盖。
实现难度:高。需要树结构存储 + 前端交互 + 深聊 session 模型扩展。
7. Ghost 机制(Eros Engine)
原理:角色可以选择不回复。不是 bug——是设计:角色有心情、有事在做、不想说话时会沉默一轮。内置公平性规则:不能在消息 10 轮内 ghost,不能连续两轮 ghost,有冷却时间。
罗德岛现状:部分实现——somatic_state.is_absent() 和 silence-space 已存在。但缺少"主动选择不回复"的动机系统。
实现难度:中。在 _post_process 中加一个规则引擎判断是否 ghost。
8. HypaMemory V3 预设系统(RisuAI)
原理:每种记忆配置可以命名、保存、切换。不同角色用不同的检索参数(top_k、阈值、类别权重)。和你们的 per-operator 窗口大小的思路相同——扩展为 per-operator 记忆配置。
罗德岛现状:所有干员共享相同的 L2/L3 检索参数。可以 per-operator 差异化。
实现难度:中。扩展 config.py 为 per-operator 的检索参数字典。
三、对比总览
| 能力 | 罗德岛 | 业界最佳 | 差距 |
|---|---|---|---|
| 记忆管道 | L1-L4 + 窗口快照 | RisuAI HypaMemory V3 | ✅ 我们更紧凑,他们更可配置 |
| 检索方式 | embedding 向量 | Lorebook 关键词触发 | ❌ 缺即时触发,每轮都跑 embedding |
| 关键词触发 | L4 向量检索 | Venus Lorebook 确定性触发 | ❌ 没有关键词通路 |
| 关系模型 | 3D 信赖 + 7D S 向量 | Eros 6D 亲和力 | ✅ 各有优缺,互补 |
| 角色定义 | .char artisan 格式 |
Character Card V2 宏系统 | ✅ 我们的结构化程度更高 |
| 上下文管理 | 50轮窗口 + 快照 | SupaMemory 实时裁剪 | ⚠️ 被动窗口 vs 主动裁剪 |
| Swipe 重生成 | ❌ | Character.AI / Marinara | ❌ 缺失 |
| 分支对话树 | 回退(简化版) | Venus 分支树 | ❌ 缺失 |
| Ghost 机制 | 部分(is_absent) | Eros 完整 Ghost | ⚠️ 部分实现 |
| 隐藏角色特质 | 隐含在 .char | Roundtable 结构化 JSON | ❌ 未结构化编码 |
| Per-operator 配置 | 窗口大小自适应 | HypaMemory 预设系统 | ⚠️ 仅窗口,未覆盖记忆检索 |
| 实时裁剪 | 异步后台压缩 | RisuAI SupaMemory 同步裁剪 | ❌ 异步可能赶不上当前请求 |
四、实施优先级
| 优先级 | 项 | 改动量 | 说明 |
|---|---|---|---|
| P0 | Lorebook 关键词触发 | 1h | 从 relation_graph.json 生成,零 LLM 调用 |
| P0 | Swipe 重新生成 | 30min | 30 行 JS + 10 行 Python |
| P1 | SupaMemory 实时裁剪 | 20min | 20 行,LLM 调用前保护 |
| P1 | 隐藏角色特质 JSON | 1h | schema + 提取脚本 |
| P2 | 六维亲和力扩展 | 2h | intrigue + patience 两个维度 |
| P2 | Ghost 动机系统 | 1h | 规则引擎 |
| P3 | Per-operator 记忆配置 | 1h | 检索参数差异化 |
| P3 | 分支对话树 | 4h+ | 深聊 session 模型扩展 |