v1.1.5
v1.1.5
适配 DSH Desktop 0.3.14 / @deepseek-ai/dsh 0.1.2-alpha.5。
修复状态灯在标准(非 codebuddy-first)模式下完全不出现,以及状态输出里的希腊字母。
① 状态灯对标准模式完全失明
标准模式下 codebuddy 经全局 MCP 行调用,而 MCP 服务器是独立子进程:既没有 ctx.emit,也拿不到家级插件的 codebuddyCollector 服务,createStatusEngine(null) 更是直接关掉了 publish。家级插件因此从来收不到这条路径的任何数据 —— 灯不是偶发不亮,是压根没有数据源。
改用文件通道:MCP 每次状态变化把快照原子写入(临时文件 + rename)<dsh-home>/codebuddy-indicator-mcp.json,家级插件在响应 /codebuddy-indicator/status 时读取合并。两端都只从自身模块位置推导 dsh-home,不需要端口(webServer.register 不暴露端口,且端口实测会变)。
② 活动明细永远为空(静默失败)
通道打通后 current/trail 仍全空。根因:child.stdout 未声明编码 → 'data' 派发的是 Buffer → createLineStream.pushChunk 只接受字符串(非字符串静默 return)→ engine.foldEvent 从不触发。这个失败完全无声:result 事件是从累积字符串解析的,所以 tokens/session/状态全都正常,只有实时明细缺失。修复用 setEncoding('utf8')(而非 String(d),后者会在多字节 UTF-8 跨 chunk 边界时乱码)。
另加过期保护:快照带 updatedAt/pid,超 90s 未更新且仍 running 的按「进程已死」降级,否则灯会永久转圈。
③ 状态输出改为纯 ASCII
renderStatus 此前用希腊字母 Σ 当合计记号(| Σ 1 runs · 25268 tokens),改为 total 1 runs, 15 tokens。
实测
修复前整段调用端点恒为 projects: [];修复后 state=running 全程可见,端点实测到 cur=Bash#6、typing#0,trail 由 1 增至 12,结束转 ok。
测试:73/73 通过。