headless 使用指南
dsh 一次性任务组合包:在 dsh-base 上挂载 headless-runner,命令行收一个任务,跑完把最后回复写到 stdout 并退出,无 Web/HTTP 层
本文为派生内容(基于 wiki / faq / compatibility_json 自动组装),非 AI 即时创作。
本文由本站基于该插件已收录的字段自动派生(wiki / faq / compatibility_json / readme),非 AI 即时创作。每节末尾标源字段。
快速上手
deepseek-harness-ux(packages/bundle/headless)
— 源: plugin_wiki.wiki_content
安装与验证
dsh plugin --profile web add @deepseek-ai/dsh-headless
复制以上命令在 DSH Web Profile 内运行。安装完成后在「插件列表」启用即可。
— 源: plugins.install
关键要点
- Agent Loop、模型路由、工具、权限、沙箱和 Session Log 仍沿用 DeepSeek Harness 的执行方式。
- 原始思考、上下文、命令和工具证据没有被删除,只是收进“运行详情”。
- 展示辅助不会修改 System Prompt、用户消息、工具、原始回答或会话历史。
- Session Log 默认仍保存在本地。
- 这是基于上游源码快照维护的社区版本,不会自动获得官方后续的修复、兼容性更新和安全更新。
— 源: plugin_wiki.readme_zh (fallback readme_raw)
常见问题
这个组合包和 dsh-web-app 有什么区别?
dsh-web-app 是浏览器面:会挂载 HTTP server、Web runtime 和浏览器插件,可持续对话;headless 没有任何网络端口,只能跑一次任务、输出结果、退出进程,适合脚本化调用。
想在 CI 里调用 dsh 跑一个任务该怎么写?
用 dsh --profile headless "任务内容",任务结束进程退出;turn/end.reason 为 completed 时退出码 0,否则 1,方便在 shell 流水线里判断成败。
运行时报 must provide ctx.appExit 是什么意思?
ctx.appExit 是由 dsh 启动器提供的退出钩子,本包不自带;必须用 dsh --profile headless 启动器跑,手写一个 Cordis 树直接挂载 headless-runner 会立刻报错。
怎么控制最终回复写到哪?
写进程 stdout,由本包直接调 process.stdout.write;想重定向到文件就用 shell 的 > 或 >>。如果想截获内容做断言,可以走 dsh 之外的 cordis 注入替换 internals.stdout(在测试里就是这么做的)。
任务跑失败了怎么拿到错误信息?
最终 turn/end.reason.kind 为 error 时,本包会把 code 和 message 以 dsh: CODE: message 的格式写到 stderr;stdout 仍输出一个换行,进程退出码为 1。
能把多次调用串起来、像聊天那样来回对话吗?
不能。本组合包每次只提交一个任务,没有交互式后续输入的界面;需要多轮对话请用 dsh-web-app 或 dsh-acp。
— 源: plugin_wiki.faq_json
兼容性
- DSH: 0.0.1-rc.2+
- Node: >=22.19.0
— 源: plugin_wiki.compatibility_json
踩坑提醒
安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。
— 来源:通用规则