Files
deepseek-harness/python/sdk/README.zh.md
T
Yichen Jiang 815365dbbe Merge remote-tracking branch 'origin/master' into worktree/provider-routed-llm-adapters
# Conflicts:
#	docs/config-catalog.md
#	docs/cordis-catalog/events.md
#	docs/cordis-catalog/services.md
#	docs/core-data-structures/core.md
#	docs/event-producer-consumer.md
#	docs/persistence-catalog.md
#	examples/acp-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
#	examples/acp-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
#	examples/acp-agent/tests/snapshots/advanced-toolchain/session.jsonl
#	examples/acp-agent/tests/snapshots/both-mode-turn/session.jsonl
#	examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
#	examples/acp-agent/tests/snapshots/skill-load/session.jsonl
#	examples/acp-agent/tests/snapshots/text-turn/session.jsonl
#	examples/sandbox-acp-agent/cordis.yml
#	examples/sandbox-acp-agent/tests/snapshots/escalation-approved/session.jsonl
#	examples/sandbox-acp-agent/tests/snapshots/escalation-rejected/session.jsonl
#	examples/sandbox-acp-agent/tests/snapshots/mode-switching/session.jsonl
#	packages/compact/compact-basic/README.md
#	packages/compact/compact-basic/src/index.ts
#	packages/compact/compact-basic/tests/compact-basic.spec.ts
#	packages/core/agent-loop/README.md
#	packages/core/agent-loop/src/loop.ts
#	packages/core/agent-loop/tests/properties.spec.ts
#	packages/core/session/README.md
#	packages/core/session/src/types.ts
#	packages/core/session/tests/derived-cache.spec.ts
#	packages/llm/llm-deepseek/src/index.ts
#	packages/llm/llm-pi-ai/README.md
#	packages/llm/llm-pi-ai/src/adapter.ts
#	packages/llm/llm-pi-ai/src/convert.ts
#	packages/llm/llm-pi-ai/tests/adapter.spec.ts
#	packages/llm/llm/README.md
#	packages/llm/llm/src/call-config.ts
#	packages/llm/llm/src/index.ts
#	packages/ui/acp-agent/src/index.ts
#	packages/ui/acp/tests/harness.ts
#	packages/ui/jsonrpc/README.md
#	packages/ui/jsonrpc/src/server.ts
#	packages/ui/stdio-agent/README.md
#	packages/ui/stdio-agent/src/index.ts
#	python/sdk/README.i18n.yaml
2026-07-14 22:17:50 +08:00

2.9 KiB

DeepSeek Harness Python SDK

English | 中文

通过 JSON-RPC stdio 驱动 DeepSeek Harness 的 Python 子进程 SDK。运行时继承常规的 DeepSeek Harness 环境变量(如 DEEPSEEK_BASE_URLDEEPSEEK_API_KEY),调用方可以直接用真实模型端点,也可以在跑基准测试时把它们指向本地代理。

安装 deepseek-harness 会同时安装版本完全相同的 deepseek-harness-runtime-bin 平台 wheel 包。因此常规入口不需要传可执行文件参数:

from deepseek_harness import DeepSeekHarness

with DeepSeekHarness() as harness:
    result = harness.run("Say hi.")

DeepSeekHarness 会保留延迟启动的运行时子进程,以供多次调用复用。请像上例一样将其用作上下文管理器,或在用完后显式调用 close()

默认情况下,SDK 启动 deepseek-harness-runtime-bin 包内置的单文件 dsh-jsonrpc-agent 可执行程序,并通过 DSH_CORDIS_CONFIG 注入该包的默认配置(stdio JSON-RPC 服务器、agent-core、预载的 DeepSeek 适配器、JSONL 会话持久化、本地 bash)。要运行自己的插件组合,请在配置里保留 @deepseek-ai/dsh-jsonrpc 条目,并传入 Cordis 配置路径。

from deepseek_harness import DeepSeekHarness

with DeepSeekHarness(
    provider="deepseek",
    model="deepseek-v4-flash",
    cordis="examples/dsbench-coding-agent/cordis.yml",
) as harness:
    result = harness.run("Make the requested code change.")

provider 用于选择当前 Cordis 组合已注册的提供方路由;model 是该适配器解析的模型 ID。内置默认组合注册 deepseek。自定义组合可以挂载 llm-pi-ai,在其中配置各提供方的凭据与端点,再选择 pi-ai 已安装目录中的任意提供方/模型组合。

TurnResult.final_response 是本轮次最后一个 assistant/message 事件的文本内容。完整的事件流(包括中间的助手消息与工具活动)用 TurnResult.events 获取。

同样的行为也可以通过 DSH_CORDIS_CONFIG 为运行时子进程选定。注入逻辑位于 HarnessClient.start(),因此底层客户端的默认启动也具有此行为:当启动解析到内置运行时,且 cordis 与非空的 DSH_CORDIS_CONFIG 均未设置时(运行时把空值视为缺省,注入检查与之一致),使用内置的默认配置;显式给出 runtime_binbridge_binlaunch_args_override 则完全禁用注入。运行时载体(生产用 exe 与仅限开发的 node 闭包)及其获取方式见 sdk-runtime README

cwdruntime_cwd 会在启动子进程、注入环境变量和协议握手前解析为绝对路径。公开 API 只暴露真正生效的选项:部署的角色设定与持久化配置归 cordis.yml 管理,而 session_root 继续作为设置 DSH_SESSION_ROOT 的高层便捷选项。