[0.3.6] - 2026-05-28
🚀 新功能
- Recall 上下文预算控制 (#71 / #70):新增
recall.maxCharsPerMemory与recall.maxTotalRecallChars配置,按分数顺序裁剪超长条目并丢弃溢出部分,避免长会话因记忆膨胀挤占上下文。 - L1 / L2 / L3 提示词按用户输入语言自适应 (#38):
l1-extraction、l1-dedup、scene-extraction、persona-generation四个 prompt 的自由文本字段现在跟随用户消息语言书写,无需配置locale。 - Embedding
sendDimensions可选关闭:新增embedding.sendDimensions配置项,设为false时省略请求体中的dimensions字段,可对接 BGE-M3 等固定维度模型。 - Gateway 可选 Bearer 鉴权 + CORS 白名单:新增
server.apiKey/TDAI_GATEWAY_API_KEY与server.corsOrigins/TDAI_CORS_ORIGINS,启用后非/health路由需携带 Bearer token,constant-time 比较防时序攻击。Hermes Python 客户端同步支持MEMORY_TENCENTDB_GATEWAY_API_KEY。 - Offload
collect模式:新增offload.mode: "collect",仅执行数据采集而不触发 L3 压缩,适用于纯数据积累或调试场景。
🐛 修复
- L2 LLM 失败导致
scene_blocks/被清空 (#88):LLM 抛错时自动从最新备份恢复scene_blocks/,fail-soft 设计。 - 场景文件名含空格导致 Persona Scene Navigation 引用失效:新增
filename-normalizer.ts,在SceneExtractor.extract中自动归一化文件名。 api.runtime.state为undefined导致注册崩溃 (#78 / #85 / #79):加可选链 + fallback,支持runtimeState.resolveStateDir()→OPENCLAW_STATE_DIR→~/.openclaw三级降级。contextEngineslot ID 与插件名不一致:改为memory-tencentdb,避免openclaw doctor --fix重置 slot。- L1.5 settle 永不返回导致 L2 卡死:增加 60s 超时,未配置 Context Engine slot 时自动 force-settle。
- Standalone 文本任务仍暴露工具 (#58 / #59):
enableTools=false时彻底不传工具列表。 - L2 cold-start skip 误更新
l2LastRunTime:仅在确实运行过时更新时间戳。 sanitizeText误删 emoji / CJK / Math Bold 等非 BMP 字符 (#30 / #31):正则加uflag,只匹配孤立 surrogate。- Emergency 截断在
MIN_KEEP拒绝下死锁:新增_emergencyTruncateOversized,兜底强制删除并配对清理。 - 多轮 aggressive compression 累计耗时:由 6 轮全量 tiktoken 改为单趟精确切点,615 条消息 84s→14s。
- FP-HEAD-DELETE 误删新消息:改用
FP-BOUNDARY-DELETE+BOUNDARY-INCR-SKIP,重放场景 38s→122ms。 - 首次 assemble 慢:增加 fast-token-estimate 前置短路,29s→1.4s。
- Token 计算精度:
details加入INTERNAL_KEYS;l3TiktokenEncoding默认改为cl100k_base。 - Dockerfile.hermes 生成的
config.yaml缺api_key(#77 / #81):同步写入model.api_key。 - 安装脚本多处问题 (#18 / #19 / #20 / #54 / #55):支持
HERMES_AGENT_DIR覆盖、root 不再递归su、systemd 环境用绝对路径 node。 - Cleaner 安全加固:拒绝无效 cutoff、
expired/total > 80%阻止删除、最小保留护栏。
✨ 改进
l3TiktokenEncoding默认改为cl100k_base,匹配主流国产/开源模型分词器。- Offload 日志降级:
AGGRESSIVE/EMERGENCY等降到 debug,仅超 10s 输出 WARN。 - Docker 文档补充
cd docker/opensource前置步骤;新增 question/consultation issue 模板。
⚠️ 配置项变化(向后兼容)
| Key | 默认值 | 说明 |
|---|---|---|
recall.maxCharsPerMemory
| 0
| 0/未设置 = 不裁剪
|
recall.maxTotalRecallChars
| 0
| 0/未设置 = 不裁剪
|
embedding.sendDimensions
| true
| false 时不携带 dimensions,适配 BGE-M3 等
|
l3TiktokenEncoding
| cl100k_base(原 o200k_base)
| 仅在显式依赖 o200k_base 时需手动覆盖
|
Full Changelog: v0.3.5...v0.3.6