PelyDeng/dsh-plugin-manager--plugins-external-dsh-butler-console ↗★ 8

dsh-butler-console

提供统一对话入口、任务拆解与子智能体调度状态页 适合需要拆解复杂任务并调度多个子Agent协同工作的管理场景。

包名
dsh-butler-console
兼容性
待验证
Harness 依赖范围
0.1.7-alpha.2
Cordis 依赖范围
4.0.4
版本
0.14.6
许可证
Apache-2.0
最近更新
2026年9月27日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:PelyDeng/dsh-plugin-manager#3f7fb02f0699747bb54da383881e3e9b4b64fd0c&path:plugins/external/dsh-butler-console

配置

配置由管理器按实例 plugin.json 生成;字段全部有默认值,未配置时按默认运行。

字段默认说明
accessModeauthenticatedstandalone 仅用于本机调试
publicOrigin空认证模式必填,HTTP(S) origin,不带路径
routePrefix/butler页面与接口前缀。改它不用改前端源码:页面骨架 web-react/index.html 里的 /butler 字面量是替换标记,服务 index.html 时按配置整体 replaceAll 成实际前缀(src/web.ts);JS 产物内部一律走注入的 __BUTLER_CONFIG__.routePrefix,不写死
subtaskTimeoutMs300000单个子任务超时,超时中止并释放成员
waitingTimeoutMs600000等用户回话的最长时间;到点按超时收尾,材料保留
turnTimeoutMs600000单轮上限
maxMessageChars8000单条消息字符数上限
maxResultChars8000单个子任务结果写回页面的字符数上限
maxSubtasks6一次计划允许的子任务数
maxAvatarBytes262144成员头像大小上限
maxAttachmentBytes16777216单个附件大小上限(16 MiB)。URL 抓取也按它卡
maxAttachmentsPerMessage5一条消息最多带几个附件;也是"待发附件"最多攒几个——攒了发不出去没有意义
attachmentParseChars120000一次解析最多收多少字符(落库的那一份)
attachmentBriefChars20000附件正文进提示词与派单简报的字符上限(按文件数平分,是硬预算)
visionModel空读图用哪条模型路由,写成 provider/model;留空表示在官方模型目录里自动挑第一个支持图片的
attachmentFetchTimeoutMs15000抓取 URL 的超时
maxRequestBodyBytes65536请求体上限
maxActiveConversations32同时保留的会话数
maxHistoryPageSize30历史每页条数上限
maxConversationEvents2000每个会话最多保留的事件条数,供断线续传与第二个入口回放
idempotencyTtlMs600000写请求的幂等记录保留多久;记录与任务同库落盘(butler_requests 表),重启后仍能识别同一次提交

业务存储配置与迁移

PostgreSQL 配置(三路来源,按优先级)

  1. 环境变量 BUTLER_PG_DSN:直接给连接串(开发/测试最方便)。
  2. 私有配置文件 + 环境变量 BUTLER_PG_CONFIG 指向它:文件内容形如 {"dsn":"postgresql://用户:密码@主机:5432/库名"},模板见 config/storage.example.json (复制后填写,不要提交 Git)。
  3. 都没设时的缺省路径:/plugins/butler/storage.json(存在才读,格式同上)。

凭据只走环境变量与私有文件,绝不写进 cordis 配置或 plugin.json(管理器 patch 会整体 替换配置,凭据不能跟着进 Git)。三路都没配置时插件装载失败、不激活。

初始化 SQL 的执行方式

对空库执行一次 private-deploy/db/0001_init.sql(psql -f 或部署脚本完成),版本行随建表一起 写入。之后插件启动只做校验;将来结构变化会以新的编号 SQL 提供,版本不符时拒绝读写。不要用 插件自带的 migrations/postgres/0001_init.sql 建新库——那是旧形状,管家启动时会因版本不符而失败。

存量迁移(SQLite → PostgreSQL)

旧 butler.sqlite(默认路径 /plugins/butler/butler.sqlite)用一次性工具 dist/migrate-storage.mjs 迁移(pg 驱动已打进产物,归档内可直接 node 运行):

node dist/migrate-storage.mjs --source  --dsn  [--dry-run]

### PostgreSQL 配置(三路来源,按优先级)

1. 环境变量 `BUTLER_PG_DSN`:直接给连接串(开发/测试最方便)。
2. 私有配置文件 + 环境变量 `BUTLER_PG_CONFIG` 指向它:文件内容形如
   `{"dsn":"postgresql://用户:密码@主机:5432/库名"}`,模板见 `config/storage.example.json`
   (复制后填写,不要提交 Git)。
3. 都没设时的缺省路径:`/plugins/butler/storage.json`(存在才读,格式同上)。

凭据只走环境变量与私有文件,**绝不写进 cordis 配置或 `plugin.json`**(管理器 patch 会整体
替换配置,凭据不能跟着进 Git)。三路都没配置时插件装载失败、不激活。