为 dsh 增加一次性任务 profile:传入一段任务文本运行 Agent 后打印最终答复并退出,适合脚本与 CI 调用。
ⓘ 此插件是大仓库 whitelonng/dshcode 的子包,星数与活跃度统计的是整个仓库。
- 语言
- TypeScript
- License
- MIT
- 分支
- master
安装
$ dsh plugin --profile web add github:whitelonng/dshcode/packages/bundle/headless在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
对话式安装
帮我安装 DeepSeek Harness 插件 whitelonng/dshcode/packages/bundle/headless:先查看仓库 https://github.com/whitelonng/dshcode.git 确认安全性,然后执行安装命令并验证插件加载成功。
把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。
入口包名:
@deepseek-ai/dsh-headless,落地页 ID:whitelonng/dshcode/packages/bundle/headless。下文统称"headless 组合包"。
一句话定位
它在 dsh 基础组合包之上加一层"一次性任务"驱动,让用户用 dsh --profile headless "<任务文本>" 把一段任务丢给 Agent,Agent 完成(或异常)后打印最终答复并直接退出;它不启动 Host、HTTP server、Web runtime 或浏览器,因此是 CI 与脚本里调用 dsh 的最薄形态。
核心能力
- 直接叠在 dsh-base 之上,提供编码 persona 与工具模式(
cordis.patch.yml:7-20) - 禁用 HMR,把 Code Mode 的 worker 作为核心执行能力挂上(
cordis.patch.yml:14-20、:23-26) - 一个进程只接一个任务:通过 commander 解析位置参数
task(多词用空格合并),缺失或纯空白时打印 usage 错误并退出 1(src/startup.ts:31-57) - 创建一个全新的持久化 Agent,把任务作为普通用户消息提交,等 Agent 回到 idle 后 flush 会话(
src/index.ts:96-127) - 抽取本次任务区间内最后一条非空 assistant 文本写入 stdout,最终
turn/end原因是completed时退出 0,其他情况退出 1;错误原因时把code: message追加到 stderr(src/index.ts:60-134)
技术实现
- 语言: TypeScript(ESM 模块)
- 关键依赖:
@deepseek-ai/dsh-cmdline(命令行宿主)、@deepseek-ai/dsh-code-runtime-worker-thread(Code Mode worker)、@deepseek-ai/schemastery(Config schema)、commander(CLI 解析)(package.json:46-51) - 架构模式: Cordis bundle patch——通过
package.json#dsh.bundle.patch声明cordis.patch.yml,在 base 之上插入 system-prompt/hmr/tools 的覆盖行与三条 insert 行(code-runtime / headless-startup / headless-runner);headless-runner 是普通函数插件,headless-startup 提供headlessStartup服务供前者的 lazy config 读取任务(cordis.patch.yml:1-35、src/startup.ts:19) - 入口文件:
src/index.ts(runner,name = 'headless-runner')、src/startup.ts(CLI provider,name = 'headless-startup')、cordis.patch.yml(bundle 注入)
适用场景
需要把 dsh 当一个命令行工具来用——比如 CI 里让 Agent 跑一次代码审查、shell 脚本里临时问个文件写法、cron 里把日报生成挂在 dsh 上,而不是开 Web UI 交互。它适合"一次任务-一次答复-进程结束"的场景,不适合需要多轮追问的会话。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 未单独声明;与 dsh 1.0.5 同源发布 | 安装到已用 dsh 启动器的 profile 才能激活,runner 强制依赖 launcher 提供的 ctx.appExit |
| Node | ^22.19.0 || >=24.0.0 | 源自仓库根 package.json:8-10 的 engines 字段 |
| 平台 | macOS / Linux / Windows | 跨平台,本包自身不带原生模块 |
| 原生模块 | 无 | 本包不引入原生模块;base 的 sandbox 等行可能引入 |
本包通过 workspace 依赖
@deepseek-ai/dsh-agent/@deepseek-ai/dsh-llm/@deepseek-ai/dsh-session等基础包(package.json:52-59),它们随 dsh-base 间接安装。
安装方式
dsh plugin --profile web add github:whitelonng/dshcode/packages/bundle/headless
配置项
本插件不向用户暴露独立配置面;唯一可调的字段是它从启动器读取的"任务文本":
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
headless-runner.task | string | runner 这一次要执行的提示词文本,从启动器 --profile headless "..." 的位置参数自动填入;空白任务在启动期会被拒 | 由命令行 dsh --profile headless "<task>" 提供 |
system-prompt.persona | string | 模板字符串,注入 {{model}} 与 {{cwd}} 后给到 system prompt。普通用户无须改,会被自己 profile 覆盖 | "You are a coding agent powered by the {{model}} model. Your working directory is {{cwd}}." |
hmr.disabled | boolean | headless profile 强制关闭 HMR(cordis.patch.yml:14-15) | true |
tools.mode(env DSH_TOOLS_MODE) | string | Code Mode 进程级开关,与 Web profile 同源 | 取自 process.env.DSH_TOOLS_MODE |
常见问题
Q: 这个组合包和 dsh-base 有什么区别?
A: base 把基础工具、模型、持久化等 60+ 能力按"出厂默认集合"全部注入;headless 只在 base 之上叠一层极简驱动层——不挂 Host、HTTP server、Web runtime 或浏览器插件,每一个进程只接一个任务、跑完后打印最终 assistant 文本再退出 0/1。
Q: 进程退出码代表什么?
A: 最终 turn 的原因是 completed 时退出 0;aborted 或 error 时退出 1。错误情况下,stderr 会额外输出一行 dsh: <code>: <message>,成功时 stderr 为空(见 src/index.ts:130-133)。
Q: 不带任务文本直接跑会怎样?
A: 启动器先打印 usage 错误 a task is required, for example: dsh --profile headless "run the tests" 并以 exit 1 结束,runner 在收到服务之前就被拒,不会启动 Agent(见 src/startup.ts:53-55、tests/startup.spec.ts:91-97)。
Q: 可以在 dsh launcher 之外使用这个 profile 吗?
A: 不可以。runner 必须在挂载前从宿主拿到退出请求服务;launcher 之外启动会在激活时直接抛 headless-runner: the launcher must provide ctx.appExit before the tree mounts(见 src/index.ts:144-147、tests/headless.spec.ts:243-246)。
Q: 一个进程里能跑多个任务吗?
A: 不能。每次 dsh --profile headless 调用只提交一个任务并等待返回到 idle,要再跑只能重新启动一个进程。profile 名义上是一个交互后端,实际上是单发任务运行器(见 README.md:19)。
Q: 默认的 HMR 和 Code Mode 状态是什么?
A: HMR 在 headless profile 下被显式禁用,Code Mode 由 DSH_TOOLS_MODE 环境变量控制——值决定是否启用 worker 线程代码执行,与 Web profile 同源(见 cordis.patch.yml:14-20)。
Q: 会话数据存在哪里?
A: 由 dsh-base 那一层的 session-persistence-jsonl 负责,落到 $DSH_HOME/sessions;headless 自身不另起存储面。
Q: Agent 用什么模型?
A: 跟随 dsh-base 的 agent-default-model 默认值(deepseek-official / deepseek-v4-flash)。要换模型在自己 profile 的 cordis.patch.yml 里按 id 整行覆盖这一行即可。
上手难度
入门 — 命令本身就是一个位置参数;只跑一次的话连配置都不用看,想自定义默认模型或 persona 时在自己 profile 的 patch 文件里覆盖即可。
已知问题与限制
- 一个进程一个任务:runner 没有交互后续输入,提交完任务后它等到 Agent 返回 idle,并把区间内最后一条非空 assistant 文本打印出来(
README.md:19) ctx.appExit由启动器持有:在dsh启动器之外启动 headless profile 会在激活时直接抛错,直到宿主提供该退出请求(README.md:20、src/index.ts:144-147)- 空白任务在启动期被拒:纯空白或缺失的
task不会启动 Agent,进程以 1 退出(src/startup.ts:53、tests/startup.spec.ts:91-97) - headless profile 中的 HMR 不启用:单发进程不需要热更新,patch 显式
disabled: true(cordis.patch.yml:14-15)
English | 中文
DSHCode 是一款面向 macOS 和 Windows 的免费开源桌面 AI Agent 应用。它将 DeepSeek 官方开源项目 DeepSeek Harness 的 Web UI 与插件运行时打包成一个可直接安装的 Electron 应用——无需 Node.js、无需终端、无需命令行。

