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

DeepSeek Harness实战:用Agent与Skill构建任务式AI执行系统

  • 首页
  • 资讯中心
  • /
  • DeepSeek Harness实战:用Agent与Skill构建任务式AI执行系统

相关资讯

Chatbox 客户端使用教程:5 步从安装到跑通第一个本地模型 2026/9/1 11:30:57
Frigate本地NVR快速上手:Docker部署实时对象检测的完整指南 2026/9/1 11:30:57
让 100 篇 PDF 排队自动翻译:用 PDFMathTranslate 搭一个批量翻译 API 的实战笔记 2026/9/1 11:30:57

最新资讯

ContentExamples —— Niagara_Particles
nodeJs笔记
Cookie Session
爬虫先探测再抓取:Python站点可爬性预检与采集策略设计
基于SpringBoot的在线招标系统的设计与实现(毕设源码+文档)
ECCV 2026上海AI实验室100+岗位发布,开发者如何备战AI科研与工程岗?

今日推荐

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

本周热门

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

本月精选

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

DeepSeek Harness实战:用Agent与Skill构建任务式AI执行系统

发布时间:2026/9/1 11:35:58
DeepSeek Harness实战:用Agent与Skill构建任务式AI执行系统 1. 这篇文章真正要解决的问题如果你最近在关注 AI 编程、开源 Agent 项目大概率会高频撞见几个词Harness、Agent、Skill、DeepAgent。有人把 DeepSeek Harness 这类项目称为“AI 编程的新工作台”也有人直接把它和 Codex、Claude Code 放在一起比较。但真正让开发者困惑的问题往往不是“它是什么”而是它和直接用 DeepSeek 网页/API 聊天有什么区别我为什么要在一个“框架”里跑模型Skill 到底是一个脚本、一个提示词还是一个完整插件从 0 到 1 跑通一套“模型 工具 自定义能力”的最小系统到底要几步这篇文章不是来复述概念的而是想给出一个清晰判断DeepSeek Harness 这类项目真正改变的是 AI 应用从“对话式交互”走向“任务式执行”的工程方式。模型仍然是大模型但模型不再是你一问一答的聊天对象而是被放进一个可编排、可插拔、可观测的执行框架里。你在阅读时只需要带着一个目标先用最小的成本把一套 Harness Agent Skill 的链路跑通再判断它是否适合你的项目。读完之后你应该能回答下面几个问题DeepSeek Harness 解决的核心工程痛点是什么“一切皆插件”到底指哪些东西可以被插件化如何配置 DeepSeek 模型接入如何编写一个自己的 Skill如何把一个任务编排成一个 DeepAgent 流程实际部署时有哪些安全边界和易错点。如果你是正在做 AI 应用开发、想用 DeepSeek 搭建私有工作流、或者单纯想在本地体验 Agent 编程的开发者这篇文章会比较适合你。文章中的示例以“通用约定”为主具体项目命令请以你拉取的开源仓库 README 为准。2. DeepSeek Harness 核心概念Harness、Agent 与 Skill2.1 为什么需要 Harness先从一个最常见的问题说起。你直接用 DeepSeek API 写一个代码审查助手最简单的写法是from openai import OpenAI client OpenAI( api_keysk-xxx, base_urlhttps://api.deepseek.com ) resp client.chat.completions.create( modeldeepseek-chat, messages[ {role: user, content: 请审查一下这段代码...} ] ) print(resp.choices[0].message.content)这样能跑但它有两个明显问题它只能做“一次性问答”。如果审查过程需要先读取仓库文件、再运行测试、再根据测试结果补一份报告你靠一段 prompt 是写不出来的。它没有工具执行能力。模型只能“说”不能真正执行git diff、读取文件、调用命令。这就是 Harness 出现的原因。Harness 在这个语境下可以理解为一个“Agent 运行框架”或“工作台”。它负责充当模型和真实系统之间的“中间控制层”主要做这几件事管理模型连接统一配置 DeepSeek、OpenAI 或其他兼容 API 的 endpoint、key、模型名。管理上下文把系统提示词、工具返回结果、历史对话组织成模型需要的形式。管理工具注册让模型可以请求调用外部命令、脚本、API。管理 Skill 加载按任务需要加载不同的能力包。管理执行流程把“拆解任务 - 调用工具 - 拿到结果 - 再生成下一步”的循环串起来。提供可观测性记录每次模型调用、工具调用和中间结果。所以当你听到“Harness”时不要把它理解成一个单纯的聊天客户端更准确的类比是它像一个操作系统模型是 CPU工具是外部设备Skill 是可安装的应用程序而 Harness 负责调度和隔离。2.2 Agent 与 DeepAgentAgent 在 AI 领域已经被用得很泛但这里给出一个技术判断Agent 不是一个模型而是一个“循环”。一个典型的 Agent 循环是接收任务调用大模型生成下一步动作如果动作需要工具就执行工具把工具结果反馈给模型模型根据反馈决定是继续执行还是结束任务。DeepAgent 可以理解为运行在 DeepSeek Harness 之上的、带特定角色目标和 Skill 集合的 Agent 实例。比如“代码审查 Agent”“运维值班 Agent”“日报生成 Agent”。它和基础 Agent 的区别不在技术上而在于它被组织成了可复用的“岗位”。2.3 Skill 与 Plugin最容易混淆的一组概念Skill 是社区讨论里最容易被误解的词。有人把它当成一个 prompt 模板有人把它当成一个 Python 脚本有人直接把它等同于“插件”。准确一点说Tool 是原子能力。比如“读取文件”“执行命令”“调用 HTTP API”。Skill 是基于 Tool 和 Prompt 组合出来的“任务能力包”。它通常描述“在什么场景下、用什么样的步骤、调用哪些工具完成什么目标”。Plugin 是一个更宽泛的软件扩展形态可能包含多个 Skill、多个 Tool、UI 组件等。用生活类比说明Tool 是一个个零件Skill 是一份“装配说明 零件包”Plugin 是“装好之后可以直接使用的家用电器”。在 DeepSeek Harness 这类开源项目里“一切皆插件”的意思是模型、工具、知识库、后处理逻辑、甚至 Agent 的行为模式都尽量以插件形式存在。你想换模型不需要改业务代码你想加一个“公司内部知识库检索”的能力不需要动主流程只需要新增一个 Skill。3. 环境准备与前置条件在开始之前先确认本地环境。虽然不是每个 Harness 项目都要求完全一致的环境但下面的前置条件基本是通用的。3.1 系统与运行时操作系统Linux、macOS、WindowsWSL2均可。Python建议 3.10 及以上。大多数 Agent 开源项目会使用较新的 Python 特性。Node.js如果你的 Harness 实现基于 TypeScript则需要 Node 18 或更高版本即使核心是 Python也可能需要 Node 来支撑前端界面。Git用于拉取开源仓库。API Key你需要一个 DeepSeek 开放平台的 API Key用于调用模型。版本提示具体版本号请以你拉取的项目 README 为准。本文重点演示通用思路而不是绑定某个特定版本。3.2 推荐的项目目录结构一个典型的 Harness 项目即使由不同仓库实现目录也会比较接近deepseek-harness/ ├── config/ │ └── harness.yaml ├── skills/ │ ├── code_review/ │ │ ├── SKILL.md │ │ └── run.py │ └── daily_report/ │ ├── SKILL.md │ └── run.py ├── agents/ │ └── deep_agent.yaml ├── scripts/ │ └── run_harness.sh ├── logs/ │ └── .gitkeep └── requirements.txt如果仓库目录结构和这里不一样不要强行改读 README 比凭感觉猜重要得多。3.3 密钥管理不要把你的 API Key 写进配置文件也不要把 Key 提交到 Git。推荐做法export DEEPSEEK_API_KEYsk-你的密钥后续所有配置都从环境变量读取。这样即使配置文件被误传也不会直接泄露密钥。4. 安装与基础配置接入 DeepSeek 模型4.1 获取项目如果项目提供 PyPI 包你可以直接安装pip install deepseek-harness如果项目只提供源码则使用 Git 拉取后在本地安装依赖git clone https://github.com/your-project/deepseek-harness.git cd deepseek-harness pip install -r requirements.txt注意这里的包名和仓库地址是示例请以你实际找到的开源仓库为准。不要在一个不确定的仓库里盲目执行安装脚本先看 README确认项目是否活跃、是否已有已知问题再运行。4.2 最小配置文件下面是一个最小化的 harness 配置示例。它的作用是告诉 Harness 使用哪个模型、有没有默认超时、日志放在哪里# 文件路径config/harness.yaml model: provider: deepseek model_name: deepseek-chat api_base: https://api.deepseek.com api_key_env: DEEPSEEK_API_KEY temperature: 0.2 agent: default_name: main_agent max_turns: 20 timeout_seconds: 120 skill: dir: ./skills auto_load: true log: level: info file: ./logs/harness.log各字段含义api_baseDeepSeek API 地址。不同版本的 SDK 可能要求写https://api.deepseek.com/v1请以官方文档为准。api_key_env表示 API Key 从环境变量DEEPSEEK_API_KEY中读取避免硬编码。max_turns限制 Agent 最多循环多少轮防止模型陷入死循环。skill.dirSkill 目录所在位置Harness 启动时会扫描该目录。auto_load是否自动加载目录下所有 Skill。4.3 验证模型连通性配置完成之后不要急着跑整个 Harness。先用一个小脚本确认 DeepSeek API 能通、Key 能过、模型名正确# 文件路径scripts/check_connection.py import os from openai import OpenAI client OpenAI( api_keyos.environ[DEEPSEEK_API_KEY], base_urlhttps://api.deepseek.com ) resp client.chat.completions.create( modeldeepseek-chat, messages[ {role: user, content: 请只回复连接成功} ], max_tokens10 ) print(resp.choices[0].message.content)运行export DEEPSEEK_API_KEYsk-你的密钥 python scripts/check_connection.py如果输出连接成功说明模型接入没问题。如果报错优先检查Key 是否有效base_url是否正确网络环境是否能访问api.deepseek.com。5. 编写第一个 Skill从 manifest 到执行脚本现在进入本文最重要的动手环节写一个自己的 Skill。5.1 Skill 的标准结构社区里比较常见的 Skill 目录约定包含三类内容描述文件如SKILL.md说明这个 Skill 适用场景、输入输出、行为边界。执行脚本如run.py真正干活的代码。依赖清单可选如果这个 Skill 需要额外的 Python 包可以单独放一个requirements.txt。下面我们做一个“代码风格检查” Skill。它做的事情很简单读取一个文本文件统计行数、检测尾随空格、检测超过 120 字符的长行然后输出一份格式化报告。5.2 编写 SKILL.md--- name: code_style_check description: 检查代码文件的风格问题包括行数、尾随空格和长行。 version: 0.1.0 inputs: - file_path: 待检查的文件路径 outputs: - stdout: 文本格式的检查报告 --- # Code Style Check 当用户需要检查某个代码文件的风格时使用本 Skill。 执行步骤 1. 读取 file_path 指向的文件。 2. 统计总行数。 3. 查找尾随空格位置。 4. 查找超过 120 字符的长行。 5. 输出 markdown 格式的报告。 注意事项 - 本 Skill 只读文件不修改文件。 - 如果文件不存在返回错误信息。这个SKILL.md既是给 Harness 做自动路由用的“能力说明书”也是给模型参考的“操作手册”。很多 Agent 框架会把SKILL.md的内容注入到系统提示词里让模型知道“什么时候该调用它”。5.3 编写执行脚本# 文件路径skills/code_style_check/run.py import argparse import os import sys def main(): parser argparse.ArgumentParser(descriptionSimple code style checker) parser.add_argument(file_path, helpPath of the file to check) args parser.parse_args() if not os.path.exists(args.file_path): print(fERROR: file not found: {args.file_path}) sys.exit(1) with open(args.file_path, r, encodingutf-8) as f: lines f.readlines() total len(lines) trailing_spaces [] long_lines [] for idx, line in enumerate(lines, start1): if line.rstrip(\n).endswith( ) or line.rstrip(\n).endswith(\t): trailing_spaces.append(idx) if len(line.rstrip(\n)) 120: long_lines.append(idx) report_lines [] report_lines.append(f## 代码风格检查报告) report_lines.append(f- 文件: {args.file_path}) report_lines.append(f- 总行数: {total}) report_lines.append(f- 尾随空格行: {len(trailing_spaces)}) if trailing_spaces: report_lines.append(f - 行号: {, .join(map(str, trailing_spaces))}) report_lines.append(f- 超过120字符的行: {len(long_lines)}) if long_lines: report_lines.append(f - 行号: {, .join(map(str, long_lines))}) print(\n.join(report_lines)) if __name__ __main__: main()这个脚本本身很简单解析参数 - 读取文件 - 检查三类问题 - 输出报告。它不依赖任何第三方库也不需要联网。这其实是 Skill 设计的一个重要经验每一个 Skill 的边界要尽量小输入输出要尽量明确。你的 Skill 越独立越容易被 Agent 复用。5.4 注册 Skill 并手动测试如果 Harness 配置了skill.dir和auto_load: true那么把code_style_check目录放进skills/后就会被自动加载。你也可以先不经过 Harness直接手动运行脚本验证逻辑python skills/code_style_check/run.py skills/code_style_check/SKILL.md预期输出类似## 代码风格检查报告 - 文件: skills/code_style_check/SKILL.md - 总行数: 18 - 尾随空格行: 0 - 超过120字符的行: 0这一步很关键先保证 Skill 自身能跑通再把它交给 Agent。如果 Skill 脚本本身有 bug模型怎么编排都是错的。6. DeepAgent 编排让多个 Skill 协同工作单个 Skill 只能完成单一动作实际项目里更需要“组合拳”。比如读取一份 Python 文件执行代码风格检查用 DeepSeek 模型对检查结果做汇总点评输出一份 Markdown 评审报告。这时候就需要 DeepAgent 编排。6.1 定义 Agent 配置文件# 文件路径agents/code_reviewer_agent.yaml name: code_reviewer_agent description: 代码评审助手负责检查代码风格并生成评审报告。 model: provider: deepseek model_name: deepseek-chat skills: - code_style_check max_turns: 10 output: dir: ./output这里的配置表达的是这个 Agent 的职责是“代码评审”它会加载code_style_check这个 Skill模型使用 DeepSeek最多执行 10 轮输出目录是./output。6.2 用 Python 调用 DeepAgent假设 Harness 提供 Python SDK 或者可以直接命令行调用下面是一个通用的调用思路# 文件路径scripts/run_code_review.py import os from pathlib import Path # 这里的 harness 是 DeepSeek Harness 暴露的入口对象具体导入方式请参考项目文档 from harness import Harness harness Harness.from_config(config/harness.yaml) agent harness.load_agent(agents/code_reviewer_agent.yaml) result agent.run( task请检查 src/demo.py 的代码风格并基于检查结果生成一段简短的优化建议。, context{ file_path: src/demo.py } ) print(result.to_markdown())这里不推荐死记硬背导入路径因为不同开源项目的 API 入口差异很大。关键是理解这个过程先启动 Harness再加载配置好的 Agent然后把任务和上下文传给它。6.3 Agent 背后的执行逻辑当上面的代码运行时Harness 内部大概率会执行这样的循环将 Agent 的系统提示词、Skill 的SKILL.md、用户任务组装成上下文让模型决定下一步动作如果模型决定调用code_style_checkHarness 就在本地执行对应脚本并把 stdout 返回给模型模型基于执行结果生成最终建议整个循环在max_turns内结束输出最终报告。这就是“任务式执行”和“一问一答”的本质区别。前者的画像是你把一个目标交给 Agent它自己拆步骤、调工具、看结果、给结论。后者的画像是你替模型拆步骤把每一步的结果手动粘给它。7. 运行结果与效果验证7.1 运行命令假设项目提供命令行入口一种典型运行方式是export DEEPSEEK_API_KEYsk-你的密钥 python scripts/run_code_review.py7.2 预期输出如果一切正常你应该能在控制台看到类似的结果## 代码评审报告 ### 基础信息 - 文件: src/demo.py - 总行数: 156 - 尾随空格行: 3 - 超过120字符的行: 2 ### 优化建议 1. 第 23、45、88 行存在尾随空格建议统一使用编辑器自带的 trim trailing whitespace 功能清理。 2. 第 101、102 行超过 120 字符建议拆分表达式提升可读性。 ...同时在./output目录下会生成对应的 Markdown 文件。7.3 如何判断成功判断成功的标准不是“有没有报错”而是三个问题Skill 是否真的被执行了你可以在日志里看到类似calling skill: code_style_check的记录。模型是否把 Skill 的输出正确纳入回答如果模型只是说“我检查不了代码”说明上下文注入或工具路由有问题。最终报告是否符合预期边界如果模型开始编造不存在的行号说明上下文组装有问题需要检查模型拿到的工具返回内容。7.4 失败时先看哪里如果运行失败别急着改代码。按下面顺序排查看配置是否加载成功配置路径、Key 是否读取到。看模型调用是否成功把check_connection.py单独跑一次。看 Skill 脚本是否可执行手动运行一次run.py。看日志logs/harness.log中是否有异常堆栈。看上下文长度如果任务复杂模型可能因为上下文过长而截断。8. 常见问题与排查方法下面按实际开发中容易遇到的问题做一张排查表。问题现象可能原因排查方式解决方案启动时报 API Key 缺失环境变量没有设置或配置读错了变量名检查os.environ和配置项api_key_env在 shell 中设置export DEEPSEEK_API_KEYsk-xxx202 错误或 401 错误API Key 无效、过期或权限不足查看 HTTP 状态码和响应体单独跑连通脚本到 DeepSeek 开放平台重新生成 Key404 错误base_url或模型名不对检查官方文档确认 endpoint 和 model 名称改用正确的api_base和model_nameSkill 没有生效skill.dir配置错误或目录名与配置文件不一致查看启动日志中加载了哪些 Skill修正目录路径确认SKILL.md在正确位置Agent 循环次数过多任务边界不清模型不停调用工具查看执行 trace观察每一步动作明确任务描述降低max_turns收敛工具返回内容模型没有使用 Skill 输出工具返回被裁剪或上下文组装错误查看模型实际收到的 messages检查上下文长度限制精简工具返回内容脚本输出乱码编码问题检查文件编码和终端编码在脚本中统一使用encodingutf-8生产环境内存/CPU 过高并发 Agent 过多或脚本逻辑有死循环查看进程监控和日志限制并发数为 Skill 脚本增加超时每条排查路径的原则是先隔离变量再缩小范围。配置问题、模型问题、Skill 问题、编排问题要分开测试。9. 最佳实践与工程建议9.1 安全边界与权限控制DeepAgent 执行 Skill 时本质是在本地或服务器上执行代码。如果 Skill 可以运行任意命令那它就是最高权限入口。因此要做到最小权限原则Agent 运行账号不要使用 rootSkill 脚本尽量只开放它需要的文件路径。沙箱隔离如果条件允许把 Skill 执行放到容器或独立进程中限制网络和文件访问。敏感信息不入库日志、配置、输出报告中不要打印 API Key、数据库密码。人工确认环节对于删除文件、修改配置、发送消息这类高风险操作Harness 层应该设置确认机制。9.2 Skill 编写规范一个 Skill 只做一件事。功能越聚焦越容易被其他 Agent 复用。输入输出要结构化。尽量使用 JSON 或简单的文本格式不要用难以解析的自由文本。必须有清晰的错误返回。脚本失败时要返回非零退出码并在 stdout 中说明原因。不要依赖当前工作目录。显式使用绝对路径或基于 Skill 目录的路径。如果 Skill 需要第三方依赖单独维护requirements.txt不要污染全局环境。9.3 配置与版本管理所有配置进入 Git 仓库但包含密钥的配置用.env.example模板占位、真实 Key 走环境变量。模型名、Skill 列表、Agent 角色定义都建议版本化方便回溯。升级 Harness 版本前先在独立分支跑一遍冒烟测试。记录每次模型调用的 token 消耗。虽然本文不讨论具体费用但任务式 Agent 的 token 消耗会远高于单次问答必须要做成本观测。9.4 从实验到生产先本地跑通一个最小链路别一开始就上多 Skill 编排。给 Agent 增加max_turns上限避免失控的循环。在测试环境用固定的任务集做回归确认模型升级或 Harness 升级不会改变关键行为。引入可观测性工具把每次 Agent 执行的 trace 落盘。排障时 trace 比任何口头描述都管用。10. 总结与后续学习方向写到这里可以对 DeepSeek Harness 这类“一切皆插件”的 Agent 工作台做一个收敛判断它的价值不在于“又一个 Chatbot 壳”而在于它把大模型从“回答问题的人”变成了“可以分配任务、可以调用工具、可以复用人能力的执行单元”。Harness 解决的是工程化问题Skill 解决的是复用问题DeepAgent 解决的是编排问题。如果你从零开始实践建议按这条路线走先跑通 DeepSeek API 连接再写好一个独立的 Skill 并手动验证然后配置一个 Agent让它调用这个 Skill最后增加多个 Skill编排完整任务流每一步都确认日志、输出、错误处理符合预期之后再考虑部署到服务器或接入 CI。接下来值得深入的方向包括Skill 的自动路由与语义匹配、Agent 执行 trace 的可视化、多 Agent 协作、以及 Skill 市场的协议标准。这些方向不需要等到某个大厂发布新框架才开始学你现在就可以从给 DeepSeek Harness 扩展自己的第一个 Skill 开始。建议把本文收藏备用动手搭建时按章节回查。如果你已经跑通了第一个 Skill下一步可以试着让 Agent 同时处理“代码检查 测试执行 总结报告”的组合任务那才是 Harness 真正发力的场景。

关于恒美微站

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

快速链接

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

服务项目

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

联系方式

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

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