DeepSeek Harness Headless 模式
内置 headless profile 会从命令行运行一个 DSH 任务、打印最终回答并自动退出,不启动 Web UI,也不会打开监听端口。
本页内容
DeepSeek Harness 可以不启动 Web UI 吗?
可以。 DSH 自带 headless profile,用于一次性的命令行任务。它会创建新的持久化 Agent 会话,执行一个任务,打印最终 Assistant 回答,然后退出。
Headless 不打开浏览器,也不监听 Web 端口,因此适合脚本、CI、批处理和纯终端自动化。
运行一个 DeepSeek Harness Headless 任务
npx @deepseek-ai/dsh --profile headless "run the tests"先进入目标项目的目录,并确认模型凭据已配置。引号里的内容就是这次任务;运行测试可能产生缓存、报告或其他文件,初次使用请选项目副本。
npx @deepseek-ai/dsh --profile headless "summarize this repository"只想查看当前命令说明而不执行任务时,可以使用 --help。
Headless 会输出什么?
stdout
任务结束后,最后一个非空的 Assistant 回答会写到标准输出。
stderr
模型提供的推理输出和运行错误可能写到这里。有内容不一定代表任务失败。
正常任务结束
任务正常完成时退出码为 0;异常结束时通常为 1。
进程被停止
收到 SIGTERM 时按常规停止处理,可能以 0 退出;Ctrl+C 通常对应 130。
任务结束后进程会退出,因此成功运行不会留下 Web Server 或后台 Agent 等待下一条消息。
在脚本或 CI 中使用 DSH Headless
退出码 0 不等于测试通过或修改正确。先用退出码筛查运行错误,再检查测试报告、目标文件和任务结果;被 CI 主动停止的进程也不能算任务成功。
以下是 Bash 脚本示例,只检查进程是否报错。你仍需单独运行项目的确定性测试命令:
npx @deepseek-ai/dsh --profile headless "review the failing tests"
dsh_task_status=$?
if [ "$dsh_task_status" -ne 0 ]; then
echo "DSH task failed" >&2
exit "$dsh_task_status"
fiReasoning 可能写入 stderr,而很多 CI 平台会长期保存 stderr。应把这些日志视作可能包含敏感模型输出的内容,并控制访问权限。
当前 Headless 模式的限制
- 每次只运行一个任务。回答完成后进程就会退出,不提供交互式追问。
- Headless 和 Web 是不同的 Profile;安装在 Web Profile 中的社区插件不会自动出现在 Headless 中。
- 命令行主要打印 Reasoning 与最终 Assistant 回答,不会把所有中间工具输出当作通用 CLI Transcript 持续打印。
- 模型产生第一段输出之前没有额外 Heartbeat,因此首 Token 较慢时终端可能暂时没有新内容。
Headless 模式和 DSH Web UI 怎么选?
适合 Headless
一次自动化任务、需要 Shell 可读取的结果、退出码、CI 集成,或完全不需要图形界面的任务。
适合 Web UI
多轮交互、可视化授权、会话浏览,以及需要图形界面持续操作的工作流。
0.1.5-rc.2 / c291e79 CLI 行为参考、dsh-headless 中文 README。不同版本的退出行为请对照对应文档。