完成 Node.js、pnpm 及 @deepseek-ai/dsh 的安装与 API 密钥配置,成功启动本地 Harness 服务。
核心概念
DeepSeek Harness 插件式架构与 Cordis 内核
想象你拥有一台模块化组装电脑,机箱和主板只提供电力总线和插槽,而 CPU、显卡、声卡和屏幕都是外插模块。如果你想升级图形性能或换用不同的扬声器,只需拔插对应板卡,无需重构整台机器的电气回路。
技术定义上,DeepSeek Harness (dsh) 是由深度求索官方开源的模块化智能体框架,其底层由 Cordis 依赖注入与微内核插件系统驱动。在 Harness 的体系中践行“一切皆插件”(Everything is a plugin)的设计理念:大模型适配器(LLM Provider)、工具注册表(Tools)、会话日志流(Sessions)、调度循环(Loop)以及 Web/CLI 交互界面均以插件形态挂载在统一的 Context 容器上。系统运行时不存在特权核心,所有能力均通过声明服务依赖与事件总线进行协同,开发者无需侵入框架源码即可通过配置实现能力的自由拔插与重组。
1. 运行环境与依赖要求
DeepSeek Harness 运行时基于 TypeScript 与现代 JavaScript 运行时构建。为了保证 Cordis 微内核与各类 Agent 插件的正常加载与解析,开发环境需要满足明确的运行时基线。
- Node.js 版本基线:仓库与底层服务要求 Node.js 版本满足
^22.19.0 || >=24.0.0。Node.js 20 及更早版本缺乏部分新语法与内置 API 支持,会导致模块加载阶段发生未知解析错误。推荐使用当前活跃的 LTS 版本(如 Node.js 22.x 或 24.x)。 - 包管理器工具:Harness 在管理插件生命周期、增删外部依赖以及 Monorepo 构建时深度集成
pnpm,需全局安装pnpm工具。 - 核心 CLI 包:DeepSeek 官方通过 npm 仓库分发
@deepseek-ai/dsh命令行工具。全局安装后即可直接使用dsh命令调度运行时、管理插件及启动本地服务。 - API 凭据要求:智能体执行多步推理与内置搜索等能力需要连接模型后端。Harness 默认读取环境变量
DEEPSEEK_API_KEY,用于初始化官方模型连接与内置网络搜索服务。
安装 Harness 运行时与启动验证
- 1
检查本地 Node.js 与 npm 版本,确认 Node.js 大于等于 22.19.0 或 24.x。
bashnode -v npm -v - 2
全局安装 pnpm 包管理器与 DeepSeek Harness 命令行运行时
@deepseek-ai/dsh。bashnpm install -g pnpm @deepseek-ai/dsh - 3
验证 dsh 命令行工具是否成功安装并输出版本号信息。
bashdsh --version - 4
配置 DeepSeek API 密钥环境变量(根据操作系统选择对应命令)。
bash# Linux / macOS export DEEPSEEK_API_KEY="your_deepseek_api_key_here" # Windows PowerShell # $env:DEEPSEEK_API_KEY="your_deepseek_api_key_here" - 5
启动本地 Harness Web 运行时服务,加载预设插件并监听本地端口。
bashdsh web
你应该看到
执行 dsh --version 时终端打印正确的版本号(如 0.1.0-rc.7);执行 dsh web 后控制台输出启动日志,并在浏览器访问 http://127.0.0.1:3080 时能成功打开 Harness Web 管理界面。
dsh web 默认绑定在本地回环地址 127.0.0.1:3080。当你在终端启动该命令后,Cordis 运行时将在内存中组装包括 Web UI、会话管理和模型适配器在内的初始插件树。若关闭终端窗口,注意后台可能存在未释放的 Node 监听进程,后续开发排查时需关注端口占用状态。
遇到问题:运行 dsh web 报错“port in use”端口被占用,或启动时出现语法/模块解析异常立即崩溃
可能原因
- Node.js 版本低于 22.19.0(如使用了 Node 20),导致框架运行所需的高级 ECMAScript 特性或内部 API 不可用
- 此前运行的 dsh web 进程在终端关闭后残留为孤儿进程,持续占用 3080 端口
- 未正确注入 DEEPSEEK_API_KEY 导致会话与模型插件初始化失败
排查步骤
- 执行
node -v检查版本,若版本过低,使用 nvm 或包管理器升级至 Node.js 22.19.0+ 或 24.x LTS:nvm install 24 && nvm use 24 - 在 Linux/macOS 下排查并释放 3080 端口占用:
lsof -i :3080查看 PID 并通过kill <PID>终止残留进程 - 检查终端环境变量:执行
echo $DEEPSEEK_API_KEY(PowerShell 下执行echo $env:DEEPSEEK_API_KEY),确认密钥已注入且非空 - 重新在终端执行
dsh web启动服务并访问http://127.0.0.1:3080
自检:DeepSeek Harness 的架构中,“一切皆插件”的核心含义是什么?框架自身是如何管理各插件的?
“一切皆插件”意味着 Harness 自身没有特权核心,模型连接、工具调用、UI 界面、会话日志等能力全部作为插件存在。框架底层通过 Cordis 微内核容器进行统一调度,插件通过 Context 注册与获取服务,并通过声明式依赖(inject)自动解析加载拓扑,使得任何功能都可以在配置层直接替换或扩展。