结论:门槛在门外,不在门内。 进门之后,四个真实任务全部完成,还出现了两次"它自己发现问题并解决"的行为;综合 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 的失败前提已如实标注。
文 / 程实
广告


