dsh-bot-team 1.1.0 → 1.3.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 +194 -0
- package/README.md +206 -156
- package/client.js +3706 -746
- package/cordis.patch.yml +2 -2
- package/host/agents.js +469 -289
- package/host/background-interactions.js +213 -0
- package/host/conversations.js +45 -0
- package/host/discussion-flow.js +179 -0
- package/host/discussion-runner.js +491 -0
- package/host/domain.js +551 -69
- package/host/engine.js +621 -166
- package/host/execution.js +192 -121
- package/host/native-activity.js +225 -0
- package/host/native-session.js +144 -0
- package/host/pdf.js +43 -6
- package/host/prompt.js +253 -9
- package/host/routes.js +31 -1
- package/host/service.js +751 -127
- package/host/session-export.js +22 -0
- package/host/session-visibility.js +147 -0
- package/host/storage-layout.js +109 -0
- package/host/tools.js +314 -85
- package/host/update-check.js +351 -0
- package/host/util.js +3 -2
- package/host/workspace.js +36 -2
- package/index.js +1 -1
- package/package.json +14 -6
package/README.md
CHANGED
|
@@ -1,200 +1,250 @@
|
|
|
1
|
-
# Bot Team
|
|
1
|
+
# Bot Team
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> 把 DeepSeek Harness 变成一间「Bot 公司」:每个 Bot 都是真实的 Agent,有独立会话、模型、人格和全套工具。你可以像用 IM 一样单聊、拉群、`@` 派活、评审、讨论、建任务。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
`版本 1.3.0` · `MIT` · `DSH 0.2.1-rc.x` · `npm dsh-bot-team`
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- **头像**:按名称生成机器人面具、点「随机生成」换配色/表情、选 10 个 SVG 插画之一,或自定义上传(浏览器裁成 256×256,存为 data URL);
|
|
9
|
-
- **人格与工作规范**:`<botsDir>/<botId>/BOT.md`(一个文件写「你是谁」+「你怎么做事」,在页面内编辑,下一轮生效;旧版 SOUL.md/AGENT.md 仍可读取);
|
|
10
|
-
- **工具**:所有 Bot 统一为全能力 Bot——文件读写、搜索、联网、命令执行、Skill;不提供只读版或按角色裁剪工具的版本。session 沙箱为 `workspace-write`,范围受群/单聊工作目录限制。
|
|
7
|
+

