无头跑 DeepSeek Harness:--json 与会话续跑
Headless · --json · --session-id · CI
dsh --profile headless 不开端口。stdout 留给 --json,未知 session id 直接失败,多轮工作拆成多次运行。
DeepSeek Harness headless 不是 Web UI
DeepSeek Harness headless 回答的问题和 npx @deepseek-ai/dsh web 不一样。Web 会起本机界面——常见是 http://127.0.0.1:3080/——一直挂着直到你停掉。Headless 一次只跑一个任务,打出答案就退出。它不监听端口,也不在后台留服务。这是脚本和 CI 的面,不是第一次点点看评估的面。
上游文档写的是 dsh --profile headless。从已发布的包出发,同一形状是 npx @deepseek-ai/dsh --profile headless "run the tests"。钉住你核对过的版本——2026 年 9 月 28 日 npm latest 仍是 Pre-release RC——Node 和凭证仍看 安装清单。产品是什么,仍看 DeepSeek Harness 是什么。浏览器第一小时仍看 npx 快速开始。
若 headless 包 README 和本页冲突,以 README 为准。
一个任务,然后退出
sh
npx @deepseek-ai/dsh --profile headless "列出顶层文件,并引用 README 的第一个标题"
默认模式把最终答案打到 stdout。非空的推理增量打到 stderr,带 dsh: reasoning: 标题。退出码 0 表示完成了最终一轮;1 表示中止、出错,或没有可用的一轮。轮次外的失败还会在 stderr 打 dsh: 行。
省略位置参数,或传入单独的 -,可以从 stdin 喂任务:
sh
{ echo "Summarize these changes:"; git diff --stat; } | npx @deepseek-ai/dsh --profile headless
空白的位置参数本身就是用法错误,即便管子里有数据也不会静默吞掉 stdin。把 - 和其他任务词混在一起也是用法错误。dsh --profile headless --help 只打印帮助,不跑任务。
这仍是一次一发。同一次进程里没有交互续聊。多步工作拆成多次运行,或用下面的 --session-id 续。
--json 是机器通道,不是 Trajectory
--json 用换行分隔的 JSON 事件流替换 stdout 上的最终答案行。stderr 只留 dsh: 诊断。流以 session(这次用的身份)开头,以 final 结束。中间可能有 status、text、thinking、tool_call、tool_result。
把它当成给监督进程看的投影,不是无损会话日志。除终结的 final 外,字符串有上限(上游写明约 8 KiB,并带 truncated)。失败之后打开的持久日志,仍走 Trajectory——怎么读 Trajectory 日志 与 可观测性入门。
格式正确的流仍可能描述一次失败:轮次内失败可以以 final(常常是空的)结束,并且没有 error 事件。信 退出码 1 和轮次结束原因。runner 在轮次外抛出的失败会写 error,并且没有 final。
--session-id 拒绝默默开空历史
每次运行默认生成新的 session-… 身份。开了 --json 时,这个 id 出现在开头的 session 事件里——和你启动时的 cwd 一起记下。之后用 --session-id 续那一次对话。
未知 id 会在任务开始前直接失败。它不会发明一份空历史。续跑还会拒绝:记在不同工作目录下的会话、子代理或分叉、缺少 cwd、本进程里已有 Agent 占着这个 id、或 headless 配置组合不了的预设。这些拒绝就是目的:CI 不该静默开别人的对话。
从同一份可丢弃目录续跑。若 Node 或 npx 本身起不来,仍看 npx 与端口 3080——headless 不用 3080,但坏掉的 Node 是同一道门槛。
十分钟核对
1. 凭证和默认模型按 Web 同一套确认。Headless 不会另编一套鉴权故事。
2. 先不带 --json 跑一个无聊任务。预期 stdout 有文本、退出码 0。
3. 再带 --json 跑一次。留下开头的 session id 和启动 cwd。
4. 在同一目录用 --session-id 续一次。先 cd 到别处,应被拒绝。
5. 用 stdin 喂一段短任务。确认空白位置参数不会偷走那根管子。
6. CI 里:退出码为 0,且若用了 --json,流以 final 结束、没有轮次外的 error,才算接受。
7. 推理里可能带敏感路径时,别把 stderr 丢进共享日志。自己改路由。
本文不是什么
- 不是第二篇 Web 快速开始——仍看 npx 快速开始。
- 不是 0.1.7 RC 功能清单——0.1.7 RC 操作核对。
- 不是 Computer Use 或 SSH 远端工作区教程。
- 不是在说 headless 已经生产认证。上游仍明确预览会破兼容。
接下来去哪
1. 约定与开关:你钉住的标签上的 headless README。
2. 浏览器第一小时:安装 → npx 快速开始。
3. 跑失败之后:怎么读 Trajectory 日志。
相关文章
- 2026-10-09 macOS 上跑 DeepSeek Harness:Homebrew、PATH 与完全磁盘访问 命令和其他系统一样是 npx——Mac 上真正容易踩的是哪个 node 在 PATH、TCC 弹窗,以及第一天别开完全磁盘访问。
- 2026-09-28 DeepSeek Harness 0.1.7 RC 操作核对 v0.1.7-rc.2 仍是 Pre-release。定时任务默认关,会话日志升到 V4,PTC 包名改为 ptc-runtime。
- 2026-09-23 怎么读 DeepSeek Harness 的 Trajectory 日志 先读 cwd 和 agentPreset,再找没有 tool/result 的那条 tool/call。
在门户继续
读完本文后可前往安装指南、教程与精选插件目录,完成评估闭环。