结论:门槛在门外,不在门内。 进门之后,四个真实任务全部完成,还出现了两次"它自己发现问题并解决"的行为;综合 4.0 / 5——现在适合当命令行执行器用起来,暂时别压生产。

本次实测:四个任务,四次计时

环境:Windows + WSL2(Ubuntu),Node 22.23.2。全部在 /tmp/dsh_eval/ 沙箱里跑,每次调用都加 timeout 280 保护。用无头模式(跑完即退出):

sh export PATH=$HOME/.npm-global/bin:$PATH export DEEPSEEK_API_KEY=<密钥> # 环境变量直接生效,不用进界面配 dsh headless "<任务>"

# 测试项 结果 耗时
A 建文件并写入"标题/日期/版本"三行 ✅ 严格三行(中途自查后删掉多余空行) 11.2s
B 写 fib.py 输出前十项,运行并把结果落盘 ✅ 值全对,并主动说明起始项约定 6.2s
C 统计源码 docs/ 下 md 数量与总行数 ✅ 369 个文件 / 140972 行(与人工复核一致) 10.2s
D 抓 GitHub 页面并总结 README(负向测试) ⚠️ 页面前提失败 → 自行换路成功 24.7s

三条值得记的观察

① 会自己纠错。 A 任务里它先写出了 5 行(多了空行),随后自己发现不符合"三行"要求,回头删掉再交付。纠正它的是它自己,不用你说第二遍。

② 失败后会换路,而不是原地重试。 D 任务是本次最有含金量的部分:先抓 raw.githubusercontent.com(先怀疑分支名 main,改 master 仍失败),随后改用 GitHub REST API 拿 base64 内容,在本地解码成文件,读到了完整 README。它交上来的失败清单里,三次尝试两次失败,一条不落。

③ 不确定的事不硬说。 读到的 README 里有一处引用年份看起来"偏未来",它主动写明:"属源页面本身的表述,我未做核实,仅如实反映。"

一个坑:两个必填开关,文档没写

现象:想在不启动的情况下看一眼配置树,--dump-default-config 直接报错:

error: --profile <name> is required

dsh plugin 子命令同样要求显式传 --profile <name>。

复现:dsh --dump-default-config 或 dsh plugin --help,都会撞上这条。

解法:带上 profile 名即可(如 dsh --profile headless --dump-config)。设计上合理——profile 才是配置组合单位——但这属于"想先看看它有什么"时就会遇到的第一分钟门槛,快速开始文档没覆盖。

总评

维度 分数 依据
易用性 4.0 无头模式一行命令闭环、密钥免界面;扣分在 --profile 这类必填门槛
能力 4.0 四个任务全过,含自我纠错、歧义主动交代、失败后换路
生态 4.0 "一切皆插件"是核心卖点,源码文档完整(370 份/14 万行);仍在预览期
稳定性 4.0 单次任务零失败,耗时稳定在 6~25 秒;对网络环境依赖较强

综合 4.0 / 5。 它最舒服的用法不是"替代谁",而是当一个能进脚本流水线的命令行执行器——单次任务 6~25 秒的开销,已经低到可以当普通命令使。

测试版本:CLI 0.2.0-rc.2。命令、耗时、报错均来自本机实测,测试项 D 的失败前提已如实标注。

文 / 程实