dsh-mutipleagent 0.0.0-stage → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +214 -0
- package/CONTRIBUTING.md +49 -0
- package/LICENSE +21 -0
- package/README.en.md +125 -0
- package/README.md +302 -2
- package/SECURITY.md +27 -0
- package/THIRD_PARTY_NOTICES.md +29 -0
- package/assets/agents/MAGPIE-LICENSE +21 -0
- package/assets/agents/README.md +47 -0
- package/assets/agents/antigravity.png +0 -0
- package/assets/agents/claude.png +0 -0
- package/assets/agents/codex.png +0 -0
- package/assets/agents/copilot.svg +1 -0
- package/assets/agents/dsh.svg +1 -0
- package/assets/agents/gemini.png +0 -0
- package/assets/agents/grok.svg +1 -0
- package/assets/agents/hermes.svg +1 -0
- package/assets/agents/kimi.svg +1 -0
- package/assets/agents/omp.svg +7 -0
- package/assets/agents/opencode.svg +1 -0
- package/assets/agents/pi.svg +1 -0
- package/assets/kenney/LICENSE-furniture-kit.txt +23 -0
- package/assets/kenney/LICENSE-mini-characters.txt +28 -0
- package/assets/kenney/characters/Textures/colormap.png +0 -0
- package/assets/kenney/characters/character-female-a.glb +0 -0
- package/assets/kenney/characters/character-female-b.glb +0 -0
- package/assets/kenney/characters/character-female-c.glb +0 -0
- package/assets/kenney/characters/character-female-d.glb +0 -0
- package/assets/kenney/characters/character-female-e.glb +0 -0
- package/assets/kenney/characters/character-female-f.glb +0 -0
- package/assets/kenney/characters/character-male-a.glb +0 -0
- package/assets/kenney/characters/character-male-b.glb +0 -0
- package/assets/kenney/characters/character-male-c.glb +0 -0
- package/assets/kenney/characters/character-male-d.glb +0 -0
- package/assets/kenney/characters/character-male-e.glb +0 -0
- package/assets/kenney/characters/character-male-f.glb +0 -0
- package/assets/kenney/furniture/benchCushion.glb +0 -0
- package/assets/kenney/furniture/bookcaseOpen.glb +0 -0
- package/assets/kenney/furniture/books.glb +0 -0
- package/assets/kenney/furniture/cabinetTelevision.glb +0 -0
- package/assets/kenney/furniture/cardboardBoxClosed.glb +0 -0
- package/assets/kenney/furniture/chairCushion.glb +0 -0
- package/assets/kenney/furniture/chairDesk.glb +0 -0
- package/assets/kenney/furniture/chairModernCushion.glb +0 -0
- package/assets/kenney/furniture/coatRackStanding.glb +0 -0
- package/assets/kenney/furniture/computerKeyboard.glb +0 -0
- package/assets/kenney/furniture/computerMouse.glb +0 -0
- package/assets/kenney/furniture/computerScreen.glb +0 -0
- package/assets/kenney/furniture/desk.glb +0 -0
- package/assets/kenney/furniture/doorway.glb +0 -0
- package/assets/kenney/furniture/kitchenBar.glb +0 -0
- package/assets/kenney/furniture/kitchenCabinet.glb +0 -0
- package/assets/kenney/furniture/kitchenCoffeeMachine.glb +0 -0
- package/assets/kenney/furniture/kitchenFridgeLarge.glb +0 -0
- package/assets/kenney/furniture/kitchenMicrowave.glb +0 -0
- package/assets/kenney/furniture/kitchenSink.glb +0 -0
- package/assets/kenney/furniture/lampRoundFloor.glb +0 -0
- package/assets/kenney/furniture/lampSquareTable.glb +0 -0
- package/assets/kenney/furniture/laptop.glb +0 -0
- package/assets/kenney/furniture/loungeChairRelax.glb +0 -0
- package/assets/kenney/furniture/loungeSofa.glb +0 -0
- package/assets/kenney/furniture/plantSmall1.glb +0 -0
- package/assets/kenney/furniture/plantSmall2.glb +0 -0
- package/assets/kenney/furniture/plantSmall3.glb +0 -0
- package/assets/kenney/furniture/pottedPlant.glb +0 -0
- package/assets/kenney/furniture/radio.glb +0 -0
- package/assets/kenney/furniture/rugRectangle.glb +0 -0
- package/assets/kenney/furniture/rugRound.glb +0 -0
- package/assets/kenney/furniture/sideTable.glb +0 -0
- package/assets/kenney/furniture/speaker.glb +0 -0
- package/assets/kenney/furniture/stoolBar.glb +0 -0
- package/assets/kenney/furniture/table.glb +0 -0
- package/assets/kenney/furniture/tableCoffee.glb +0 -0
- package/assets/kenney/furniture/tableRound.glb +0 -0
- package/assets/kenney/furniture/televisionModern.glb +0 -0
- package/assets/kenney/furniture/toaster.glb +0 -0
- package/assets/kenney/furniture/trashcan.glb +0 -0
- package/assets/kenney/furniture/wallWindow.glb +0 -0
- package/assets/logo.svg +12 -0
- package/assets/scene-icons/arcade.png +0 -0
- package/assets/scene-icons/cafe.png +0 -0
- package/assets/scene-icons/castle.png +0 -0
- package/assets/scene-icons/christmas.png +0 -0
- package/assets/scene-icons/graveyard.png +0 -0
- package/assets/scene-icons/map.png +0 -0
- package/assets/scene-icons/office.png +0 -0
- package/assets/scene-icons/pirate.png +0 -0
- package/assets/scene-icons/station.png +0 -0
- package/assets/scenes/arcade.jpg +0 -0
- package/assets/scenes/cafe.jpg +0 -0
- package/assets/scenes/castle.jpg +0 -0
- package/assets/scenes/christmas.jpg +0 -0
- package/assets/scenes/graveyard.jpg +0 -0
- package/assets/scenes/office.jpg +0 -0
- package/assets/scenes/pirate.jpg +0 -0
- package/assets/scenes/station.jpg +0 -0
- package/client.js +144 -0
- package/cordis.patch.yml +3 -0
- package/harness.cjs +49 -0
- package/package.json +89 -4
- package/public/app.js +1 -0
- package/public/chunks/chunk-MU3LEDFF.js +4305 -0
- package/public/demo-icons/arrow-counterclockwise.svg +4 -0
- package/public/demo-icons/arrow-right.svg +3 -0
- package/public/demo-icons/bell.svg +3 -0
- package/public/demo-icons/box-seam-fill.svg +3 -0
- package/public/demo-icons/chat-left-text-fill.svg +3 -0
- package/public/demo-icons/check-lg.svg +3 -0
- package/public/demo-icons/chevron-down.svg +3 -0
- package/public/demo-icons/cpu-fill.svg +4 -0
- package/public/demo-icons/crosshair.svg +3 -0
- package/public/demo-icons/diagram-3-fill.svg +3 -0
- package/public/demo-icons/file-earmark-code-fill.svg +3 -0
- package/public/demo-icons/fullscreen.svg +3 -0
- package/public/demo-icons/pause-fill.svg +3 -0
- package/public/demo-icons/people-fill.svg +3 -0
- package/public/demo-icons/pie-chart-fill.svg +3 -0
- package/public/demo-icons/play-fill.svg +3 -0
- package/public/demo-icons/search.svg +3 -0
- package/public/demo-icons/shield-check.svg +4 -0
- package/public/demo-icons/stack.svg +4 -0
- package/public/demo-icons/x-lg.svg +3 -0
- package/public/demo.css +225 -0
- package/public/demo.html +67 -0
- package/public/demo.js +7 -0
- package/public/index.html +59 -0
- package/public/style.css +15 -0
- package/public/vendor/office.js +1631 -0
- package/src/codex.js +674 -0
- package/src/demo.js +103 -0
- package/src/harness-watcher.js +584 -0
- package/src/server.js +239 -0
- package/vendor/licenses/BOOTSTRAP-ICONS-LICENSE.txt +21 -0
- package/vendor/licenses/ESBUILD-LICENSE.txt +21 -0
- package/vendor/licenses/MESHOPTIMIZER-LICENSE.txt +22 -0
- package/vendor/licenses/PLAYWRIGHT-LICENSE.txt +202 -0
- package/vendor/licenses/PLAYWRIGHT-NOTICE.txt +5 -0
- package/vendor/licenses/THREE-LICENSE.txt +21 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# 更新日志
|
|
2
|
+
|
|
3
|
+
本文件记录 `dsh-mutipleagent` 每个版本的变化。npm 版本号与 Git 标签一一对应(`0.1.x` ↔ `v0.1.x`),同一份说明也会发布在 [GitHub Releases](https://github.com/lkuliuying/dsh-mutipleagent/releases) 页面,插件市场里的版本说明同样读取这些 release 正文。
|
|
4
|
+
|
|
5
|
+
## v0.4.0 — 2026-11-10
|
|
6
|
+
|
|
7
|
+
办公室从「四个人围着几张桌子」变成一整层真实办公空间。
|
|
8
|
+
|
|
9
|
+
### 新增
|
|
10
|
+
|
|
11
|
+
- 整层办公室场景:`collaborationScene` 重写为 4 列 × 3 行「对坐工位」,12 组共享长桌共 24 个座位铺满 23×21 的房间。每组一张 3.3×2.0 长桌,两位成员隔桌面对面就座(主 Agent 与第一位子 Agent 落在同一组);桌心背靠背双屏、键鼠与副屏各朝自己一侧,桌心再加绿植与文件分隔。
|
|
12
|
+
- 房间补齐家具:前区玻璃会议室(长桌、四把椅、投屏)、沿墙设备柜与 SSD 指示灯阵列、左墙书架与茶水吧、右墙资料柜、后区沙发与茶几,四周铺绿植。
|
|
13
|
+
- 新增「隐藏面板」开关:`web/shell.mjs` 的 `initShell()` 绑定 `#toggle-shell`,一键把顶栏、统计卡、Agent 详情、工具条与任务协作流程全部收起,只留 3D 场景;右下角「显示面板」、再次点按钮或按出 `Esc` 恢复,`H` 键随时切换,状态存于 `localStorage` 的 `office.shell`。
|
|
14
|
+
|
|
15
|
+
### 改进
|
|
16
|
+
|
|
17
|
+
- 镜头对准房间中心并整体拉远(`fitCamera3D` 目标 `(11.5, 0.35, 11.5)`、可视高度 31),整层办公室都入画,底部工位不再被协作流程面板挡住。
|
|
18
|
+
- 室外地坪从 44×44 扩到 440×440 并与背景同色(`#dde5ef`),去掉「悬空平台」的硬边;室内地面、地毯与工位色阶重新分层。
|
|
19
|
+
- 工位台面改为浅色台面 + 蓝色前后沿 + 蓝色端板,12 组并排时不再糊成一片蓝。
|
|
20
|
+
- 地面丝印文案(`COORDINATION` / `AGENT WORKSPACE` / `COLLABORATION LANE` / `VERIFICATION`)与斜纹按新走廊重新定位。
|
|
21
|
+
- 场景里的成员标签会避让顶部统计卡,并按纵向顺序错开重叠,对坐工位上的四个名字不再互相遮挡。
|
|
22
|
+
|
|
23
|
+
### 验证
|
|
24
|
+
|
|
25
|
+
- 新增 `.artifacts/shell-check.cjs`:演示模式截图 4 位成员分坐两组对坐工位;断言点击「隐藏面板」后 `header.nav`、`.stats`、`#agent-details`、`#workflow-dock`、`.scene-tools` 全部不可见、`body[data-shell="scene"]` 生效、`#shell-restore` 出现,`Esc` 后恢复且刷新仍保持。
|
|
26
|
+
- `.artifacts/embed-check.cjs`、`.artifacts/details-check.cjs` 继续通过;`npm run test:plugin:ui` 全部检查项通过(1500×1000 / 900×720 / 390×844 三档视口);`npm test` 84 passed。
|
|
27
|
+
|
|
28
|
+
## v0.3.1 — 2026-11-10
|
|
29
|
+
|
|
30
|
+
会话内标签从「一格里的小画面」变成「整页画面」。
|
|
31
|
+
|
|
32
|
+
### 改进
|
|
33
|
+
|
|
34
|
+
- 打开「多 Agent 办公室」标签时收起会话页底部输入框(宿主源码里的 `[data-conversation-region="composer"]`,`flex: none` 无固定高度,收起后高度直接让给视图区),切回「对话」自动恢复;标签页内不需要打字。
|
|
35
|
+
- 嵌入模式(`embed=1`)收起办公室自己的整条顶栏(搜索、会话下拉、计时、铃铛),协作统计与「Agent 详情」上移到标签页顶部;搜索与通知改用宿主自带的。
|
|
36
|
+
|
|
37
|
+
- 「Agent 详情」面板把「查看任务详情」与「查看屏幕 / 查看任务原文」移到标题下方,左侧任务信息再长也不必先滚到面板底部;底部的「只读真实记录 · 在 DeepSeek Harness 中执行任务」小字删除。
|
|
38
|
+
- 场景左下角的「拖动旋转 · 滚轮缩放 · 点击工位或显示器查看详情」在真实会话里隐藏(与左下角工具条重复);任务协作流程标题下的说明改为单行省略,不再被硬裁。
|
|
39
|
+
|
|
40
|
+
### 验证
|
|
41
|
+
|
|
42
|
+
- 新增 `.artifacts/composer-check.cjs`:以最小 React 桩加载真实 `client.js`,断言挂载时 body 打标、输入框 `display:none`、视图区接管让出的高度、卸载后恢复。
|
|
43
|
+
- `.artifacts/embed-check.cjs` 增加断言:`header.nav` 不可见、`.stats` 顶边对齐 14px。
|
|
44
|
+
- 新增 `.artifacts/details-check.cjs`:1200×820 与 900×640 下打开详情面板,断言动作按钮落在面板可视范围内、`#detail-disclaimer` 已移除、面板未滚动。
|
|
45
|
+
- `tests/plugin-browser.cjs` 增加 `assertDetailsActionsReachable`:紧凑视口打开面板后校验动作区无需滚动。
|
|
46
|
+
|
|
47
|
+
## v0.3.0 — 2026-11-10
|
|
48
|
+
|
|
49
|
+
办公室从「侧栏打开的面板」变成「会话页顶部标签行里的一个视图」,打开即绑定当前会话。
|
|
50
|
+
|
|
51
|
+
### 新增
|
|
52
|
+
|
|
53
|
+
- 注册 `conversation.view`(`id: dsh-mutipleagent`、`order: 30`、标签「多 Agent 办公室」),与「对话 / 轨迹 / 上下文」并列;标签行放不下时进入右侧「更多会话视图」菜单,可在菜单里固定或取消固定。
|
|
54
|
+
- 视图拿到 `inject(sessionId)` 后以 `?mode=live&source=harness&rootId=<会话 ID>&embed=1` 打开办公室页面,切换会话或切回标签时按新会话重载 iframe。
|
|
55
|
+
|
|
56
|
+
### 改进
|
|
57
|
+
|
|
58
|
+
- 嵌入模式(`embed=1`)隐藏工作目录选择器,标题位显示当前会话名;与宿主重复的品牌、模式切换、语言切换、账号区一并隐藏,只留搜索 / 会话 / 通知。
|
|
59
|
+
- 深链 `rootId` 指向的会话不在默认根列表(例如子 Agent 会话)时,以全量列表重试一次,不再停在「未找到该会话」。
|
|
60
|
+
- `dsh.client.inject` 补充 `@deepseek-ai/dsh-client-ui-chat` 与 `@deepseek-ai/dsh-client-ui-conversation`,与被依赖的官方插件保持同样的加载顺序声明。
|
|
61
|
+
- 侧栏 `sidebar.panellist` 入口与全局面板 `main` 注册保持不变,跨项目浏览仍走原来的路径。
|
|
62
|
+
|
|
63
|
+
### 验证
|
|
64
|
+
|
|
65
|
+
- `npm test` 84 通过;`tests/plugin.test.js` 新增会话视图注册断言(id、标签文案、`inject()` 回传会话 ID)。
|
|
66
|
+
- `npm run test:plugin:ui`(1500 / 900 / 390 三档视口)通过。
|
|
67
|
+
- 新增 `.artifacts/embed-check.cjs`:以夹具服务加载嵌入地址,断言目录选择器隐藏、标题为当前会话名、`#scenario` 为对应 ID,并确认不带 `embed` 的深链仍显示目录选择器。
|
|
68
|
+
|
|
69
|
+
## v0.2.1 — 2026-11-10
|
|
70
|
+
|
|
71
|
+
只读真正变化的会话:功能与 v0.2.0 相同,读取路径更省。
|
|
72
|
+
|
|
73
|
+
### 改进
|
|
74
|
+
|
|
75
|
+
- 会话读取改用 `sessionQuery.observeSession()` 的观察租约:租约只给出 header 与日志游标,事件在被读取时才物化。游标未变化的会话不再克隆整份日志,也不再重新折叠;本轮复用数通过 `/api/health` 的 `reused` 字段暴露。
|
|
76
|
+
- 冷会话(宿主没有运行中的实例)走持久化的修订号,日志文件没变时直接复用已恢复的会话,不重读 zstd 日志。
|
|
77
|
+
- 观察不可用(宿主未提供该接口、租约创建失败或会话已被清理)时自动回退整份 `readSession()`,行为与 v0.2.0 一致。
|
|
78
|
+
|
|
79
|
+
### 验证
|
|
80
|
+
|
|
81
|
+
- 84 个测试全绿,新增两条覆盖增量路径:游标未变时不物化事件、租约每次都释放且观察失败时回退整份读取。
|
|
82
|
+
- 已发布到 npm:`npm i dsh-mutipleagent@0.2.1`;安装后 `dsh` 元数据为 `bundle.patch=./cordis.patch.yml`、`client` 存在。
|
|
83
|
+
|
|
84
|
+
## v0.2.0 — 2026-11-10
|
|
85
|
+
|
|
86
|
+
更快、更省,双语界面与可复现的工程流程;功能与 v0.1.3 一致。
|
|
87
|
+
|
|
88
|
+
### 新增
|
|
89
|
+
|
|
90
|
+
- 中英双语界面:默认跟随系统语言,顶栏可切换,选择保存在本地。
|
|
91
|
+
- `/api/health` 返回版本、运行时长、客户端数、会话/成员数、revision、上次读取耗时与轮询状态,便于排查"数据没动"。
|
|
92
|
+
- 静态资源支持 `ETag` / `304` 与 gzip,首次加载后可复用缓存。
|
|
93
|
+
- `npm run screenshots`:用演示数据自动生成 README 与插件市场截图,并写 `screenshots.json`。
|
|
94
|
+
- 安全与协作文件:`SECURITY.md`、`CONTRIBUTING.md`、issue / PR 模板、英文 `README.en.md`。
|
|
95
|
+
|
|
96
|
+
### 改进
|
|
97
|
+
|
|
98
|
+
- 轮询按需:没有页面连接也没有 SSE 订阅时不再定时读会话;页面打开或客户端接入时立即刷新。
|
|
99
|
+
- 折叠结果按日志指纹复用:会话事件没有新增时不再每秒重新折叠全部团队。
|
|
100
|
+
- 构建改用 esbuild 代码分割,`three.js` 只打一份共享 chunk:`public/app.js` 从 731.6 KB 降到 10.5 KB(gzip 4.1 KB),`public/demo.js` 从 814 KB 降到 73.4 KB(gzip 23.2 KB);共享 chunk 790.1 KB(gzip 206 KB),两个页面共用且在切页时命中缓存。
|
|
101
|
+
- 3D 首屏只等家具与前 3 个角色,其余模型后台补齐,单个模型失败也不再阻塞场景。
|
|
102
|
+
- 响应头补充 `referrer-policy`、`permissions-policy`、`cross-origin-resource-policy`,CSP 追加 `object-src 'none'` 与 `form-action 'none'`;面板 iframe 改用 `no-referrer`,并写明同源沙箱的取舍。
|
|
103
|
+
- 仓库工程化:`.gitattributes`、ESLint、Prettier、`npm run check:compat`、GitHub Actions(Node 22.19 与 24 矩阵、浏览器验收、构建产物一致性、发布包清单)与 `npm run release` 一键发布。
|
|
104
|
+
- `engines.dsh` 由 `0.2.2-rc.1` 放宽为 `^0.2.2-rc.1`,同一 minor 内的新预发布不再被判为不兼容。
|
|
105
|
+
- 文档:`design-qa.md` 移入 `docs/`;README 增加截图、FAQ 与贡献入口。
|
|
106
|
+
|
|
107
|
+
### 修复
|
|
108
|
+
|
|
109
|
+
- 修复演示模式下 `/api/health` 抛错的问题(`status()` 与基类的 Agent 状态写入方法重名)。
|
|
110
|
+
- 修复 `src/codex.js` 中报告调用的无用赋值(ESLint `no-unused-vars`)。
|
|
111
|
+
- 修复模型未加载完成时 `actorFor()` 取到空角色导致的潜在空引用。
|
|
112
|
+
- 修正 `vendor/office3d.js` 里过时的打包注释。
|
|
113
|
+
- 修复默认语言误跟 Node 的 `navigator.language` 走的问题:CI(英文环境)上界面默认变英文、中文用例集体失败;现在只有浏览器才按浏览器语言判断,Node 下固定中文,并把 UI 用例的浏览器语言钉在 `zh-CN`。
|
|
114
|
+
- 修复"搜索结果显示中点击没反应":快照刷新时列表会被整体重建,正在点的按钮被摘掉;现在命中集合不变时只更新高亮,不重建 DOM(搜索列表与"模式/会话"下拉同理)。
|
|
115
|
+
|
|
116
|
+
### 验证
|
|
117
|
+
|
|
118
|
+
82 项单元测试(行覆盖 92.7%)、lint / 格式 / 兼容自检通过;CI 在 Node 22.19 与 24 上运行单元测试与覆盖率门槛,并在浏览器里跑 WebGL 与插件面板验收。
|
|
119
|
+
|
|
120
|
+
## 未发布
|
|
121
|
+
|
|
122
|
+
- 无。
|
|
123
|
+
|
|
124
|
+
## v0.1.3 — 2026-11-09
|
|
125
|
+
|
|
126
|
+
屏幕详情、通知中心与 3D 细节。
|
|
127
|
+
|
|
128
|
+
### 新增
|
|
129
|
+
|
|
130
|
+
- 点击任意工位显示器可打开屏幕详情:真实 Agent、状态、任务、模型 / 工具与最近事件;支持 Esc、遮罩和关闭按钮,移动端改为可读文本布局。
|
|
131
|
+
- 通知中心新增「全部已读」与分类图标,窄屏也保留入口。
|
|
132
|
+
|
|
133
|
+
### 改进
|
|
134
|
+
|
|
135
|
+
- 3D 办公室:角色入座、面向显示器并敲键盘 / 动鼠标;屏幕显示当前状态与最近事件;主 / 子 Agent 之间的任务和汇报以「屏幕到屏幕」的光点流线呈现。
|
|
136
|
+
- 顶部「模式」改为下拉选择真实会话 / 演示会话,与目录、会话下拉同一交互,但不需要搜索。
|
|
137
|
+
- 通知中心重做:红点按已读锚点消除,三行摘要更清晰。
|
|
138
|
+
- 墙面标识改为「DSH 控制」「Agent 协作」,中文字体自适应,不再裁切。
|
|
139
|
+
- 根会话上限从 60 提升到 500,按创建时间倒序;超过上限会提示总数。
|
|
140
|
+
- 搜索支持跨目录会话标题,选中后自动切换目录并清理查询。
|
|
141
|
+
|
|
142
|
+
### 修复
|
|
143
|
+
|
|
144
|
+
- 修复跨目录打开时的假错误提示。
|
|
145
|
+
- 修复 390px 宽度下搜索结果被遮挡的问题。
|
|
146
|
+
|
|
147
|
+
### 验证
|
|
148
|
+
|
|
149
|
+
76 项单元测试、25 项浏览器验收,以及 Harness `0.2.2-rc.1` 实际 SDK 的隔离加载检查通过。
|
|
150
|
+
|
|
151
|
+
## v0.1.2 — 2026-11-09
|
|
152
|
+
|
|
153
|
+
可搜索下拉与输入交互改造。
|
|
154
|
+
|
|
155
|
+
### 新增
|
|
156
|
+
|
|
157
|
+
- 工作目录与会话下拉支持直接搜索,长路径和同名会话更容易区分。
|
|
158
|
+
- 下拉支持方向键、Home / End、Enter、Escape 和 Tab 交互,避免中文输入法组合期间提前选择。
|
|
159
|
+
|
|
160
|
+
### 改进
|
|
161
|
+
|
|
162
|
+
- 搜索框和会话选择控件统一为蓝白风格。
|
|
163
|
+
- 实时更新保留筛选、焦点和高亮;搜索收起后重新打开时使用最新团队数据。
|
|
164
|
+
- 适配团队弹窗、手机触屏、空会话状态与减少动画设置。
|
|
165
|
+
- 保留目录联动、地址与选择记忆、仅跟随当前目录等规则。
|
|
166
|
+
|
|
167
|
+
### 验证
|
|
168
|
+
|
|
169
|
+
75 项测试通过,浏览器交互验收通过,Harness `0.2.2-rc.1` 实际 SDK 的隔离加载检查通过;未新增依赖或后端接口。
|
|
170
|
+
|
|
171
|
+
## v0.1.1 — 2026-11-09
|
|
172
|
+
|
|
173
|
+
工作目录与会话两级选择。
|
|
174
|
+
|
|
175
|
+
### 新增
|
|
176
|
+
|
|
177
|
+
- 先选择工作目录,再选择该目录内的会话;完整路径区分同名目录。
|
|
178
|
+
- 会话显示真实标题、创建时间和短 ID;未记录目录的会话单独归组。
|
|
179
|
+
- 记住上次选择,明确指定的会话地址优先;仅跟随当前目录的新会话。
|
|
180
|
+
- 窄窗口通过「会话 / 团队」使用同样的目录筛选。
|
|
181
|
+
|
|
182
|
+
### 修复
|
|
183
|
+
|
|
184
|
+
- 修复会话列表大量显示同名目录、难以辨认具体任务的问题。
|
|
185
|
+
|
|
186
|
+
### 验证
|
|
187
|
+
|
|
188
|
+
41 项相关回归、Chrome 桌面与紧凑窗口检查、原有页面兼容检查,以及真实 Harness SDK 的隔离冒烟检查通过;检查未调用模型、未读取真实用户会话。
|
|
189
|
+
|
|
190
|
+
## v0.1 — 2026-11-09
|
|
191
|
+
|
|
192
|
+
首个公开版本。
|
|
193
|
+
|
|
194
|
+
### 新增
|
|
195
|
+
|
|
196
|
+
- 在 Harness 侧栏提供「多 Agent 办公室」入口,页面位于宿主的 `/dsh-mutipleagent/` 路由,Web 与 Desktop 共用同源入口。
|
|
197
|
+
- 以 3D 办公室呈现真实主会话、子 Agent、任务与汇报;没有百分比时显示「未记录」,子 Agent 结束不代表主任务完成。
|
|
198
|
+
- 支持切换主会话、选择成员、搜索任务、查看任务与汇报全文,以及切换到明确标记的模拟演示。
|
|
199
|
+
- 只读观察:不启动任务、不调用模型、不审批、不修改会话;停用或卸载时释放路由、轮询、事件连接与页面资源。
|
|
200
|
+
- 构建产物与模型随包提供,不使用 CDN,也不需要 API Key。
|
|
201
|
+
|
|
202
|
+
### 兼容
|
|
203
|
+
|
|
204
|
+
- DeepSeek Harness `0.2.2-rc.1`
|
|
205
|
+
- Node.js `^22.19.0 || >=24.0.0`
|
|
206
|
+
|
|
207
|
+
## 版本兼容说明
|
|
208
|
+
|
|
209
|
+
| 插件版本 | Harness 目标版本 | Node.js |
|
|
210
|
+
| --- | --- | --- |
|
|
211
|
+
| v0.1.3 | `0.2.2-rc.1` | `^22.19.0 \|\| >=24.0.0` |
|
|
212
|
+
| v0.1.2 | `0.2.2-rc.1` | `^22.19.0 \|\| >=24.0.0` |
|
|
213
|
+
| v0.1.1 | `0.2.2-rc.1` | `^22.19.0 \|\| >=24.0.0` |
|
|
214
|
+
| v0.1 | `0.2.2-rc.1` | `^22.19.0 \|\| >=24.0.0` |
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# 参与开发
|
|
2
|
+
|
|
3
|
+
欢迎 issue、截图和 PR。改动前请先看这一页,能省掉来回。
|
|
4
|
+
|
|
5
|
+
## 环境
|
|
6
|
+
|
|
7
|
+
- Node.js `^22.19.0 || >=24.0.0`(与 `package.json` 的 `engines` 一致)
|
|
8
|
+
- 支持 WebGL 的浏览器;浏览器测试使用 Playwright Chromium(`npx playwright install chromium`)
|
|
9
|
+
- Windows、macOS、Linux 都可以开发;本地服务只监听 `127.0.0.1`
|
|
10
|
+
|
|
11
|
+
npm ci
|
|
12
|
+
npm run build
|
|
13
|
+
npm test
|
|
14
|
+
|
|
15
|
+
## 常用命令
|
|
16
|
+
|
|
17
|
+
| 命令 | 作用 |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| `npm run build` | esbuild 打包 `web/` 到 `public/`(含共享 chunk) |
|
|
20
|
+
| `npm test` | 单元测试(Node 内置 test runner) |
|
|
21
|
+
| `npm run test:ui` | Playwright 浏览器验收(WebGL、交互、响应式) |
|
|
22
|
+
| `npm run test:plugin:ui` | 以插件面板形态验收 |
|
|
23
|
+
| `npm run smoke:host` | 在隔离进程用本机 Desktop 的真实 SDK 加载插件 |
|
|
24
|
+
| `npm run lint` / `npm run format` | ESLint / Prettier |
|
|
25
|
+
| `npm run check:compat` | 校验 `engines`、入口、`dsh.bundle.patch` 与版本一致性 |
|
|
26
|
+
| `npm run screenshots` | 启动演示服务并生成 `assets/screenshots/*.jpg` 与 `screenshots.json` |
|
|
27
|
+
|
|
28
|
+
## 改动约定
|
|
29
|
+
|
|
30
|
+
- **不要手改构建产物**:`public/app.js`、`public/demo.js`、`public/chunks/**` 由 `npm run build` 生成,CI 会检查它们与源码一致。
|
|
31
|
+
- 源码位置:`src/` 是只读服务与 Harness 会话解析;`web/` 是页面交互与 3D 场景;`vendor/` 是固定版本的上游渲染代码(尽量少改,改了要写清原因)。
|
|
32
|
+
- 新增用户可见文案时同时补齐 `web/i18n.mjs` 的中英文条目,不要只写中文。
|
|
33
|
+
- 提交前跑 `npm run lint && npm run format:check && npm test`。CI 会在 Node 22.19 与 24 上重复这些检查。
|
|
34
|
+
- 提交信息用 `type(scope): 说明` 的形式(`feat`、`fix`、`docs`、`chore`、`refactor`、`test`、`perf`、`build`、`ci`)。
|
|
35
|
+
- 一次 PR 只做一件事;涉及界面的改动请附截图(`npm run screenshots` 生成的图可直接引用)。
|
|
36
|
+
|
|
37
|
+
## 发布
|
|
38
|
+
|
|
39
|
+
维护者执行:
|
|
40
|
+
|
|
41
|
+
npm run release -- 0.2.0
|
|
42
|
+
|
|
43
|
+
脚本会校验版本递增、要求 CHANGELOG 已有 `## v0.2.0` 段落、跑全部闸门,然后提交、打 tag 并推送。推 tag 后 `.github/workflows/release.yml` 会创建 GitHub Release,并在配置了 `NPM_TOKEN` 时发布到 npm。
|
|
44
|
+
|
|
45
|
+
## 不要做的事
|
|
46
|
+
|
|
47
|
+
- 不要新增对会话文件的直接路径读取——只走 `sessionQuery` 公开接口。
|
|
48
|
+
- 不要引入 CDN、外部字体、遥测或任何外发请求。
|
|
49
|
+
- 不要把只读观察扩成"能启动/审批任务"的写操作,这是插件的核心边界。
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 cheoyu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.en.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# dsh-mutipleagent
|
|
2
|
+
|
|
3
|
+
[](https://github.com/lkuliuying/dsh-mutipleagent/actions/workflows/ci.yml)
|
|
4
|
+
[](https://www.npmjs.com/package/dsh-mutipleagent)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
|
|
7
|
+
English · [简体中文](README.md)
|
|
8
|
+
|
|
9
|
+
A 3D office for DeepSeek Harness multi-agent work. Every conversation page grows a **Multi-Agent Office** tab next to Chat / Trajectory / Context — open it and the office is already showing that conversation, with no workspace or session picker in the way. The sidebar entry stays for cross-project browsing.
|
|
10
|
+
|
|
11
|
+
**Read-only.** It never starts, pauses or approves tasks, never calls a model, never writes to a session, and never sends anything off the machine.
|
|
12
|
+
|
|
13
|
+

|
|
14
|
+
|
|
15
|
+
| Task detail | Activity feed |
|
|
16
|
+
| --- | --- |
|
|
17
|
+
|  |  |
|
|
18
|
+
|
|
19
|
+
Generated from demo data with `npm run screenshots`. The interface ships in Chinese and English — switch with the 中 / EN control in the top bar. In live mode, task text, agent names and event previews stay exactly as they appear in your session logs, so they are not translated.
|
|
20
|
+
|
|
21
|
+
Current version `v0.4.0`, package `dsh-mutipleagent`. Compatible with DeepSeek Harness `^0.2.2-rc.1` and Node.js `^22.19.0 || >=24.0.0`. See [CHANGELOG.md](CHANGELOG.md) for per-version notes and [Releases](https://github.com/lkuliuying/dsh-mutipleagent/releases) for the published notes.
|
|
22
|
+
|
|
23
|
+
## What's new in v0.4.0
|
|
24
|
+
|
|
25
|
+
- The office now fills a whole floor: a 4 × 3 grid of face-to-face pods (24 seats) where the lead agent and the first sub-agent share a table and sit across from each other, with back-to-back monitors down the middle and each side's keyboard, mouse and side screen facing its own seat. The room also gains a glass meeting room, equipment racks, bookshelves, a kitchen counter and a lounge corner.
|
|
26
|
+
- Hide everything but the scene: click the button in the scene toolbar (or press `H`) to collapse the top bar, stat cards, agent details and the workflow dock; use the "Show panels" pill or press `Esc` to bring them back. The choice is stored locally and survives reloads.
|
|
27
|
+
- The camera is pulled back and centred so the whole floor is in frame, and the outdoor ground now matches the background colour, so the office no longer floats on a hard-edged slab and the bottom row of desks stays clear of the workflow dock.
|
|
28
|
+
|
|
29
|
+
## What's new in v0.3.1
|
|
30
|
+
|
|
31
|
+
- Opening the Multi-Agent Office tab hides the conversation composer, and returning to Chat restores it — the picture gains a whole block of height.
|
|
32
|
+
- Embed mode also drops the office's own top bar (search, Session dropdown, clock, bell); the collaboration stats and Agent details move up to the top of the tab.
|
|
33
|
+
- Inside the details panel the primary action and the "view screen / view task source" links now sit right under the header, so nothing needs scrolling; the footer note and the scene drag hint are gone, and the workflow caption is clamped to one line.
|
|
34
|
+
|
|
35
|
+
## What's new in v0.3.0
|
|
36
|
+
|
|
37
|
+
- The office is a conversation view: it registers `conversation.view` and sits in the tab row beside Chat / Trajectory / Context, folding into the "More views" menu when the row is narrow. No panel-first, no picking a directory and then a session.
|
|
38
|
+
- Opening the tab pins the current session: the frame loads with `?mode=live&source=harness&rootId=<session id>&embed=1`, the directory picker is hidden and the title becomes the session title. Switching conversation or tab reloads the frame for the new session, and a session missing from the default root list (sub-agents, for example) falls back to the full list instead of failing.
|
|
39
|
+
- Embed mode trims the chrome the host already provides: brand, mode switch, language switch and account section are hidden, leaving search, sessions and notifications.
|
|
40
|
+
- The sidebar entry and the global panel are unchanged.
|
|
41
|
+
|
|
42
|
+
## What's new in v0.2.1
|
|
43
|
+
|
|
44
|
+
- Reads only expand what actually changed: `sessionQuery.observeSession()` leases hand back the header and the log cursor, and events materialize on demand. A session whose cursor did not move is neither cloned nor re-folded; `/api/health` reports the reuse count as `reused`.
|
|
45
|
+
- Sessions without a live instance are gated by the persistence revision, so an unchanged log is not re-read; when observation is unavailable the reader falls back to the full `readSession()`.
|
|
46
|
+
|
|
47
|
+
## What's new in v0.2.0
|
|
48
|
+
|
|
49
|
+
- Chinese and English UI, following the system language by default, switchable in the header.
|
|
50
|
+
- Faster first paint and lighter reads: furniture plus three characters load first, `app.js` drops from 731.6 KB to 10.5 KB and `demo.js` from 814 KB to 73.4 KB (one shared `three.js` chunk, gzip on), and unchanged sessions are no longer re-folded every second.
|
|
51
|
+
- Static files serve `ETag` / `304` and gzip; polling stops when no page is connected and refreshes on open.
|
|
52
|
+
- `/api/health` reports version, uptime, client count, read cost and polling state.
|
|
53
|
+
- Tooling: ESLint, Prettier, `.gitattributes`, CI (Node 22.19 / 24, browser acceptance, build freshness) and `npm run release`.
|
|
54
|
+
|
|
55
|
+
## Install
|
|
56
|
+
|
|
57
|
+
### From npm
|
|
58
|
+
|
|
59
|
+
The package is published to [npm](https://www.npmjs.com/package/dsh-mutipleagent); the npm version matches the plugin version:
|
|
60
|
+
|
|
61
|
+
dsh plugin --profile desktop add 'dsh-mutipleagent@0.2.1' --ignore-scripts
|
|
62
|
+
|
|
63
|
+
Bump the version number when upgrading.
|
|
64
|
+
|
|
65
|
+
### From a GitHub tag
|
|
66
|
+
|
|
67
|
+
Quit Harness Desktop completely, then:
|
|
68
|
+
|
|
69
|
+
dsh plugin --profile desktop add 'dsh-mutipleagent@https://codeload.github.com/lkuliuying/dsh-mutipleagent/legacy.tar.gz/refs/tags/v0.2.1' --ignore-scripts
|
|
70
|
+
|
|
71
|
+
If `dsh` is not on `PATH`, use the bundled CLI:
|
|
72
|
+
|
|
73
|
+
& 'C:\ProgramSoftware\Deepseek\resources\runtime\cli\bin\dsh.cmd' plugin --profile desktop add 'dsh-mutipleagent@https://codeload.github.com/lkuliuying/dsh-mutipleagent/legacy.tar.gz/refs/tags/v0.2.1' --ignore-scripts
|
|
74
|
+
|
|
75
|
+
Restart Harness and open **Multi-Agent Office** from any conversation's tab row (or from the sidebar for the cross-project view). No API key, no separate server, nothing else to configure.
|
|
76
|
+
|
|
77
|
+
To build from source instead:
|
|
78
|
+
|
|
79
|
+
npm ci
|
|
80
|
+
npm run build
|
|
81
|
+
npm pack --ignore-scripts
|
|
82
|
+
dsh plugin --profile desktop add "F:\path\to\dsh-mutipleagent-0.1.3.tgz"
|
|
83
|
+
|
|
84
|
+
## What you get
|
|
85
|
+
|
|
86
|
+
- **Desks, not dashboards.** Agents sit down, face their monitor and type; screens show current status and the latest event. Task hand-offs and reports travel as light trails from screen to screen.
|
|
87
|
+
- **Screen detail.** Click any monitor for the real agent, status, task, model/tool and recent events. Esc, overlay and a close button all work; narrow screens switch to a readable text layout.
|
|
88
|
+
- **Session picker, when you want it.** The sidebar view asks for a workspace directory, then a session inside it. Search by path, title, time or short ID; identical titles stay distinguishable. Your last choice is remembered.
|
|
89
|
+
- **Notification centre.** Unread dot clears against a read anchor, with "mark all read", category icons and a compact three-line summary.
|
|
90
|
+
- **Graceful degradation.** Without WebGL the team tree, activity log and reports still work, and "reduce motion" is one checkbox away.
|
|
91
|
+
- **Bilingual UI.** Chinese and English, switchable in the header and remembered locally.
|
|
92
|
+
|
|
93
|
+
## Boundaries
|
|
94
|
+
|
|
95
|
+
- Data comes only from Harness's public `sessionQuery` interface. No session files, no credentials, no private reasoning or system messages.
|
|
96
|
+
- The server binds `127.0.0.1`, serves `GET` only, rejects cross-origin requests and non-loopback hosts, and reuses Harness's owner check when mounted.
|
|
97
|
+
- No telemetry, no external fonts, no CDN, no third-party scripts.
|
|
98
|
+
- Numbers follow recorded events. Some Desktop builds store `spawn_agent` payloads encrypted, so a hand-off may show "not recorded" rather than an invented description.
|
|
99
|
+
|
|
100
|
+
Read [SECURITY.md](SECURITY.md) for the full threat model and how to report a vulnerability privately.
|
|
101
|
+
|
|
102
|
+
## FAQ
|
|
103
|
+
|
|
104
|
+
**Only the root agent shows up.** The plugin only renders sub-agents that actually existed. Ask for parallel work in the session (for example "spawn two read-only sub-agents, one for the API contract and one for test gaps") and let it run.
|
|
105
|
+
|
|
106
|
+
**Numbers differ from what I saw in the session.** Logs are written per message block, not per token; known sessions are checked roughly once a second and new ones every five seconds. Missing data is shown as "not recorded" instead of a guess.
|
|
107
|
+
|
|
108
|
+
**Does it upload my sessions?** No. See the boundaries above and [SECURITY.md](SECURITY.md).
|
|
109
|
+
|
|
110
|
+
**Port 4317 is taken.** `node src/server.js --port 4320 --open`, or use the plugin panel which has no fixed port.
|
|
111
|
+
|
|
112
|
+
## Develop
|
|
113
|
+
|
|
114
|
+
npm ci
|
|
115
|
+
npm run build
|
|
116
|
+
npm test
|
|
117
|
+
npm run lint && npm run format:check && npm run check:compat
|
|
118
|
+
|
|
119
|
+
`npm run test:ui` drives the real WebGL page with Playwright. `npm run screenshots` regenerates the images above. `npm run release -- 0.2.0` bumps versions, runs every gate, commits and tags; GitHub Actions then publishes the release.
|
|
120
|
+
|
|
121
|
+
Source layout: `src/` is the read-only server and session parsing, `web/` is the UI and 3D scene, `vendor/` is pinned upstream rendering code, `assets/` holds models and images. See [CONTRIBUTING.md](CONTRIBUTING.md) before sending a PR.
|
|
122
|
+
|
|
123
|
+
## Licence
|
|
124
|
+
|
|
125
|
+
Based on [Charonyuu/whatsmyagentdoing](https://github.com/Charonyuu/whatsmyagentdoing) (commit `c69bf2bc98cf96a63d146070e9bbc83b507bf0bf`, v0.8.1); upstream MIT licence kept in [LICENSE](LICENSE). Character and furniture models are Kenney Mini Characters and Furniture Kit (CC0), original licences under `assets/kenney`. Full attribution in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|