Repository navigation
Releases: Leo-sail/dsh-plugin-agent-collaboration
Release list
v0.3.5 — 长任务活跃豁免
0.3.5 — 长任务活跃豁免
长任务运行期间,工具调用不再被误判为“无进展”。
修复
tool/call/tool/result区分记成tool-start/tool-end。- 运行中的工具被认定为真实进展:不再触发「运行无进展,已停止」;
过期的 deadline 会向后滚动(受总上限约束),工具结束后恢复普通判定。 - 适合长时间 shell / 编译 / 下载 / 深挖任务。
验证
- 无进展下限 5 秒、总预算 10 秒的隔离环境里,真实
sleep 20工具运行 25 秒后正常完成;
3 秒对照在工具启动前即被停止。 - 全量测试 542/542;core tsc/build 通过。
版本
- bundle 0.3.5
- core 0.3.4
- tools 0.3.2 / ui 0.3.9 无代码变化
安装:
dsh plugin --profile <profile> add dsh-plugin-agent-collaborationv0.3.4 — 论文驱动优化:稳定性、记忆、协作与 UI
0.3.4 — 论文驱动优化:稳定性、记忆、协作与 UI
本版把论文库扫描后的 P0/P1/P2 机制全部落地,并完成真实任务测试。
稳定性与完成质量
finish_task证据门:文件/消息/任务证据,失败可修正,第 3 次 bypass 标记未验证- Prompt 契约 v4:固定段序 + 上下文角色隔离 + 压缩安全 pin
- 任务板 schema、角色写契约、乐观锁事务
- 记忆质量标签/三态/纠正衰减/晋升门控;单张可编辑「群经验卡」
可观测与安全
- RunEvidence + faultSide + finishPath;按段上下文成本
- 审批–执行绑定(pre-execute 捕获 + 审批后 guard)
- 失败/空回复时在会话中就地显示灰色诊断原因
- 群经验卡 / 成员管理 / 引用回复 UI
协作
- 意图订阅 + 声誉观察
- 目标感知注意力
- 文件优先 handoff(复制 + 通知 + 唤醒)
- 结构化弃权、引用线程、历史先验/难度预算、路由确定性短路
验证
- 全量测试 541/541
- 真实任务:leader 文件证据门 passed、经验卡自动生成、真实文件 handoff 成功
- npm 安装解析:bundle 0.3.4 → core 0.3.3 / tools 0.3.2 / ui 0.3.9
安装:
dsh plugin --profile <profile> add dsh-plugin-agent-collaborationv0.3.3 — 未读角标按回复计数:多条未读不再折成 1
fix(unread): count one notification per bot run, not one per bot turn User report on 0.3.2: "a bot DM / group has many unread messages, but the badge shows only 1." Root cause: unreadByRoom collapsed rows by (speaker, turn), where a turn is everything since the user's own last message. Scheduled work breaks that assumption — four hourly bot-schedule runs produced four unread replies with no user message in between, and the badge said 1. The real board showed exactly that: four unread bot messages from four different runIds, badge 1. A run is the unit a reader perceives as one answer, so every distinct run now counts once. The two cases the collapse existed for stay covered: - a bot's own agent_community_post_message row in the same turn does not add a second notification when that speaker already has a run in the turn (the old group case: three bots answer one message + one extra post => 3, not 4); - a single run that wrote two rows still counts once. Rows with no run id fall back to one per (speaker, turn); empty-text placeholders are still excluded. Verified directly against the pure function (4 runs => 4; 3 runs + post => 3; loose posts => 1; single run => 1; two turns/two runs => 2; placeholder excluded) and in the isolated DSH instance + headless Chrome (see task-6 report). Host-side change only: UI is unchanged and DSH must be restarted to load it. Versions: core 0.3.2, bundle 0.3.3 (ui stays 0.3.8, tools 0.3.1).
v0.3.2 — 未读角标:在会话界面里就是已读
修复 0.3.1 实机反馈的未读角标问题:明明停在某个 Bot 单聊 / 群聊的会话界面里,该房间的未读角标依然显示,必须切到别处再切回来(或点左侧房间)才消失。
根因(0.3.1)
两个规则叠加:
- 只有"显式点击房间"才算已读(
userSelectedId)。面板打开时自动选中的房间、以及切 tab 后自动选中的房间,都不推进已读水位——所以人已经坐在会话里,角标仍然亮着。 - 打开房间之后到达的回复被刻意保持未读,等下次重开房间才清零。代价就是:正在看的回复已经显示在屏幕上,角标却一直挂着。
修复(0.3.2)
规则改为「屏幕上的房间即已读」:
- 自动选中与点击同一规则:房间一显示在前台,它已有的未读在数百毫秒内清零(房间行 / tab 点 / 侧栏入口三个角标同源)。
- 停留期间到达的新回复立即计入已读,角标不会出现常驻。
- 只有 DSH 窗口隐藏/最小化时到达的消息保持未读,窗口恢复可见后自动清零——这样用户回来时看到的数字仍然是准的。
- 原防闪烁机制保持不变:每个 (房间, 时间点) 至多一次
markRoomRead,只在宿主确认覆盖全房间时做本地删除,不倒退、不重复。
验证
隔离 $DSH_HOME 实例 + 无头 Chrome(独立验收方执行,非实现方自测):
- 0.3.1 上复现:自动选中房间在零交互下 3.5s 内角标 "11" + tab 红点 + 侧栏入口 "11" 全部保持;停留时真实 bot 回复到达后角标 "1" 出现并保持(两场景均记录 18×200ms DOM 采样与截图)。
- 0.3.2 上全 PASS:自动选中零交互 ≤3s 清零(18 采样全 0、0 闪烁);到达即读同前;未选中房间的未读仍正常显示;隐藏窗口语义(合成 visibility 测试)通过;预览 dock 回归正常;
console.error/pageerror均为 0;markRoomRead真实请求计数 A=1 / B=2 / C=1,无请求风暴。 - 修复构建可从源码逐字节复现(
ui/lib/client.js3,321,934 B,md56630f17b…)。验收报告在证据目录REPORT-UNREAD.md。
安装
dsh plugin --profile <your-profile> add \
https://github.com/Leo-sail/dsh-plugin-agent-collaboration/releases/download/v0.3.2/dsh-plugin-agent-collaboration-0.3.2.tgz装完重启 DSH(客户端半边只在宿主启动时加载)。本机 profile 已直接安装 0.3.2 并通过全部验收。
版本与 npm
ui-agent-community/ bundle 升到 0.3.2;core /tool-agent-community无改动,保持 0.3.1。- 客户端产物大小不变:3.32 MB(gzip 914 KB)。
版本与 npm(已发布)
ui-agent-community实际发布为 0.3.8(本版功能内容与 0.3.2 构建完全一致,仅版本号不同);bundle 0.3.2、
agent-community0.3.1、tool-agent-community0.3.1 均已发布到 npm,npm install dsh-plugin-agent-collaboration@0.3.2
的依赖解析已实测通过。- ui 为什么是 0.3.8:npm 对 bypass-2FA token 发布较大包会转入 staged 审批,且直发会出现「打印成功但版本不可见、重发 409」的
登记问题(npm/cli#9889);最终用npm stage publish+ npmjs.com 2FA 批准发布。 - 上面两条安装命令现在都可直接使用(tarball 或 npm 安装),装完重启 DSH。
v0.3.1 — 面板内自绘预览:PDF / Word / Excel
交付卡片点击后,右侧预览栏现在用真正的查看器打开文件:PDF 用 PDF.js 自绘,.docx 用 docx-preview 直接渲染,.xlsx/.csv 用 SheetJS 虚拟滚动表格;PowerPoint 与旧版 .doc/.xls 仍走宿主 Office→PDF,再进同一个 PDF 查看器。
新增
- PDF 查看器(pdfjs-dist 6.3.289):canvas 自绘,工具栏含上一页/下一页、页码跳转、缩放 −/+/百分比、适应宽度;PDF.js worker 源码在构建期内联进客户端单文件产物,运行时用 Blob URL 启动 module worker(DSH 每个插件只服务一个脚本,这是唯一可行形态)。每个预览独占 worker/loading task,切标签或卸载即取消渲染并终止。
.docx直读(docx-preview 0.3.7):分页 DOM、正文可选中、页宽自适应 + 缩放;渲染后按白名单清理文档内链接;无显式页宽的文档补 A4 兜底。.xlsx/.csv(SheetJS 0.18.5):多工作表标签、冻结表头与行号、固定行高虚拟滚动(20 万行 / 100 列上限)、列宽取自工作簿、日期/百分比/千分位按单元格格式显示;CSV 与 xlsx 共用渲染。- 宿主 RPC 扩展:
readDeliverablePreview对.docx/.xlsx返回原始字节(≤8 MB),超出仍回binary让用户用本机应用打开。 - 预览加载路径收敛:一个 loader 决定「字节/文本/图片/宿主转 PDF」,dock 只负责标签与加载态。
移除
- 交付卡里不可达的旧预览对话框(
DeliverablePreviewDialog/PreviewBody)及其重复加载逻辑。
体积与验收
- 客户端产物
ui-agent-community/lib/client.js:560 KB → 3.32 MB(gzip 168 KB → 913 KB),三个查看器 + PDF worker 全部内联、运行时不联网取资源;许可证见THIRD_PARTY_NOTICES.md。 - 隔离
$DSH_HOME实例 + 无头 Chrome 端到端验收 40/40:PDF 为 pdf.js canvas(非<embed>)、DOCX 分页、XLSX 冻结表头、PNG/MD/CSV/pptx/html/svg/txt/zip 全类型回归;console.error与pageerror均为 0;0.3.0 基线同环境对照留存。独立验收方从源码重建的产物与发布构建逐字节一致。
安装
dsh plugin --profile <your-profile> add \
https://github.com/Leo-sail/dsh-plugin-agent-collaboration/releases/download/v0.3.1/dsh-plugin-agent-collaboration-0.3.1.tgz装完重启 DSH(客户端半边只在宿主启动时加载)。
npm 组件已补齐:
agent-community0.3.1、ui-agent-community0.3.8(0.3.1 查看器功能的发布版本)、
tool-agent-community0.3.1、bundle 0.3.2(依赖^0.3.1/^0.3.2,0.3.8 满足)。上面的 tarball 安装命令现在可用。
v0.3.0 — Bot 交付的文件卡片
0.3.0 — Bot 交付的文件卡片
Bot 现在可以把本轮产出的文件交付给用户:回复下方出现文件卡片,可在面板里预览、用本机关联应用打开、
在 Finder 中定位。卡片形态与 DSH 主会话一致(每回合一组、内含多文件),但数据与打开链路完全在插件内,
不依赖 DSH 的 present 工具或 deliverables/presented 事件。
新增
agent_community_deliver(第 15 个模型工具):files: [{ path, description? }],1–8 个;相对路径按 Bot
工作区解析,绝对路径可指向工作区之外;只接受已存在的普通文件(目录、最终符号链接、缺失路径会被拒绝)。- 卡片组:单文件一行、2–4 个两列网格、>4 折叠;类型图标 + 文件名 + 说明;点击面板内预览
(Markdown/文本分页、图片、PDF),Office/二进制给「用应用打开」。 - 「打开 + 更多打开方式」split 按钮:默认应用、本机关联应用列表(默认项标「(默认)」)、底部「显示文件位置」。
- 持久化:交付随
BotMessage.deliverables落盘,重启后重建卡片;旧状态文件直接兼容(不升版本)。 - 预览走受限 RPC:只按
(room, run, index)读取已声明文件,客户端不能传任意路径;Bot 会话 id 不下发。
文档
- README(中英)工具数 14 → 15 并加入文件卡片说明;验收清单新增「七、文件交付卡」13 项;提示词段数九段。
npm 发布说明
@dsh-plugin-agent-community/tool-agent-community的 0.3.0 停在 npm staged 状态(不能覆盖/删除),
该组件以 0.3.1 发布;bundle 依赖^0.3.0,安装时自动解析到 0.3.1。
Full Changelog: v0.2.2...v0.3.0
v0.2.2
与 npm 上的 dsh-plugin-agent-collaboration@0.2.2 同一份构建。本次修好:DSH 0.2.1-rc.2 移除了 {{cwd}} 提示词变量(未知变量会让 Bot 回合在模型调用前直接失败,表现为"发消息没有回复");模型与提供方现在完全来自 DSH 设置(全部提供方 × 全部模型 × 设置里的显示名与思考档位),新建 Bot 默认取设置里的默认模型,模型菜单按「提供方:模型」区分同名模型,打开菜单时重新读取目录,配置了但不可用的提供方会给出原因。
安装
dsh plugin --profile <your-profile> add \
https://github.com/Leo-sail/dsh-plugin-agent-collaboration/releases/download/v0.2.2/dsh-plugin-agent-collaboration-0.2.2.tgz完整改动见 CHANGELOG.md。
v0.2.1
v0.2.0
v0.1.2
The two install paths work now: the tarball and the npm package both resolve.
Install:
dsh plugin add dsh-plugin-agent-collaboration
or, without npm:
dsh plugin add https://github.com/Leo-sail/dsh-plugin-agent-collaboration/releases/download/v0.1.2/dsh-plugin-agent-collaboration-0.1.2.tgz
Then restart DSH and refresh the page; Bots团队 appears in the sidebar.
What changed. The three component packages used to be vendored inside this tarball and referenced as file:vendor/.... pnpm resolves a file: dependency of a fetched tarball — or of a registry package — against the install root, not against the package that declares it, so dsh plugin add <this tarball> ended in ERR_PNPM_LINKED_PKG_DIR_NOT_FOUND, and so did the npm package built the same way. Only installing an already-extracted directory ever worked.
The three are now published — @dsh-plugin-agent-community/agent-community, .../tool-agent-community, .../ui-agent-community, all 0.1.1 — and this tarball depends on those versions. Registry dependencies resolve wherever they are declared, and hoisting puts them at the profile root, which is where the patch rows and the client module registry look for them.
Nothing is compiled on your machine: the three are published prebuilt, and the @deepseek-ai/* peers come from the DSH installation the plugin is being added to.