Repository navigation
Releases: JiewiW/dsh-derive-watcher
Release list
v0.4.0
dsh-derive-watcher v0.3.3
v0.3.3
设置页 UI 改造:每个设置项名称下方显示源码内部变量名(源码键:xxx),并将大量参数折叠进「高级参数(N 项)」区,默认收起。
- 总开关(enableJourney / enableInjection)与生成小结、塞回上下文、判断新旧内容、发现卡死等核心项保留前台
- 其余 17 项参数分组折叠(4+4+9:墙钟观察 / 文件存放 / 静默中断专家项)
- 此版本已在隔离 profile 独立端口验证通过,无插件加载异常
v0.3.2
发布准备(npm pack 净化)
v0.3.1 的 package.json files 字段用了目录通配(replay/、test/),npm 走该字段时 .gitignore 完全失效,导致 tarball 打包进了 replay/transcripts/ 下的真实会话录音(12.7MB + 7.7MB)和全部 12 个测试文件,pack 体积 4.2MB、unpack 22.9MB。
修复:files 字段改为精确白名单,逐项列出要打入包的文件。
变更清单
files精确化:只保留 lib/、README.md、LICENSE、cordis.patch.yml、docs/events.md、replay/README.md、replay/replay.mjs、replay/expected-ranges.json、replay/p2-25/;排除了 replay/transcripts/(真实会话 jsonl,12.7MB + 7.7MB)、replay/replay-ledger/(运行时账本)、test/(全部 12 个 .test.js)、replay/dump-sessions.mjs(开发工具)- homepage / bugs 补全:package.json 补 homepage 和 bugs.url 字段(此前缺)
- 测试回归:236 用例全绿
Pack 结果
- tarball 大小:4.2MB → 125KB
- unpack 大小:22.9MB → 382KB
- 文件数:62 → 25
- shasum:
72f3edc367fbc21e8006f12ba1e844f685b4e57d
v0.3.1
v0.3.0:静默中断识别与原窗口主动续跑(P1)
新增:静默中断识别与原窗口主动续跑(P1)
回合被步限/上限/运行时错误打断、且没有面向用户的结论时,插件识别为静默中断,可按设置自动在原窗口续跑。
四种动作模式(设置 → 静默中断 → 动作模式)
- off:不检测
- notify:仅告警(默认,fail-safe)
- followup:自动续跑(原窗口 followup 拉起新回合)
- goal-resume:目标优先续跑(blocked/paused 目标走 goals.resume,回退 followup)
安全闸
- 每会话最多自动续跑 3 次(真人消息接管后清零)
- 回合结束后 15 秒冷却,给真人和其他插件让位
- 真人消息/其他续跑在场则放弃介入
- 续跑后 3 步内无进展或未调用工具 → 升级人工
- 错误码命中(401/403/signed-out)只告警不重试
可观测
- 六类事件:detected / cancelled / resume-sent / resolved / escalated(+zombie-detected 占位)
- timeline 归入干预通道,GUI 徽标区分「已续跑 / 已升级人工」
测试
- silent-abort 测试套件 T1-T6 全覆盖;全量 247/247 pass
v0.2.2 设置与时间线文案人类化
这一版做了什么
把「语义旅程监视」插件的所有设置项与时间线卡片,从内部代号与术语改成普通中文。
设置面板
- 22 个设置项的名称与说明全部重写为日常说法,不再出现内部代号与英文缩写。
- 设置项按用途重新分组:总开关 / 生成小结 / 塞回上下文 / 判断新旧内容 / 发现卡死 / 文件存放。
- 「判断新旧内容的方式」由自由输入框改为下拉选择,三种方式写明差异:结构检查(默认,最快最省)、语义相似度(更准,需要向量模型)、两者都用(最准,稍慢)。
- 能力条文案改为「AI 自动总结 / 卡死拦截 / 自动塞回小结」,记录目录改称「记录存放目录」。
时间线卡片
- 干预卡片的标题与摘要不再显示内部代号,直接说明发生了什么、是否已经生效。
- 停滞等级改为「停滞等级 N 级」。
- 无法识别的卡片标题统一显示「类型未知」。
兼容性
- 只改显示层。内部保存的取值、配置文件格式与既有行为完全不变,无需修改已有配置即可升级。
- 内部标识符保持不变,以保证历史记录与已落盘的样本可正常解析。
升级方式:覆盖插件目录后重启 DSH 即可。
v0.2.1:总结器路由缺失修复(语义条目全量落 gap)
v0.2.1:总结器路由缺失修复(语义条目全量落 gap)
本版本是修复性发布。修复前,所有会话的语义条目 100% 落成 gap——timeline 上只能看到心跳与一条降级事件,看不到任何结论推进。
根因
总结器调用 LLM 时没有传 provider / model,内核按 undefined 路由,返回 NO_ADAPTER;该失败被归类为「草稿解析失败」,于是每条 assistant 消息都写一条 type: gap 记录,type: entry 恒为 0。实测某会话 83 条明细 全部 是 parse-error,全库累计 3267 条 gap、0 条 entry。
修复
- 总结调用补路由:默认跟随触发消息的 provider / model,可用
summaryProvider/summaryModel覆盖。修复后同一会话在数分钟内即产出真实结论条目(finding / plan)。 - 失败分类透出:按
NO_ADAPTER(无可用模型路由)/timeout(调用超时)/ 草稿解析失败 / 模型空回复 四类分别归类,原因随 gap 一同落账本,不再一律记成「解析失败」。 - 超时日志:
onMeta增补aborted分支日志(耗时、provider、model、purpose),便于区分「真等满超时」与「瞬间秒拒」。
timeline 新增 gap 来源(四来源 → 五来源)
- gap 不再隐形:每条总结跳过都会在 timeline 上成为一张卡片,标题为该原因的可读文案(「总结跳过:无可用模型路由」/「总结跳过:调用超时」/「总结跳过:草稿解析失败」/「总结跳过:模型空回复」/「总结跳过:其他故障」,缺 grade 时为「总结跳过(原因未知)」),并带 grade 原因徽标。
- 心跳事件默认折叠,面板顶部新增「显示心跳」勾选可展开;折叠时卡片数一并提示,避免心跳刷屏掩盖真实结论。
- 观察组补 step 范围:折叠态直接显示该组覆盖的
step区间,便于定位。 - 排序优先级:
intervention→watcher-event→milestone→gap→journey→observation(同时间戳、同步号时按来源优先级)。
升级提示(重要)
- 客户端(右栏 UI)刷新页面即生效(插件客户端半边由 combo 打包,无需重启)。
- 宿主侧改动需要重启一次
dsh web才会加载新的 host 模块。
测试
- 用例 133 → 134(新增 per-call provider/model 覆盖闭包与 failure 透传用例),
npm test全绿。 - 零第三方运行时依赖,peerDependencies 范围不变。
安装:dsh plugin --profile <profile> add github:JiewiW/dsh-derive-watcher#v0.2.1
v0.2.0 右侧栏 timeline
v0.2.0 右侧栏 timeline
把语义监视者的后台观察记录与 step-governor 干预全程,合并成 DSH Web 右侧栏一条纵向时间线。
新增
- 右侧栏「语义监视」选项卡:归并五类来源并按时间倒序——
intervention:stall-2/3 的 L2 干预受理结果(deny-read / reject-step),醒目卡片展示动作、所在 turn/step、是否受理、TTL 与解除步(expiresAtStep)watcher-event:其余semantic-watcher/*事件(stall / heartbeat / handoff-written 等)milestone:里程碑折叠产出journey:语义旅程条目(含重复标记)observation:每步 reasoning/text/产物观察(默认折叠可展开)- 支持会话切换(语义账本 ∪ 内核 sessionQuery 并集,带标题/cwd/live)、每 5 秒自动刷新;时间戳兼容 ISO 字符串与毫秒数字;脏 JSONL 行自动跳过
- 新事件
semantic-watcher/intervention:stall-2denyToolCategory/ stall-3rejectStep成功受理后发出;必带action/accepted/code/level,ttlSteps/expiresAtStep/pending仅取 L2 真实返回值,缺失省略不编造;发射 fail-soft,L2 失败仍走execution-unavailable - host 只读路由:
GET /plugins/derive-watcher/timeline/sessionsGET /plugins/derive-watcher/timeline?sessionId=<sid>&limit=<n>(limit 默认 200、上限 1000;缺 sessionId 返 400、无账本返 404)- sessionQuery 不可用 / listEvents 抛错时自动降级(扫账本目录 / 事件源置空并带 warnings),不返回 5xx
升级提示(重要)
- 客户端(右栏 UI)刷新页面即生效。
- 宿主侧两个新路由需要重启一次
dsh web才会注册——插件 host 模块不热加载;未重启时右栏会显示「timeline 接口不可用,重启 dsh web 后即生效」的优雅空态,不影响既有设置页与其他功能。
测试
- 用例 117 → 133(新增 intervention 受理埋点 7 个、timeline API 9 个),
npm test全绿;测试改为串行(--test-concurrency=1)以避免共用全局 settings.json 的用例互相踩踏。 - 零第三方运行时依赖,peerDependencies 范围不变。
SHA-256 校验 / 安装:dsh plugin --profile <profile> add github:JiewiW/dsh-derive-watcher#v0.2.0
v0.1.1 — 空转治理整改(FIX-01/05/06)
v0.1.1:空转治理整改(FIX-01 / 05 / 06)
本版本为修复性发布,同时是本仓库在 GitHub 上的首个正式 Release。
修复与增强
- FIX-01 user/message 双形状兼容:
user/message事件处理同时兼容data.source直挂与data.message.source嵌套两种载荷形状;插件自身来源(source.plugin)正确防回环,不误判为用户输入。 - FIX-05 测试运行器收口:
npm test统一为node --test "test/*.test.js",P2-25 回归通过独立npm run test:p225运行;默认套件 117 项全绿。 - FIX-06 P2-25 事务四线回归:新增
replay/p2-25/回归夹具与 11 项断言,覆盖事件形状兼容、停滞升级窗口、inc-1…6、entries 正/负对照,以及关键双形状断言——source.plugin不清零(插件来源不误判)而source.surface=gui负对照仍正确清零;P2-25 回归 11/11 通过。 - Web 客户端半边:补齐插件在 DSH Web 端的客户端注册。
兼容性
- 无破坏性接口变更;两种历史/当前事件形状均被正确处理。