文章目录
-
- 前言
- [1 先把环境搭起来](#1 先把环境搭起来)
-
- [1.1 启动真的是傻瓜式](#1.1 启动真的是傻瓜式)
- [1.2 我顺便接了本地模型](#1.2 我顺便接了本地模型)
- [2 插件开发其实没啥技术门槛](#2 插件开发其实没啥技术门槛)
-
- [2.1 核心逻辑一句话说清](#2.1 核心逻辑一句话说清)
- [2.2 细节设计还挺贴心](#2.2 细节设计还挺贴心)
- [3 骚操作来了:让AI自己写插件](#3 骚操作来了:让AI自己写插件)
-
- [3.1 我就扔了两份文档](#3.1 我就扔了两份文档)
- [3.2 它自己把活全包了](#3.2 它自己把活全包了)
- [4 踩了个哭笑不得的坑](#4 踩了个哭笑不得的坑)
-
- [4.1 抄命令差点把我绕进去](#4.1 抄命令差点把我绕进去)
- [4.2 改一行命令就搞定](#4.2 改一行命令就搞定)
- [5 实测:插件是真的能用](#5 实测:插件是真的能用)
-
- [5.1 基础搜索丝滑得很](#5.1 基础搜索丝滑得很)
- [5.2 复杂分析也不在话下](#5.2 复杂分析也不在话下)
- [6 最后扯两句](#6 最后扯两句)

P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看, 传送门https://blog.csdn.net/qq_34419312
前言
最近泡在DeepSeek Harness里,越玩越觉得这东西有点东西。
官方天天吹"一切皆插件",模型是插件,工具是插件,连运行模式都是一堆插件凑出来的。
我就不服气了,说的这么玄乎,我自己写个插件能不能行?
说干就干,整个arXiv论文搜索插件试试水,顺便看看这套"万物皆可插"的架构,是真灵活还是玩概念。
1 先把环境搭起来
1.1 启动真的是傻瓜式
别一听搭环境就头疼,这玩意儿简单到离谱。
不用你拉源码、装依赖、跑构建,一行命令完事。
打开终端敲npx @deepseek-ai/dsh web,回车。
第一次会问你要不要装依赖,输个y,等着就行。
等个几十秒,终端蹦出来个本地地址,复制到浏览器一打开,工作台直接就出来了。
流畅程度堪比你打开个在线网页,我都没反应过来就装完了。
1.2 我顺便接了本地模型
赶巧最近DeepSeek API价格在调整,我寻思干脆省点钱,接本地模型试试。
选的是Qwen3.8-27B-FP8,部署完直接往里一填就能用。
就是跑起来的时候,我那笔记本风扇转得跟要起飞似的,嗡嗡的。
也正好验验货,看看接了本地模型,这Harness的干活能力打不打折。
2 插件开发其实没啥技术门槛
2.1 核心逻辑一句话说清
我本来做好了啃半天文档的准备,结果翻完教程人都傻了。
就这?
一个最基础的插件,本质就是个TypeScript文件。
导出个名字,再写个apply函数,完事。
框架加载插件的时候,会把上下文对象ctx传给你,你想加啥能力,工具、事件、定时器,全通过ctx注册进去。
要是依赖别的模块,比如大模型能力、工具系统,用inject声明一下,框架会等人家准备好了再加载你的插件。
说穿了就跟插U盘似的,接口标准都给你定好了,插进去就能用。
2.2 细节设计还挺贴心
插件有三种写法:函数式、对象式、类形式。
咱们普通人写个小工具,用函数式就够了,代码少,好维护。
要是以后想搞复杂点,给别的插件提供服务,再用类形式就行。
还有个我觉得很赞的点:你注册的那些事件、工具、定时器,插件卸载的时候,框架会自动帮你清理干净。
不用你自己写一堆销毁逻辑,省老鼻子事了。
真要是有网络连接这种特殊资源,用ctx.effect()自己写个清理逻辑也很方便。
3 骚操作来了:让AI自己写插件
3.1 我就扔了两份文档
原理搞懂了,我没急着动手敲代码。
既然这是个AI Agent框架,那能不能让AI自己给自己开发插件?
说试就试。
我准备了两份资料:一份官方的插件开发教程,一份arXiv的API接口说明。
然后给Harness里的DeepSeek-V4-Flash发了句话:帮我做一个arxiv-search插件。
真就一句话,提示词我都没怎么打磨,主打一个简单粗暴。
3.2 它自己把活全包了
接下来的操作,给我看呆了。
AI先把两份文档仔仔细细读了一遍,还自己翻了框架源码里的工具定义文件,怕写出来的格式不对。
然后反手列了个8项任务清单,从搭项目结构、写XML解析器、封装API客户端、注册工具,到安装依赖、类型检查、接口冒烟测试,安排得明明白白。
然后就一条一条往下做,我坐在屏幕前面跟个监工似的,啥也不用干。
没多大功夫,插件写完了。
一共做了俩工具:一个用来搜索论文,支持各种查询语法;一个用来按编号查论文详情,一次最多拉10篇。
参数校验、结果格式化、超时取消、甚至连前端展示的卡片样式都给你做好了。
写完还不算,它自己跑了一遍冒烟测试,确认能正常请求arXiv,插件能正常加载,全通过了才交差。
我本来还准备熬半宿写代码,结果泡了杯茶,刷了会儿手机,活干完了。
现在AI都卷到自己给自己开发工具了?我感觉我离失业又近了一步。
4 踩了个哭笑不得的坑
4.1 抄命令差点把我绕进去
插件写好了,该加载到Harness里试试效果了。
我照着官方教程敲命令:pnpm dsh web --patch 配置文件路径。
回车直接红一大片,报错说找不到dsh命令。
我当时心里咯噔一下,完了,哪里写错了?
翻来覆去查配置、查代码,折腾了十几分钟。
突然一拍大腿。
官方教程是默认你从源码启动的,项目里装了全套依赖,当然有pnpm的dsh命令。
我是用npx直接跑的Harness,我这插件项目里根本没装dsh包,用pnpm调用能找到才怪。
纯纯的拿着钥匙找钥匙,自己把自己绕晕了。
4.2 改一行命令就搞定
解决办法也简单,既然之前用npx跑的,加载插件也继续用npx就行。
把命令换成npx -y @deepseek-ai/dsh web --patch 你的插件配置绝对路径。
注意路径一定要写绝对路径,不然可能加载不出来。
重启一下服务,再打开设置里的插件列表,arxiv-search好好地躺在那儿,状态已启用、已挂载。
妥了。
5 实测:插件是真的能用
5.1 基础搜索丝滑得很
先整个简单的热热身。
我输入:用arxiv_search搜索"retrieval augmented generation",返回5篇,列标题、作者和摘要。
发出去没两秒,就看到Harness自动调用了arxiv_search工具。
很快结果就出来了,99万多条结果,取了前5篇,标题、作者、摘要、链接列得清清楚楚。
这一步最关键的,不是它能搜到论文。
是模型真的能理解需求,自己判断该调用这个工具,而不是我手动点按钮触发。
这才是插件的真正意义:给Agent装上了新的能力,它自己知道什么时候用。
5.2 复杂分析也不在话下
光搜东西没意思,加点难度。
我让它搜4篇最新的RAG论文,对比摘要,用中文总结这个方向的研究热点。
中间还有个小插曲,第一次按日期排序搜出来的结果不怎么相关,AI自己发现了问题,改用精确短语查询重新搜了一遍。
然后就是读摘要、做对比、归纳总结,一套流程全自动。
最后给我输出了个对比表格,还总结了四点研究趋势,从幻觉治理讲到多智能体流水线,分析得有模有样。
从搜索到分析,全程我就说了一句话,剩下的全是它自己干的。
这体验,说实话有点颠覆。
6 最后扯两句
整套流程跑下来,我算是真切感受到了"一切皆插件"是什么意思。
以前听"插件化Agent",总觉得是互联网人造的新名词,包装架构用的。
真自己动手做一个才明白,这玩意儿的灵活性是真的高。
今天你能接arXiv查论文,明天就能接GitHub查代码,接企业知识库查资料,接内部系统走流程。
缺啥能力,插个插件就行,不用动核心框架。
但最有意思的还不是这个。
是这个插件,从设计到写代码到测试,基本全是AI自己完成的。我就给了文档和一句需求。
Agent用插件干活不稀奇,Agent能给自己造插件,这事儿的想象空间就大了。
现在这个插件还很初级,就是个基础搜索功能。
后面我准备再折腾几个复杂点的,看看这Harness的上限到底在哪儿。
毕竟才0.1版本,好玩的东西,应该还多着呢。
P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,传送门https://blog.csdn.net/qq_34419312