DeepSeek Harness(DSH)采用插件化架构,开发者常需要在 Agent 会话中执行 Git 操作或依赖管理命令。直接调用 Shell 脚本容易导致返回格式不统一,且缺乏类型约束。下面介绍 dsh-engineer-tools,它将常用工程命令封装为结构化的 Host Tool,让 Agent 能够以更聚焦、更安全的方式执行这些任务。
插件定位¶
dsh-engineer-tools 是由 bycall 维护的一个 DSH 插件,旨在为工程场景提供工具支持。它包含一个作用域化的 Git 运行器和包管理器运行器,并提供了易于扩展的工具模板。插件遵循 MIT 协议,代码为纯 ESM,无构建步骤。
核心功能¶
Git 工具¶
该工具允许 Agent 在会话工作区执行 git 子命令,支持 status、diff、log、branch、show 等。工具会返回 stdout、stderr 和 exitCode,便于后续逻辑处理。
包管理器工具¶
支持 npm、pnpm、yarn、bun 四种主流包管理器。可执行生命周期命令(如 install、outdated、audit)以及开发脚本(如 test、build、lint)。当指定 manager: auto 时,工具会根据 lockfile 自动识别当前项目使用的包管理器。
运行机制¶
所有工具以 Agent 权限运行命令,严格受 DSH 沙箱与审批策略限制,确保执行过程可控。
安装与启用¶
- 安装插件
使用官方安装命令将插件添加到指定 profile(示例中使用 web profile):
dsh plugin --profile web add dsh-engineer-tools
也可以通过本地目录源安装:
dsh plugin --profile web add /path/to/dsh-engineer-tools
-
生效
安装完成后,需要重启 DSH.app,Agent 即可在后续对话中调用git和dev工具。 -
卸载
如需移除插件:
dsh plugin --profile web remove dsh-engineer-tools
典型用法¶
安装生效后,Agent 可以直接调用封装好的工具。
* 调用 git 工具时,只需传入具体的 git 子命令,如 git status 或 git log -1。
* 调用 dev 工具时,可指定包管理器或使用 manager: auto 自动识别。例如执行构建:dev build。
适用场景与技术注意¶
- 适用场景:适用于需要在 DSH Agent 会话中频繁进行 Git 操作或依赖管理的软件工程场景。
- 技术细节:
- 插件严格遵循
@deepseek-ai/dsh-tool-bash的注册范式。 - 依赖声明中
peerDependencies的版本范围必须逐条列出,不能依赖宽松匹配(如>=),否则可能破坏模块级 Symbol 标记,导致运行时错误。 - 插件通过 dsh 配置中的
bundle.patch应用 cordis 补丁。
- 插件严格遵循
dsh-engineer-tools 通过标准化接口简化了工程命令的调用流程。开发者可以参考其源码结构,快速扩展更多符合 DSH 规范的工具。