DeepSeek Harness 实操:从零跑通智能体框架,25 分钟搭好 Web 界面与第一个插件

DeepSeek Harness 实操:从零跑通智能体框架,25 分钟搭好 Web 界面与第一个插件

【免费下载链接】deepseek-harnessDeepSeek Harness: Everything is a Plugin.项目地址: https://gitcode.com/gh_mirrors/de/deepseek-harness

DeepSeek Harness(dsh)是 DeepSeek 开源的智能体框架,把模型接入、工具、会话管理全拆成了可插拔模块。本文写给第一次接触它、想亲手跑起来的新手。按本文跟完,你能独立启动 Web 界面、配好模型,并挂载一个自己的插件。

先看懂一个设计思想:后厨与排班表

搞清你在搭什么,后面每一步都会更顺。

DeepSeek Harness 只有一个核心思想:一切皆插件。模型接入是插件,终端工具是插件,界面上的卡片也是插件。

把它想象成一家餐厅的后厨:框架是中央厨房,每个插件是一个岗位——切配、炉灶、出餐。每个岗位开工前先报"我需要哪些半成品"(代码里叫inject),厨房保证依赖备齐了才让它上岗。

而整张排班表,就是一份叫cordis.yml的清单:哪些岗位今天上班、上在哪一层,全由它说了算。以后加功能,就是往排班表上添一个岗位;换实现,就是换一个人。你不需要拆厨房的墙。

动手前体检:DeepSeek Harness 四项前置条件自查

缺任何一项后面都会报错,先花一分钟核对。

  • Node.js:版本要求 22.19 及以上(或 24 以上),node -v可查。版本不够,pnpm install会直接抛 engine 报错,构建也过不去。
  • pnpm:仓库锁定 pnpm 11.28.5,推荐用 Node 自带的 corepack 启用。没有它,后文所有pnpm命令都不存在。
  • Git:用来克隆仓库。缺它只能手动下载压缩包,目录结构容易对不上。
  • DeepSeek API 密钥:后面配置模型要用。没有它界面能开,但发不出第一条消息。

踩坑预警:最高频的坑是 Node 停在 18/20。症状是安装阶段一堆看不懂的报错——直接升级到 22.19+ 重来,别试图绕过。

点亮项目:DeepSeek Harness 启动命令逐条解释

按顺序执行,每条命令后都有成功判据,随时确认没走偏。

git clone https://gitcode.com/gh_mirrors/de/deepseek-harness cd deepseek-harness corepack enable pnpm install

第一句把源码克隆到本地,第二句进入项目根目录,后续命令都在这里执行;corepack enable启用包管理器管理,它会自动按仓库声明切到 pnpm 11.28.5;pnpm install安装全部依赖,仓库较大,耐心等。

成功判据:终端最终打印完成信息,且没有ERR开头的红色报错。

pnpm run build pnpm dsh web

第一条把源码构建成可运行产物——生产运行只认构建产物,跳过它后面会启动失败;第二条启动 Web 服务,默认地址http://127.0.0.1:3080,会自动打开浏览器,加--no-open可关掉这个行为。

成功判据:build 阶段无 error 并回到干净的 shell 提示符;随后终端打印访问地址,浏览器打开后看到 DeepSeek Harness 的欢迎主界面。

核心能力接入:DeepSeek Harness 模型配置字段逐项填法

界面只是空壳,填好密钥才真正可用。

进入设置 → 模型。

官方路线:DeepSeek 卡片只有一个API 密钥字段 → 粘贴密钥并保存。密钥是只写的,保存后页面只拿到脱敏描述,明文存在本地$DSH_HOME/.credentials.yaml。

自定义路线(OpenAI 兼容网关、中转站):点"添加模型提供商"切到自定义表单,四个字段这样填——

  • Provider ID→ 小写唯一标识,请求与凭据都靠它定位 → 例my-gateway
  • 显示名称→ 仅界面展示 → 例公司网关
  • API 地址→ 网关 base URL → 例https://gateway.example/v1
  • API 协议→ 必须选网关实际使用的那一种,三选一 → 例openai-completions

