v0.17.2: 上下文一致性根治 + 消息差量持久化 + 压缩摘要修复 + 安全层测试补课
CI / verify (push) Successful in 1m53s

- P0: 发送路径用户消息重复注入根治(history-builder 纯模块 + 单测,连带修复 maxCount 截断保留最旧消息缺陷);/undo、/retry 消息删除差量落库(新增 db:getMessageIds/deleteMessages 四层通道);/compress 摘要 role:user + 可折叠卡片渲染 + 旧 system 行读取归一化
- P1: memory search 默认 limit=8;工具缓存键/去重改稳定序列化;run_command 超时联动主进程杀子进程;记忆访问统计写回纳入写入锁;搜索自动抓取单页限幅 8k;Token 趋势采样移出 calculateContextStats 并记录裁剪后值;空白 assistant 幽灵消息跳过入库(新迭代/中止两路径)
- P2: 新增 tool-security(18 用例,平台自适应)与 history-builder(11 用例)测试;帮助/README/DEVELOPMENT 文案与代码事实对齐;vendor 失效 sourcemap 与 .npmrc 弃用配置清理;备份导入携带 attachments 修复
- 版本号升级 0.17.2(5 文件白名单);typecheck 零错误 / 301 测试通过 / 构建通过
This commit is contained in:
2026-09-08 16:32:28 +08:00
parent b66945c8a7
commit 3fb293c618
26 changed files with 789 additions and 201 deletions
+4 -3
View File
@@ -1015,6 +1015,10 @@ function calculateTotalTokens(messages: OllamaMessage[]): number {
/**
* 统一上下文统计 — 单次计算替代多次遍历
*
* 注意:本函数是纯计算(无副作用)。Token 趋势采样(recordTokenUsage
* 由调用方在合适的频率执行——本函数在 OBSERVING 中一轮内会被调用多次,
* 若在此处采样会导致同一轮被记录多个数据点,趋势预测失真。
*/
export function calculateContextStats(
messages: OllamaMessage[],
@@ -1031,9 +1035,6 @@ export function calculateContextStats(
const usageRatio = numCtx > 0 ? totalTokens / numCtx : 0;
const msgCount = messages.length;
// 记录当前迭代的 token 使用量(必须在 predictContextOverflow 之前调用)
recordTokenUsage(contentTokens, numCtx);
// 压力等级计算(内联,避免重复遍历)
let level: ContextPressureLevel;
const actions: string[] = [];