恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

DeepSeek Harness插件开发指南:从零构建AI智能体技能

  • 首页
  • 资讯中心
  • /
  • DeepSeek Harness插件开发指南:从零构建AI智能体技能

相关资讯

AI Coding跨上下文窗口拆分:解决大型代码库的Agent上下文管理 2026/9/1 4:30:10
人形机器人灵巧手技术解析:从驱动控制到触觉感知 2026/9/1 4:30:10
华为AI岗秋招实录:机试到HR面完整复盘与避坑指南 2026/9/1 4:30:10

最新资讯

算法面试高频考点解析:KMP、粒子群、Redis与分布式锁实战
STM32F030驱动WS2812B灯带:PWM+DMA方案与避坑指南
Starship终端提示符:从安装到深度定制,打造高效开发环境
软件包安装中断致设备变砖?保数据修复全流程解析
小白程序员进阶大模型开发:收藏这份从入门到精通的学习路线
从嘴搓清唱到女团嗓AI翻唱:完整制作流程拆解

今日推荐

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

本周热门

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析
数字电路时序基石:深入理解建立时间与保持时间
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

DeepSeek Harness插件开发指南:从零构建AI智能体技能

发布时间:2026/9/1 4:30:10
DeepSeek Harness插件开发指南:从零构建AI智能体技能 如果你正在寻找一个能让 AI 大模型真正融入你日常开发工作流而不仅仅是聊天窗口的工具那么 DeepSeek Harness 和它的插件生态就是你接下来需要关注的重点。过去我们使用 AI 辅助编程往往是在 IDE 和聊天窗口之间反复横跳复制代码、粘贴问题、等待回答、再复制回来。这个过程是割裂的、低效的。DeepSeek Harness 的出现试图从根本上改变这一局面。它不再是一个单纯的聊天机器人而是一个AI 智能体Agent的集成开发与运行平台。你可以把它理解为一个“AI 应用的操作系统”而插件就是运行在这个系统上的一个个“App”。那么开发一个 DeepSeek Harness 插件到底意味着什么它绝不仅仅是写一个简单的脚本。这意味着你将一个特定的、可重复的 AI 能力例如代码审查、SQL 生成、API 测试、文档生成封装成一个标准化的、可交互的“技能Skill”并让它无缝接入到 Harness 的核心工作流中。用户可以通过自然语言直接调用你的插件AI 会根据上下文自动判断何时该使用它整个过程流畅且智能。本文的目的就是为你拆解这个看似前沿的概念将其落地为一套清晰的、可执行的开发指南。我们将从一个最简单的“Hello World”插件开始逐步深入到插件架构、技能Skill开发、前后端交互、以及发布到插件市场的完整流程。无论你是想为自己的团队定制开发工具还是希望将你的 AI 想法产品化这篇文章都将为你提供从零到一的实战路径。1. 理解 DeepSeek Harness 插件它解决了什么核心问题在深入代码之前我们必须先厘清一个关键问题为什么需要插件传统的 AI 工具集成模式存在几个明显的痛点上下文割裂AI 不知道你项目的完整结构、依赖关系、配置文件导致回答往往需要大量手动补充信息。操作不连贯AI 给出了建议或代码执行、测试、验证仍需开发者手动完成形成“建议-操作”断点。能力无法沉淀针对特定项目或技术的优秀 Prompt提示词和解决方案难以标准化和复用。DeepSeek Harness 插件体系正是为了解决这些问题而设计。它的核心思想是“Skill as a Function”—— 将每一个 AI 能力封装成一个具有明确定义输入、输出和副作用的“函数”即 Skill。Harness 平台则作为“运行时”负责调度这些函数管理对话状态并处理与用户界面的交互。一个插件的典型生命周期如下用户意图识别用户在聊天界面输入自然语言如“帮我审查一下src/utils/helper.js文件的代码风格”。技能路由Harness 的核心 AI如 DeepSeek-R1理解用户意图并判断需要调用哪个插件中的哪个 Skill。技能执行Harness 加载对应的插件执行特定的 Skill 函数。该函数可以读取文件、调用外部 API、运行命令行工具等。结果呈现Skill 执行的结果文本、代码、图表、甚至交互式组件被返回给 Harness并最终展示给用户。因此开发插件本质上就是定义和实现这些 Skills并告诉 Harness 在什么情况下应该调用它们。2. 核心概念与架构预览在动手之前我们需要熟悉几个核心概念它们构成了 Harness 插件开发的基石。概念说明类比HarnessAI 智能体的集成开发与运行平台。提供插件管理、技能路由、对话管理、前端界面等基础能力。操作系统插件 (Plugin)一个功能模块的集合是分发和安装的基本单位。一个插件可以包含多个相关的 Skills。应用程序 (App)技能 (Skill)插件内可被调用的最小功能单元。每个 Skill 完成一个具体的任务如“代码审查”、“生成 SQL”。应用程序内的一个功能函数清单文件 (Manifest)插件的“身份证”和“说明书”通常是一个plugin.json或manifest.yaml文件。定义了插件元数据、包含哪些 Skills、以及每个 Skill 的描述和配置。App 的Info.plist或AndroidManifest.xml工具 (Tool)Skill 在执行过程中可以调用的外部能力例如“读取文件”、“执行 Shell 命令”、“调用 HTTP API”。Harness 平台会为插件提供一组默认工具。系统 API 或 SDK插件的基本架构一个典型的 Harness 插件项目目录结构如下所示my-awesome-plugin/ ├── plugin.json # 核心插件清单文件 ├── package.json # 可选Node.js 项目描述文件 ├── src/ │ ├── skills/ # 技能实现目录 │ │ ├── codeReview.js # 代码审查技能 │ │ └── generateSQL.js # SQL生成技能 │ └── index.js # 插件主入口文件 ├── frontend/ # 可选插件前端UI组件 │ ├── public/ │ └── src/ └── README.md接下来我们将从零开始构建一个最简单的插件。3. 环境准备与开发工具开发 DeepSeek Harness 插件目前主要基于Node.js生态。你需要准备以下环境Node.js 环境推荐使用 LTS 版本如 v18.x, v20.x。你可以从 Node.js 官网 下载安装。包管理工具npm或yarn或pnpm。本文示例使用npm。代码编辑器VS Code 是绝佳选择对 JavaScript/TypeScript 支持良好。DeepSeek Harness 桌面端或 CLI 工具你需要一个 Harness 运行环境来加载和测试你的插件。请从 DeepSeek Harness 官网下载最新版本的桌面应用程序。可选TypeScript对于大型或团队项目强烈建议使用 TypeScript 以获得更好的类型安全和开发体验。首先验证你的 Node.js 环境# 检查 Node.js 和 npm 版本 node --version npm --version # 输出示例 # v20.11.0 # 10.2.44. 创建你的第一个插件Hello World让我们从一个最简单的插件开始它只包含一个 Skill当用户说“打个招呼”时回复一句个性化的问候。步骤 1创建项目目录并初始化# 创建项目文件夹 mkdir harness-plugin-hello cd harness-plugin-hello # 初始化 npm 项目一路回车使用默认值即可 npm init -y这会生成一个package.json文件。步骤 2创建核心清单文件plugin.json这是插件的灵魂定义了插件的基本信息和技能。// plugin.json { id: com.example.helloplugin, name: Hello World Plugin, version: 1.0.0, author: Your Name, description: 一个简单的示例插件用于演示 Harness 插件开发。, icon: icon.png, // 可选插件图标 skills: [ { id: sayHello, name: 打招呼, description: 向用户问好。, entry: ./src/skills/sayHello.js, // 技能实现文件的路径 examples: [打个招呼, hello, 说你好] // 触发技能的示例语句 } ] }关键字段解释id: 插件的唯一标识符建议使用反向域名格式避免冲突。skills: 数组定义该插件提供的所有技能。entry: 指向实现该技能的 JavaScript 文件。步骤 3实现 Skill 逻辑创建技能实现文件。mkdir -p src/skills// src/skills/sayHello.js /** * 一个简单的打招呼技能 * param {Object} context - Harness 提供的执行上下文 * param {Object} params - 调用技能时传入的参数来自AI解析的用户输入 * returns {Promisestring} - 返回给用户的文本 */ module.exports async function sayHello(context, params) { // context 中包含了丰富的工具例如 // - context.user: 当前用户信息 // - context.conversation: 当前会话信息 // - context.tools: 可用的工具集如文件读写、网络请求等 const userName context.user?.name || 开发者; // 你可以在这里添加更复杂的逻辑例如 // - 读取某个配置文件 // - 调用一个外部天气API // - 分析当前项目结构 return 你好${userName}欢迎使用 DeepSeek Harness 插件系统。今天是 ${new Date().toLocaleDateString()}祝你编码愉快; };步骤 4在 Harness 中加载本地插件进行测试打开 DeepSeek Harness 桌面端应用。找到插件管理界面通常在设置或侧边栏中。选择“加载本地插件”或“开发模式”。指向你刚创建的harness-plugin-hello项目根目录。Harness 会读取plugin.json并注册插件。加载成功后你可以在 Harness 的聊天界面中输入“打个招呼”Harness 的 AI 会识别你的意图并调用sayHello技能你将看到它返回的问候语。5. 开发一个实用的代码审查插件现在我们来开发一个更实用、更复杂的插件自动代码审查。这个插件将展示如何利用 Harness 提供的工具如读取文件和调用外部 AI API例如 DeepSeek 的代码审查模型来完成一个真实任务。步骤 1扩展plugin.json我们在原有插件基础上新增一个codeReview技能。// plugin.json (更新后) { id: com.example.codereviewer, name: 智能代码审查助手, version: 1.0.0, author: Your Name, description: 提供自动化的代码风格、潜在错误和安全漏洞审查。, icon: icon.png, skills: [ { id: sayHello, name: 打招呼, description: 向用户问好。, entry: ./src/skills/sayHello.js, examples: [打个招呼, hello] }, { id: reviewCode, name: 审查代码, description: 对指定文件或代码片段进行审查给出改进建议。, entry: ./src/skills/reviewCode.js, examples: [审查一下src/app.js, 看看这段代码有什么问题, code review for utils.py], parameters: { // 定义技能所需的参数 filePath: { type: string, description: 需要审查的文件的相对路径相对于项目根目录, required: false }, codeSnippet: { type: string, description: 直接提供的代码片段。如果提供了filePath则优先使用文件。, required: false } } } ] }注意新增的parameters字段。它定义了调用此技能时可能需要的信息。Harness 的 AI 会尝试从用户对话中提取这些参数。步骤 2实现代码审查 Skill这个 Skill 需要做几件事获取要审查的代码从文件或参数。构造一个专业的代码审查 Prompt。可选调用 DeepSeek API 进行深度分析。格式化并返回审查结果。// src/skills/reviewCode.js const fs require(fs).promises; const path require(path); /** * 代码审查技能 * param {Object} context - 执行上下文 * param {Object} params - 参数 { filePath?, codeSnippet? } * returns {Promisestring} - 审查报告 */ module.exports async function reviewCode(context, params) { const { filePath, codeSnippet } params; const { tools } context; let codeToReview ; let sourceInfo ; // 1. 获取代码内容 if (filePath) { try { // 使用 Harness 提供的工具安全地读取工作区文件 // 假设 context.tools.workspace.readFile 是可用工具 codeToReview await tools.workspace.readFile(filePath); sourceInfo 文件${filePath}; } catch (error) { return 无法读取文件 ${filePath}${error.message}; } } else if (codeSnippet) { codeToReview codeSnippet; sourceInfo 提供的代码片段; } else { // 如果用户没提供参数可以尝试通过对话上下文获取 // 这里简单返回提示 return 请指定要审查的文件路径例如src/app.js或直接粘贴代码片段。; } // 2. 基础静态检查示例 const basicChecks performBasicChecks(codeToReview); // 3. 构造 LLM 提示词进行深度分析模拟或真实调用 const llmAnalysis await analyzeWithLLM(codeToReview, sourceInfo, context); // 4. 生成最终报告 const report generateReport(sourceInfo, basicChecks, llmAnalysis); return report; }; // 简单的静态检查函数示例 function performBasicChecks(code) { const issues []; const lines code.split(\n); lines.forEach((line, index) { // 检查行长度 if (line.length 120) { issues.push(第 ${index 1} 行代码行过长${line.length} 字符建议保持在 80-120 字符以内。); } // 检查是否有 console.log 遗留在生产代码中简单正则 if (line.includes(console.log() !line.includes(//)) { issues.push(第 ${index 1} 行发现可能的调试语句 \console.log\请确认是否需要移除。); } }); // 检查大括号格式等... return issues; } // 模拟或真实调用 LLM API 进行分析 async function analyzeWithLLM(code, sourceInfo, context) { // 方案A模拟返回用于演示和离线测试 const mockAnalysis 基于 ${sourceInfo} 的深度分析模拟 1. **代码结构**函数职责较为清晰但 handleSubmit 函数体积略大建议拆分为数据验证、API调用、状态更新三个独立函数。 2. **错误处理**缺少对网络请求失败的兜底处理如 try-catch 或 .catch。 3. **安全性**用户输入直接拼接至 SQL 查询字符串第45行存在 SQL 注入风险请使用参数化查询或 ORM 提供的方法。 4. **性能**在循环内部执行 DOM 操作第78行可能导致页面回流重绘建议将操作移至循环外批量处理。 ; // 方案B实际调用 DeepSeek API需要配置 API Key // const { tools } context; // const apiKey await tools.secrets.get(DEEPSEEK_API_KEY); // 从安全存储获取密钥 // if (!apiKey) { // return 未配置 DeepSeek API Key无法进行深度分析。; // } // const prompt 你是一个资深的代码审查专家。请审查以下代码\n\\\\n${code}\n\\\\n请从代码风格、潜在bug、安全性、性能、可维护性等方面给出具体建议。; // // 调用 tools.http.post 或类似工具发起请求 // const response await tools.http.post(https://api.deepseek.com/v1/chat/completions, { // headers: { Authorization: Bearer ${apiKey}, Content-Type: application/json }, // body: JSON.stringify({ model: deepseek-coder, messages: [{ role: user, content: prompt }] }) // }); // const analysis response.choices[0].message.content; return mockAnalysis; // 本次返回模拟结果 } // 生成格式化的报告 function generateReport(sourceInfo, basicIssues, llmAnalysis) { let report ## 代码审查报告 (${sourceInfo})\n\n; report **审查时间**${new Date().toLocaleString()}\n\n; if (basicIssues.length 0) { report ### ⚠️ 基础检查发现 ${basicIssues.length} 个问题\n; basicIssues.forEach(issue report - ${issue}\n); report \n; } else { report ### ✅ 基础检查通过\n\n; } report ### AI 深度分析\n; report llmAnalysis; report \n---\n*报告由智能代码审查插件生成建议人工复核。*; return report; }步骤 3测试代码审查插件在 Harness 中重新加载插件或重启 Harness 开发模式。在聊天框中输入“审查一下src/app.js文件”。Harness AI 会解析你的命令识别出reviewCode技能和filePath参数然后调用该技能。技能函数会尝试读取文件如果文件存在并进行“审查”最终返回一份格式化的 Markdown 报告。6. 为插件添加前端交互界面一个高级插件不仅可以返回文本还可以渲染交互式 UI 组件提供更丰富的用户体验。Harness 插件支持使用现代前端框架如 React、Vue、Svelte来构建 UI。概念Skill 可以返回一个Component而不仅仅是string。步骤 1修改 Skill返回组件描述// src/skills/reviewCodeWithUI.js module.exports async function reviewCodeWithUI(context, params) { // ... 前面的代码逻辑与 reviewCode 类似获取 codeToReview 和 basicIssues ... // 不再返回纯文本字符串而是返回一个描述UI组件的对象 return { type: component, // 声明返回类型为组件 component: CodeReviewReport, // 组件名称需与前端注册的组件名一致 props: { // 传递给组件的属性 sourceInfo, basicIssues, codeContent: codeToReview, timestamp: new Date().toISOString() } }; };步骤 2创建前端项目以 React 为例在插件根目录下创建frontend文件夹并初始化一个简单的 React 应用。cd harness-plugin-hello npx create-react-app frontend --template typescript cd frontend步骤 3创建插件 UI 组件// frontend/src/CodeReviewReport.tsx import React from react; import ./CodeReviewReport.css; interface CodeReviewReportProps { sourceInfo: string; basicIssues: string[]; codeContent: string; timestamp: string; } const CodeReviewReport: React.FCCodeReviewReportProps ({ sourceInfo, basicIssues, codeContent, timestamp, }) { const [expanded, setExpanded] React.useState(false); return ( div classNamecode-review-report h3 交互式代码审查报告/h3 pstrong审查对象/strong{sourceInfo}/p pstrong生成时间/strong{new Date(timestamp).toLocaleString()}/p div classNameissues-section h4⚠️ 发现问题 ({basicIssues.length})/h4 {basicIssues.length 0 ? ( ul {basicIssues.map((issue, idx) ( li key{idx}{issue}/li ))} /ul ) : ( p✅ 未发现基础性问题。/p )} /div button onClick{() setExpanded(!expanded)} {expanded ? 收起 : 查看}被审查的代码 /button {expanded ( pre classNamecode-block code{codeContent}/code /pre )} div classNameactions button onClick{() alert(功能开发中标记为已处理)} 标记为已处理 /button button onClick{() alert(功能开发中导出报告)} 导出报告 /button /div /div ); }; export default CodeReviewReport;步骤 4在插件清单中注册前端组件更新plugin.json指明前端资源的入口。// plugin.json (新增前端配置) { id: com.example.codereviewer, // ... 其他字段不变 ... frontend: { entry: ./frontend/build/static/js/main.js, // 构建产物的入口JS components: { CodeReviewReport: ./frontend/src/CodeReviewReport // 组件映射 } }, skills: [ // ... skills 定义其中 reviewCodeWithUI 返回 component: CodeReviewReport ... ] }步骤 5构建与集成在前端目录运行npm run build生成静态资源。确保plugin.json中的frontend.entry路径指向正确的构建输出文件。在 Harness 中加载插件。当reviewCodeWithUI技能被调用时Harness 会渲染CodeReviewReport组件并将props传递给它。7. 插件调试、日志与问题排查开发过程中调试是必不可少的环节。1. 查看 Harness 开发者工具大多数 Harness 桌面端会提供开发者工具类似 Chrome DevTools你可以在这里看到插件加载日志。Skill 被调用的记录。前端组件的 Console 输出和 Network 请求。2. 在 Skill 中使用console.log在 Skill 的 JavaScript 文件中使用console.log、console.error输出信息通常会在 Harness 的“开发者控制台”或“插件日志”中显示。module.exports async function mySkill(context, params) { console.log(Skill 被调用参数, params); console.log(当前工作区路径, context.workspacePath); // ... 业务逻辑 ... };3. 常见问题排查表问题现象可能原因排查步骤插件加载失败1.plugin.json格式错误或缺少必填字段。2. 入口文件路径错误。3. Node.js 模块依赖缺失。1. 使用 JSON 校验工具检查plugin.json。2. 检查skills[*].entry路径是否正确。3. 在插件目录运行npm install如果有package.json。Skill 未被触发1.examples设置不当AI 无法匹配。2. Skill 的description不够清晰影响 AI 路由。3. 用户输入意图模糊。1. 在plugin.json中为 Skill 添加更多、更具体的示例语句。2. 优化description明确说明技能功能和适用场景。3. 在聊天中尝试更明确的指令如“请使用[插件名]的[技能名]功能来做...”。Skill 执行报错1. Skill 代码中存在语法或运行时错误。2. 访问了未授权的资源如文件、网络。3. 依赖的工具context.tools.xxx不可用。1. 查看 Harness 的错误日志或开发者控制台。2. 在代码中添加 try-catch 块捕获并返回友好错误信息。3. 确认 Harness 版本和工具 API 的兼容性。前端组件不显示1.frontend.entry路径错误。2. 前端资源构建失败或未构建。3. 组件未在frontend.components中正确注册。1. 确认构建产物路径确保 Harness 能访问到main.js。2. 检查前端项目是否有编译错误。3. 确认 Skill 返回的component名称与注册的名称完全一致。8. 插件发布与分享开发完成后你可以将插件分享给他人或发布到插件市场。1. 打包插件通常你需要将插件目录打包成一个.harnessplugin文件可能是一个 zip 压缩包具体格式需参考 Harness 官方文档。确保plugin.json、所有依赖的 JS 文件以及前端构建产物都包含在内。2. 发布到插件市场访问 DeepSeek Harness 的官方插件市场网站。登录你的开发者账户。按照指引上传插件包、填写描述、添加标签、设置图标等。提交审核如果需要。审核通过后其他用户就可以在 Harness 中直接搜索和安装你的插件了。3. 本地文件分享你也可以直接将插件文件夹复制给其他开发者。对方只需在 Harness 中选择“加载本地插件”并指向该文件夹即可。9. 最佳实践与进阶建议为了让你的插件更健壮、更受欢迎请遵循以下最佳实践清晰的命名与描述plugin.json中的name、description以及每个 Skill 的name、description、examples要清晰、具体这直接影响 AI 路由的准确性和用户的发现率。完善的错误处理Skill 内部务必使用 try-catch对文件操作、网络请求等可能失败的操作进行妥善处理并向用户返回友好的错误提示而不是未处理的异常。安全的权限管理如果你的插件需要访问文件系统、网络或敏感信息应在plugin.json中声明所需的权限并在代码中检查context.tools是否提供了相应能力。不要硬编码文件路径或 API 密钥。善用上下文Contextcontext对象提供了丰富的运行时信息用户、会话、工作区、工具等。合理利用这些信息可以使你的插件更智能、更贴合当前场景。性能优化Skill 执行应尽可能快速。避免同步的耗时操作。如果需要处理大文件或复杂计算考虑提供进度提示或异步处理。提供配置项对于需要用户定制的参数如 API 端点、规则文件路径可以通过plugin.json的configSchema定义配置界面让用户在安装后自行配置。编写文档一个清晰的README.md非常重要应包含插件功能、安装方法、使用示例、配置说明和常见问题。测试为你的 Skills 编写单元测试。可以模拟context和params对象来验证核心逻辑。开发 DeepSeek Harness 插件是一个将你的领域知识转化为可复用 AI 能力的绝佳过程。从简单的文本回复到复杂的交互式应用插件的可能性由你的想象力定义。现在你已经掌握了从概念到实现从调试到发布的全流程。接下来就是动手将那些重复、繁琐的开发任务封装成一个个高效的智能体技能的时候了。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号