Skip to content

Releases

KokoroMemo 0.14.1

Choose a tag to compare

@github-actions github-actions released this 23 Oct 04:29

Termux 修复版:修复 pydantic v1 启动失败、一键安装旧版本、后台存活、端口配置和冷启动加载问题;同时包含向量后端、记忆审核与可维护性改进。

KokoroMemo 0.14.1

新增

  • 增加可配置向量后端 storage.vector_store = auto | lancedb | sqlite:auto 优先 LanceDB 并在导入或初始化失败时自动回退 SQLite,lancedb 在不可用时明确报错,sqlite 完全使用 SQLite + numpy,适用于不支持 AVX2 的老 CPU、容器和 Termux 环境;GUI 服务配置新增“向量存储后端”选项,切换后端后需要重建向量索引(#6)。
  • 长期记忆判断新增 source / evidence 输出契约和 memory.judge.reject_unverified 开关(默认开启):助手来源、缺少用户原文证据或证据无法在用户发言中逐字匹配的候选会被丢弃;状态板填表提示词同步禁止把助手单方面编造或推测的物件、事实和承诺写入状态,除非用户后续明确确认(#7)。
  • 新增 /admin/airp-recall-explanation 契约,汇总最近会话 retrieval trace、最终注入记忆、隔离排除原因和潜在串记风险;仪表盘增加官方召回解释入口,展示当前角色、本轮选中记忆、角色/会话/记忆库隔离排除和下一步入口。
  • 新增 /admin/airp-memory-audit 契约,汇总当前角色已批准记忆、待审核候选、已拒绝候选和状态板 active 行;仪表盘增加记忆账本入口和状态快照,让用户直接看到角色记住了什么、哪些内容被拒绝以及当前剧情停在哪里。
  • 新增 GET /admin/vector-backend-status 诊断接口,报告配置后端、实际生效后端、索引行数和带过滤检索自检;索引非空但过滤检索返回空时会标记 degraded 并提示重建或切换 SQLite 后端(#7)。
  • 新增 GET /admin/config-schema 配置清单接口,返回字段路径、类型、默认值和废弃原因;GET /admin/degradation-status 汇总检索、抽取、状态填表和向量同步等降级通道的累计次数与最近错误,便于排查“设置不生效”和静默降级。

改进

  • balanced 召回策略不再使用硬编码规模,改为读取 memory.vector_top_k、memory.final_top_k 和 memory.max_injected_chars,向量召回评分读取 memory.scoring.*;/admin/retrieval-profiles 同步返回实际生效值,修复设置页修改后检索与注入不生效的问题(#7)。
  • LanceDB 元数据过滤返回 0 行时自动重试一次无过滤检索,并在 Python 侧重新校验 user、character、conversation、scope 和记忆库可见性,避免过滤兼容问题导致“记忆存了却用不上”;无过滤仍为空时输出明确 warning 并提示切换 storage.vector_store=sqlite,不绕过隔离(#7)。
  • CI 与 Release 预检新增 验证 AIRP 召回解释契约、验证 AIRP 记忆隔离门禁 和 验证 AIRP 记忆账本契约 步骤,覆盖空状态、正常召回解释、跨角色误召回风险、跨会话和未挂载记忆库不会进入最终注入,以及角色记忆、待审核、已拒绝和状态板位置。
  • 模型回复被 max_tokens 截断(finish_reason=length/max_tokens)时,不再触发状态板填表和记忆抽取,避免把不完整回答中的幻觉内容写入长期记忆或当前状态;流式与非流式代理都会记录该结束原因(#7)。
  • 配置清理:fallback_rule_based、extract_after_each_turn、hot_context.inject_always、auto_expire_resolved_items、detect_system_prompt_change 这些未参与运行逻辑的开关已从 GUI、/admin/config 和示例配置中移除,并在配置清单中标记为废弃,减少“设置了但没效果”的误导。
  • 向量存储统一为 VectorStore Protocol 和 get_vector_store 规范入口,get_lancedb_store 保留为兼容别名;管理路由统一由 router 级鉴权依赖保护。
  • 管理 API 的 42 个原始字典请求体统一接入 AdminPayload Pydantic 边界(保留 extra=allow 兼容现有字段),handler 继续使用字典语义,后续可逐步把稳定字段提升为显式模型。
  • 将聊天后的响应持久化、状态板填表和记忆抽取从 chat.py 拆分到 pipeline/postprocess.py,主链路请求编排与后台处理职责分离。

修复

  • 修复 Termux 使用 pydantic v1 时后端因 ConfigDict / model_validate / model_dump 导入失败而无法启动的问题:新增 pydantic v1/v2 兼容层,CI 增加 pydantic v1 后端导入与请求模型测试,Android doctor.sh 也会检查后端完整导入。
  • 修复 Termux 一键安装脚本默认安装 0.10.0 旧版本的问题:兜底版本同步为当前修复版本,并新增 CI 测试校验脚本兜底版本与 pyproject.toml 一致。
  • 提升 Android 后台稳定性:启动时尝试获取 Termux wake lock,停止时释放;首次启动等待从 15 秒延长到 90 秒,旧进程先进行 10 秒健康等待再重启;日志改为轮转到 server.log.previous,避免启动时清空上次错误。
  • 修复 Android 启动脚本每次强制覆盖 server.port 的问题:端口改为仅缺省时写入,GUI 修改端口并重启后可以生效;Web/Termux 模式保存需要重启的配置时改为明确提示执行 kokoromemo restart,不再误报自动重启失败。
  • 仪表盘初始加载在后端尚未就绪时进行有限退避重试,避免 Android/Termux 冷启动期间页面空白或误判离线。
  • 版本号提升到 0.14.1,Termux 一键安装兜底版本同步为 0.14.1;由于 0.13.0/0.14.0 的 Termux 包受 pydantic v1 兼容问题影响,兜底列表暂不使用这两个版本,修复版发布前回退到 0.11.1。
  • 修复 /admin/rebuild-vector-index 在 LanceDB OSS 上因 rename_table is not supported 返回 500 的问题:原子重建的 staging 晋升失败时改为读取 Arrow 数据重建正式表,保留原表隔离边界,并在真实 LanceDB OSS 环境验证重建结果(#7)。
  • 修复记忆语义去重的三个失效点:嵌入调用使用不存在的 embed_texts、对同步 search 使用了 await、向量状态过滤使用 approved 而索引实际写入 active;同时改用 memory_id 读取卡片 ID,语义重复候选现在可以正确识别并进入已丢弃审计(#7)。
  • 修复长期记忆注入缺少相对时间前缀的问题:候选补充 created_at,恢复“刚才 / 昨天 / N 天前”的标签,避免所有记忆都以当前时间呈现。
  • 修复普通角色扮演默认状态板模板与文档不一致的问题,设计文档同步为 tpl_roleplay_light_tables,并说明更完整的 tpl_rimtalk_roleplay_tables 仍可在会话策略中选择。

维护与文档

  • 补充向量后端选择、LanceDB 重建兜底、召回过滤隔离、judge 证据过滤、语义去重、截断保护、配置清单、降级登记和相对时间回归测试;全量后端测试和 AIRP benchmark 10/10 门禁通过。
  • CI 新增真实 LanceDB 的 full extras 测试 Job,覆盖带过滤检索和 staging 晋升兜底;前端 Job 在构建前运行 npm test。
  • 同步 README、DESIGN 和 config.example.yaml 的向量后端、AVX2 环境、向量诊断接口、配置清单、降级登记、默认状态板模板和记忆防幻觉说明。
  • 将设置页高级配置和帮助弹窗拆为 AdvancedSettingsPanel.vue 与 SettingsHelpModal.vue,Settings.vue 只保留配置加载/保存、标签编排和服务配置等页面级逻辑。

已知限制与后续安排

  • 打包版 LanceDB 在部分原生依赖组合下仍可能出现静默空召回,本次通过无过滤兜底和显式 SQLite 后端提供规避路径,仍需在 Nuitka 发行包上复测(#7)。
  • 批量导入历史对话时保留原始 created_at 尚未实现,时间线与 recent 通道的原始日期保留留待后续增强(#7)。
  • 管理 API 已建立统一 AdminPayload Pydantic 边界,字段级请求模型和更细的校验仍可分模块逐步补齐;Settings.vue 仍可继续按设置分区拆分。

KokoroMemo 0.14.0

Choose a tag to compare

@github-actions github-actions released this 15 Jun 13:36

发布 0.14.0

  • 收窄为面向 AIRP 的本地角色连续性引擎。

  • 固化 AIRP 首次成功验收接口、仪表盘面板和 CI 门禁。

  • 新增 AIRP benchmark 报告对比与阈值门禁。

  • 完善 Release workflow 的手动构建、tag 发布和发布前检查说明。

KokoroMemo 0.13.0

Choose a tag to compare

@github-actions github-actions released this 31 May 14:05

新增

  • 会话识别模式 - 支持按入站 API Key 归并会话,适配无法稳定传递会话 ID 的客户端。
  • Web UI 快捷体验 - 新增命令面板、配置健康度卡片、首次引导、设置页简单/高级模式和多处快捷操作。

改进

  • 前端结构拆分 - 拆分状态板与设置页 composables,降低大页面维护成本。
  • 管理 API 模块化 - 将管理路由拆分到角色、会话、记忆、状态板、系统等领域模块。
  • 持续集成整理 - CI 显示名中文化,并统一 Ruff 静态检查与格式检查。
  • 依赖与测试基础设施 - 新增 uv.lock、测试 fixture 与共享 fake 对象,提升依赖和测试复现性。

修复

  • 安全与校验 - 修复 LanceDB 过滤器注入、SSE JSON 注入风险,并补充请求体校验与鉴权/错误日志改进。
  • 记忆召回重排序 - 接入 Rerank provider 到长期记忆召回管线,启用后会在截断注入前重排候选。
  • 记忆图谱语义 - 补全 documented 边类型的检索语义,保留 related 兼容,并校验非法边类型。
  • 角色软删除 - 角色档案与默认策略改为 status 软删除,保留审计追踪。
  • 语义去重配置 - memory.extraction.semantic_dedup_threshold 支持从配置和前端高级设置调整。

KokoroMemo 0.11.1

Choose a tag to compare

@github-actions github-actions released this 08 May 16:08

发布 v0.11.1

  • 更新 CHANGELOG.md,整理 v0.11.0 以来的最终用户可见变化
  • 将 Python、Web 与 Tauri 版本号统一提升到 v0.11.1
  • 发布前已通过前端构建、关键后端测试与 Python 编译检查

KokoroMemo 0.10.0

Choose a tag to compare

@github-actions github-actions released this 05 May 17:32

发布 v0.10.0

新增

  • 已丢弃候选记忆视图 - 待审核模块新增“已丢弃”页签,统一展示自动去重、自动拒绝和用户手动丢弃的候选记忆,支持审计、恢复与彻底删除。
  • 会话级长期记忆挂载 - 当前会话策略支持手动选择一个或多个长期记忆库,并指定新记忆写入目标,让单个会话可以独立控制记忆来源。
  • 统一帮助与页头组件 - 新增 HelpModal 与 PageHeader 公共组件,主要页面的帮助入口、页头样式和帮助内容结构保持一致。

改进

  • 状态板仅使用新表格链路 - 移除旧 state_items 到状态表格的兼容回退;状态表格、注入预览和 OpenAI 注入链路统一以 state_table_rows 为准。
  • 状态表格填充器修复 - 修正表格填充器调用 LLM provider 的参数格式,确保新表格能够稳定写入并参与注入预览。
  • 默认角色扮演模板调整 - “普通角色扮演”默认表格模板改为“轻量角色扮演表格版”,减少不必要字段并提升日常 RP 场景可读性。
  • UI 信息架构重构 - 会话状态板默认配置改为抽屉;教学型提示收纳到帮助弹窗或灰色提示文本;角色中心、会话管理、设置页减少常驻提示噪声。
  • 用户化策略文案 - 会话方案、长期记忆写入、注入策略和快速向导描述改为面向用户意图的中文表达,隐藏 airp_roleplay、candidate、mixed 等内部术语。
  • 响应式弹窗宽度 - 主要模态框与帮助弹窗增加窄屏宽度兜底和滚动区域,避免角色中心、会话管理等页面在窗口较窄时显示不全。

修复

  • 长期记忆重复写入可审计 - 精确重复、语义重复和自动拒绝不再静默丢弃,而是进入已丢弃列表,并按配置保留最近候选。
  • 会话预览顺序与 system 消息 - 会话预览按 SQLite rowid 保持插入顺序,并在长会话中保留首条 system 消息可见。
  • 状态板下拉幽灵会话 - 会话状态板下拉不再把不存在的残留 conversation_id 显示为自定义标签,空列表时显示“无数据”。
  • CI 构建告警 - 清理 HelpModal 迁移后遗留的未使用 NModal 导入,避免 vue-tsc 严格模式报错。

KokoroMemo 0.9.1

Choose a tag to compare

@github-actions github-actions released this 05 May 10:27

发布 v0.9.1

新增

  • 会话归档模式 - 会话管理新增“活跃会话 / 已归档 / 全部会话”筛选,支持单个和批量归档、恢复,避免暂时不用的会话干扰判断。
  • 真正删除会话 - 会话删除改为清理应用索引、聊天记录目录、会话记忆、候选、摘要、挂载关系、状态板和诊断记录,不再只是删除列表索引。

改进

  • 更新检查回退 - 检查更新优先通过后端代理按 GitHub、GitHub Proxy、Gitee 顺序获取 latest.json,失败时保留完整链路,不再只显示最后一个 Gitee 错误。
  • 状态表格兼容显示 - 状态表格在没有新表格行时,会把旧状态字段映射为兼容视图,避免注入预览有内容但页面显示 No Data。
  • GUI 后端退出清理 - 桌面端关闭窗口或托盘退出时先停止后端;Windows 发行版会强制清理后端进程树,并在启动前清理同路径残留后端。
  • 中文交互统一 - 全局接入 Naive UI 中文 locale,并为会话管理删除确认框显式设置“取消 / 确认”。

修复

  • 发行版端口漂移 - 修复退出 GUI 后后端残留导致下次启动必须更换端口的问题,尤其针对 Windows release 内嵌后端场景。
  • 角色删除 - 角色中心支持删除角色档案和默认策略,同时保留已有会话、记忆和状态板历史数据。

KokoroMemo 0.9.0

Choose a tag to compare

@github-actions github-actions released this 05 May 09:04

发布 v0.9.0

新增

  • 会话管理中心 - 新增独立会话管理页,支持搜索筛选、消息预览、摘要诊断、编辑、删除和打开状态板。
  • 会话批量操作 - 支持多选会话后批量改角色归属、批量套用角色默认策略和批量删除会话记录。
  • 角色合并与记忆排查 - 角色中心新增重复角色合并和记忆污染排查,可查看相关记忆与待审核候选。
  • 首次使用向导 - 设置页新增普通角色扮演、SillyTavern 长会话、RimTalk 殖民地模拟、跑团长篇剧情和仅代理转发预设。
  • 会话配置导入导出 - 会话管理支持导出状态板配置、挂载库和状态项,并支持从 JSON 文件或粘贴内容导入。
  • 日志诊断面板 - 设置页可读取和复制 server.log 末尾内容,便于 Termux 和移动端排查启动问题。

改进

  • 会话归属同步 - 修改会话角色归属时,同步更新聊天轮次、记忆挂载、记忆卡、候选箱和状态板条目。
  • 移动端 WebUI - Web 模式固定使用当前页面同源 API,修复 Termux 下仪表盘误判无法连接后端的问题。
  • 移动端交互 - 移动端改用更稳定的原生滚动容器,并优化抽屉点击和跳转时序。
  • 移动端表单布局 - 设置页移动端表单改为上下布局,移除选项文字前的大块空白。
  • 状态板健康诊断 - 会话状态板显示未选会话、未绑定模板、仅状态板但暂无状态行等诊断标签。

修复

  • WebUI 静态资源 - 修复开发版和二进制版访问 WebUI 返回 {"detail":"Not Found"} 的问题。
  • 空数据角色加载 - 修复角色中心在空数据环境下提示 Failed to fetch 的问题。
  • SillyTavern 角色归属 - 修复同一会话多次输入生成多个角色 ID 的问题。
  • 中文乱码 - 修复会话存储、日志初始化和最新改动中遗留的中文注释与输出乱码。

KokoroMemo 0.8.6

Choose a tag to compare

@github-actions github-actions released this 05 May 08:48

发布 v0.8.6

主要变更:

  • 会话状态板支持为会话设置可读名称,用于快速辨认会话,不改变原始 conversation_id。
  • 新增 PATCH /admin/conversations/{conversation_id} 会话管理接口,并在 conversations.title 上落库保存别名。
  • 会话下拉框优先显示自定义名称,并附带角色、客户端和最近活跃信息。
  • 角色中心的相关会话列表和预览弹窗同步显示会话名称,保留原始 ID 便于排查。
  • 统一将 Python、GUI、Tauri 和 Termux 脚本版本更新到 0.8.6,并更新 CHANGELOG。

验证:

  • npm run build
  • cargo check
  • python -m py_compile app/storage/sqlite_app.py app/api/routes_admin.py
  • python -m pytest -q tests/test_admin_state_api.py tests/test_conversation_policy.py tests/test_regression.py tests/test_port_detection.py tests/test_inbox_review_api.py

KokoroMemo 0.8.5

Choose a tag to compare

@github-actions github-actions released this 04 May 14:00

发布 v0.8.5

修复:

  • Termux 安装稳定版兜底 - 一键安装脚本在无法读取 latest.json 或最新标签资产尚未打包完成时,会自动尝试上一个已发布稳定版,避免发版打包窗口期安装失败。
  • 移动端设置页紧凑布局 - 手机屏幕下压缩卡片和表单标签占位,减少选项前空白,避免“转发模式”等字段挤压输入区。
  • 移动端动态端口重连 - 当配置端口 14514 不可用时,网页界面会通过当前地址的 /.port 发现实际端口并重试,不再一直连接 14514。
  • Android 网页界面首屏速度 - 浏览器模式不再在挂载前串行探测多个后端地址,也不再预加载所有页面分包,Termux 上打开网页界面会优先走同源地址。
  • 配置密钥保存 - 保存设置时忽略空的 api_key 字段,避免设置页未重新填写密钥时覆盖已保存的 API Key。
  • Android Termux 启动健康检查 - 启动脚本现在会等待 /health 真正可访问后才提示启动成功;后端提前退出或端口未监听时会打印 logs/server.log 最近日志,并提示日志文件名是 server.log。
  • Android 实际端口发现 - 修复配置端口 14514 被占用后自动切换到随机端口时,.port 写入位置和启动脚本读取位置不一致,导致 Web UI 仍访问旧端口的问题。
  • Web UI 后端地址校准 - 浏览器模式启动时会通过 /health、/.port、本地缓存和默认地址探测实际后端端口;API 请求遇到旧端口不可达时会重新发现后端地址。
  • 移动端 Web UI 适配 - 修复手机浏览器下布局错位、侧栏折叠入口缺失、点击导航响应慢和“角色”页空数据卡加载等问题。

KokoroMemo 0.8.4

Choose a tag to compare

@github-actions github-actions released this 04 May 09:22

发布 v0.8.4:收敛单包前端产物