成功判据:模型选择器里出现你配置的模型,选中后新会话即可对话。模型变更下一次请求即生效,无需重启。

实战小练:10 分钟写出第一个会心跳的 dsh 插件

结果肉眼可见:终端里持续冒出心跳日志。

先建目录(在项目根目录执行):mkdir -p scratch-plugin/src。

创建scratch-plugin/src/my-plugin.ts:

import type { Context } from '@deepseek-ai/cordis' export const name = 'beacon' export function apply(ctx: Context) { console.log('[beacon] 已挂载到 Harness') ctx.effect(() => { const tick = setInterval(() => console.log('[beacon] 心跳正常'), 5000) return () => clearInterval(tick) }) }

apply是框架加载插件时的入口,ctx就是那个"中央厨房";ctx.effect里返回的清理函数会在插件卸载时自动执行,你不用手动clearInterval。

再创建scratch-plugin/cordis.yml:

- insert: - id: beacon name: '/你的绝对路径/deepseek-harness/scratch-plugin/src/my-plugin.ts'

这是叠加到默认配置之上的覆盖层,insert表示往里插入一个插件条目。

踩坑预警:name必须是绝对路径,先pwd拿到根目录再拼接;路径写错时插件会静默失效——不报错、无输出。

pnpm dsh web --patch ./scratch-plugin/cordis.yml

--patch把这份覆盖层叠到默认配置上,不改动任何默认值。

成功判据:启动时终端打印[beacon] 已挂载到 Harness,之后每 5 秒一条心跳;按 Ctrl+C 停止时定时器被自动回收,无残留。

排坑手册:dsh 新手最常卡住的 5 类问题及解法

卡住时直接对照,不用逐段回翻。

  1. 现象:启动即报 3080 端口冲突 →原因:本机已有服务占用该端口 →解法:pnpm dsh web --port 8080换端口启动。
  2. 现象:跳过 build 直接pnpm dsh web,启动报错或页面异常 →原因:生产运行依赖已构建的产物 →解法:先补跑pnpm run build再启动。
  3. 现象:cordis.yml 加了插件却毫无输出,像没生效 →原因:name路径写错或不是绝对路径,解析失败只进日志不崩溃 →解法:先pwd核对绝对路径,逐字符检查拼写。
  4. 现象:模型配好了,会话输入框灰着发不出消息 →原因:未选中工作区,选中前输入框不可用 →解法:点"选择工作区",添加项目目录并选中。
  5. 现象:pnpm命令找不到或版本不对 →原因:corepack 未启用或系统 pnpm 过旧 →解法:执行corepack enable,再用pnpm -v确认是 11.28.5。

进阶路线图:跑通 DeepSeek Harness 之后的四条路径

每条都附了项目内文档入口,顺着就能走。

  1. 注册一个自定义工具(如greet问候工具)——让智能体真正调用你写的逻辑,是插件价值的第一个放大器。入口:开发一个工具
  2. 给插件加配置与依赖声明(inject)——学会声明式地等待tools、llm等服务就绪再上岗。入口:插件配置
  3. 深入 Cordis 底层教程——理解生命周期、effect 清理与三种插件形态,把插件从"能跑"写到"写得稳"。入口:Cordis 框架教程
  4. 打包发布插件——从玩家变成作者,把你的插件分享出去。入口:发布指南

到这一步,Web 界面、模型配置、第一个插件三件事全部落地,正是导语里承诺的全部内容。排班表上永远有空位,下一个插件该是什么,由你定 ✨

【免费下载链接】deepseek-harnessDeepSeek Harness: Everything is a Plugin.项目地址: https://gitcode.com/gh_mirrors/de/deepseek-harness

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

数学建模竞赛真题解读与源码实战:从模型构建到论文输出全链路

数学建模竞赛真题解读与源码实战:从模型构建到论文输出全链路