功能特性
DSHCode 继承了 DeepSeek Harness 的完整能力,并加上了开箱即用的桌面体验。
Agent 核心 — 插件化框架,内置 bash、文件系统、网页搜索/抓取、终端、LSP 与子进程工具;支持沙箱隔离与逐操作审批提示。
交互式 UI — 内联渲染的 GenUI 卡片:图表、表格、测验、3D 场景、示意图、表单与进度视图。
Skills 技能 — 可安装的技能目录,为 Agent 提供专项工作流——研究、文档写作、视觉工具等。
编排能力 — Subagent 并行委派,以及可跨多个 Agent 分阶段并行展开的 Workflow。
长任务 — 执行前先审查再批准的 Plan 模式、跨轮次持续进行的 Goal 目标、可恢复的会话。
模型体验 — 通过官方 API 使用 DeepSeek 模型;会话日志完整记录模型所见内容,任何一次运行都可被重建。
模型控制 — 按供应商调节推理强度(关闭到最高)、最大输出 token 数,以及图像输入、图像生成与图像识别等多模态能力开关。

个性化 — 主题与皮肤合集、选区批注工作流、命令快捷键、中英双语界面。
插件管理 — 从 npm 或 Git 仓库安装插件、检查更新,并可逐个启用或禁用。

故障恢复 — 加载失败的插件会连同诊断信息一起报告:可禁用该插件、以安全模式启动,或让 Agent 携带失败上下文自动修复。


