dsh 共享核心的 profile 组合包:在空 profile 根上一次性插入模型适配、工具、持久化、沙盒、遥测等基础插件行,作为所有 profile 的第一层
- 语言
- TypeScript
- License
- BSD-3-Clause
- 分支
- main
安装
$ dsh plugin --profile web add @deepseek-ai/dsh-base在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
对话式安装
帮我安装 DeepSeek Harness 插件 ayuanwong/deepseek-harness-ux/packages/bundle/base:先查看仓库 https://github.com/ayuanwong/dsh-ux 确认安全性,然后执行安装命令并验证插件加载成功。
把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。
本文档对应
packages/bundle/base子路径,是落地页/plugins/{owner}/{repo}中插件百科模块的内容来源。该目录属于 DSH 主仓自带的 profile 组合包层,并非独立插件;安装命令把它作为webprofile 的基础组合包加入。
一句话定位
@deepseek-ai/dsh-base 是 DSH 的共享核心 profile 组合包:在空 profile 根上一次性插入约 80 行基础插件,覆盖模型适配、Agent 会话、工具、本地持久化、文件沙箱、设置/凭据、遥测等所有 profile 共享的部分,作为任何 profile 加载的第一层。
核心能力
- 在空 profile 根上注册模型适配、Agent 会话、Typert 类型注册与 RPC 网关、默认模型选择等核心服务
- 启用面向模型的工具目录:文件读写、代码编辑、子代理调用、计划模式、Todo、目标、Web 搜索、字符串编辑等
- 挂载本地化数据平面:JSONL 会话持久化、SQLite 会话索引(默认内存、按需开启)、本地附件、凭据与设置文件
- 安装默认沙盒与权限策略:文件效果策略、bash/pwsh shell 栈(按平台自动二选一)、审批与权限预设
- 注册宿主级子代理与工作流能力:进程内 spawn/fork 子代理、worker-thread 工作流执行、Codex/Claude Code provider(休眠)
- 配置基础遥测与会话检查点:默认关闭的 OTLP 日志上送、按模型请求的检查点持久化
技术实现
- 语言: TypeScript(ESM,
src/index.ts仅export {},无运行时 API;包内代码只用于加载 invariant 配套) - 关键依赖:
@deepseek-ai/cordis(peer,宿主运行时)、@deepseek-ai/dsh-llm(模型能力面)、@deepseek-ai/dsh-session(会话核心)、@deepseek-ai/dsh-sandbox-local(沙箱);完整列表见dependencies(约 80 个工作区包) - 架构模式: 组合包(profile bundle)—— 包内
cordis.patch.yml通过 manifest 字段dsh.bundle.patch暴露给 profile 组合器,组合器读取并按行插入;不是注册一个 Service 类,而是插入一个 patch 列表 - 入口文件:
src/index.ts(无运行时导出)+src/invariant.ts(空实现,仅注册包名以满足 invariant 配套规则)+ 实质载荷cordis.patch.yml
适用场景
任何要在自己机器上跑 DSH agent 的用户,都会在第一步遇到这个 bundle:它是 --profile web、--profile headless 等所有 profile 的公共地基。当用户希望在 DSH 中获得开箱即用的 DeepSeek 模型调用、本地会话存档、按平台自动选择 bash/pwsh、默认文件沙箱保护等能力,而不需要再为每个 profile 重复拼装这些基础组件时,把它装进 profile 即可。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 0.1.0-rc.6+ | 同名工作区包 @deepseek-ai/cordis 与 @deepseek-ai/dsh-invariants 需在宿主中可用 |
| Node | >=22.19.0 | 来自 monorepo 根 engines.node:^22.19.0 || >=24.0.0 |
| 平台 | macOS / Windows / Linux | 同一份 patch 文件跨平台工作;shell 栈按 process.platform 自动启用 bash(POSIX)或 pwsh(Windows),不依赖平台分支 patch |
| 原生模块 | 无 | 该包本身无原生依赖;下层 @deepseek-ai/dsh-sandbox-local 在 Windows 上挂载 @deepseek-ai/dsh-sandbox-windows-acl,是组合行为而非本包声明 |
安装方式
dsh plugin --profile web add github:ayuanwong/deepseek-harness-ux/packages/bundle/base
配置项
本 bundle 本身没有面向用户暴露的独立 config。它在 cordis.patch.yml 中给下游约 80 个插件行写入了默认 config,这是 profile 组合器读取的静态声明,不通过 dsh 命令行或 settings 文件直接覆盖。若要改这些行的值,请在更上层的 profile cordis.patch.yml 或 bundle 层按 id 整体替换该行。下面列出 patch 中设置的关键默认值(仅供查阅,不是用户配置入口):
| 默认值所属行 | 默认值 | 含义(人话) |
|---|---|---|
agent-default-model.provider | deepseek-official | 默认模型提供方 |
agent-default-model.model | deepseek-v4-flash | 默认模型 ID |
session-title.fallbackMaxWords | 5 | 会话标题回退词数上限 |
session-title-llm.timeoutMs | 60000 | LLM 生成标题超时 |
session-persistence-jsonl.root | dshHomePath('sessions') | JSONL 会话日志根目录 |
session-query-sqlite.openAt | first-search | 全文本搜索默认关闭;SQLite 不打开,键值精确读与会话谱系查询仍可用 |
session-telemetry-otel.mode | process.env.DSH_TELEMETRY_MODE || 'DISABLED' | 遥测模式(FULL / FEEDBACK_ONLY / DISABLED) |
sandbox-policy.mode | process.env.DSH_PERMISSION_MODE ?? 'workspace-write' | 默认文件沙箱模式(仅写工作区) |
bash-sandbox.disabled | process.platform === 'win32' | bash 沙箱在 Windows 上关闭 |
pwsh-sandbox.disabled | process.platform !== 'win32' | pwsh 沙箱在非 Windows 上关闭 |
approval.policy | 跟随 DSH_PERMISSION_MODE,danger-full-access 时设为 never,否则 ask | 用户审批默认行为 |
permission.presets | read-only / workspace-write / danger-full-access | 权限预设集合 |
tool-web.fetch | false | 关闭模型驱动的 Web 抓取(保留搜索) |
tool-web.searchTimeoutMs | 60000 | DeepSeek 搜索超时 |
常见问题
Q: 装上这个 bundle 之后是否会自动获得 DeepSeek 联网搜索能力?
A: 是。patch 注册了 DeepSeek 官方搜索路由,复用 Models 页管理的同一个 API Key,超时 60 秒;但不提供 Web 抓取(tool-web.fetch 默认关闭)。
Q: Windows 上跑这个 bundle 需要额外装什么吗?
A: 不需要。bash 与 pwsh 两套 shell 栈在同一份 patch 内按平台互斥挂载,Windows 自动启用 pwsh 沙箱与 pwsh 工具。如果你更希望直接执行不受沙盒约束的本地 PowerShell,需在自己的 cordis.patch.yml 中完整覆盖:禁用 pwsh 行并重新启用 bash 行(两者注册同一个 bash 服务,配方不全会在加载时报错)。
Q: 默认是否会上送遥测数据?
A: 不上送。session-telemetry-otel 默认 mode: 'DISABLED'。要开启需设置环境变量 DSH_TELEMETRY_MODE=FULL 或 FEEDBACK_ONLY,端点用 DSH_TELEMETRY_OTLP_URL 覆盖;非空的 DSH_TELEMETRY_DISABLED 也会反向强制关闭。
Q: 我想换默认模型,应该改这个 bundle 的 patch 还是改 settings?
A: 改 settings。llm-deepseek: 或 llm-pi-ai: 段写在 $DSH_HOME/settings.yaml 中即可热更新,不需要重新打 bundle;Web 的 Models 页面写的就是这个文档。
Q: 装上后会不会把 Codex / Claude Code provider 也装上?
A: 会作为宿主级 provider 挂载但保持休眠。patch 同时挂载 @deepseek-ai/dsh-subagent-codex 与 @deepseek-ai/dsh-subagent-claude-code,是否对模型可见取决于 Agent Preset 是否在自己的 prompt 中暴露对应的 delegation 工具。
Q: 默认的"工作区内可写"沙箱到底管什么?
A: 写入被限制在当前工作目录与该会话的临时子目录;只读模式不授予任何写入权限。Windows 上文件效果通过 ACL 受限令牌 runner 强制,权限切换器和审批服务按相同语义工作。
Q: 我的 profile 写了 cordis.patch.yml,会不会和这个 bundle 冲突?
A: 不会冲突,但会按 id 整体替换该行的 config。bundle 与你 patch 没有深度合并;如果你的覆盖里没重述某个字段,新值由 bundle 默认决定;升级 bundle 版本时,自定义覆盖仍按 id 命中整行。
上手难度
入门 — 这是 profile 必备的地基层,无需阅读源码即可使用;如需定制只需在更上层写一行 cordis.patch.yml 按 id 替换默认值。
已知问题与限制
- 整行 config 替换:patch 用同一行 id 命中即整行覆盖,没有深度合并层;profile 覆盖必须重述该行希望保留的全部字段,否则会被 bundle 默认值覆盖
- Claude SDK 的平台 CLI 仍在 Profile 安装闭包中:base 组合包依赖 Claude provider,其生产路径解析宿主提供的
claude;移除 SDK 中未使用的可选载荷,推迟到产品安装闭包后续项处理 - Windows 临时目录授权是按会话的私有子目录:
workspace-write把可写范围限制在工作区 + 该会话自己的 temp 子目录(形如<temp>\dsh-<hash>,受限子进程的TMP/TEMP被改写);read-only不授予任何临时目录写入权限
English | 中文
让 DeepSeek Harness 的长任务更容易看懂、更容易跟进。
DeepSeek Harness UX 是一个非官方社区源码版本。它没有重写 Agent 的工作方式,而是重点改进网页里的任务过程、长回答、会话查找和文件入口。
本项目不是 DeepSeek 官方发行版,也不享有上游官方支持。DeepSeek Harness 及相关名称归其权利人所有。
你会直接感受到什么
1. 会话进行时,思考和工具步骤不会一直刷屏
任务运行时,思考、上下文、命令和工具调用会被收进一个稳定的“过程”区域。你可以直接看到当前做到哪一步、已经运行多久,不必在大量技术消息里寻找进度。
如果启用展示辅助,界面还会用一次很小的模型请求,把 Todo、思考和工具证据整理成更容易理解的阶段名称。这个请求只负责显示,不会改变 Agent 的回答。
2. 任务完成后,过程自动折叠,答案回到主视线
正常完成的任务会自动收起思考过程,让最终答案留在最显眼的位置。遇到失败或中断时,过程会继续展开,方便检查问题。
任务完成后,过程会自动收起:

