前言¶
在 DeepSeek Harness(DSH)中,智能体经常需要使用不同的工具版本。手动查找、安装和切换版本容易出错,而现有的配置方式对智能体不够友好。dsh-mise 提供了一个统一的设置页面,让智能体可以直接管理工具链。
是什么¶
dsh-mise 是一个为 DeepSeek Harness 提供的工具链管理插件,由 SOVLOOKUP 维护。它基于 mise 工具链管理器构建,在 DSH 内部提供一套设置页面和九个 agent 工具。智能体可以通过这些工具查看机器状态、选择版本、安装/卸载/清理工具,并更新配置文件,无需猜测或手动操作。
核心功能¶
设置页面¶
在 DSH 的 Settings → mise 页面中,可以查看:
- 一个表格,显示当前激活的版本、已安装版本数量以及 PATH 解析到的路径
- 工具版本管理:点击工具名前的
▸展开,可查看版本状态、安装路径,并执行“使用”“卸载”等操作(卸载为两步确认) - 新版本提示:在激活版本后显示
↑1.8.2标记,由mise outdated --inactive --bump --json提供,由 mise 自己比较,不重新实现 - 未安装但配置请求的版本:在当前列显示“not installed”,子表提供
install x.y.z,并有一键“安装配置请求的所有工具” - 工具搜索:输入工具名列出版本,
tool@prefix(如pnpm@12)限定前缀,其他则回退到 mise registry 搜索 - 实时安装输出:面板每 0.7 秒轮询正在执行的写入命令,渲染 mise 原始输出(
\\r重绘被原地折叠)
九个 agent 工具¶
| 工具 | 功能 |
|---|---|
mise_status |
查看mise版本/路径、目标目录、目录链上的配置文件、激活版本、缺失版本,以及 CLI 激活是否开启 |
mise_versions |
获取工具的已安装/激活/最新/远程版本,或对查询进行 registry 搜索 |
mise_system |
扫描 18 个常见开发命令的只读 PATH,显示命中路径和版本,以及 mise 是否管理该工具,以及跳过 mise shim 后的镜像提供副本 |
mise_install |
安装 tool@version,background: true 返回任务 ID |
mise_use |
将版本写入项目 mise.toml 或全局配置(如果不存在则先安装) |
mise_prune |
移除配置未引用的版本,默认 dryRun: true |
mise_uninstall |
移除一个已安装版本,并移除指向它的配置请求 |
mise_activate |
对当前主机进程开启/关闭 PATH 激活 |
mise_progress |
读取一个写入命令的实时进度(正在运行、持续时间、最近行、是否完成) |
写入操作被记录为任务,因为工具调用是请求/响应模式:面板轮询正在执行的任务,agent 以 background: true 启动并轮询 mise_progress,避免长时间下载将调用锁定十五分钟。
配置项¶
在插件行或设置表单中可配置以下字段:
| 字段 | 默认值 | 说明 |
|---|---|---|
miseBin |
'' |
空时探测 PATH,否则指向 mise 二进制路径(如 ~/.local/bin/mise、/usr/local/bin/mise、/opt/homebrew/bin/mise、~/.local/share/mise/bin/mise) |
cwd |
'' |
面板和工具的默认目录,空时使用主机进程的 cwd |
env |
{} |
每个 mise 子进程的额外环境变量 |
timeoutMs |
20000 |
读命令(ls / ls-remote / registry)超时 |
longTimeoutMs |
900000 |
install / use / prune 超时 |
writeMode |
auto |
readonly 拒绝所有写入;ask 将智能体写入通过 DSH 的审批口,无审批者时拒绝;auto 执行写入 |
remoteLimit |
30 |
每次调用返回的远程版本数 |
registryLimit |
40 |
registry 搜索返回的命中数 |
activate |
true |
加载时将 mise 的 shim 目录插入主机进程 PATH,使工具命令在任何主机生成的 shell 中可用 |
写入边界¶
- 仅操作 mise 的安装目录和配置文件;
prune总是带--tools运行,不触碰 mise 的配置跟踪表 uninstall使用显式tool@version,分两步:mise uninstall删除文件,mise unuse --no-prune --path <source.path>删除指向它的配置请求,否则行会保留为“not installed”- 从未安装(或卸载遗留)的配置请求,有独立的“从配置移除”操作,即裸
mise unuse在相同显式路径上 - 真正的 prune 总是先运行 dry run;返回的
removed列表是预览,而非猜测 - 面板按钮是用户点击,跳过审批;智能体写入工具遵循
writeMode - 不设置
MISE_AUTO_INSTALL:仅在被请求时安装
激活与持久化¶
加载时,插件将 <data dir>/shims 插入主机进程 PATH,相当于执行 mise activate,但不编辑 shell 配置。该效果仅对主机进程及其生成的 shell 生效,主机外部的终端不受影响。配置指定的版本优先,shims 回退到系统副本,因此命令不会消失。
如果镜像将 XDG_CONFIG_HOME / XDG_DATA_HOME 指向 /tmp,mise 状态在重启时会被清空。每次加载都会在 $HOME 下重建持久副本(~/.config/mise、~/.local/share/mise),并将 /tmp 默认符号链接到它们;仅非空目录会被报告为 drift,不会被删除。
安装与启用¶
插件安装命令如下:
dsh plugin --profile web add github:SOVLOOKUP/dsh-mise
使用前需满足:
dsh版本 ≥ 0.2.0-rc.2- 主机上有
mise二进制,或通过miseBin指定
构建产物已提交到 dist/,无需额外构建步骤;mise 本身不打包,需先从 mise.jdx.dev 安装。
典型用法¶
智能体查看与安装¶
- 智能体调用
mise_status,获取当前目标目录、配置文件链、激活版本与缺失版本 - 使用
mise_versions查看远程与已安装版本,决定安装目标 - 以
background: true调用mise_install获取任务 ID,避免阻塞 - 轮询
mise_progress直到任务完成,将结果写入mise.toml(mise_use)
依赖清理¶
- 调用
mise_prune(默认dryRun: true)预览将要移除的版本 - 确认无误后,再次调用
mise_prune移除 - 对从未安装或遗留的配置请求,调用
mise_unuse移除对应行
PATH 激活¶
加载时插件自动将 shim 目录插入 PATH。如需控制,可在配置中设置 activate: false。
适用场景与注意¶
- 适合需要通过智能体统一管理开发工具链(如 Node、Python、Bun 等)的 DSH 场景
- 插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证(MIT)
- 如果镜像将配置与数据目录指向
/tmp,每次加载会重建持久副本并报告 drift
结尾¶
dsh-mise 将 mise 的工具链管理能力接入 DSH 设置页面与智能体工具集,让智能体可以安全地查看、安装、切换和清理工具版本,并通过配置驱动,减少人工操作。更多细节可查看插件目录页与 GitHub 仓库。