
30 分钟点亮 DeepSeek Harness从安装到加载你的第一个智能体插件【免费下载链接】deepseek-harnessDeepSeek Harness: Everything is a Plugin.项目地址: https://gitcode.com/gh_mirrors/de/deepseek-harnessDeepSeek Harnessdsh是 DeepSeek 开源的智能体框架模型接入、工具、会话、界面全部以插件形式拼装。跟着本文走完你会在本地跑起它的 Web 界面并把一个自己写的插件挂进框架——装完、跑通、出作品三步都在半小时之内。装好环境4 条命令把界面拉起来先说清楚为什么要动源码后面要做的事是把自写插件塞进框架这只有从源码启动才方便。开始之前确认三样东西Node.js 22.19 或更高、用 corepack 启用的 pnpm仓库锁在 11.28.5、Git。git clone https://gitcode.com/gh_mirrors/de/deepseek-harness cd deepseek-harness corepack enable pnpm install前两条把源码拿到本地后两条锁定包管理器版本并装齐依赖。仓库体积不小pnpm install会跑一阵子耐心等。pnpm run build pnpm dsh web第一条准备可运行的构建产物不能跳过第二条直接启动 Web 界面。终端打印出http://127.0.0.1:3080并自动拉起浏览器、看到主界面就算点亮了。端口被占追加--port 8080换个端口。不想自动开浏览器追加--no-open然后手动访问终端打印的地址。跑通之后花 30 秒看懂它怎么装东西界面只是壳子真正值得理解的是它的组装方式。把它想象成一台模块化咖啡机磨豆、萃取、出水各是一个插槽上的模块想换萃取方式就拔下来换一个不需要拆开机器看电路。dsh里模型接入、工具调用、会话管理、界面元素都是这样的插件模块每个插件声明自己依赖什么服务框架就按依赖关系把它们逐个装好加载顺序由依赖决定而不是你写文件的先后。想加能力就加一个插件想换实现就换一个插槽接口保持不变。接上模型填一把密钥或登记自定义网关给智能体上大脑只需要两分钟。打开设置 → 模型在 DeepSeek 卡片里填入 API 密钥并保存。模型变更在下一次请求时生效不用重启服务器密钥是只写的保存后界面只会看到脱敏信息。如果你用的是 OpenAI 兼容的第三方网关选自定义模型 API只需四个字段Provider ID小写、唯一且永久请求和凭据引用都靠它区分显示名称界面里展示的名字API 地址网关的 base URLAPI 协议按网关实际协议选OpenAI Chat 网关就选openai-completions提示发消息时若看到MISSING_CREDENTIAL说明密钥没存上回模型页重新保存一遍即可。写第一个作品一个会心跳的插件现在做点自己的东西一个加载时会问候、之后每 5 秒汇报一次存活的插件用来验证整条插件链路。mkdir -p my-first-plugin/src创建my-first-plugin/src/heartbeat.tsimport type { Context } from deepseek-ai/cordis export const name heartbeat export function apply(ctx: Context) { console.log([heartbeat] 插件已挂载链路打通。) ctx.effect(() { const timer setInterval(() console.log([heartbeat] 存活中……), 5000) return () { clearInterval(timer) console.log([heartbeat] 已卸载定时器清理完毕。) } }) }插件本体就一个apply函数框架加载它时会传入ctxctx.effect里的清理函数会在插件卸载时自动执行不用你手动clearInterval。再创建my-first-plugin/cordis.yml把它登记给框架name必须是绝对路径先用pwd查出仓库位置再替换- insert: - id: heartbeat name: /仓库绝对路径/deepseek-harness/my-first-plugin/src/heartbeat.ts最后带上这份覆盖层启动pnpm dsh web --patch ./my-first-plugin/cordis.yml--patch把你的配置叠加在默认配置之上不改动框架本身。怎么判断做对了启动时终端打印[heartbeat] 插件已挂载链路打通。之后每隔 5 秒多一行存活日志CtrlC 停服务时出现已卸载字样且没有残留进程全链路合格。提示如果启动日志里什么都没有多半是cordis.yml里的路径不是绝对路径或拼错了——模块解析失败会被 logger 报告但不会让进程崩掉。换个写法对象、类和 Mock 模型函数形式不是唯一写法另外两种按需认识即可对象形式用export default把name、inject、apply收进一个对象结构更集中适合一开始就要声明依赖的场景类形式继承Service适合插件本身要向别的插件提供长期服务时三种写法流程一致声明依赖 → 框架等依赖就绪 → 执行apply。另外没有 API 密钥也能先练手仓库自带 Mock 模型服务器在根目录跑pnpm mock:llm就能启动可以拿它验证链路而不消耗真实额度。接下来往哪走给插件声明inject: [tools]用ctx.tools.register注册一个能被模型调用的自定义工具弄清cordis.patch.yml各配置层如何叠加、哪些能改走一遍发布流程把插件打包分享给别人一手资料第一个插件教程、开发一个工具、自定义模型提供方配置。从装好环境、接上模型到把自己的插件挂进框架看到心跳日志——完整回路你已经走通一次了。剩下的事就是继续往上加模块 【免费下载链接】deepseek-harnessDeepSeek Harness: Everything is a Plugin.项目地址: https://gitcode.com/gh_mirrors/de/deepseek-harness创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考