Repository navigation
v0.9.4
补齐发现处置与交付预检,增加工作区文件保护、运行体检和短时缓存诊断;同时统一
Token 汇总与实时事件顺序,修复提示词升级保护和覆盖豁免范围。不改变黑板架构、
经典模式的探索分组、模型配置或意图发散规则。
本次重发补充:缓存计量兼容(Norma v0.5.12)
- 升级正式 SDK:OpenAI 兼容 DeepSeek
prompt_cache_hit_tokens与网关
opencode.tokens.cache_read;Anthropic 标准缓存字段缺失时兼容同一网关读取字段。 - OpenAI 流式 usage 按请求内逐字段高水位合并,后帧缺字段不清零,累计值重复/回退
不双计;新请求与空响应重试独立。标准字段明确为零时不被更大扩展值覆盖。 - 无效/空扩展字段不会破坏标准用量,不猜测未知输入、输出或写缓存扩展的语义。
新增 BLADE 完整 Provider 路径的流式/非流式回归;不更改请求前缀、模型配置或探索策略。
使用与兼容提示
- 本次重发安装包已包含 Norma
v0.5.12。同名0.9.4安装包与校验值已重新生成;
已安装旧0.9.4的实例通常不会检测到同版本更新,请手动下载新包或从新源码编译,
并使用本次 Release 的SHA256SUMS校验。 - 新入口:系统 → 运行体检(
/system/diagnostics)。只读指标不会为采样主动请求
模型或目标;结构诊断默认关闭,页面可开启 10 分钟窗口(最长 30 分钟)。样本仅存进程
内存,重启即丢失;通过环境变量开启的诊断仍需调整环境并重启后关闭。 - 工作区现有文件写入需要读取返回的
version;同名上传先预览并提交确认的
expected_versions。旧脚本若依赖无条件覆盖,应更新调用方式;聊天附件独立命名不受影响。
这是乐观并发保护,不是对任意外部进程提供全盘写锁。 - 发现处置现在可以填写置信度、反证、补证缺口和撤回原因;SRC 导出有缺项时需要明确
确认仅下载草稿,原始证据不改写。升级不会猜测回填历史缺失用量或已丢失的追加段。
实用功能:处置交付、工作区保护与运行诊断
- 发现处置:全局列表、任务发现与详情共用状态/置信度表单;排除、补证和撤回要求填写对应依据,不改原始证据。
- SRC 下载前预检:先展示报告与证据缺项;有缺项时显式确认仅下载草稿,保留人工决定、不强制阻断导出的原有语义。
- 工作区保护:读取返回版本,小文件按内容 SHA256 校验,大文件按大小/纳秒修改时间确认覆盖;现有文件写入必须提供版本,同名上传先预览确认。
写入暂存后原子替换,并在替换前再次检查版本;文本编辑冲突保留草稿,离开/关闭提示未保存内容。聊天上传继续使用独立命名,不受覆盖确认流程影响。 - 运行体检:新增只读页面,展示资源、数据库等待、活动入库失败、HTTP 与模型延迟指标,并可跳转日志。
- 缓存诊断:逐调用计量无需录制正文;结构诊断默认关闭,可手动开启 10 分钟窗口,到期自动关闭。
仅保留进程内近 30 分钟、最多 256 条结构哈希/长度/断点与白名单 usage 数值,重启丢失;不修改请求、模型或探索策略,不存正文、头或凭据。
首个诊断样本不冒充模型会话首调,无样本/证据不足明确标记原因未知;原始累计 usage 帧不能与计量台账相加。
缺陷修复:实时流、提示词迁移与审计豁免
- 活动流乱序漏帧:同一探索的活动在取得序列 ID 前获取事务级顺序锁;普通活动、
漏洞跟进事务及意图删除的计量 rollup 共用该锁。SSE 把广播当作唤醒信号,从数据库按
已提交 ID 补齐记录,先广播较大的 ID 也不会跳过较小的已提交事件;保留有界重放和重连。 - 跨任务历史串入:历史首页、较早页与首屏引导请求都有独立生命周期;切任务/卸载时
统一取消,迟到成功、失败、分页和滚动回调不能改写新任务。标记不再复用归零后的数字。 - 提示词升级保留用户追加段:正文迁移使用 SavePromptWithAppend,保留 append_text;
新旧迁移共用精确内置正文判定,不再因为自定义正文含“槽位利用率”等词就整份重置;
读取或保存失败不置迁移完成标记。已丢失的历史追加段不擅自回填。 - coverage 豁免范围:只有未指定资产和风险类的豁免才能跳过整个覆盖审计;单格/
单资产/单风险类豁免只作用于匹配范围,其他失败格与浅资产仍会阻断。审计深度门识别
精确豁免,但 DoneAreas/覆盖计数不会把豁免冒充实测结果。 - 迟报缓存及累计输出计量(Norma v0.5.11):输入、缓存读写和输出逐字段维护请求内
高水位,仅发增量;start 已报 input 时,delta 仍可补报 cache,重复累计 output 不双计。
历史缺失用量不自动估算回填。 - P20 race 竞态:策略停摆出厂参数改为常量,测试使用独立 Engine 配置,不再修改
仍在运行的协调器共享参数。
修复
- 单任务详情指标:
GET /api/tasks/{id}复用任务列表的指标填充逻辑,Token、
目标进度、运行中 Worker、漏洞分级与最近活动不再返回未填充的默认零值;
Token 仍按已结算result汇总,不重复计入usage或工具事件。 - 会话 Token 实时汇总:完成合计、会话边界与最新未结算 usage 从同一数据库快照返回;
前端按事件 seq 合并,修复轮询先到时重复加、SSE result 先到时暂时少计,以及刷新后漏掉
未打开 Worker 会话已有的 usage。重复/乱序帧与旧轮询响应不会回退计量水位。 - 无样本命中率:仪表盘与会话页统一为
—(不再把零输入显示为 0.0%);非有限值不伪造
百分比,缓存读大于输入显示“数据异常”。
排障
- 新增默认关闭的
BLADE_LLM_CACHE_DEBUG=1:只记录请求结构哈希/长度、缓存断点位置与原始
usage 数值,不记录提示词、目标内容、响应正文或凭据。用于区分 Planner 零命中的前缀变化
与兼容网关迟报字段;本次不更换模型/探索策略,不宣称已定位或修复真实 Planner 全零命中。