归档管理 — 搜索已归档会话,可恢复或彻底删除。

可扩展 — 安装新能力无需改动应用本体。
桌面集成 — 托盘图标、系统通知、单实例运行、加固的 Electron 窗口。

详见 Web UI 指南 的操作讲解,以及桌面应用指南中的架构、平台目标与当前限制。
下载
| 平台 | 安装包 |
|---|---|
| macOS Apple Silicon | DSHCode-*-macos-arm64.dmg |
| macOS Intel | DSHCode-*-macos-x64.dmg |
| Windows x64 | DSHCode-*-win-x64.exe |
每个版本都会随安装包发布 SHA-256 校验和(SHA256SUMS.txt)。
预览版安装包尚未进行代码签名或公证,因此 macOS Gatekeeper 与 Windows SmartScreen 可能在首次启动前发出警告。软件本身是安全的;警告只是因为二进制文件缺少付费签名证书:
- macOS:在访达中右键点击应用并选择打开,然后在弹窗中确认。或者在终端执行一次
xattr -cr /Applications/DSHCode.app。 - Windows:在 SmartScreen 弹窗中点击更多信息,然后选择仍要运行。
快速开始
安装 DSHCode 安装包后,从 macOS“应用程序”文件夹或 Windows“开始”菜单打开 DSHCode。应用会自行启动和停止内置 Web profile;安装版用户无需运行终端命令。
从源码运行
开发者仍可从仓库源码运行上游 Web 入口:
git clone https://github.com/whitelonng/dshcode.git
cd dshcode
pnpm install
pnpm run build
pnpm dsh web
命令会打印本地 Web UI 地址。详见 Web UI 指南。
桌面应用
打开 DSHCode 时,应用会启动内置的 Harness Web profile,并在经过安全加固的 Electron 窗口中显示。桌面外壳刻意保持精简;产品行为和 Web UI 仍由上游包提供,因此后续可以继续集成上游更新,而不必维护第二套界面。
本地服务与端口
应用每次启动时都会在 Electron 主进程内启动一个 HTTP 服务。该服务只绑定 127.0.0.1,并让操作系统分配一个可用的临时端口,因此不会占用固定端口,通常也不会与其他本地服务冲突。DSHCode 只允许一个应用实例,只加载其自身的精确回环地址;进程退出前会先释放 Harness 树,所以关闭应用也会停止服务并释放端口。
构建桌面安装包
git clone https://github.com/whitelonng/dshcode.git
cd dshcode
pnpm install
pnpm run desktop:dist
构建产物写入 .artifacts/desktop/release/。名为 Desktop 的 GitHub Actions 工作流会构建 macOS Apple Silicon、macOS Intel 和 Windows x64 安装包;desktop-v* tag 会把完整构建矩阵及 SHA-256 校验和发布到 GitHub Releases。
常见问题
DSHCode 是什么?
DSHCode 是一款免费、开源的桌面应用,把 DeepSeek 的插件化 AI Agent 框架 DeepSeek Harness 变成可直接安装的 macOS 与 Windows 应用,并提供图形化的对话与工作区界面。
DSHCode 是 DeepSeek 官方软件吗?
不是。DSHCode 是独立的社区项目。它保留上游包名、版权、架构、文档和 upstream Git 远程地址,以便正确归属来源并继续合并上游变更;但除非 DeepSeek 明确授权,它不代表 DeepSeek 官方发行、背书或认证。
需要 Node.js 或终端吗?
不需要。安装版用户得到的是普通应用;Node.js、CLI 与终端只在从源码运行或自行构建安装包时才需要。
为什么 macOS/Windows 会弹出安全警告?
预览版安装包尚未进行代码签名或公证。这是签名证书的成本问题,不是安全问题;一次性打开步骤见下载一节。
需要 API Key 吗?
需要。DSHCode 通过官方 API 运行 DeepSeek 模型;在应用设置中配置一次即可。
DSHCode 可以扩展吗?
可以。内置插件安装器可在不改动应用本体的前提下添加新能力;安全模式可以禁用导致崩溃的插件,保证应用仍能正常启动。
项目定位
DeepSeek Harness(dsh)是由 DeepSeek AI 开发的官方开源插件式 agent harness(智能体框架)。DSHCode 作为桌面端配套发行版参与其插件生态,并使用 dsh-plugin 和 deepseekharness-plugin 仓库标签便于检索。
DSHCode 是独立的社区项目。除非 DeepSeek 明确授权,否则它不代表 DeepSeek 官方发行、背书或认证。
开发
请先阅读开发指南、架构文档和桌面应用指南。面向 agent:请遵循 AGENTS.md。
致谢
- LINUX DO — 本项目也在 LINUX DO 社区持续分享与交流。
- dsh-genui — 为内置生成式 UI 能力提供插件实现。
- dsh-annotation — 为内置文本批注流程提供插件实现。
- dsh-web-ui — 为内置 Web UI 功能与皮肤集合提供插件实现。
许可证与品牌
源码继续使用上游 MIT 许可证。再次分发时必须保留 DeepSeek 的版权与许可声明;内置第三方软件及其许可证见 THIRD_PARTY_NOTICES.md,桌面安装包会同时附带这两个文件。
MIT 软件许可证本身不等于获得 DeepSeek 商标或 Logo 的 DSHCode 品牌使用许可。DeepSeek 的用户协议(中文版)保留了这些品牌标识的相关权利。DSHCode 发行版使用独立应用图标;内嵌 Harness 界面保留的上游身份标识及官方 powered by dsh 署名只用于说明兼容关系,不代表官方背书。
收录徽章
[](https://deepseek-plugin.org/plugins/whitelonng/dshcode/packages/bundle/headless)把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。