需要检查时,点一下就能重新展开:

3. 长日志可以单独滚动,不会带着整个对话乱跳
展开“运行详情”后,长命令输出和工具日志会在自己的区域里滚动。滚到边缘时不会突然把整个对话带走,底部输入框也不会把页面顶出一大片空白。
4. 长回答更适合阅读
回答的段落、标题和不同轮次之间更紧凑。任务结束后,可选的展示辅助还能优化答案标题;复制内容、会话历史和模型看到的原始答案都不会被改写。
任务刚结束时,网页会在后台补齐最后一段历史,避免晚到的结束事件让界面看起来还在运行,也不会闪出新的加载页。
5. 以前的会话更容易找
会话默认按最近更新时间排列,也可以切回手动排序。侧边栏可以搜索标题、工作区名称和当前进程中的对话内容;“未分组”区域也能直接新建不属于任何工作区的会话。
6. 生成的文件更容易找到
除了工具明确写出的文件,UX 版还会识别答案里清楚列出的文档、表格、数据集、图片、音视频、压缩包、数据库和 3D/CAD 文件路径,把它们显示成可打开的产物入口。普通文字、网址、命令和示例代码不会被误当成文件。
7. 模型配置集中在设置页
首次使用时会直接进入“设置 → 模型”的完整配置卡,不再维护另一套简化的密钥弹窗。提供方、模型、API Key 和错误恢复都在同一个地方完成。
它没有改变什么
- Agent Loop、模型路由、工具、权限、沙箱和 Session Log 仍沿用 DeepSeek Harness 的执行方式。
- 原始思考、上下文、命令和工具证据没有被删除,只是收进“运行详情”。
- 展示辅助不会修改 System Prompt、用户消息、工具、原始回答或会话历史。
- Session Log 默认仍保存在本地。
和官方版本相比,还需要知道这些
- 这是基于上游源码快照维护的社区版本,不会自动获得官方后续的修复、兼容性更新和安全更新。
- 这个快照还没有官方后来加入的部分能力,例如更严格的冷会话校验、隐藏当前无法登录的 OAuth-only 提供方,以及新的全局界面扩展位。
- 当前没有内建的 Codex OAuth 登录和 Token 自动刷新;选择
openai-codex路由时需要手动提供 Token。 - 基础 Bundle 会安装休眠状态的 Codex 和 Claude Code 子代理提供方,但不会因此自动启动对应产品进程。
- 官方版提供 npm 包;这个仓库只提供源码运行,不会向
@deepseek-aiscope 发布包。 - 当前官方源码使用 MIT 许可证;这个分支保留其上游快照当时采用的 BSD 3-Clause 许可证和相关声明。
应该选哪个版本?
如果你主要在网页里运行长任务,希望过程更清楚、回答更好读、会话和文件更容易找到,可以选择 DeepSeek Harness UX。
如果你更在意最新官方更新、npm 安装、Headless 或 CLI 工作流,应优先选择官方 DeepSeek Harness。
对比依据
UX 功能源码基于 35c6172。本说明以 2026-08-17 的官方 47f9438 为对照,只把用户能直接感知的差异写成功能,不把测试、包元数据和机械性源码差异包装成产品能力。
从源码运行
环境要求:
- Node.js
^22.19或>=24 - pnpm 11
- 兼容 DeepSeek 的 API Key
git clone https://github.com/ayuanwong/deepseek-harness-ux.git
cd deepseek-harness-ux
pnpm install
pnpm run build
pnpm run dsh -- web --port 3081
打开 http://127.0.0.1:3081,在“设置 → 模型”中添加模型提供方,然后新建会话。如果 3081 已被占用,可以换成其他端口。
本仓库交付的是完整源码版本,不是能直接安装到干净上游仓库的补丁,也没有单独发布为 npm 插件。
隐私
不要提交 .env、.npmrc、API Key、本地 Session、构建产物或 profile 数据。启用任何非默认遥测模式前,请先阅读上游遥测设置。展示辅助使用当前 Session 配置的模型提供方,因此启用阶段或标题整理时,会把受限的运行证据发送给该提供方。
开发
修改包之前,请阅读 AGENTS.md、开发指南和架构文档。
pnpm run lint
pnpm run build
pnpm run hygiene
pnpm run doc-sync
友情链接
— 带 TDD、证据检查、视觉和代码智能工作流的交互式终端 UI。
— Claude Code 风格的全屏终端 UI,支持实时任务状态、流式思考、回滚和上下文指标。
— DSH Find 上整理的 DeepSeek Harness 资源与生态项目。
许可证与归属
本仓库派生自 DeepSeek Harness,并保留其源码快照中的上游声明。本源码树使用 BSD 3-Clause 许可证;第三方依赖及许可条款见 THIRD_PARTY_NOTICES.md。
查看使用指南 →
该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。
收录徽章
[](https://deepseek-plugin.org/plugins/ayuanwong/deepseek-harness-ux/packages/bundle/base)把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。