DeepSeek Harness 怎么用 Python 调用?DSH plugin 的 SDK 入门

配置与使用发布于 2026-10-03作者: DeepSeek Plugin 插件市场
DeepSeek HarnessDSH pluginPython SDKsdk-minimal配置使用
DeepSeek Harness 提供官方 Python SDK:pip install deepseek-harness-sdk 后用 DeepSeekHarness 上下文管理器驱动 sdk-minimal profile,会话日志落在 $DSH_HOME/sessions 的 JSONL。

DeepSeek Harness 提供官方 Python SDK:pip install deepseek-harness-sdk 之后,用 DeepSeekHarness 上下文管理器就能从 Python 程序里驱动一个 sdk-minimal profile——配置由 profile、home patch 与传入的 patches 共同组成,会话日志落在 $DSH_HOME/sessions 的未压缩 JSONL(来源)。

DeepSeek Harness Python SDK 安装与前置条件

装 SDK 的前置是 Python 3.10+ 与 Git,执行 pip install deepseek-harness-sdk 即可;安装内容自带匹配的原生运行时 wheel 与 dsh 命令,普通 SDK 运行不需要系统 Node.js(来源)。 按下面步骤走一遍:

  1. 确认平台与版本 — Linux x64 / arm64、arm64 上的 macOS 14+,或 Windows x64;另需一个 DeepSeek 兼容的 API endpoint 与凭据。预期:环境满足后再安装,避免原生 wheel 不匹配。
  2. 创建隔离环境 — 建虚拟环境并激活(Linux/macOS 用 python -m venv .venv 后 . .venv/bin/activate;Windows 用 py -3.10 -m venv .venv 后激活脚本)。预期:python -m pip install deepseek-harness-sdk 装到该环境。
  3. 准备隔离 workspace 与 home — 给测试用一个一次性 workspace 和一个独立 dsh_home。预期:SDK 只用你传入的 home,不读 ~/.dsh。
  4. 导出凭据 — 设置 DEEPSEEK_API_KEY;用兼容代理时再设 DEEPSEEK_BASE_URL。预期:凭据从环境变量进入运行时。

用 DeepSeekHarness 在程序里跑任务

在程序里用 DeepSeekHarness 作为上下文管理器,指定 provider、model、cwd、dsh_home 与 profile,调用 harness.run(prompt, session_id=...),最后读 result.final_response(来源)。 最小用法:

python
from pathlib import Path
from deepseek_harness import DeepSeekHarness

workspace = Path("/absolute/path/to/disposable-workspace").resolve()
dsh_home = Path("/absolute/path/to/example-dsh-home").resolve()
with DeepSeekHarness(
    provider="deepseek-official",
    model="deepseek-v4-flash",
    max_tokens=49_152,
    cwd=str(workspace),
    dsh_home=str(dsh_home),
    profile="sdk-minimal",
) as harness:
    result = harness.run(
        "Inspect the repository and fix the failing tests.",
        session_id="example-001",
    )

print(result.final_response)

几个关键点:

  1. 进程是延迟启动的 — SDK 会延迟启动内置的 dsh --profile sdk-minimal 进程,并复用到上下文管理器退出。预期:退出 with 块后进程被回收。
  2. 没有独立的 Python 运行时 — 不存在单独的 Python 运行时 bin 或一套完整配置选项,所有配置仍走 profile 与 patch。预期:概念统一到 DeepSeek Harness 自身的配置体系。
  3. 隔离用新 home、独立工作用新 session id — 只在需要继续同一段持久对话时才复用 harness、home 与 id。预期:混用会导致会话被意外接续。

DSH plugin 与 minimal profile:装插件、传 patch、启用 str_replace_editor

要用 dsh plugin 在该 home 里持久保存依赖与 bundle 层;持久配置改动编辑 $DSH_HOME/profiles/sdk-minimal/cordis.patch.yml,单次启动的改动则从 Python 传入 patch 文件(来源)。 三步:

  1. 初始化 profile — 执行 dsh --profile sdk-minimal --dump-default-config >/dev/null。预期:初始化随附的独立 profile,后续管理才有落点。
  2. 装插件包 — 用 dsh plugin --profile sdk-minimal add file:/absolute/path/to/my-plugin-bundle,它把包管理转发给 pnpm 并记录所有导出 dsh.bundle 层的包。预期:只有执行这条管理命令时才需要 pnpm,启动已装好的 SDK 不需要。想找现成插件可以先进 DSH Plugin Hub 浏览社区实现。
  3. 按需启用 str_replace_editor — 随附运行时包含它,但 sdk-minimal 默认不挂载。写一份 editor.patch.yml 用 insert 加回文件系统后端与编辑器,再通过 patches 传入或写进 cordis.patch.yml 持久保存。预期:下次启动后模型就能在持久 shell 之外使用该工具。
yaml
# editor.patch.yml
- insert:
    - id: fs-local
      name: '@deepseek-ai/dsh-fs-local'
      config:
        cwd: !!js process.cwd()
    - id: tool-str-replace-editor
      name: '@deepseek-ai/dsh-tool-str-replace-editor'

