DeepSeek Harness 震撼发布!一切皆插件的 AI Agent 框架,附 10 分钟上手 Demo
导读2026 年 8 月 13 日DeepSeek 正式开源 DeepSeek Harness v0.1主打一切皆插件架构MIT 协议完全开源。本文带你 10 分钟上手手写第一个 AI Agent 插件为什么 DeepSeek Harness 值得关注在 AI Agent 框架百花齐放的 2026 年DeepSeek Harness 凭什么出圈特性DeepSeek HarnessLangGraphCrewAI架构模式插件化图工作流角色协作热插拔✅ 支持❌ 不支持❌ 不支持开源协议MITMITMIT多模型✅ 原生支持✅✅国产化✅❌❌学习成本中高低核心优势一切皆插件——模型、工具、技能、UI、沙箱全部插件化自由组合、替换、扩展 快速开始10 分钟上手 Demo环境准备# Node.js 版本要求 18.0node-v# 建议 v20# 克隆仓库gitclone https://github.com/deepseek-ai/deepseek-harness.gitcddeepseek-harness# 安装依赖npminstall# 构建核心npmrun build项目结构速览deepseek-harness/ ├── packages/ │ ├── core/ # 核心框架Cordis 元框架 │ ├── plugins/ # 官方插件 │ │ ├── model/ # 模型插件 │ │ ├── tool/ # 工具插件 │ │ └── ui/ # UI 插件 │ └── examples/ # 示例代码 ├── docs/ # 文档 └── package.json 实战手写第一个插件场景开发一个「天气查询」工具插件我们要创建一个简单的 AI Agent 插件让 AI 能够查询天气信息。Step 1创建插件项目# 创建插件目录mkdirweather-plugincdweather-plugin# 初始化 npm 项目npminit-y# 安装 Harness 核心依赖npminstalldeepseek-harness/coreStep 2编写插件代码创建src/weather-plugin.ts// src/weather-plugin.tsimport{Plugin,definePlugin}fromdeepseek-harness/core;// 定义插件配置接口interfaceWeatherPluginConfig{apiKey:string;defaultCity:string;}// 定义插件exportconstweatherPlugindefinePluginWeatherPluginConfig({name:weather-query,version:1.0.0,description:天气查询工具插件,// 插件激活时的初始化asyncsetup(config){console.log([Weather] 插件已激活默认城市${config.defaultCity});return{currentCity:config.defaultCity,apiKey:config.apiKey,};},// 插件提供的工具函数tools:{// 查询天气asyncgetWeather(ctx,city?:string){conststatectx.getPluginStateReturnTypetypeofthis.setup();consttargetCitycity||state.currentCity;// 模拟天气数据实际使用需调用 APIconstweatherData{city:targetCity,temperature:Math.floor(Math.random()*35)°C,condition:[晴,多云,小雨,阴天][Math.floor(Math.random()*4)],humidity:Math.floor(Math.random()*100)%,};return{success:true,data:weatherData,};},// 设置默认城市asyncsetDefaultCity(ctx,city:string){conststatectx.getPluginStateReturnTypetypeofthis.setup();state.currentCitycity;return{success:true,message:默认城市已设置为${city},};},},// 插件销毁时的清理asyncteardown(){console.log([Weather] 插件已卸载);},});exportdefaultweatherPlugin;Step 3创建插件入口创建src/index.ts// src/index.tsexport{weatherPlugin}from./weather-plugin;exporttype{WeatherPluginConfig}from./weather-plugin;Step 4编译插件创建tsconfig.json{compilerOptions:{target:ES2020,module:commonjs,lib:[ES2020],declaration:true,outDir:./dist,rootDir:./src,strict:true,esModuleInterop:true,skipLibCheck:true},include:[src/**/*],exclude:[node_modules,dist]}编译npx tscStep 5在 Harness 中注册插件创建src/app.ts主程序// src/app.tsimport{Harness}fromdeepseek-harness/core;import{weatherPlugin}from./weather-plugin;asyncfunctionmain(){// 创建 Harness 实例constharnessnewHarness({name:my-first-agent,version:1.0.0,});// 注册天气插件awaitharness.registerPlugin(weatherPlugin,{apiKey:your-api-key-here,// 实际使用需申请天气 APIdefaultCity:北京,});console.log(✅ Harness 启动成功);// 获取插件实例constweatherharness.getPlugin(weather-query);// 调用插件工具constresultawaitweather.tools.getWeather(null,上海);console.log(️ 天气查询结果:,result);// 设置默认城市awaitweather.tools.setDefaultCity(null,广州);// 再次查询使用默认城市constresult2awaitweather.tools.getWeather(null);console.log(️ 默认城市天气:,result2);}main().catch(console.error);Step 6运行 Demo# 编译主程序npx tsc src/app.ts--outDirdist# 运行nodedist/app.js预期输出[Weather] 插件已激活默认城市北京 ✅ Harness 启动成功 ️ 天气查询结果{ success: true, data: { city: 上海, temperature: 28°C, condition: 多云, humidity: 65% } } ️ 默认城市天气{ success: true, data: { city: 广州, temperature: 32°C, condition: 晴, humidity: 80% } } [Weather] 插件已卸载进阶多插件协作示例Harness 的强大之处在于插件自由组合。下面演示模型插件 工具插件的协作。完整示例AI 天气助手// src/ai-weather-agent.tsimport{Harness}fromdeepseek-harness/core;import{deepSeekModelPlugin}fromdeepseek-harness/model-deepseek;import{weatherPlugin}from./weather-plugin;asyncfunctionmain(){constharnessnewHarness({name:ai-weather-agent,version:1.0.0,});// 注册模型插件awaitharness.registerPlugin(deepSeekModelPlugin,{apiKey:process.env.DEEPSEEK_API_KEY,model:deepseek-chat,});// 注册天气插件awaitharness.registerPlugin(weatherPlugin,{apiKey:your-weather-api-key,defaultCity:北京,});// 获取插件constmodelharness.getPlugin(deepseek-model);constweatherharness.getPlugin(weather-query);// 用户输入constuserInput帮我查一下上海的天气然后用一句话总结;// 第一步让 AI 理解意图constintentawaitmodel.tools.chat({messages:[{role:user,content:userInput}],tools:[weather-query.getWeather],// 告知可用工具});// 第二步调用天气插件if(intent.toolCalls?.[0]?.namegetWeather){constweatherResultawaitweather.tools.getWeather(null,intent.toolCalls[0].args.city||上海);// 第三步让 AI 总结constsummaryawaitmodel.tools.chat({messages:[{role:user,content:userInput},{role:assistant,toolCalls:intent.toolCalls},{role:tool,content:JSON.stringify(weatherResult.data)},],});console.log( AI 总结:,summary.content);}}main().catch(console.error);运行效果 AI 总结上海今天多云气温 28°C湿度 65%适合外出活动。 插件类型大全DeepSeek Harness 支持多种插件类型下面是常见插件的开发模板1. 模型插件exportconstmyModelPlugindefinePlugin({name:my-model,tools:{asyncchat(ctx,messages:Message[]){// 调用 LLM APIreturnawaitcallLLM(messages);},},});2. 工具插件exportconstfilePlugindefinePlugin({name:file-operations,tools:{asyncreadFile(ctx,path:string){returnawaitfs.promises.readFile(path,utf-8);},asyncwriteFile(ctx,path:string,content:string){awaitfs.promises.writeFile(path,content);return{success:true};},},});3. UI 插件exportconstcliUiPlugindefinePlugin({name:cli-ui,hooks:{onOutput(output){console.log( 输出:,output);},},});4. 沙箱插件exportconstdockerSandboxPlugindefinePlugin({name:docker-sandbox,tools:{asyncexecute(ctx,code:string,language:string){// 在 Docker 容器中执行代码returnawaitdocker.run(code,language);},},}); 发布你的插件到 NPM# 完善 package.jsonnpmpkgsetkeywordsdeepseek-harness,plugin,ai-agentnpmpkgsetrepository.githubyour-username/your-plugin# 测试npmpack# 发布npmpublish--accesspublic发布后其他人可以npminstallyour-weather-plugin然后在 Harness 中使用import{weatherPlugin}fromyour-weather-plugin;awaitharness.registerPlugin(weatherPlugin,config); 实际应用场景场景 1AI 代码助手// 组合模型 文件 沙箱 代码审查插件harness.registerPlugin(deepSeekModelPlugin);harness.registerPlugin(filePlugin);harness.registerPlugin(dockerSandboxPlugin);harness.registerPlugin(codeReviewPlugin);// AI 可以读写文件 → 生成代码 → 沙箱运行 → 自动审查场景 2自动化测试 Agent// 组合模型 浏览器 测试 报告插件harness.registerPlugin(deepSeekModelPlugin);harness.registerPlugin(playwrightPlugin);harness.registerPlugin(testGeneratorPlugin);harness.registerPlugin(reportPlugin);// AI 可以分析需求 → 生成测试 → 执行 → 输出报告场景 3数据分析助手// 组合模型 SQL 可视化 报告插件harness.registerPlugin(deepSeekModelPlugin);harness.registerPlugin(sqlPlugin);harness.registerPlugin(chartPlugin);harness.registerPlugin(reportPlugin);// AI 可以理解问题 → 查询数据 → 生成图表 → 输出分析⚠️ 注意事项事项说明版本兼容性v0.1 预览版API 可能变动生产环境暂不建议用于生产等待 v1.0文档完善度部分文档仍在补充中社区支持新框架遇到问题需自行探索资源链接资源链接GitHub 仓库https://github.com/deepseek-ai/deepseek-harness官方文档https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/development.zh.mdAwesome 资源https://github.com/0xsline/awesome-deepseek-harness本文 Demo 代码可关注公众号回复harness获取写在最后deepseek Harness本质上主要是适用于前端 JS/TS的AI开发框架方便统一管理插件并不能直接应用于 Java/Python/Golang 乃至于客户端app的Android, IOS 鸿蒙开发等

相关新闻

Peak CAN卡选型、软件使用与实战调试全指南

Peak CAN卡选型、软件使用与实战调试全指南

1. 从项目到工具:为什么需要一张专业的CAN卡?如果你正在开发汽车电子、工业控制或者机器人相关的项目,那么“CAN总线”这个词对你来说一定不陌生。它就像这些复杂系统里的“神经系统”,负责在各个控制器(ECU&#xff0…

2026/10/13 15:39:00 阅读更多 →
现在才懂啊,儿子的家呀根本就不是我的家。昨天中午呢我孙子就跑到厨房啊,扒着门框喊说,爷爷饭好了没有我饿了。我把最后一道啊排骨端出来,我说好了,快喊你爸妈出来吃饭吧。儿媳妇呢就跟着从卧室啊走出来就往桌旁

现在才懂啊,儿子的家呀根本就不是我的家。昨天中午呢我孙子就跑到厨房啊,扒着门框喊说,爷爷饭好了没有我饿了。我把最后一道啊排骨端出来,我说好了,快喊你爸妈出来吃饭吧。儿媳妇呢就跟着从卧室啊走出来就往桌旁

现在才懂啊,儿子的家呀根本就不是我的家。昨天中午呢我孙子就跑到厨房啊,扒着门框喊说,爷爷饭好了没有我饿了。我把最后一道啊排骨端出来,我说好了,快喊你爸妈出来吃饭吧。儿媳妇呢就跟着从卧室啊走出来就往桌旁一坐。…

2026/10/10 7:37:41 阅读更多 →
求职招聘大厂Java面试实录:JDK17、Redis分布式锁、Kafka投递削峰、Seata分布式事务、Spring AI+RAG智能匹配,谢飞机三轮被虐哭(附完整答案解析)

求职招聘大厂Java面试实录:JDK17、Redis分布式锁、Kafka投递削峰、Seata分布式事务、Spring AI+RAG智能匹配,谢飞机三轮被虐哭(附完整答案解析)

求职招聘大厂Java面试实录:JDK17、Redis分布式锁、Kafka投递削峰、Seata分布式事务、Spring AIRAG智能匹配,谢飞机三轮被虐哭(附完整答案解析) 面试公司背景 伯乐直聘——国内头部求职招聘平台,注册求职者2亿、企业用户…

2026/10/9 5:31:41 阅读更多 →

最新新闻

Django+LLM+遗传算法:打造AI驱动的旅游路线规划与推荐系统

Django+LLM+遗传算法:打造AI驱动的旅游路线规划与推荐系统

每年毕业设计的选题库里,“旅游网站”几乎是大热门,但说实话,十个里面至少有八个做成了标准的增删改查演示——用户注册登录、景点列表、后台维护,顶多再加一个关键字搜索。答辩的时候老师问一句“技术亮点在哪里”,很…

2026/10/13 23:01:16 阅读更多 →
PyBullet物理仿真入门:刚体模型创建、URDF加载与多体组装实战指南

PyBullet物理仿真入门:刚体模型创建、URDF加载与多体组装实战指南

1. 从零理解 pybullet 的模型体系pybullet 这个物理仿真库,刚上手的人最容易卡在“怎么把东西放进场景里”这一步。官方文档给了一堆 API,但真正落到项目里,你会发现创建模型这件事远比想象中要讲究。我最初接触 pybullet 的时候,…

2026/10/13 23:01:16 阅读更多 →
BERT预训练模型句向量与词向量提取:从[CLS]到池化的避坑指南

BERT预训练模型句向量与词向量提取:从[CLS]到池化的避坑指南

简介:面向自然语言处理初学者与开发者,这份压缩包提供一套基于BERT预训练模型生成句向量与词向量的轻量实践脚本,解决从模型加载到向量抽取的关键流程。BERT采用Transformer双向编码结构,能充分捕捉词语的上下文语义,这…

2026/10/13 23:01:16 阅读更多 →
Qt编译MySQL驱动完整指南:解决QMYSQL driver not loaded

Qt编译MySQL驱动完整指南:解决QMYSQL driver not loaded

如果你在 Qt 里写过QSqlDatabase::addDatabase("QMYSQL"),大概率见过这行让人头疼的输出:QSqlDatabase: QMYSQL driver not loaded。即便把官方 SDK 完整装了一遍,插件目录里也只有 qsqlite、qsqlodbc 那几个 dll,唯独没…

2026/10/13 23:01:16 阅读更多 →
AnyPS5项目解析:PS5手柄协议与Linux HID驱动适配

AnyPS5项目解析:PS5手柄协议与Linux HID驱动适配

我无法基于当前输入内容生成符合要求的博文。原因如下:输入中仅提供了项目标题"AnyPS5",但未提供任何实质性的【项目正文】、【关键词】或【摘要描述】;所谓“相关热搜词”和“最新网络热词”字段为空,无实际文本&#…

2026/10/13 23:01:15 阅读更多 →
Oracle 实战速查:表空间、索引与 PL/SQL 避坑指南

Oracle 实战速查:表空间、索引与 PL/SQL 避坑指南

简介:这份PDF面向Oracle数据库初学者与需要系统梳理基础知识的开发、运维人员,围绕表管理、SQL查询、事务、索引、权限角色、表空间与数据字典、PL/SQL编程等核心主题展开,帮助读者从建库建表到编写过程、函数、触发器逐步建立完整知识框架。…

2026/10/13 23:00:15 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →