DSH 是什么
一句话版:DeepSeek Harness(
dsh)是一个开源的 coding / 自动化 agent:独立进程、有自己的配置/会话/权限体系,采用一切皆插件的架构:核心只留循环与抽象缝,能力全靠插件组合。
DSH 由 DeepSeek AI 开源并处于 Developer Preview;官方源码、安装命令和最新行为见 deepseek-ai/deepseek-harness。本站是社区教程站。
这一篇回答"它到底是个什么东西、值不值得我用"。读完你有判断,也知道从哪开始。
一、它是什么
dsh 是一个能自己跑任务的 agent,不是"聊天框",也不是"IDE 补全插件"。它:
- 是一个独立进程,有自己的配置(
~/.dsh/)、会话(~/.dsh/sessions/)、权限与沙箱体系 - 能读文件、跑命令、搜索、调工具,也可以多模型路由、多 agent 协作
- 用插件扩展几乎一切(工具、服务、事件、UI 面板)
- 通过
dsh web给一个 Hermes 式 Web 工作台,也支持命令行一次性任务
放一句话:它是"一条 dsh web 就能启动的工作台 + 一整套可组合的 agent 能力"。
二、它不是什么(避免误会)
| 不是 | 它其实是 |
|---|---|
| IDE 插件 | 独立进程,自己管配置/会话/权限 |
| 单模型聊天框 | 可多 provider/多模型路由(llm-pi-ai) |
| 固定功能的工具 | 你能改的不只是设置,而是组合本身 |
常见误解:"plan/execute 自动切模型":不存在。
/plan只维护规划协作状态,不切换模型(见 模型路由)。
三、核心概念
| 概念 | 说明 | 位置 |
|---|---|---|
| SDK | 从另一进程驱动 Harness 的运行栈(JSON-RPC wire protocol / client / server) | packages/sdk |
| Cordis 底座 | 提供 Context/服务注入/插件装载的组合框架(一切皆插件) | @deepseek-ai/cordis |
| Harness | 组合出来的完整 agent 应用:循环、工具、会话、沙箱 | 全仓组合 |
| Profile | 插件的组合配置:bundle patch 层叠加用户覆盖层 | $DSH_HOME/profiles/<name> |
| Bundle | 自带 patch 的插件包,作为一层加入 profile | packages/bundle/base |
| Seam(能力缝) | 抽象能力接口(ctx.llm、ctx.tools、ctx.sandbox…),实现可换 | 各能力包 |
四、它能做什么(能力面速览)
| 场景 | 怎么做 |
|---|---|
| 改代码 / 读文件 / 跑命令 | tool-fs / tool-bash(见 内置工具) |
| 搜 DSH 自己的历史会话 | 工具 session_search(dsh-tool-session-query) |
| 一个任务拆给多个 agent 并行 | 子 Agent / 工作流 |
| 定时提醒 | 定时调度 |
| 接外部工具 | MCP |
| 让模型学会流程 | 技能 |
| 长期目标推进 | 目标与待办 |
五、三种启动方式
npx @deepseek-ai/dsh web # 官方零安装入口
dsh web # Web 工作台(默认 127.0.0.1:3080)
dsh --profile headless "跑一下测试" # 一次性任务,执行完退出
dsh --profile web # 显式指定 profile
web与headless是内置 profile 模板--profile headless <task>是一次性任务入口(dsh run已移除)
六、一切皆插件的哲学
顶层 README 原话:"它采用了『一切皆插件』的架构":
- 新增能力 = 写插件(工具、服务、事件、UI)
- 修改行为 = 换插件 / 叠 patch 层,不改核心
- 核心只留一个
AgentLoop具体循环:"新行为应放入插件,而不是这里"
这就是为什么后面你会看到 插件解剖 反复强调"扩展点优先"。
七、快速验证
dsh web --dump-config # 看当前组合的插件树(层叠结构一目了然)
dsh web --dump-default-config # 看默认 bundle 的组合
从哪开始
按你的目标选入口(完整导航见 学习路径):