|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
*当前客户端的真实 React 浏览器截图,使用隔离的模拟 API 数据。*
|
|
13
10
|
|
|
14
|
-
|
|
11
|
+
## 这是什么
|
|
15
12
|
|
|
16
|
-
|
|
13
|
+
Bot Team 是 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(DSH)的侧栏插件。常见的「多 Agent」是在一次对话里临时开几个子 Agent,聊完即散;Bot Team 把 Bot 做成长期存在的同事:
|
|
14
|
+
|
|
15
|
+
- 每个 Bot 有名字、头像、独立的 provider / model / reasoning effort / maxTokens,以及独立 Session 记忆;
|
|
16
|
+
- 人格与工作规范写在 `BOT.md`,改完下一轮生效;
|
|
17
|
+
- 单聊是它的工位,群聊是会议室,任务工具管理工单,评审和讨论组织协作流程;
|
|
18
|
+
- 所有 Bot 统一为全能力 Bot:读写文件、搜索、联网、执行命令、Skill;不提供只读版或按角色裁剪工具的版本(`workspace-write` 沙箱,范围受群/单聊工作目录限制);
|
|
19
|
+
- 每个 Bot 都有持久会话,点「查看会话」可在完整历史页面查看所有轮次与执行记录。
|
|
20
|
+
|
|
21
|
+
## 功能
|
|
22
|
+
|
|
23
|
+
### 对话
|
|
24
|
+
|
|
25
|
+
| 能力 | 说明 |
|
|
26
|
+
|---|---|
|
|
27
|
+
| 单聊 | 每个 Bot 自动拥有一个单聊窗口,不需要 `@`,记忆与群聊相互独立 |
|
|
28
|
+
| 群聊 | 群 / 话题、成员管理、`@` 派活、多 `@` 并行回复 |
|
|
29
|
+
| 流式 | 实时流式输出、停止、失败重试、断线补齐 |
|
|
30
|
+
| 消息 | 引用回复(群聊回复 Bot 时自动 `@` 原作者)、右键菜单、同作者消息合并、时间分隔、新消息分隔线、回到底部 |
|
|
31
|
+
| 输入 | 左下角 **+** 打开 DSH 风格分组命令菜单(文件 / 文件夹 / 技能 / 提及 / 停止 / 导出 / 设置);键入 `/` 选择 Skill;文件存入 DSH 附件库,Bot 拿到只读路径 |
|
|
32
|
+
| 项目 | **+ → 文件夹** 引入本地项目,单聊和群聊均可用;Bot 在原目录检索、修改和运行任务,输入框支持更换或移除项目 |
|
|
33
|
+
| 导出 | 群聊导出 Markdown / HTML / PDF(PDF 文本可选中、A4 分页、页脚页码) |
|
|
34
|
+
|
|
35
|
+
### 组织与界面
|
|
36
|
+
|
|
37
|
+
- **首次使用引导**:欢迎页以 **创建 Bot** 为主入口、**创建群聊** 为次入口;**快速上手** 提供三步引导,创建成功后直接进入新 Bot 单聊或新群;
|
|
38
|
+
- 欢迎页及侧栏 **开始使用** 仅在没有 Bot 且没有群聊时显示;存在任一即隐藏,已有数据时不能返回欢迎页;删除全部 Bot 和群聊后恢复;欢迎页不显示右侧 Bot 库;
|
|
39
|
+
- 单聊、群聊、未分组和自定义分组都能展开 / 收起,群与分组支持拖动排序;
|
|
40
|
+
- 左侧栏从 232px 收起成 68px 图标栏,底部 **Bot 管理 / 设置** 上下排列;欢迎页随可用宽度调整卡片布局,窄屏通过导航按钮展开侧栏;
|
|
41
|
+
- 深浅色跟随 DSH(light / dark / system),使用 `--bt-*` token,切换即时生效;
|
|
42
|
+
- 账号头像、群头像(随机配色 / 10 个 SVG 插画 / 上传)、Bot 头像(按名字生成机器人面具);
|
|
43
|
+
- **设置 → 关于** 提供异步版本检测、兼容更新入口与更新说明;插件启动后自动检查 npm,发现兼容更新时在 **设置** 入口显示小圆点。检测失败不影响聊天;
|
|
44
|
+
- **设置 → 数据存储** 集中显示数据、人格文件、单聊和群聊默认工作目录。
|
|
45
|
+
- **中文 / English 界面**跟随 DSH 的 **设置 → General → Language** 即时切换;宿主生成的讨论/评审/审批事件消息也会随语言切换,Bot 消息、群名、Bot 名等用户内容保持不变。
|
|
46
|
+
|
|
47
|
+
### 协作
|
|
48
|
+
|
|
49
|
+
以下讨论与辩论扩展已纳入 **1.3.0 源码版本**。加载本地目录中的新代码,需要在插件管理中 **disable → enable** 重新加载 Host,再刷新现有页面。完整流程与接口见[讨论与辩论](<https://github.com/shper/dsh-bot-team/blob/main/docs/%E8%AE%A8%E8%AE%BA%E4%B8%8E%E8%BE%A9%E8%AE%BA.md>)。
|
|
50
|
+
|
|
51
|
+
- **评审**:让另一个 Bot 评审一条消息,返回「通过 / 需修改」结论徽标,可一键「让作者修改」;
|
|
52
|
+
- **多成员讨论**:结构化讨论至少 2 人,界面提供快速 2 轮、标准 3 轮、深入 5 轮及自定义 2–20 轮,按观点、质询、收敛推进,穿插小结并可选最终总结;经典讨论支持 1–20 轮,旧工具调用默认 2 轮;
|
|
53
|
+
- **1v1 辩论**:正反方各 1 人,可另选独立裁判;双方开篇、交替先手的交叉问答、总结陈词,再由裁判裁决。无裁判不生成胜负;
|
|
54
|
+
- **过程控制**:查看阶段与发言者,暂停、继续、重试失败步骤、提前收束、停止,或补充材料与同群历史消息引用;
|
|
55
|
+
- **任务管理(模型工具/API)**:创建任务并设置描述、验收标准、指派与评审者;派发 → 交付 → 评审 → 验收;支持优先级、DAG 依赖、环检测、验收后自动解锁、批量派发、队列与中断。群聊右侧的任务面板和「新建任务」入口已移除,任务能力仍可通过模型工具与 HTTP action 使用;
|
|
56
|
+
- **审批**:Bot 需要越界或升权时,聊天区域显示待处理审批卡片,可直接在 Bot Team 中允许一次或拒绝。
|
|
57
|
+
|
|
58
|
+
### 模型工具
|
|
59
|
+
|
|
60
|
+
当前工作区在普通会话里提供 10 个群聊工具;Bot 成员禁用写入编排工具以防递归,仍可读取群与任务列表:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
bot_team_list bot_team_create_group bot_team_send bot_team_review
|
|
64
|
+
bot_team_discuss bot_team_debate bot_team_discussion_control
|
|
65
|
+
bot_team_task_create bot_team_task_list bot_team_task_update
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## 安装
|
|
69
|
+
|
|
70
|
+
前置:DeepSeek Harness `0.2.1-rc.x`(桌面版或 CLI profile 均可)。
|
|
71
|
+
|
|
72
|
+
### 桌面版
|
|
73
|
+
|
|
74
|
+
1. 左侧栏 **插件 / Plugins** → **添加插件**;
|
|
75
|
+
2. 填 `dsh-bot-team@1.3.0`(也可以填本地目录绝对路径或 Git 地址);
|
|
76
|
+
3. 安装完成后启用;如果之前启用过,对该 bundle **disable → enable**(或完整重启 DSH);
|
|
77
|
+
4. 刷新页面,左侧栏出现 **Bot Team** 图标。
|
|
78
|
+
|
|
79
|
+
### CLI
|
|
80
|
+
|
|
81
|
+
```sh
|
|
82
|
+
dsh plugin --profile <profile> add dsh-bot-team@1.3.0
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
安装后同样要重新加载 Host 模块(disable→enable 或重启)。
|
|
86
|
+
|
|
87
|
+
> `1.3.0` 是当前源码版本;npm 上的公开发行版需按 [发布指南](https://github.com/shper/dsh-bot-team/blob/main/docs/%E5%8F%91%E5%B8%83%E6%8C%87%E5%8D%97.md) 执行 `npm publish`。在发布前安装本机源码,请用本地目录路径。
|
|
88
|
+
|
|
89
|
+
### 从源码
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
git clone https://github.com/shper/dsh-bot-team.git
|
|
93
|
+
cd dsh-bot-team
|
|
94
|
+
npm install
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
在插件页把 `/path/to/dsh-bot-team` 作为本地目录添加;或让 Agent 执行 `plugin_manager` 的 `install_bundle`,`target` 填这个绝对路径。改完代码需要 disable→enable 或重启,才会加载新的 Host 模块。
|
|
98
|
+
|
|
99
|
+
> 仓库根目录就是插件目录。从源码安装时先运行 `npm install`,安装 PDF 字体子集化所需的 `fontkit` 依赖。
|
|
100
|
+
|
|
101
|
+
### 兼容性
|
|
102
|
+
|
|
103
|
+
`engines.dsh` 为 `^0.2.1-rc.3`,安装在运行中的 DSH 版本上校验(含预发布版本)。DSH 升级到 0.3 后需要先跑一遍回归、再放宽范围并发新版本;用户被拦时可用 exact-version exemption,但会有风险提示。
|
|
104
|
+
|
|
105
|
+
## 快速开始
|
|
106
|
+
|
|
107
|
+
打开 **Bot Team**,没有 Bot 且没有群聊时会看到「开始使用」欢迎页。主按钮 **创建 Bot** 是推荐的第一步,也可以从次入口 **创建群聊** 开始;欢迎页右上角 **快速上手** 可查看以下三步:
|
|
108
|
+
|
|
109
|
+
1. **先认识一位 Bot**:点 **创建 Bot**,起名、选模型、填写 `BOT.md` 人格(可插入 9 套现成人格模板)。创建成功后自动打开它的单聊,直接发消息即可,无需 `@`。
|
|
110
|
+
2. **为共同的目标,建一个群**:点侧栏「群聊」右侧 **+**,保存后进入新群,再用右侧「+ 添加」邀请 Bot;同一 Bot 可以参与多个群。
|
|
111
|
+
3. **用 @ 邀请它们参与**:在群输入框里用 `@Bot名` 派活,多个 `@` 会并行回复并实时流式显示;随后可以发起评审或多轮讨论。
|
|
112
|
+
|
|
113
|
+
创建 Bot 或群聊后进入相应会话,欢迎页与侧栏 **开始使用** 隐藏,已有数据时不能返回欢迎页;删除全部 Bot 和群聊后恢复。取消创建会留在欢迎页。首页不显示右侧 Bot 库,全局 Bot 管理可从侧栏底部打开。欢迎页与引导支持中文 / English、light / dark 主题,并随可用宽度调整布局,窄屏可通过导航按钮访问侧栏。
|
|
114
|
+
|
|
115
|
+
任务可通过 `bot_team_task_create` / `bot_team_task_list` / `bot_team_task_update` 或 HTTP action 管理;群聊侧栏已移除任务面板。
|
|
116
|
+
|
|
117
|
+
<details>
|
|
118
|
+
<summary>浅色欢迎页(当前实现)</summary>
|
|
119
|
+
|
|
120
|
+

|
|
121
|
+
|
|
122
|
+
同样来自当前客户端的真实 React 浏览器渲染,API 使用隔离的模拟数据。
|
|
123
|
+
|
|
124
|
+
</details>
|
|
125
|
+
|
|
126
|
+
## 它是怎么工作的
|
|
127
|
+
|
|
128
|
+
| 层 | 做法 |
|
|
17
129
|
|---|---|
|
|
18
|
-
| `
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
6. **模型工具**:在任意普通会话里也能用 `bot_team_list` / `bot_team_create_group` / `bot_team_send` / `bot_team_review` / `bot_team_discuss` 操作群聊(Bot 成员自身被 deny,防递归)。
|
|
32
|
-
7. **更多**:评审(结论徽标 + 让作者修改)、多轮讨论(进度/总结/停止)、Markdown(表格/删除线/代码块)、历史上翻、群导出 Markdown/HTML、成员「查看会话」、群 workspace 与 token 用量。
|
|
33
|
-
8. **硬化**:按群配额/限流(`maxTurnsPerHour`、`dailyTokenBudget`)、所有 Bot 统一 workspace-write 沙箱(受群工作目录限制)、domain schema 迁移(meta/schema)、`GET /api/bot-team.health`。
|
|
34
|
-
9. **任务板(v0.5)**:右栏「+ 新建任务」(标题/描述/验收标准/指派/评审者)→ 派发 → Bot 交付 → 请评审(verdict 自动流转)/验收通过/要求修改 →「让作者修改」再交付;消息上显示任务状态标记。
|
|
35
|
-
10. **任务模型工具 + 依赖/优先级(v0.5.1)**:`bot_team_task_create/list/update` 可在普通会话里建任务、派发、评审、验收;任务支持 `priority`(排序/展示)与 `dependsOn`(DAG 依赖、环检测、未验收阻塞派发、验收后自动解锁);UI 支持优先级 chip、依赖多选、任务编辑。
|
|
36
|
-
11. **任务队列 + 一键派发(v0.5.2)**:任务面板显示「执行中 / 排队」并支持一键派发所有就绪任务(按优先级入队、受 `maxParallelTurns` 限制);排队中的任务显示「排队中」;`autoDispatchReady`(默认关)可在依赖解锁后自动派发。
|
|
37
|
-
12. **全局 Bot 管理(v0.5.4)**:左侧栏底部「Bot 管理」按钮打开「Bot 管理(全局)」,查看全部 Bot 的名称/模型/所属群,支持新建、编辑、删除(删除前提示会从群中移出)。
|
|
38
|
-
13. **任务面板简化(v0.5.3)**:面板只保留「派发 / 中断 / 执行流」——进行中可**中断**(abort 当前 Bot turn);点「执行流」直接打开该任务 Bot 的 DSH 会话查看完整执行过程。新建任务精简为标题/描述/验收标准/指派。评审/验收/编辑/一键派发等能力保留在模型工具与 HTTP action 中。
|
|
39
|
-
14. **UI 美化(v0.5.5)**:统一字体/间距/圆角与配色;侧栏与右栏浅灰分层、群选中态淡蓝高亮、按钮白底细边+悬浮反馈、消息气泡圆角卡片、输入框/弹窗/滚动条统一。
|
|
40
|
-
15. **Bot 弹窗重构 + 单文件人格(v0.5.6)**:新建/编辑 Bot 改为分组表单、等宽栅格、粘性头尾与单一 `BOT.md` 编辑器(插入模板 / 字数 / 下一轮生效提示);旧 `SOUL.md`+`AGENT.md` 自动合并读取,保存时写为 `BOT.md`。
|
|
41
|
-
16. **全能力 Bot(v0.5.7)**:去掉「角色与权限」字段与执行型开关;所有 Bot 统一挂载 `bot-team-tools`、workspace-write,可直接读写文件、搜索、联网、执行命令。旧 talk/review Bot 通过 schema v5 自动升级为全能力。
|
|
42
|
-
17. **Bot 审批流(v0.5.8)**:默认审批策略 `ask`;Bot 需要越界/升权时,群时间线出现「审批请求」卡片,点「去审批」打开该 Bot 的 DSH 会话选择允许一次/拒绝,结果同步回群。`botApprovalPolicy: never` 可关闭。
|
|
43
|
-
18. **Bot 头像(v0.5.9)**:默认按名称生成机器人面具,可点「随机生成」换配色/表情,或从 10 个本地 SVG 插画(星球/火箭/云朵/闪电/叶子/火焰/星星/月亮/海浪/花朵)中选一个,或上传自定义图片。消息、成员卡、Bot 库、@ 选择器、审批卡片统一显示。
|
|
44
|
-
19. **群聊信息流(v0.6)**:微信/飞书式气泡与头像、同作者分组、今天/昨天时间分隔、悬停操作、引用回复与点击定位、复制、新消息分隔线与回到底部、加载历史保持滚动位置、群头部状态与「···」菜单、输入框 @ 选择器键盘操作;Bot 模型与 token 用量默认隐藏,悬停回复时显示。详见 `docs/v0.6-群聊信息流-变更记录.md`。
|
|
45
|
-
20. **账号头像(v0.6)**:自己的消息优先显示 DSH 登录账号的头像和昵称;未登录、无头像或图片加载失败时回退渐变字母。
|
|
46
|
-
21. **群头像(v0.6.1)**:新建/编辑群可随机配色、选 10 个 SVG 插画或上传自定义图片;群列表与聊天顶部同步显示。
|
|
47
|
-
22. **深浅色主题(v0.6.2)**:跟随 DSH 的 light / dark / system;页面、气泡、面板和弹窗使用 `--bt-*` token,切换时即时生效,无需刷新。
|
|
48
|
-
23. **人格模板库(v0.6.3)**:`插入模板` 改为模板菜单,内置 9 套人格(通用助手 / 代码实现 / 代码评审 / 需求分析 / 技术调研 / 测试 / 文档 / 批判质疑 / 数据分析),每套带一句话说明;空内容直接填入,已有内容追加,末尾是旧模板时自动替换;Esc 或点空白关闭。详见 `docs/v0.6.3-人格模板库-变更记录.md`。
|
|
49
|
-
24. **消息右键菜单(v0.6.4)**:在消息上点右键弹出操作菜单——回复 / 复制文本 / 复制为引用(Markdown 引用块)/ 定位原消息 / 评审 / 让作者修改 / 重试;位置跟随光标并自动避开视口边缘,方向键切换、Esc 或点空白关闭;选中文字或右键链接时保留浏览器原生菜单。详见 `docs/v0.6.4-消息右键菜单-变更记录.md`。
|
|
50
|
-
25. **左侧群栏收起(v0.6.5)**:左侧栏头部新增「收起侧栏」按钮,264px 收到 68px 后只显示群头像与图标按钮(群名/时间/预览隐藏,悬停显示群名与最后消息),消息区获得更多宽度;底部 Bot 管理/设置变为图标,键盘可达;偏好存浏览器 `localStorage`,刷新与切走再回来保持。详见 `docs/v0.6.5-侧栏收起-变更记录.md`。
|
|
51
|
-
26. **单聊 + 群聊分组 + 右侧面板收起(v0.7)**:每个 Bot 自动拥有一个单聊(创建 Bot 后直接打开,侧栏「单聊」区固定在群聊上方);单聊无需 @,复用完整的时间线/流式/停止/导出与独立会话记忆。群聊可放进自定义分组、分组与群都支持拖动/菜单自定义排序;「单聊」「群聊」「未分组」和每个自定义分组都能展开/收起(状态存浏览器)。聊天右上角的右侧面板按钮和面板头的「»」都能收起/展开成员/任务/单聊信息面板,偏好同样存浏览器。详见 `docs/v0.7-单聊与分组-变更记录.md`。
|
|
52
|
-
27. **设置 / 关于(v0.7)**:左侧栏「设置」弹窗改为模块导航(消息设置 / 关于);原有显示设置整体移入「消息设置」,「关于」显示插件说明、版本号、包名、开发者与数据位置;版本/包名/开发者由 Host 读取 `package.json` 下发。
|
|
53
|
-
28. **插件改名与数据目录(v0.8)**:包名与 Client 模块 id 统一为 `dsh-bot-team`,bundle 行仍为 `bot-team`;插件数据根目录迁到 `$DSH_HOME/dsh-bot-team/`,首次启动自动迁移旧 `$DSH_HOME/bot-team/`。
|
|
54
|
-
29. **单聊目录分层(v0.8.1)**:单聊工作目录改为 `<dataDir>/direct/<botId>/`,与群聊的 `groups/<groupId>/` 分层;启动迁移自动折叠 v0.8.0 的 `<dataDir>/<botId>/`。
|
|
55
|
-
30. **输入框 + 命令菜单与 Skill(v1.1)**:左下角 **+** 改为与 DSH 一致的全宽分组命令菜单(「添加」/「指令」,图标 + 中文名 + 英文别名 + 右侧说明,↑↓/Tab/Enter/Esc 操作)。**文件** 把本地文件存入 DSH 附件库(Bot 拿到只读路径,消息气泡显示附件卡);**技能** 打开 Skill 选择器;群聊还可 **提及成员**;**指令** 组提供停止回复、导出 Markdown/HTML 与消息设置。输入框直接键入 `/` 也会打开 Skill 选择器。Bot 预设新增 `skill-filesystem` + `tool-skill`,选中的 `/skill-name` 由 DSH 原生 gesture 在当前轮注入完整 Skill 指令。详见 `../docs/输入框文件与Skill-变更记录.md`。
|
|
56
|
-
31. **回复自动 @(v1.1)**:群聊信息流里回复 Bot 消息时,输入框自动带上该 Bot 的 `@` 并加入显式 mention;切换回复对象会替换上一个自动 @(只动自动插入的前缀,不改用户正文),单聊和回复人类消息不插入。这样回复不会因为缺少 `@` 而没有 Bot 回应。
|
|
57
|
-
32. **中英双语(v1.1)**:界面跟随 DSH 的 **设置 → General → Language** 即时切换 zh/en;按钮、菜单、弹窗、空态、提示与宿主生成的讨论/评审/审批事件消息都会翻译,Bot 消息、群名、Bot 名、人格正文等用户内容保持原文。实现走 DSH 的 `ctx.locale` 服务(注册 `botTeam` 字典 + 渲染时查表),内容值按子树加保护,避免把名为「设置」的群错误翻译。
|
|
58
|
-
33. **导出 PDF(v1.1)**:群聊「···」菜单与输入框「指令」菜单新增「导出 PDF」;Host 用系统 CJK 字体 + `fontkit` 子集生成 PDF 1.7(文本可选中/搜索、A4 分页、页眉页脚页码),无需浏览器打印对话框。字体自动发现(macOS Hiragino Sans GB / Arial Unicode,Windows 微软雅黑/宋体,Linux 文泉驿等;无嵌入许可的字体自动跳过);可用 `pdfFontPath` 指定。详见 `../docs/v1.1-i18n与PDF-变更记录.md`。
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
## 设置(消息设置 / 关于)
|
|
62
|
-
|
|
63
|
-
左侧栏底部 **Bot 管理** 旁的 **设置** 打开 Bot Team 设置,无需先选择群。弹窗改为左侧模块导航 + 右侧内容,模块为 **消息设置** 和 **关于**;导航支持 ↑/↓/Home/End 切换,选中项有高亮和焦点环。
|
|
64
|
-
|
|
65
|
-
**消息设置**(原有显示设置整体移入这里):
|
|
66
|
-
|
|
67
|
-
- **模型名称 / 输入 Token / 输出 Token / 平均回复速度** 可各自选择 **悬停显示 / 常驻显示 / 隐藏**,默认全部悬停显示。
|
|
68
|
-
- 悬停模式也支持消息内部的键盘焦点;无悬停能力的触屏设备自动显示。隐藏模式完全移除对应字段,不影响正文、轮次、评审、停止/错误状态。
|
|
69
|
-
- 弹窗提供即时示例预览、恢复默认、取消和保存。只有 **保存设置** 会应用到所有群聊;保存失败时保留草稿并显示错误。
|
|
70
|
-
- 偏好存于当前 DSH 配置的 storage domain `bot_team` → `meta` → `chat-display-settings`,不依赖浏览器端口,刷新、切换群和重启后保留。有群 SSE 连接的其他页面也会同步设置;重连时通过 `hello` 获取最新值。
|
|
71
|
-
- Token 沿用最近一次模型上报的用量,**不是本轮多次模型调用的累计量**;缺失数据不伪装成 0。
|
|
72
|
-
- 速度为最近一次成功模型请求的输出 Token / 耗时,显示 `tok/s`。Host 用单调时钟测量请求流开始到响应提交,并验证同一 attempt 的结束帧;包含请求等待、思考、网络与本地提交开销,不包含排队、Agent 初始化、工具/审批等待或重试退避,**不是纯解码速度**。缺少计时/用量的历史消息、未完成/失败/停止的回复不显示速度,不按消息时间戳补算。
|
|
73
|
-
|
|
74
|
-
**关于**:
|
|
75
|
-
|
|
76
|
-
- 插件说明和功能特性(单聊自动创建、群聊分组与拖拽排序、展开/收起、BOT.md 人格、任务与评审)。
|
|
77
|
-
- **版本号 / 包名 / 开发者** 来自插件 `package.json`,由 Host bootstrap 的 `plugin` 字段下发;当前为 `1.1.0` / `dsh-bot-team` / `shper`。
|
|
78
|
-
- 数据与人格文件位置:`$DSH_HOME/storages/bot_team`、`$DSH_HOME/dsh-bot-team/bots/<botId>/BOT.md`;单聊 / 群聊工作目录在 `$DSH_HOME/dsh-bot-team/direct/<botId>/` 与 `$DSH_HOME/dsh-bot-team/groups/<groupId>/`。
|
|
79
|
-
|
|
80
|
-

|
|
81
|
-
|
|
82
|
-

|
|
83
|
-
|
|
84
|
-
更新涉及 Host 和 Client:重新启用插件(或重启 DSH),然后刷新现有 GUI 页面。普通浏览器刷新不能单独加载新的 Host 模块。**v0.8 改名例外:profile 的 bundle 名已从 `@local/bot-team` 换成 `dsh-bot-team`,必须完整重启 DSH;只做 disable→enable 或刷新页面会找不到旧模块。**
|
|
85
|
-
|
|
86
|
-
## 数据与配置
|
|
87
|
-
|
|
88
|
-
`cordis.patch.yml` 的 `config`:
|
|
130
|
+
| Bot | `ctx.agents.create/resume` 创建真实 Agent 与持久 Session;`meta.origin='subagent'` 让它不出现在侧栏 |
|
|
131
|
+
| 群消息 | 群消息转成 `UserMessage` 走 `agent.followup()`;`session/event` 与 `agent/assistant-stream` 驱动消息与流式 |
|
|
132
|
+
| 人格 | `ctx.systemPrompt.section/context`(agent 作用域)注入 `BOT.md` 与群上下文 |
|
|
133
|
+
| 工具 | `ctx.agentPresets.mount` 挂载「全能力」preset;`ctx.tools.restrict` 防止 Bot 递归调用 Team 工具 |
|
|
134
|
+
| 数据 | storage domain 内部标识 `bot_team`,实际目录 `storages/dsh-bot-team`(群 / 单聊 / 分组 / Bot / 成员 / 消息 / 讨论 / 任务),不写会话日志 |
|
|
135
|
+
| 页面 | 单文件 `client.js` 通过 `window.__ModuleLoader__.load` 注册到 `main` 与 `sidebar.panellist` 槽位 |
|
|
136
|
+
| 通道 | `/api/bot-team.*`(bootstrap / messages / events(SSE) / action / file / health),全部在登录态栅栏内 |
|
|
137
|
+
|
|
138
|
+
> 升级 DSH 后按 [升级检查清单](https://github.com/shper/dsh-bot-team/blob/main/docs/%E5%8D%87%E7%BA%A7%E6%A3%80%E6%9F%A5%E6%B8%85%E5%8D%95.md) 逐项验证。
|
|
139
|
+
|
|
140
|
+
## 配置
|
|
141
|
+
|
|
142
|
+
`cordis.patch.yml` 的 `config` 可在 profile 的 patch 层覆盖:
|
|
89
143
|
|
|
90
144
|
| 字段 | 默认 | 说明 |
|
|
91
145
|
|---|---|---|
|
|
92
146
|
| `dataDir` | `$DSH_HOME/dsh-bot-team` | 插件数据根目录(人格与工作目录) |
|
|
93
|
-
| `botsDir` | `<dataDir>/bots` | BOT.md
|
|
94
|
-
| `defaultCwd` | Host 进程 cwd | 旧记录没有 `workspaceCwd` 时的兜底;新建群/单聊不再使用 |
|
|
95
|
-
| `migrateLegacyLayout` | true | 首次启动迁移 `$DSH_HOME/bot-team` 旧布局 |
|
|
147
|
+
| `botsDir` | `<dataDir>/bots` | `BOT.md` 存放目录 |
|
|
96
148
|
| `maxParallelTurns` | 3 | 群级并行回复上限 |
|
|
97
149
|
| `maxContextMessages` | 40 | 单轮注入的历史消息上限 |
|
|
98
|
-
| `turnTimeoutMs` | 300000 | 单轮超时 |
|
|
99
|
-
| `smokeTest` | false | 激活时跑端到端冒烟/恢复检查(仅验证用;已关闭) |
|
|
100
150
|
| `enableModelTools` | true | 是否向普通会话暴露 `bot_team_*` 工具 |
|
|
101
|
-
| `toolWaitTimeoutMs` | 180000 | 模型工具等待 Bot 回复/讨论的默认超时 |
|
|
102
|
-
| `maxTurnsPerHour` | 120 | 每群每小时 Bot 回复轮数上限 |
|
|
103
151
|
| `dailyTokenBudget` | 5000000 | 每群每日 token 上限 |
|
|
104
|
-
| `botSandbox` | true |
|
|
105
|
-
| `botApprovalPolicy` | ask | `ask
|
|
106
|
-
| `pdfFontPath` | 空 | 可选:指定 PDF 导出的 CJK TrueType/TTC 字体文件;空则按平台自动发现 |
|
|
152
|
+
| `botSandbox` | true | Bot session 是否显式设为 `workspace-write` |
|
|
153
|
+
| `botApprovalPolicy` | ask | `ask`:越界时在群里出现审批卡片;`never`:无头模式直接拒绝 |
|
|
107
154
|
|
|
108
|
-
|
|
155
|
+
Bot 回复不再按小时限制轮数,旧配置中的小时轮数上限会被忽略。每群每日 token 预算仍由 `dailyTokenBudget` 控制,按 Host 本地时间零点重置;并行上限、单 Bot 串行及讨论轮数等调度规则保持不变。
|
|
109
156
|
|
|
110
|
-
|
|
111
|
-
- `GET /api/bot-team.messages?groupId=…`
|
|
112
|
-
- `GET /api/bot-team.events?groupId=…`(SSE)
|
|
113
|
-
- `POST /api/bot-team.action`(`group.create` / `group.reorder` / `folder.create` / `folder.update` / `folder.delete` / `folder.reorder` / `direct.open` / `bot.create` / `member.add` / `message.post` / `message.stop` / `persona.write` / `settings.chatDisplay.update` …)
|
|
114
|
-
- `GET|PUT /api/bot-team.file`(`kind=bot`;兼容 `soul` / `agent`)
|
|
115
|
-
- `POST /api/bot-team.upload?name=…&groupId=…`(原始字节;返回 `attachmentId` / `name` / `bytes`)
|
|
116
|
-
- `GET /api/bot-team.skills?groupId=…&memberId=…`(当前工作区中 `userInvocable` 的 Skill;首次调用会准备一个 Bot 会话读取其工作区)
|
|
117
|
-
- `GET /api/bot-team.export.pdf?groupId=…&lang=zh|en`(返回 PDF,`Content-Disposition` 下载;无 CJK 字体时 501)
|
|
157
|
+
完整字段、HTTP action 与工具参数见 [插件配置与接口](https://github.com/shper/dsh-bot-team/blob/main/docs/%E9%85%8D%E7%BD%AE%E4%B8%8E%E6%8E%A5%E5%8F%A3.md)。
|
|
118
158
|
|
|
119
|
-
##
|
|
159
|
+
## 数据与隐私
|
|
120
160
|
|
|
121
|
-
|
|
161
|
+
| 路径 | 内容 |
|
|
162
|
+
|---|---|
|
|
163
|
+
| `$DSH_HOME/storages/dsh-bot-team/` | 群、单聊、分组、Bot、成员、消息、任务、讨论 |
|
|
164
|
+
| `$DSH_HOME/dsh-bot-team/bots/<botId>/BOT.md` | 人格与工作规范 |
|
|
165
|
+
| `$DSH_HOME/dsh-bot-team/groups/<groupId>/` | 群聊工作目录 |
|
|
166
|
+
| `$DSH_HOME/dsh-bot-team/direct/<botId>/` | 单聊工作目录 |
|
|
122
167
|
|
|
123
|
-
|
|
168
|
+
- 启动时自动把旧的 `storages/bot_team/` 实体目录迁到 `storages/dsh-bot-team/`,旧路径保留为兼容目录链接;已有记录和后续写入均位于新目录。使用自定义 JSON 存储根目录时,在该根目录下做同样迁移。
|
|
169
|
+
- 插件不向任何第三方服务上传数据;Bot 的模型请求走你在 DSH 里配置的 provider。
|
|
170
|
+
- Bot 默认拥有 `workspace-write` 的文件与命令能力,范围受工作目录限制。把它们指向敏感目录之前,请先确认这是你想要的。
|
|
124
171
|
|
|
125
|
-
|
|
172
|
+
## 仓库结构
|
|
126
173
|
|
|
127
|
-
```
|
|
128
|
-
|
|
174
|
+
```
|
|
175
|
+
host/ 服务、存储、Agent 与协作逻辑
|
|
176
|
+
locale/ 中英文本
|
|
177
|
+
test/ 回归测试与测试辅助
|
|
178
|
+
docs/ 使用、接口、发布与升级文档
|
|
179
|
+
assets/ 文档使用的截图
|
|
180
|
+
index.js Host 入口
|
|
181
|
+
client.js Web 客户端
|
|
182
|
+
cordis.patch.yml 插件与 Bot 工具预设
|
|
183
|
+
package.json 包元数据、依赖与验证命令
|
|
184
|
+
README.md 项目入口与开发说明
|
|
185
|
+
CHANGELOG.md 各版本修改记录
|
|
186
|
+
LICENSE MIT 许可证
|
|
129
187
|
```
|
|
130
188
|
|
|
131
|
-
|
|
189
|
+
仓库根目录同时是 npm 包根目录;开发、测试与打包命令均在这里运行。安装已有源码时直接选择包含 `package.json` 的仓库目录。
|
|
132
190
|
|
|
133
|
-
|
|
191
|
+
## 开发
|
|
192
|
+
|
|
193
|
+
宿主侧是普通 ESM,不 import 任何 `@deepseek-ai/*` 包;客户端是单文件 `client.js`,React 来自平台模块表。PDF 导出用 `fontkit` 读取并子集化系统 CJK 字体(唯一运行时依赖);其余测试不依赖第三方包、不调用真实模型、不访问个人数据。
|
|
134
194
|
|
|
135
|
-
|
|
195
|
+
在仓库根目录运行:
|
|
136
196
|
|
|
137
197
|
```sh
|
|
138
|
-
|
|
198
|
+
npm install # 安装唯一运行时依赖 fontkit(PDF 字体子集)
|
|
199
|
+
npm run check # node --check:index.js / client.js / host/*.js
|
|
200
|
+
npm test # 隔离回归测试;部分 PDF 用例按系统字体条件运行或跳过
|
|
201
|
+
npm pack --dry-run # 查看真正会被发布的文件
|
|
139
202
|
```
|
|
140
203
|
|
|
141
|
-
|
|
204
|
+
发布前自检,以及 npm / Git / 插件市场索引三条发布路线见 [https://github.com/shper/dsh-bot-team/blob/main/docs/%E5%8F%91%E5%B8%83%E6%8C%87%E5%8D%97.md](docs/发布指南.md)。
|
|
142
205
|
|
|
143
|
-
|
|
206
|
+
## 已知限制
|
|
144
207
|
|
|
145
|
-
|
|
208
|
+
- 分组只有一层;展开 / 收起是浏览器本地偏好,不跨设备同步;
|
|
209
|
+
- 同一群只允许一个未结束的讨论或辩论;`paused` 仍占用该位置,阻止新流程、`/new` 和切换项目。停止后若原生执行尚忙,会保留 `stopping`,需要等待并重新检查;
|
|
210
|
+
- 讨论视角、正反方和裁判是临时提示,仍复用成员的原会话;不保证角色或立场之间的记忆隔离;
|
|
211
|
+
- 任务队列是 Engine 内存态,重启后排队标记丢失(任务仍为进行中);
|
|
212
|
+
- Markdown 渲染较轻量:无语法高亮,图片未支持;
|
|
213
|
+
- PDF 使用系统 CJK 字体(macOS 优先 Hiragino Sans GB / Arial Unicode(宋体等无嵌入许可的字体自动跳过);Windows/Linux 用常见中文字体);没有 CJK 字体时导出返回 501,可用 `pdfFontPath` 指定字体文件;PDF 为轻量排版(无图片/头像、链接不可点击、emoji 可能缺字),正文文本可选中与搜索;
|
|
214
|
+
- 语言只覆盖界面与宿主事件消息;Bot 的回复、群名/Bot 名、人格模板正文、部分宿主错误仍按原语言显示;
|
|
215
|
+
- Bot 的操作边界由群/单聊工作目录、`botSandbox` 与审批策略共同约束。
|
|
146
216
|
|
|
147
|
-
|
|
217
|
+
## 文档
|
|
148
218
|
|
|
149
|
-
|
|
219
|
+
- [版本变更记录](CHANGELOG.md)
|
|
220
|
+
- [完整功能、HTTP 通道与配置](https://github.com/shper/dsh-bot-team/blob/main/docs/%E9%85%8D%E7%BD%AE%E4%B8%8E%E6%8E%A5%E5%8F%A3.md)
|
|
221
|
+
- [使用指南](https://github.com/shper/dsh-bot-team/blob/main/docs/%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.md)
|
|
222
|
+
- [讨论与辩论:流程、工具、API 与恢复边界](<https://github.com/shper/dsh-bot-team/blob/main/docs/%E8%AE%A8%E8%AE%BA%E4%B8%8E%E8%BE%A9%E8%AE%BA.md>)(1.3.0 源码版本)
|
|
223
|
+
- [发布指南](https://github.com/shper/dsh-bot-team/blob/main/docs/%E5%8F%91%E5%B8%83%E6%8C%87%E5%8D%97.md)
|
|
224
|
+
- [升级检查清单](https://github.com/shper/dsh-bot-team/blob/main/docs/%E5%8D%87%E7%BA%A7%E6%A3%80%E6%9F%A5%E6%B8%85%E5%8D%95.md)
|
|
225
|
+
- [消息执行过程](https://github.com/shper/dsh-bot-team/blob/main/docs/%E6%B6%88%E6%81%AF%E6%89%A7%E8%A1%8C%E8%BF%87%E7%A8%8B.md)
|
|
226
|
+
- [后台会话与完整日志](https://github.com/shper/dsh-bot-team/blob/main/docs/%E5%8E%9F%E7%94%9F%E4%BC%9A%E8%AF%9D%E4%B8%8E%E5%AE%8C%E6%95%B4%E6%97%A5%E5%BF%97.md)
|
|
227
|
+
- [新建会话:数据模型与接口](https://github.com/shper/dsh-bot-team/blob/main/docs/%E6%96%B0%E5%BB%BA%E4%BC%9A%E8%AF%9D.md)
|
|
150
228
|
|
|
151
|
-
|
|
229
|
+
当前源码版本为 `1.3.0`;各版本修改见 [CHANGELOG](CHANGELOG.md),详细提交与历史验收记录可通过 Git 历史查阅。临时预览、调研副本和一次性工具不纳入维护目录。
|
|
152
230
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
npm test # 134 条隔离回归测试(133 通过 + 1 条按字体条件跳过)
|
|
157
|
-
npm pack --dry-run # 查看真正会被发布的文件
|
|
158
|
-
```
|
|
231
|
+
## License
|
|
232
|
+
|
|
233
|
+
MIT © [shper](https://github.com/shper)
|
|
159
234
|
|
|
160
|
-
|
|
235
|
+
## English
|
|
161
236
|
|
|
162
|
-
|
|
237
|
+
**Bot Team** is a DeepSeek Harness plugin for long-lived agent colleagues. Every bot is a real DSH agent with its own persistent session, model, `BOT.md` persona and full toolset (files, search, web, commands inside a `workspace-write` sandbox). Each bot gets a direct chat; groups support `@mention` dispatch, parallel streaming replies, peer review and multi-round discussions. Task tools and HTTP APIs support priorities, dependencies, review/acceptance and a dispatch queue; the group sidebar task panel and its creation entry have been removed. Data lives in the `bot_team` storage domain and `$DSH_HOME/dsh-bot-team/`; group conversations never pollute session logs.
|
|
163
238
|
|
|
164
|
-
|
|
239
|
+
Source version **1.3.0** adds structured discussions, 1v1 debates with an optional independent judge, and pause/resume/retry/finish/stop/context controls. Existing discuss tool calls still default to classic two-round discussions. Reload the local plugin Host with disable → enable, then refresh the page; see the [discussion and debate guide](<https://github.com/shper/dsh-bot-team/blob/main/docs/%E8%AE%A8%E8%AE%BA%E4%B8%8E%E8%BE%A9%E8%AE%BA.md>).
|
|
240
|
+
|
|
241
|
+
Version **1.2.1** fixes execution history loading and live token totals. **Open full session** now opens a separate read-only history page with an explicit return button; returning preserves the original execution entry, chat draft and scroll position. Member and sidebar session entries use the same history reader, including saved sessions from earlier replies. The hourly reply limit has been removed; daily token budgets remain in effect.
|
|
165
242
|
|
|
166
243
|
```sh
|
|
167
|
-
|
|
168
|
-
|
|
244
|
+
# Desktop: Plugins → Add plugin → dsh-bot-team@1.3.0, then reload
|
|
245
|
+
dsh plugin --profile <profile> add dsh-bot-team@1.3.0
|
|
169
246
|
```
|
|
170
247
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
## 已知限制
|
|
248
|
+
`1.3.0` is the current source version; these npm installation examples apply once that version is published. Use a local directory to install the source before publication.
|
|
174
249
|
|
|
175
|
-
- Markdown
|
|
176
|
-
- 讨论仅固定轮次(无 AI 主持人、同一群同时只允许一个讨论)。
|
|
177
|
-
- 讨论中的单条消息不支持重试(请重新发起讨论)。
|
|
178
|
-
- 审批默认 `ask`:Bot 越界/升权时会在群时间线出现「审批请求」卡片,点「去审批」打开该 Bot 的 DSH 会话选择「允许一次 / 拒绝」;无人处理时会等到本轮超时。`botApprovalPolicy: never` 可切回严格的自动拒绝模式。
|
|
179
|
-
- Bot 的操作边界由群/单聊工作目录、`botSandbox` 与审批策略共同约束。
|
|
180
|
-
- 语言只覆盖界面与宿主事件消息;Bot 回复、群名/Bot 名、人格模板正文与部分宿主错误保持原语言。
|
|
181
|
-
- PDF 依赖系统 CJK 字体;无字体时返回 501(可用 `pdfFontPath` 指定)。PDF 为轻量排版:无图片/头像、链接不可点击、emoji 可能缺字;正文可选中/搜索。
|
|
182
|
-
|
|
183
|
-
- 导出 HTML 为轻量 Markdown 转换(无表格/图片)。
|
|
184
|
-
- 任务板:优先级只影响排序/展示(不抢占调度);依赖仅支持「全部 accepted」;无任务删除/排期/工时。
|
|
185
|
-
- 队列为 Engine 内存态(重启后排队标记丢失,任务仍 in_progress);一键派发无独立持久队列。
|
|
186
|
-
- 任务面板 UI 只暴露「派发 / 中断 / 执行流」;评审/验收/编辑/一键派发需通过模型工具或 HTTP action。
|
|
187
|
-
- 单聊固定一对一(一个 Bot),不能加成员、不能删除;删除 Bot 时会连同单聊与单聊消息一起删除。单聊不参与模型工具 `bot_team_list`,也不会进入群聊分组;评审、讨论、任务板等群聊专属流程在单聊中禁用(Host 拒绝)。
|
|
188
|
-
- 分组只支持一层(不能嵌套);分组删除后群会回到「未分组」,不会被删除。
|
|
189
|
-
- 分组/群的自定义排序保存在 Host;「展开/收起」是浏览器本地偏好,不跟随账号同步。
|
|
190
|
-
- 左侧栏收起为图标栏时不显示分组标题,只按单聊 → 群聊的顺序展示头像与分隔线。
|
|
191
|
-
- 右侧面板的展开/收起是浏览器本地偏好;`≤1100px` 时右侧面板本来就自动隐藏,右上角的切换按钮也一并隐藏。没有选中会话时(右侧显示 Bot 库)不提供收起。
|
|
192
|
-
- v0.7 同时改了 Host:升级后必须重新加载 Host 模块(disable→enable 或重启 DSH)再刷新页面;只刷新页面会看到「Host 仍是旧版本」提示。
|
|
193
|
-
- 输入框附件是**通用文件**:单文件 ≤32 MB、每条消息 ≤10 个;图片/二进制不会作为视觉输入送给模型,Bot 只能通过只读路径读取。附件存入 `$DSH_HOME/attachments/v1`,不随消息或群删除,也不会自动回收。
|
|
194
|
-
- Skill 选择器读取的是 Bot 工作区的 `userInvocable` Skill;首次打开会准备一个 Bot 会话,可能稍慢。Host 未重新加载时,Bot 预设还没有 `skill-filesystem` / `tool-skill`,`/skill-name` 不会加载对应指令。
|
|
195
|
-
- 本次同时改了 Host 路由(`upload` / `skills`)与 Bot 预设:建议**完整重启 DSH** 让 bundle patch 重新应用,再刷新页面;只 disable→enable 插件不保证刷新预设。
|
|
196
|
-
- **v1.1 升级提示**:新增 `/api/bot-team.export.pdf` 路由与 `fontkit` 依赖,必须重新加载 Host(disable→enable 或重启 DSH)再刷新页面;从源码 link 安装时先在 `bot-team/` 执行 `npm install`。
|
|
197
|
-
|
|
198
|
-
## 下一阶段
|
|
199
|
-
|
|
200
|
-
v1.1 已完成 M5 的「完整 i18n(zh/en)」与「导出 PDF」;剩余:可选的 per-Bot 权限分级(只读 / 全能力)、多进程配额账本、持久任务队列 / 优先级抢占、PDF 图片与可点击链接。
|
|
250
|
+
Requires DSH `0.2.1-rc.x`. The UI follows DSH's zh/en language setting, and group timelines export to Markdown, HTML, or a paginated PDF with selectable text. MIT licensed.
|