简介:一套面向高校数学建模竞赛的完整培训材料,涵盖基础理论、建模方法、真题解析与源代码实现,适合从入门到备赛冲刺的各阶段学生。压缩包共61个文件,约2.02MB,以30个MATLAB脚本、16个Word文档和6个Excel表格为主&…

2026/10/21 3:09:09 阅读更多 →
高职院校智能体应用生态建设:OpenClaw落地实战指南

高职院校智能体应用生态建设:OpenClaw落地实战指南

1. 项目概述:为什么要研究OpenClaw在高职院校的落地先说结论:OpenClaw这个项目本身不是什么新概念,它本质上是一套开源的多智能体编排框架。我接触它是在一次校内数字化转型研讨会上,某高校信息中心的某老师提到他们正在试水智能体…

2026/10/21 3:09:09 阅读更多 →
数据获取与处理实战:从数据源选择到数据清洗的完整指南

数据获取与处理实战:从数据源选择到数据清洗的完整指南

这几年做数据相关的工作,被问得最多的一个问题是:“我该从哪儿拿数据?拿到手之后又该怎么处理?”说实话,大多数人在第一步就卡住了,要么不知道怎么稳定地拿到数据,要么千辛万苦拿到一份Excel&am…

2026/10/21 3:08:09 阅读更多 →

最新新闻

FFmpeg输入源处理:本地文件与网络流读取的底层逻辑与实战

FFmpeg输入源处理:本地文件与网络流读取的底层逻辑与实战

FFmpeg 这个工具,刚接触音视频开发的人往往会被它庞大的参数体系劝退,但真正用起来之后又会发现,很多看似复杂的需求,其实一条命令就能搞定。这次要聊的是 FFmpeg 读取本地文件和网络流这两种输入源的处理方式,属于系列…

2026/10/21 3:53:34 阅读更多 →
用CC-Switch统一管理Claude Code与Codex的API配置

用CC-Switch统一管理Claude Code与Codex的API配置

每天在终端里同时用几个 AI 编程工具的人,大多经历过这种状态:Claude Code 要一套 API 配置,Codex 又是另一套,换一下模型提供商或者接入渠道就得重新改环境变量。最难受的不是改本身,而是改完经常不生效,最…

2026/10/21 3:53:34 阅读更多 →
程序员创意开发大赛实战指南:从选题到演示的完整避坑策略

程序员创意开发大赛实战指南:从选题到演示的完整避坑策略

1. 从一条比赛公告里拆出来的真实需求第一次看到这个标题的时候,我正蹲在工位上啃便利店饭团,脑子里第一反应不是"哇有免费汉堡",而是——"程序员创意开发大赛"这七个字背后,到底想让人做出什么东西来。标题里…

2026/10/21 3:53:34 阅读更多 →
C++归并排序优化实战:从教科书到生产级性能提升一倍

C++归并排序优化实战:从教科书到生产级性能提升一倍

1. 归并排序优化版的核心设计思路归并排序这个算法,计算机专业的人都不陌生。教科书上讲分治法,十有八九拿它当例子。但真正在项目里手写过生产级别的归并排序之后,你会发现课本上那个版本离“能用”还有相当一段距离。我最近在一个数据处理模…

2026/10/21 3:53:34 阅读更多 →
11万star开源工具实测:软件拆解与结构分析全流程指南

11万star开源工具实测:软件拆解与结构分析全流程指南

1. 这个11万star的项目到底在拆什么第一次看到这个项目的star数时,我下意识地刷新了两遍页面。11万star,在开源社区里这个量级意味着它已经不只是"热门工具",而是某种程度上的基础设施了。但真正让我决定花一个周末把它跑通的&…

2026/10/21 3:53:34 阅读更多 →
单图生成3D高斯泼溅实战:API接入与交互展示

单图生成3D高斯泼溅实战:API接入与交互展示

1. 从一张图到可交互3D:这个项目到底在做什么单图生成3D高斯泼溅(3D Gaussian Splatting,后面统一简称3DGS)这个方向,最近半年热度一直没降下来。原因很直接:传统摄影测量或者多视角重建,你得围…

2026/10/21 3:52:33 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →