Skip to content

Releases: Root-7-KHX/companion-memory

v1.2.0

Choose a tag to compare

@Root-7-KHX Root-7-KHX released this 31 Oct 18:24

版本策略:发布前所有改动都并入本版(不连续升号);发布之后才递增版本号。
本版是 v1.1.3 之后、尚未发布的全部改动(功能跨度较大,按 1.2.0 发布)。

安装提示

  • 纯 JS、无构建步骤:仓库根有 cordis.patch.yml 与 dsh.bundle,插件市场一键装,或按 README 手动安装。
  • 声纹引擎(sherpa-onnx-node)与 CAM++ 模型体积约 51MB,不随本仓库 / 发布包分发:需要本地声纹认人的用户把 vendor/、models/ 自行放到插件目录(缺了自动降级为按昵称认人,不影响其他功能)。

1.2.0 · 2026-11-01

新增:「接入软件」页 + 接入清单扫描

  • 侧边栏面板新增第 8 个页签 接入软件:上面的搜索框按 名称 / 说明 / 作者 / 分类 / 标签 / 能力 搜索(空格分隔多个关键词 = 同时命中),下面是清单卡片(名称、版本、分类、标签、说明、作者、主页),空列表时显示清单目录和「生成示例清单」。
  • 清单来源:<数据根目录>/integrations/*.json(全局,不分对话)。字段 id、name 必须,其余 description / version / author / category / tags / capabilities / homepage / entry 可选;单份坏 JSON 只跳过自己,不影响列表。
  • 页签条不再随「本对话是否开启记忆」隐藏:没开启记忆时也能点「接入软件」(其他页签仍显示开启引导)。
  • 接入清单只读数据、不执行任何代码;entry 字段先预留,留给以后的白名单加载器。
  • 新增接口:GET /companion/api/integrations(返回 { dir, items })、POST /companion/api/integrations/example(写一份示例清单,已存在不覆盖)。
  • 页面右上角新增一行小字 申请收录软件 ↗:和插件市场一样跳 GitHub —— issues/new?template=integration_submission.md,仓库里同步加了收录模板 .github/ISSUE_TEMPLATE/integration_submission.md。
  • 页面内折叠说明写清了两层做法:① 只登记(放 JSON);② 真正干活(由那个软件自己桥接,例如把消息 POST /companion/api/memory/add 写进记忆)。详见 docs/接入软件.md。

新增:按成员分开的记忆 + 群成员总体记忆

  • 记忆页新增两块列表(和活跃记忆同一种列表样式):
    • 按成员分开的记忆:每个说话人一张卡,显示他的评价(好感度 / 多维评价 / 改名记录入口)和归到他名下的记忆;没标明归属的单独一组。
    • 群成员总体记忆:整个群共有的事(群事件、群体氛围、大家的约定/梗),不针对某个人;带日期与权重,可逐条删除。
  • 数据:活跃记忆本来就有 speakerId/speakerName 归属信息,面板按它分组;新增 groupMemories 存群成员总体记忆(按对话隔离,自动去重)。
  • 新增接口:POST /companion/api/group/memory(加一条总体记忆)、POST /companion/api/group/memory/delete;GET /companion/api/state 快照新增 groupMemories 与 memoriesBySpeaker。

新增:自带 QQ 应用(原生连接 / 消息路由 / 审批与提问卡片)

  • 「接入软件」→ 本应用自带 → QQ 机器人,点「打开」是一个完整应用:官方网关连接、收消息、群成员识别、表情包库(收/发/自动丢)、定时消息、群管理、群发、引用回复、卡片消息。
  • 消息路由:QQ 消息加前缀送进指定 dsh 会话,AI 回复自动发回 QQ(被动回复 + 引用);配置在应用页「消息转发到 AI 会话」。
  • 审批卡片:宿主审批请求 → QQ 卡片(6 位码 + 允许/拒绝按钮),点按钮或回 /approve CODE 结算,超时拒绝。
  • 提问卡片:宿主提问 → QQ 卡片(单题 ≤5 选项),点按钮 / /答 A,B / 选项原文 / 自由文字都算回答,超时给空答案。
  • 按钮动作:ap: 审批、q: 提问选项、reply: 直接回文本;收到 INTERACTION_CREATE 先按官方要求 ack。
  • 定时消息支持「按星期几」和「某一天一次」;好感度/记忆/群友小传继续用 AI记忆 自己的实现,不搬 qqbot 的那套。
  • 可选未搬(需要外部依赖):语音转 SILK、表情包视觉打标、本地小模型价值评分、私聊流式消息。

新增:群成员识别(QQ 桥接用,稳定 ID 认人)

  • 新增全局人物档案 {数据根}/people/<platform>-<id>.json:以平台稳定 ID(QQ openid 等)为主键,记录当前昵称、历史昵称列表、改名事件、首次/最近出现时间和消息数;同一人改昵称、换群、私聊都认得出,同名不同 ID 不会混。
  • 说话人新增 externalId / platform / renameLog:解析顺序改为 稳定 ID → id/名字/别名;改名只换显示名,旧名进 aliases、写一条改名记录,好感度/羁绊/多维评价/轮次全部保留。
  • 新增 GET /companion/api/people?q= 列出人物档案;POST /companion/api/speaker 支持 externalId/platform/instance 并返回 renamed 与档案摘要。
  • 新增本地接口地址文件 {数据根}/api-endpoint.json(启动时发布、每 15 秒刷新),同机桥接程序不用再猜端口。
  • QQ 侧配套:inbound/companion-speaker.mjs 改为优先调上面的接口(带 openid),接口不可用时退回直接写会话 state.json;hooks/companion-bridge.mjs 继续把 QQ 自带的 attitude.json/affinity.json 冻结为只读,好感度只用本插件的。
  • 设计说明见 docs/群成员识别.md。

新增:QQ 消息路由——每个群聊 / 私聊单独选 AI 会话

  • 「接入软件」→ QQ 机器人 →「QQ 群聊/私聊 → 选 AI」:一行就是一个 QQ 群聊或私聊,前面可改名字(只改本插件里的显示名),后面是会话选择按钮,再后面是「接」勾选(不勾 = 全部接,勾了就只接勾中的)。
  • 会话选择是两段浮层:先按工作区(文件夹)分组选文件夹,再点具体会话;每段都能收起,长文件名的会话不会只显示半截;两个按钮列宽固定,私聊行与群聊行上下对齐。
  • 没指定会话的聊天默认新建 AI 会话并回答,建在「默认工作区/文件夹」里(下拉占满整行);该会话被删掉后,下一条消息会自动重建一个新会话。
  • 群聊和私聊各自独立:一个群选的会话不会影响其他群,也不会影响私聊默认。

新增:本地声纹(QQ 语音认人)

  • 本机 CAM++ 中文 16k 模型(ONNX)离线推理:QQ 语音先比声纹再转文字,不联网;引擎(sherpa-onnx-node)与模型放在插件的 vendor/、models/ 目录,不随市场发布包分发,缺了自动降级为只按昵称认人,不影响其他功能。
  • 默认策略:相似度 ≥ 0.55 认为是同一个人;每段语音相似度 ≥ 0.78 自动收录;前 60 秒无门槛收录;每人样本按音频时长管理,总时长上限 300 秒,超出时从最老样本剪掉对应秒数(不是整条淘汰)。
  • 面板可调:认人阈值 / 常规收录门槛 / 满时长后门槛(默认 0.80)/ 每人上限秒数;声纹样本列表可逐条删除;群语音只对勾选的人做识别与收录,避免把别人的声音录进档案。

新增:AI 记忆「生活类」与「对话人习惯」两栏

  • 生活类重点:起床 / 吃饭(早午晚)/ 午睡 / 睡觉 / 出门玩 / 回家 / 上班下班 / 运动 / 洗澡等带时间的事件,统一记 PP:MM 开头的一条,单独成栏;按交互日(对话日)每 7 个聊天日自动清空一次,不算长期记忆。
  • 对话人习惯:作息、上下班/上下学时间、通勤方式、饮食习惯、爱吃什么、爱玩什么、口头禅、社交/消费、健康过敏、家人宠物等,长期保留。
  • 两栏都写进系统提示词,面板默认收起、点标题展开。

面板与交互修复

  • 全局活跃记忆、每人单独记忆卡、生活/习惯两栏都支持折叠(默认收起);「记忆体检」改成常展开。
  • 好感度那排最右侧加 ✕:二次确认后删掉这个成员(连他的多维评价和单独记忆一起清)。
  • 「接入软件」页的 QQ 应用卡片、声纹卡片、会话路由卡片统一成可展开的精致卡片,默认收起。

QQ 回复与稳定性修复

  • 群聊里一轮回复压成 1 条气泡(句子之间空一行),私聊一行一气泡,每轮最多 3 泡。
  • 被动回复补上递增 msg_seq(修 40054005「消息被去重」);群里纯 @(内容为空)当作「在叫你」;空内容不再转 AI;积压队列停用,发不出去只记 dropped,不再堆积或补发。

Full Changelog: v1.1.3...v1.2.0

v1.1.3

Choose a tag to compare

@Root-7-KHX Root-7-KHX released this 31 Oct 10:40

版本策略:发布前所有改动都并入本版(不连续升号);发布之后才递增版本号。
本版是 v1.1.2 之后、尚未发布的全部改动。

更名:中文显示名改为「AI记忆」

  • 仅标题类中文显示名变更:面板标题、侧边栏 / 顶部视图标签、README 标题由「伴侣记忆」改为「AI记忆」。
  • 英文名 Companion Memory、包名 companion-memory、插件 id、API 路由、数据格式均未改动;正文与提示词里的旧名保持不变。
  • 版本号:1.1.3(本版为 v1.1.2 之后的全部改动;发布后本地开发版本才递增)。

新增:配置文档条目权重

  • 配置页三份文档(角色性格 / 允许&禁止行为 / 预设发言例句)的每条设定现在可以单独配 1~100 权重(默认 50,越大越重要、越优先);面板里可以逐条修改文字 / 调整权重 / 删除,新增多条时用「;」分隔会自动拆成独立条目。
  • 提示词按条目权重从高到低注入三份文档,并在每条标出权重(如 〔90〕),权重高的设定优先体现;「允许&禁止行为」的禁止项任何时候都不能违反。
  • AI 用 edit_doc 修改这三份文档时也能给每条带权重:fields 的每个值支持 [{text, weight}] 数组,或带 〔90〕 标记的字符串(多条用「;」隔开);AI 新增条目按「核心偏好 / 底线 90100、明显的喜欢或反感 7089、普通偏好 4069、顺带一提 139」给分。
  • 文档仍然保存在会话目录的三份 .md 文件里:权重以 〔90〕 形式附在条目末尾,默认 50 不显示标记,纯文本可读;导入 / 导出记忆包会原样带走权重。

新增:好感度「误报防呆」(真实的大幅情绪波动仍放行)

  • 背景:AI 偶尔把「+1」误写成目标值 1,等于一轮要跌 99。旧逻辑只靠「单轮降幅上限」收窄到 20,再让羁绊全额垫付,结果羁绊被一次抽干、好感度还掉了 3。
  • 新逻辑:跌幅超过「单轮降幅上限的 3 倍」、且本轮没有大情绪波动时,判定为疑似误报,只按小幅结算(默认 3 点)——既不抽干羁绊,也不一次掉掉上限。
  • 真实的大幅情绪波动照常放行:本轮情绪单项变动 ≥ 20,或有负向情绪(悲伤/委屈/愤怒/焦虑/疲惫/失望/厌恶/恐惧/难过)冲到 ≥ 60;也可以在 favorability 里带 spike: true 直接声明,跳过防呆。
  • 判定与显示:历史记录新增 misreport / misreportRawDrop / misreportDrop,面板显示「目标值 1(疑似误报:跌幅 99,按 -3 结算)」;set_favorability / turn_end 回执会提示「疑似把 +N 误写成绝对值」。
  • 配置:favorabilityMisreportGuard(默认开,false/0 关闭)、favorabilityMisreportDrop(默认 3,0 = 误报直接忽略)。面板手动拖动不受影响。
  • 判定阈值:跌幅 > 单轮降幅上限 × 3 才进防呆分支,正常的小幅下降与大情绪波动不会被误判。

新增:人格演化触发(好感度 + 羁绊累计满 50 点强制调整一次)

  • 新增计数:好感度与羁绊值的每次变化(涨跌都按绝对值)累加进「人格演化进度」,累计满 50 点强制触发一次人格演化。
  • 触发后 AI 必须按顺序完成:总结最近这段对话 → edit_doc 小改「角色性格/预设发言例句」→ evolve 更新自我演化条目 → turn_end 带 evolutionDone:true + evolution_summary 确认;系统核对三项都真的做了才清零。
  • 强制:没做完会一直挂着——每轮动态状态显示「强制人格演化未完成」,turn_end 回执也会提醒,直到完成。
  • 改过就重计:AI 改过一次配置文档或演化条目,计数就从头开始;完成一次强制演化后计数清零、重新开始计。待完成期间计数暂停,不会积压成多次。
  • 面板:记忆页「AI 自我演化」卡片顶部显示进度 / 待完成 / 已完成次数 / 上次完成时间,并提供「清零进度」按钮;新增 API POST /companion/api/evolution/trigger。
  • 提示词协议同步更新:edit_doc 与 evolve 只在「用户明确要求」或「强制演化触发」时使用,平时不要主动改;turn_end 支持 evolutionDone / evolution_summary。
  • 面板手动拖动好感度 / 手动加减羁绊不计入计数;rules(允许&禁止行为)仍然只读。
  • 老数据兼容:没有 evolution.trigger 字段的旧状态会自动补默认值,导入合并时优先保留当前对话的进度。

新增:自动打包支持「按 tokens」触发

  • 自动打包以前只能按「每 N 轮对话」触发;现在多了一个 「每约 N tokens」 触发,两个条件可以同时开,任意一个到阈值就打包。
  • 默认跟随「上下文压缩」的触发阈值(contextCompression.triggerTokens,当前配置里是 40000):压缩阈值改多少,自动打包就跟着改,不用手填。
  • 面板 → 知识库页「自动打包」卡片多了一行:可以填具体数字(自定义)或填 0(关闭 token 触发),旁边有「跟随压缩阈值」按钮一键切回跟随模式。
  • token 数是估算值:中文约 1 字 = 1 token,其他字符约 4 字符 = 1 token;累计你 + 角色每条消息的文本,到阈值后在下一个用户消息进来时打包。
  • 打包文档头部会写明本次是「轮数到阈值 / tokens 到阈值 / 两者同时」触发,以及区间轮数与估算 tokens。
  • 兼容:老状态里 everyTokens: 0 且没有自定义标记的,自动视为「跟随压缩阈值」。

新增:最近几条对话永远不压缩

  • 上下文压缩会替换较早的对话;以前只保证「最近 8000 tokens」和「最后一条用户消息」保留原文。
  • 现在额外加了 retainMessages(默认 8):最近的 8 条对话消息永远原样保留、不参与压缩,
    压缩只发生在更早的部分,避免「刚说的话被压成摘要」导致角色接不上。
  • 配置:contextCompression.retainMessages(最小 2)。

修复:最新记住的事,模型却「不知道」

  • 动态上下文以前只注入权重前 8 条活跃记忆。刚记下来的记忆默认权重 50,
    挤不过老的高权重记忆,于是「最近几件事」模型根本看不到——打包文档里有、面板里有,
    对话里却答不上来(用户反馈:打包时好像忘了最新的几条记忆)。
  • 注入顺序改成按时间从旧到新排列(带日期时间),标出【重要】(权重高的)和【最近】(新记下的);
    同一天的记忆带「今天」标记(导入的记忆不标,避免把「导入时间」当成「事情发生时间」)。
  • 默认会带上全部活跃记忆(最多 100 条);超过 100 条时按「权重前 8 + 最近新增 8」截断,
    并在提示里说明「另有 N 条未注入」。
  • 明确告诉模型:同一件事有多条记忆时以时间更晚的为准;回答「今天/刚才」类问题先看时间最新的几条;
    记忆里找不到时先 search_recent 再 search_kb,不要直接说记不清。
  • 配置:memoryInjection: { top: 8, recent: 8, maxTotal: 100 }(top 130,recent 020,maxTotal 8~200)。

修复:蓝色主按钮鼠标悬停时整颗「消失」

  • 原因:通用规则 .cm-btn:hover 把悬停背景刷成接近白色的浅灰,优先级又高于 .cm-btn-primary 的蓝底;
    主按钮白字留在白底上,看起来就像按钮整个消失。
  • 修复:主按钮单独声明悬停态(保持蓝底 + 白字,悬停色改用更深的 --cm-btn-hover-bg),
    并补上按下、聚焦外框、禁用态样式;普通按钮悬停时边框也加深一点,反馈更清楚。
  • 覆盖面板里所有蓝色按钮:保存/应用、开启本对话、自动打包、知识库等。

Full Changelog: v1.1.2...v1.1.3

v1.1.2

Choose a tag to compare

@Root-7-KHX Root-7-KHX released this 30 Oct 16:44

版本策略:发布前所有改动都并入本版(不连续升号);发布之后才递增版本号。
本版是 v1.1.1 之后、尚未发布的全部改动。

修复

  • 好感度下降加了「单轮降幅上限」(默认 20):AI 把目标值误报成 1 这类错误,以前会一次扣掉几十点
    (羁绊吸收后仍会掉好感度)。现在每轮最多往下走 20 点,超过会被收窄并在回执/历史里写明
    「单轮降幅上限 20,按 X 结算」;面板手动拖动不受限制。配置:favorabilityStepLimit(0 = 关闭,默认 20)。
  • 导出包补全两个全局项:之前只导出「记忆向量维度」,漏了说话人评价维度
    (speaker-vector-dimensions.json)和全局默认 AI 名字(character.json)。
    换环境导入后自定义评价维度会显示不出来、全局名字会丢。现在导出包含
    speakerVectorDimensions 与 globalCharacterName,导入时并入目标环境
    (名字只在目标为空时填,不覆盖已有设置)。
  • 好感度历史不再藏「AI 请求的目标值」:之前只记录最终值,遇到「先扣羁绊」把下降全吃掉时,
    面板会显示成「100(0)|羁绊 +143 → +46」,看不出 AI 当时其实报了一个很低的目标值(原来报的是 3)。
    现在历史记录会保存 requested(AI 原始请求值),面板和提示词显示为
    「目标值 3|羁绊抵消 97」,set_favorability / turn_end 的回执也会写明被抵消了多少。
  • 导出包里的插件版本号写死成 0.4.0:现在从 package.json 读取,导出文件会记录真实版本
    (lib/store.js 的 BUNDLE_PLUGIN_VERSION)。
  • AI 看不到「自我演化权重」的说明:1.1.1 把 weight 的用法写进了一个从未被调用的旧函数里,
    真正进系统提示词的是另一份规则文本。现已把说明写进实际生效的 evolutionRulesSection(),
    并删掉那个死函数;evolve 的 add[] 默认权重同步改为 50。
  • 模型看不到带日期的记忆渲染:旧 memorySection() 也是死代码,真正注入的是另一段渲染,
    所以记忆既没有日期也没有 id(archive_memory 拿不到 id)。已删除死函数并统一渲染。

新增:每条记忆带「日期 + 时间」

  • 动态上下文:· 【mem_x】2026-10-30 19:14|…|原文(权重 80)(顺带带上记忆 id,archive_memory 才能用)。
  • 面板记忆卡片:2026-10-30 19:14|第 3 交互日。
  • 知识库归档条目:原始记录时间:YYYY-MM-DD HH:MM(原来只有日期)。
  • 自动打包 / 月度归档里的「重点原始记录」和活跃记忆列表也带记录时刻。

新增:导入记忆时 AI 自动回顾聊天原文

  • 面板「备份」页导入记忆文档时,多了一个默认勾选的选项「导入后让 AI 把聊天原文全部过一遍」:
    导入完成后,把导入包里带的聊天原文按字符分批交给模型,提炼成活跃记忆
    (用户偏好 / 约定 / 剧情关键点 / 重要事件),并写一条「导入回顾」归档。
  • 以前导入只把原文写进知识库、灌进 48 小时热缓存,AI 不一定会去读;现在不用检索也能直接记得。
  • 失败只记录、不阻塞导入;批次数默认上限 8 批(约 9.6 万字),超出会在导入结果里提示。
  • 配置项:importDigest: { enabled, batchChars, maxBatches, maxMemoriesPerBatch }。

新增:顶部栏「伴侣记忆」会话视图

  • 注册进 DSH 的 conversation.view 槽位:顶部会话视图标签栏(对话轨迹那一排)会多出「伴侣记忆」。
  • 点开后自动跟随当前对话,显示这个对话的情绪表(只读)、好感度/羁绊/多维评价、活跃记忆列表。
  • 所有请求显式带 session 参数,不会和侧边栏面板的当前对话互相干扰。
  • 未开启伴侣记忆的对话,视图里会直接给「开启本对话」按钮。
  • 视图顶部有快速跳转按钮:「去调整情绪」「去调整记忆」「打开完整面板」——点击后用宿主的
    layout.selectPanel 打开侧边栏「伴侣记忆」面板,并把当前对话一起带过去(不只是切页签),
    面板会切到该对话并定位到对应页签(情绪 / 记忆 / 配置)。

新增:情绪表(多种情绪各自一条进度条)

  • 不再是「开心↔难过」一根正负轴,而是每种情绪一条独立的 0~100 进度条:
    可以「开心 70 + 悲伤 30」同时成立,也可以「委屈 60 + 依恋 40」,不需要互相抵消。
  • 默认九种情绪:开心 / 兴奋 / 平静 / 依恋 / 悲伤 / 委屈 / 愤怒 / 焦虑 / 疲惫;
    种类是全局注册表(emotion-types.json,所有对话通用),AI 可以用 emotion_type 自己增删,
    有对话在用的情绪(非 0 分)不允许删。
  • AI 每轮通过 turn_end 的 emotions: {"开心":70,"委屈":20} + emotionReason 实时更新,
    也可以单独调用 emotion(只报变化的那几种,0 = 回落)。
  • 最高优先级参考:提示词静态规则和每轮动态状态都把它放第一位——
    语气、态度、主动性、亲近程度先服从情绪表,再看好感度/多维评价/记忆。
  • 实时性兜底:每轮 turn_end 都要求带 emotions;漏了的话工具回执会写明「本轮没有更新情绪表」,
    下一轮动态状态也会提醒补上,避免情绪表停在旧值。
  • 面板:单独开一个「情绪」大类页签(配置 / 情绪 / 记忆 / 知识库 / 备份 / 状态 / 总览)——
    每条情绪一行进度条(0~100,各自独立配色),本页可手动拖动改值(必须写理由)、
    新建/删除情绪种类,并列出最近 10 次情绪变化记录。
  • 导出/导入:情绪值随 state 走,情绪种类随全局注册表合并。

新增:每个人的多维评价(好感度之外)

  • 每个说话人除了好感度 / 羁绊,再多一套多维评价(0~100):默认维度是
    信任 / 亲近 / 尊重 / 依赖 / 警惕 / 吸引,可以理解为「关系里更细的那几根轴」。
  • 新工具动作 speaker_vector:speaker: "名字" + speakerVector: {"信任":80,"亲近":70}
    (只改传进来的维度);turn_end 里也能直接带 speakerVector,省一次调用。
    传 null 表示清掉某人在这个维度上的分数(回到默认值)。
  • 新工具动作 speaker_dimension:AI 自己新建 / 删除全局的说话人评价维度
    (dimensions: [{label 1~8 字, desc, default}],一次最多 2 个、总共最多 12 个),
    所有对话共用,存 <数据根目录>/speaker-vector-dimensions.json。
  • 有说话人用过某个维度时不允许删除(跨对话统计),要先清掉那些人的分数。
  • 提示词:当前说话人的多维评价会显示在动态状态里,并写明更新 / 建维度的方法。
  • 面板「好感度」卡片里,点「显示向量/权重」后能看到每个人的多维评价(默认隐藏)。
  • 导出 / 导入保留,老对话的说话人自动补齐默认评价。

新增:记忆向量(由 AI 自己打分)

  • 每条记忆除「权重」外再带一个多维向量:valence 情感 -100100、importance 重要、
    intimacy 亲密、sensitivity 敏感、persistence 长期(均 0
    100)、category 类别
    (偏好/约定/事件/人物/雷区/日常/其他)、aspects 自定义方面(最多 3 条)。
  • 新工具动作 vector:剧情让某件事性质变了(如约定变雷区)时,AI 可给已有记忆重新打分。
  • 不传就用默认值(情感 0 / 重要 50 / 亲密 50 / 敏感 30 / 长期 60 / 日常),越界自动夹紧。
  • 面板卡片、归档条目、自动打包、月度归档都带向量;导出导入保留;老记忆自动补默认向量。

面板:向量 / 权重默认隐藏

  • 「记忆」页默认只显示记忆原文、记录时间、交互日和标签;向量串、权重输入框都收起来,不再刷屏。
  • 「全局活跃记忆」右上角有「显示向量/权重」按钮,展开后才看得到、改得了;AI 自我演化条目的权重也一起隐藏。
  • 数据本身不受影响:向量、权重、全局维度照常在后台记录,AI 提示词里该有的说明和数值一条不少。

新增:AI 可以自己新建全局维度

  • 新工具动作 vector_dimension:新建维度(label 18 字、desc 一句话、default 0100),
    一次最多 2 个、总共最多 12 个;removeDimensions 删除。
  • 维度是全局的:存 <数据根目录>/vector-dimensions.json(和 character.json 同级),所有对话共用。
  • 之后任何记忆都能用 vector.custom: {"维度名": 分数} 按它打分,显示为 …|偏好|饮食15|…。
  • 动态上下文列出当前全局维度;面板「记忆」页顶部显示维度列表与「N 条记忆在用」。
  • 导出包带全局维度列表;导入时并入目标环境全局注册表(按名字去重)。
  • 有记忆在用这个维度时不允许删除(活跃 + 已归档,跨对话统计):会提示还有几条在用,
    要先用 vector 清掉那些记忆的分数;force: true 仅内部/脚本用。
  • 兼容 1.1.4 及更早:存在单对话 state 里的维度仍能读到,下次增删时自动迁进全局文件。

Full Changelog: v1.1.1...v1.1.2

v1.1.1 — 角色名字 / 权重 / 常问记忆 / 先扣羁绊

Choose a tag to compare

@Root-7-KHX Root-7-KHX released this 30 Oct 10:54

1.1.1 — 2026-10-30

首个 1.1 正式版(1.1.0 只在本地开发、未发布,功能全部并入本版)。相对 1.0.0 的变化如下。

新功能

  • 降好感度改为「先扣羁绊值」:和「好感度满 100 溢出加羁绊」对称,完整的扣减顺序是
    ① 先扣羁绊 → ② 羁绊扣光后扣好感度 → ③ 好感度到 -100 后继续扣羁绊(羁绊转负)。
    实测链路:好感度 0 / 羁绊 40 → 扣 30(全扣羁绊,好感度不变)→ 再扣 30(羁绊归 0,好感度 -50)
    → 扣到 -100 → 再扣 → 羁绊 -10 → 继续 → 羁绊 -40;重复报 -100(满值同向推动)羁绊再 -1。
    新对话起始是 0 好感度 / 0 羁绊,此时没有羁绊可扣,所以开局第一刀直接扣好感度(这是预期行为,不是漏扣);
    羁绊要等好感度加满 100 后继续向上溢出才会累积出来。
    回执会写明「先扣羁绊值 X,好感度只降了 Y」。面板手动拖动不受影响(用户改就是直接改),
    可在 companion-memory.config.bondAbsorption: false 关掉这套缓冲。撤销时会同时还原好感度和羁绊。
  • 角色名字:配置页最顶上新增独立两栏——「所有对话通用的默认名字」+「本对话单独的名字(留空跟随默认)」。
    填了以后 AI 会知道自己的名字并能正确自称;该栏只有用户能改,AI 的 edit_doc 碰不到它。
    没设置名字时会明确提示 AI 不要自己编名字、也不要把工作区/文件夹名当成名字。
  • 反复问的事自动进全局记忆:同一个问题(含换个说法的近似重复)累计问到 3 次,会自动落一条活跃记忆
    「用户经常问:…」,标签 常问,面板上显示「已问 N 次」;问得越多权重越高(55 起,每多一次 +5,封顶 100),
    从此每轮注入上下文,不用再靠检索。只统计问句(带问号或「吗/什么/怎么/为什么…」),普通陈述不计;可在
    companion-memory.config.recurringQuestions 里改 enabled / minCount / maxTracked。
  • 自我演化条目支持权重:每条「性格细节 / 喜欢的事物 / 讨厌·回避的事物 / 行为习惯」都带 1~100 的权重(默认 50),
    表示对角色有多重要/多强烈。AI 用 evolve 新增时可直接带 weight;用户可在面板「记忆 → AI 自我演化」里逐条改数字,回车或点开别处生效。
    权重高的条目在提示词里排前面,条数被截断时也优先保留高权重的;老数据没有该字段时自动按 50 处理。
  • 活跃记忆支持权重:每条活跃记忆带 1~100 的权重(默认 50)。AI 用 save_important / turn_end 的
    important[] 新增时可直接带 weight;用户在面板「记忆」页逐条改数字。排序规则:置顶 → 权重高的 → 手动顺序,
    所以「上移/下移」现在只在同权重条目之间起作用;想让某条排到最前,调高它的权重或直接置顶。
    每轮只注入前 8 条,按上面这个顺序取,低权重的自然排在后面;老数据没有该字段时按 50 处理。
  • 多级记忆压缩(lib/hierarchy.js):日 → 月 → 最新年报 → 跨年沉积的级联压缩,只保留两份高层摘要,
    关键记忆可 pin,原文永不删除;面板「知识库」页有进度卡片与手动/回滚按钮。
  • 导入前自动整理记忆(lib/clean.js):导入聊天原文前先做规则去重 + 一次模型排序/归档,失败自动降级。
  • 记忆体检:GET /memory/health 扫描重复/相似/超长/过期条目,面板一键整理并自动备份。

修复 / 调整

  • 上下文压缩阈值改为绝对 token(triggerTokens: 40000):原来按「用量 / 模型窗口」比例算,
    在 1M 窗口的模型上阈值被推到 30 多万 token,长对话会一直涨。现在按绝对用量触发,设 0 才回退到比例逻辑。
  • 拿不到模型窗口时不再静默放弃压缩:绝对阈值不依赖窗口大小,压缩得以正常工作。
    retainTokens 12000→8000、minCompressTokens 12000→6000,压缩更温和、更容易挑到可压区间。
  • 打包:新增 scripts/package-dist.mjs(零依赖,zip/tgz 自带 UTF-8 文件名处理,中文名不乱码)。

文档

  • README 补充「常见问题」「迁移说明」两节。

Full Changelog: v1.0.0...v1.1.1

v1.0.0 — 羁绊值 / 导入保护 / 会话修复

Choose a tag to compare

@Root-7-KHX Root-7-KHX released this 30 Oct 06:21

1.0.0

新功能

  • 好感度满 ±100 后继续累积「羁绊值」(无上限):超出部分自动转羁绊;满值同向推动自动 +1;turn_end 支持 bond 参数;面板新增羁绊 +1/−1 与徽章。

修复

  • 导入聊天原文保护:单次最多 500 条、单条 6000 字,预览显示条数与体量,回执报告跳过条数。
  • 会话加载失败(system/message does not match an open turn and step):停用运行时 surface 改写,并修复受影响的会话日志。

文档

  • 新增 ROADMAP.md 与《多级记忆压缩设计》(1.1.0)。

Full Changelog: v0.7.0...v1.0.0

Full Changelog: v0.7.0...v1.0.0

v0.7.0 — 记忆可靠性 + 聊天原文导出导入 + 工具瘦身

Choose a tag to compare

@Root-7-KHX Root-7-KHX released this 29 Oct 19:15

0.7.0 — 记忆可靠性 + 导出/导入聊天原文 + 工具瘦身

修复

  • turn_end 摘要丢失:工具参数是 minor_summary,写入端只认驼峰,摘要一直没进知识库;现在两种写法都接受。
  • 同一轮重复调用 turn_end:按用户消息时间去重,回执明确「本轮已经记录过」,提示词改为每轮一次。
  • 系统提示词在历史里无限堆积(deepseek-flash 的 in-history 模式):提示词静态化,动态状态改走 runtime-context;老会话一次性清理(实测 54 万字符)。
  • 动态状态不再冒充用户消息(聊天框里不再弹大段气泡)。
  • Current runtime context 等注入消息不再污染 48 小时热缓存。

优化

  • 伴侣对话工具瘦身:74 → 25(电脑操控 / 写代码 / 团队 / 计划任务按会话 deny)。
  • 中文检索加入单字索引 + 相邻答句:「我吃了什么」能搜到「吃过了晚饭吃的自助烤肉」。
  • 导入时抽取用户关键事实写入活跃记忆。
  • 好感度:每个说话人独立滑条、拖动自动保存;卡片不再固定悬浮。

新功能

  • 导出 / 导入包含聊天原文(含还没被打包进知识库的上下文),另加「只导出聊天原文 .md」。
  • 导入改为「合并导入 / 覆盖导入」两个明确按钮。
  • 切换对话列表每个工作区支持「+ 新建对话」(宿主 uiWorkspace 链路、自动开启伴侣记忆并发一句「你好」)。

Full Changelog: v0.3.0...v0.7.0

v0.3.0 — 伴侣记忆 Companion Memory

Choose a tag to compare

@Root-7-KHX Root-7-KHX released this 29 Oct 12:38

v0.3.0

  • 记忆操作:活跃记忆支持 置顶 / 上移 / 下移 / 归档 / 删除;好感度支持撤销最近一次变动
  • 时间口径改为「聊天时间 / 聊天日」:48 小时按最近 2 个聊天日计,没聊天的日子不占用额度
  • 会话选择器:只列出真实对话,按工作区(项目)分组,分组可折叠展开
  • 面板修复:接口依赖注入缺失导致的 404、面板内容被壁纸/特效层覆盖
  • 其他:按钮配色改为固定高对比(深蓝底白字),不受壁纸 / 主题影响

Full Changelog: v0.2.0...v0.3.0

v0.2.0 — 伴侣记忆 Companion Memory

Choose a tag to compare

@Root-7-KHX Root-7-KHX released this 29 Oct 08:29

伴侣记忆 v0.2.0

新增

  • 备份页:把当前对话的整套记忆导出为可读 JSON 文档(人格文档、好感度与变动历史、活跃记忆、知识库归档/月度/自动打包、交互日与设置),换对话或重装后导入即可完整接上;导入前显示摘要,可选合并或覆盖。
  • 好感度文案全面明确为【角色(AI)对用户】的好感度(面板、提示词、工具说明、归档文本)。

修复

  • index.js 声明 webServer 依赖:重启后 HTTP API 未注册导致面板空白。
  • 面板根元素建立层叠上下文(position: relative; z-index: 1),避免被桌面壁纸/特效层覆盖。

文档

  • README:六个页面、备份使用说明、v0.2.0 安装链接。

Full Changelog: v0.1.0...v0.2.0

v0.1.0 — 伴侣记忆 Companion Memory

Choose a tag to compare

@Root-7-KHX Root-7-KHX released this 29 Oct 05:57

伴侣记忆 Companion Memory v0.1.0

给 DeepSeek Harness 的角色扮演伴侣记忆插件(每个对话独立一套数据,默认关闭)。

亮点

  • 每个对话独立的人格文档、好感度、活跃记忆与本地知识库,互不干扰
  • 侧边栏三份配置:角色性格 / 允许&禁止行为 / 预设发言例句,改完下一轮立即生效
  • 好感度 -100~100,带理由记录与历史
  • 最近 48 小时对话原文可检索,超过 48 小时自动清理并走知识库归档
  • 48 小时归纳、30 交互日对话月、可自定义每 N 轮自动打包
  • 纯本地文件存储(\ 下),无外部依赖

安装

  1. 下载附件 companion-memory-0.1.0.tgz 并解压,或克隆仓库
  2. 在 DeepSeek Harness 插件管理器里选择该目录安装(install_bundle)
  3. 左侧「全局面板 → 伴侣记忆」,给当前对话点「开启本对话」

详见 README 与 CONTRIBUTING。

MIT © Root-7-KHX