DSH 采取插件化架构,旨在通过扩展提升 Agent 的操作能力。dsh-stool-plugin 是一个将 stool 运维 CLI 的全部能力注册为 DSH 工具的插件。它让 Agent 能够直接调用服务器管理、日志查询、数据库操作等能力,无需人工介入即可执行运维任务。
该插件由 fufengyuan 维护,归类为工作流类工具,遵循 MIT 许可证。
核心功能¶
插件将 stool v7.x 的命令面映射为 12 个 DSH 工具,覆盖以下场景:
- 服务器管理:支持列表、测试、批量执行、健康检查、诊断、文件传输(上传/下载)、目录操作及 Java 进程管理。
- 数据库与 Redis:支持数据库列表、查询、结构查看、数据操作,以及 Redis 命令执行。
- 日志查询:支持日志列表、搜索、实时查看、上下文读取及历史翻页。
- CI/CD:支持部署、状态查看、回滚、历史记录、构建日志及工具检测。
- 其他能力:包括双因子认证码管理、Git 仓库操作、待办事项与笔记管理、项目管理、Nginx 配置预设与部署,以及记账统计、周报生成和操作审计。
安装与启用¶
在宿主机上安装 stool CLI 是使用该插件的前提。安装命令如下:
dsh plugin --profile web add github:fufengyuan/dsh-stool-plugin
安装完成后,需要重启 DSH Web 服务以加载插件:
launchctl kickstart -k gui/501/com.duormi.dsh-web
工具参数与使用注意¶
工具层做了参数归一化,但在调用底层 stool CLI 时需注意特定参数名与限制:
stool_todo¶
- add:截止日期使用
-d/--due,标签使用-g/--tag。 - edit:文本修改使用
-t/--text,标签必须使用-g/--tag(注意与 add 的区别)。
stool_log¶
- 翻历史:必须指定
date或days参数,两者互斥。 - search/tail:行数控制使用
-l参数。上下文查看请使用context动作并配合行号。
stool_db redis¶
- 不接受
--json参数。 - 子命令必须白名单化,早期版本直接拆分命令可能导致报错。
stool_server upload¶
- 需提供三个位置参数:
<ID>(服务器 ID)、<LOCAL>(本地路径)、<REMOTE>(远程目标路径)。
java-restart¶
- 仅执行停止操作,不自动拉起进程。
设置页检测机制¶
在 DSH 的设置页面中,Stool 运维工具箱卡片会自动检测本机 stool 的安装状态:
* 检测方式:Host 侧通过接口 GET /stool/status 获取结果,该接口仅响应同源回环请求。
* 结果缓存:检测结果缓存 30 秒,可通过 ?refresh=1 强制重新探测。
* 状态反馈:已安装显示路径与版本号;未安装显示下载引导;接口不可用时标记为「状态未知」。
依赖与构建¶
该插件依赖以下 Peer Dependencies:
@deepseek-ai/cordis(^4.0.1)@deepseek-ai/dsh-tools(^0.1.0-rc.6)stoolCLI(需在宿主机上安装,插件会扫描 PATH 及常见目录如/usr/local/bin)
从源码构建时,需确保 @deepseek-ai/dsh-tools 存在:
cd ~/.dsh/plugin-src/dsh-stool-plugin
npm install
# 或手动建立符号链接
ln -sf /path/to/dsh-tools node_modules/@deepseek-ai/dsh-tools
总结¶
dsh-stool-plugin 通过适配器模式将成熟的 stool CLI 能力引入 DSH 生态,大幅扩展了 Agent 在服务器运维、数据库操作及流程管理上的自动化能力。使用时需注意各子命令的特殊参数要求与白名单限制。