前言¶
在 DSH 里做机器学习,常见做法是手写脚本、自己记参数,或把 notebook 片段交给智能体拼接。实验一多,很难在对话里稳定地「保留某次拟合的预处理、换模型再对比」,更难在几周后用同一套数据与划分复现结果。下面介绍的 dsh-ml-workbench(维护者 shinerain1)把 MLflow、Optuna 和 scikit-learn 收成一组 DSH 可调用的工具:面向本地 CSV,完成检查数据、建实验、持久化调参、分支对比、预测与可验证交付。训练与跟踪能力来自成熟上游库;插件在 README 中指向 capability review 说明与完整 ML 平台之间的差距。
这是什么¶
DSH ML Workbench 是 DeepSeek Harness 的第三方插件,分类上属于模型推理相关能力。当前发布版本 0.4.0 提供 20 个工具,覆盖 CSV 探查、实验创建与运行、Optuna 持久化搜索、实验分支与差异对比、预测以及 ZIP 形式的复现包导出。后端为本地、单用户架构:Python 后端需与 DSH 插件包分开安装,通过配置中的 pythonExecutable 与可写 root 目录对接。
核心功能¶
经过上面的定位,可按工作流理解各工具分工(细节以 GitHub README 为准):
- 数据与实验:
ml_dataset_inspect报告缺失、类型、重复与可能的 ID 列;ml_experiment_create快照 CSV、代码、参数、环境与验证集行索引,request_key使创建可幂等重试;ml_experiment_run合并创建与启动。 - 生命周期:
ml_experiment_wait做有界等待;ml_experiment_list在会话重启后恢复 run ID;中断 worker 标记为interrupted,不会误报成功。本地 worker 可在 DSH 退出后继续;executionMode: dsh时 worker 随所属插件/进程结束而停止。 - 分支与对比:
ml_experiment_branch默认复用父实验成功 run 的已拟合预处理;reuse_preprocessing: false可改处理或从失败 fit 重来。ml_experiment_diff说明配置、代码与评估器变化;ml_experiment_compare在条件不兼容时会拒绝。分类任务在定义可行时补充 ROC-AUC、平均精度、log loss,并含 dummy 基线与混淆矩阵。 - 调参:
ml_search_create/step/get/cancel适配持久化 Optuna;每步最多启动一个异步 trial,重复调用安全,DSH 重启后同一 study 可继续。 - 预测与收尾:
ml_model_predict对另一份本地 CSV 做校验特征后输出预测/概率与 manifest;先用验证集选模,再ml_experiment_finalize评估预留的最终测试集。默认划分约为 60/20/20(train/validation/final-test),可按 group 或 time 策略约束。 - 交付:
ml_experiment_export校验快照与 MLflow 指标后产出含模型、代码、HTML/Markdown 报告、环境与独立复现脚本的 ZIP;默认不含 CSV,除非include_data: true。
README 中的对话示例:先让 DSH 训练多个复购分类器,再说「保留第三次实验的拟合预处理,试更快模型并对比」——分支会新建 MLflow run、复制同一 fitted transformer、保留相同验证行且不动父 run。
安装与启用¶
环境要求(资料原文):Python 3.11+(lock 在 3.12.0 上测过)、Node 24.9+、DSH 0.2.2(文档写明在 0.2.2-alpha.3 上测试)。package.json 中 engines 为 dsh: >=0.2.2-alpha.3 <0.3.0。
先做 DSH Desktop 的一次初始化,再完全退出 Desktop,再装到其 profile。从 Releases 下载 Python wheel、requirements.lock 与插件 .tgz。Windows 示例如下(专用目录内):
py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.lock .\dsh_ml_workbench-0.4.0-py3-none-any.whl
dsh plugin --profile desktop add .\dsh-ml-workbench-0.4.0.tgz
或在 DSH 实验性插件中启用 Custom plugin index,在 Discover 添加第三方索引(非官方背书,索引固定不可变 commit):
https://raw.githubusercontent.com/shinerain1/dsh-ml-workbench/main/market/index.json
索引方式仍会打包 JS,但 Python 仍须按上文单独安装。将 pythonExecutable 设为 venv 解释器的绝对路径,root 设为绝对可写数据目录。示例 patch 片段:
- id: ml-workbench
config:
pythonExecutable: C:/ml-workbench/.venv/Scripts/python.exe
root: C:/my-project/.dsh-ml-workbench
executionMode: dsh
allowCustomCode: false
安装后先调用 ml_workbench_health;重启 DSH 后沿用同一 root 可恢复 runs。macOS/Linux 可用 .venv/bin/python,但该版本未在资料中声明已验证。也可用 checkout 或解压后 package 目录内的安装助手(不覆盖 DSH profile):
py -3.12 scripts/install.py --venv C:/ml-workbench/.venv --workspace C:/my-project --wheel C:/downloads/dsh_ml_workbench-0.4.0-py3-none-any.whl
独立诊断:python -m dsh_ml_workbench doctor --root PATH;仅实际 DSH 工具调用才能验证 OS 沙箱访问。dsh 模式下 root 须在 Session workspace 或已明确批准的可写根下。
典型用法¶
创建实验(分类 + 随机森林,示例参数来自 README):
{"dataset_path":"C:/data/customers.csv","target":"repurchased","task":"classification","name":"forest","model":"random_forest","params":{"n_estimators":100},"preprocessing":{"drop_columns":["customer_id"]},"request_key":"customers-forest-001"}
分支实验(保留预处理、换线性模型):
{"run_id":"<third run ID>","changes":{"name":"third preprocessing, linear model","model":"logistic_regression","params":{}},"reuse_preprocessing":true,"request_key":"customers-linear-004"}
changes 替换指定的顶层字段(含整个 params);变更实验不会复用旧 run ID。分支是「从数据重启」,不是优化器 checkpoint 续跑。
划分策略需显式选择,例如按客户整组 holdout:
{"split": {"strategy":"group","column":"customer_id"}}
或按时间列将更晚 ISO 时间戳放进验证集(时间模式非预测流水线,group holdout 不保证类平衡)。
交付物复现(解压到专用目录、新建 venv):
python -m pip install -r inputs/requirements.txt
python reproduce.py --verify-only
python reproduce.py --data /absolute/path/to/original.csv
导出包内若含 CSV 可省略 --data。复现校验数据哈希、环境、快照校验和与指标;不必保留原 workbench 与 tracking 库。本地浏览 MLflow:ml_workbench_health 返回 tracking_uri 后可用:
mlflow ui --backend-store-uri sqlite:///C:/ml-workbench/records/mlflow.sqlite3 --host 127.0.0.1
勿手工改跟踪指标或快照文件,否则一致性校验会拒绝交付。
从 0.1.0 升级时保持同一 root,旧记录仍可读/可导出;跨版本评估器不会 silent 混排,要使用新指标或调参可 reuse_preprocessing: false 分支并按当前配方重训。
适用场景与注意¶
适合:本地 CSV 分类/回归实验、需要在智能体对话里分支对比、希望 MLflow 跟踪 + Optuna 调参 + 可 ZIP 复现 的 DSH 用户。不适合当作托管式 ML 平台替代品;能力边界见项目 docs/MATURITY.md。
插件以前端 bundle + 本地 Python 后端运行,工具调用受当前 DSH 进程权限与 executionMode 约束。安装前应在 GitHub 阅读源码与 MIT 许可证(package.json),在 SkillHub 或 Releases 核对版本与索引来源;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。自定义代码能力受 allowCustomCode 等配置限制,扩展范围见 README「Custom code and scope」一节。
结尾¶
DSH ML Workbench 把「跟踪—调参—分支—对比—预测—复现」捆成一组可编排工具,让智能体在本地 CSV 实验上具备可核对、可交付的工作流。进一步了解可访问 SkillHub 目录页 与仓库 https://github.com/shinerain1/dsh-ml-workbench。