github tall-1997/OpenMinis-Linux 2.0.7-linux

latest releases: 2.0.90-linux, backup/pre-274-20261106, 2.0.83-linux...
one month ago

Minis Ultra 2.0.7

versionCode 207,包名 com.openminis.linux。

压缩机制重整

用户反馈「老是压缩不了」的根因不是压缩函数失效,而是三条结构性缺陷。本次按普适性重做(结论不依赖任何单个会话的日志):

读侧:脱锚不再丢弃摘要

  • v2 锚点模型依赖锚点消息留在 400 条有界 agentHistory 内。会话一旦超过窗口,锚点必被挤出——这是数学必然,不是故障。
  • 旧行为:锚点解析失败即降级全量历史,每一轮都丢弃已生成的摘要,会话永远超预算且无法自愈。
  • 新行为:改为「摘要 + 最近 60 条原文」注入,只记录一次脱锚日志。摘要是独立数据,不该因锚点定位失败而整块丢掉。

触发面:补齐最需要的场景

  • 32K–64K 窗口模型过去永久禁止自动压缩(compactThreshold=0)。有界工具历史远比「摘要 + 短尾」昂贵,拒绝压缩只会确保撞上上限。现在该档在窗口下方 15k 触发,早于 offload 线。
  • _lastTurnContextTokens 只在 usage chunk 刷新,工具密集期评估基于陈旧值甚至 0。新增 contextTokensForPolicy():取 max(真实 usage, 历史估算),估算按 ASCII 0.25/字符、CJK 0.6/字符(经典 len/4 对中文低估约 4 倍)。

执行侧:失败不再直接截断

  • 两档全败后新增降体积重试:先用最近 3/5 的消息范围 + 旧摘要再试一次,成功则保住最近轮次。截断成为真正的最后手段。
  • 新增摘要质量闸:长度不足 120 字符或未回显用户最新指令内容词的摘要按该档失败处理,交由下一档/降级链重试。检测复用分块检索的分词器(ASCII 词 + CJK bigram),避免 4-gram 被 "trailing" 这类通用填充词误判通过。

分块摘要池 + 检索注入

  • compact_markers 新增 summary_chunks 列(迁移 17→18,纯增量,旧行 NULL 走原路径)。每次压缩把当次摘要作为一个块滚入池,保留最近 8 块、单块上限 4000 字符。
  • 读侧按当前指令做关键词检索,注入命中的最多 3 块(按时序排列),池内单块时与原行为逐字节一致。完全无命中时回退最近一块。
  • 解决 v2「每次压缩把上一个摘要整体替换、最早的材料彻底消失」的问题。

兼容性

  • 数据库 17→18 为纯加列迁移,保留 MIGRATION_18_17 降级路径;DatabaseVersionGuard.CODE_DB_VERSION 同步至 18。
  • 会话数据库、沙箱、Provider HTTP 协议、JNI、备份格式保持兼容。
  • 可在已安装 2.0.6(versionCode 206)的同签名设备上直接覆盖升级。

验证

  • 新增 CompactResilienceTest(质量闸 + 降级输入裁剪)、CompactChunkPoolTest(分块池维护、中英文检索、CJK bigram 分词、无命中回退)、CompactDetachedAnchorTest(脱锚组装、角色对齐、窗口裁剪)共 18 项。
  • 更新 InLoopContextPolicyTest 的 32K–64K 档断言以匹配新策略。
  • 全量 1730 项单元测试:1729 通过。
  • 唯一失败 SecurityGateImplTest.fatalBansRmRfRoot 为 2.0.4(82267c6)引入的既有基线红:致命确认判定被前置后,ASK 模式下 rm -rf / 返回 NeedConfirm 而非 Denied。本次改动 0 文件触及 security 目录,与之无关。该测试与本次一并修复。

Don't miss a new OpenMinis-Linux release

NewReleases is sending notifications on new releases.