注意:另一个 profile 只有在包含 @deepseek-ai/dsh-sdk-app 或另一个 JSON-RPC server 配置项时才有效;缺失 server 配置项、无法解析的插件或非法 patch 会在启动时直接失败,不会回退到其他组合。

理解 sdk-minimal 极简 profile

sdk-minimal 在空根之上插入完整配置树且不含 dsh-base,因此基础 profile 以后新增的工具不会隐式出现(来源)。 它的默认值:

属性值
系统提示词DSH_SYSTEM_PROMPT,未设置时为 You are a helpful software engineer assistant.
模型--model,然后是 DSH_MODEL,最后回退 deepseek-v4-flash
面向模型的工具Linux / macOS 上的持久 bash,或 Windows 上的 pwsh
Shell 超时300 秒
运行时上下文与 compaction不存在
会话持久化<dsh_home>/sessions 下的未压缩 JSONL

该 profile 包含 SDK 协议、一个由环境配置的 DeepSeek 适配器、本地执行与持久化;文件系统工具、settings、托管凭据、OTel 遥测、Web 工具、subagent、本地指令发现与 compaction 都不存在。它还固定使用 danger-full-access——持久 shell 能修改运行时可见的任何路径,所以务必用一次性 checkout 或容器。

注意事项与常见问题

  1. ~/.dsh 不会被读取:SDK 只用你传入的 dsh_home,这是刻意的隔离设计,别指望它继承你日常的配置。
  2. 权限很宽:danger-full-access 下 shell 可写任何可见路径,务必隔离环境。
  3. 会话日志未压缩:<dsh_home>/sessions 里的 JSONL 未压缩,注意磁盘占用与隐私,详见《DeepSeek Harness 会话记录在哪、怎么查》。
  4. Web UI 不在 SDK 里:Python SDK 部署若要浏览器应用,需针对显式 DSH_HOME 另外运行 dsh web;web 是独立 CLI 应用,不能为 Python SDK client 提供服务。
  5. 要换模型或接自建服务:改 providers 与凭据,见《DeepSeek Harness 模型提供方怎么配》。

来源:Python SDK 入门(官方文档)、dsh CLI README(官方仓库)

常见问题

DeepSeek Harness 的 Python SDK 怎么安装、需要 Node.js 吗?

装 DeepSeek Harness Python SDK 需要 Python 3.10 或更高版本加 Git,然后 pip install deepseek-harness-sdk。安装内容包含匹配的原生运行时 wheel 与 dsh 命令,普通 SDK 运行不需要系统 Node.js。

DeepSeek Harness 的 Python SDK 怎么跑一条任务?

在 DeepSeek Harness 里用 DeepSeekHarness 作为上下文管理器,指定 provider、model、cwd、dsh_home 与 profile,再调用 harness.run(prompt, session_id=...),最后读 result.final_response。SDK 会延迟启动内置的 dsh --profile sdk-minimal 进程并复用到退出。

DeepSeek Harness SDK 会读取 ~/.dsh 里已有的配置吗?

不会:DeepSeek Harness SDK 与随附示例绝不静默读取 ~/.dsh;你传入的 dsh_home 才是唯一来源,所选 home 会保存生成的 sdk-minimal profile、已安装插件与 sessions/ 下的会话日志。

DeepSeek Harness SDK 怎么给 profile 装插件、改配置?

先初始化 DeepSeek Harness profile,再用 dsh plugin --profile sdk-minimal add 装包(这一步需要 pnpm)。持久配置改动编辑 $DSH_HOME/profiles/sdk-minimal/cordis.patch.yml,单次启动的改动则从 Python 传入 patches。

为什么 DeepSeek Harness 的 sdk-minimal profile 里没有 str_replace_editor?

DeepSeek Harness 的 sdk-minimal profile 默认 Cordis tree 不挂载它。要启用就写一个 editor.patch.yml 用 insert 加回 fs-local 与 tool-str-replace-editor,再通过 patches 参数传入,或写进 cordis.patch.yml 持久化。

相关术语

deepseek-harness-sdk
deepseek-harness-sdk 是 DeepSeek Harness 官方发布的 Python 包,安装后同时带来匹配的原生运行时 wheel 与 dsh 命令,用 DeepSeekHarness 类在程序里驱动一个 dsh profile。— DeepSeek Harness 官方文档 - Python SDK 入门
sdk-minimal
sdk-minimal 是 SDK 随附的独立极简 profile,在空根之上插入完整配置树且不含 dsh-base,只包含 SDK 协议、由环境配置的 DeepSeek 适配器、本地执行与持久化。— DeepSeek Harness 官方文档 - Python SDK 入门
dsh_home
dsh_home 是 DeepSeek Harness 的隔离 home 目录,保存 profile、已安装插件、凭据、设置与会话日志;SDK 只用你显式传入的这个 home,不读 ~/.dsh。— DeepSeek Harness 官方文档 - Python SDK 入门
patch
patch 是 DeepSeek Harness 的配置叠加层,用 insert 等操作在既有配置树上增改条目;SDK 里可由 profile 持久 patch、home patch 与构造时传入的 patches 元组共同组成。— DeepSeek Harness 官方文档 - Python SDK 入门

来源