dsh-mise:DeepSeek Harness 的工具链管理页面

前言

在 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 安装。

典型用法

智能体查看与安装

  1. 智能体调用 mise_status,获取当前目标目录、配置文件链、激活版本与缺失版本
  2. 使用 mise_versions 查看远程与已安装版本,决定安装目标
  3. 以 background: true 调用 mise_install 获取任务 ID,避免阻塞
  4. 轮询 mise_progress 直到任务完成,将结果写入 mise.toml(mise_use)

依赖清理

  1. 调用 mise_prune(默认 dryRun: true)预览将要移除的版本
  2. 确认无误后,再次调用 mise_prune 移除
  3. 对从未安装或遗留的配置请求,调用 mise_unuse 移除对应行

PATH 激活

加载时插件自动将 shim 目录插入 PATH。如需控制,可在配置中设置 activate: false。

适用场景与注意

  • 适合需要通过智能体统一管理开发工具链(如 Node、Python、Bun 等)的 DSH 场景
  • 插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证(MIT)
  • 如果镜像将配置与数据目录指向 /tmp,每次加载会重建持久副本并报告 drift

结尾

dsh-mise 将 mise 的工具链管理能力接入 DSH 设置页面与智能体工具集,让智能体可以安全地查看、安装、切换和清理工具版本,并通过配置驱动,减少人工操作。更多细节可查看插件目录页与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