从 Skill 到 Agent 专家团:AI 工作流的工程化进阶
本文是《WorkBuddy AI 工作流实战》系列第 3 篇也是进阶篇。前两篇解决了两个问题如何理解 Agent、Skill、Tool以及如何编写第一个SKILL.md。这一篇继续向前一步把单文件 Skill 升级为包含脚本、配置、参考资料和质量检查的工程化工作流并讨论跨工具分发、MCP 接入与多 Agent 协作。一、什么时候需要把 Skill 工程化第 2 篇创建的doc-to-tasks只有一个SKILL.md。对于“读取内容 → 整理摘要 → 输出待办”这类任务单文件已经足够。但有些任务不只是生成文字。例如读取当前分支的代码改动根据团队规范生成 PR 描述和变更日志并在交付前检查格式是否合格。这项任务需要调用 Git 获取真实改动读取团队 PR 规范根据配置决定输出目录和语言生成 PR 描述与变更日志运行程序检查输出校验失败时修正并重新检查。此时仅靠SKILL.md描述步骤仍然可以工作但执行逻辑会越来越长也难以单独测试。更稳妥的做法是把确定性的操作下沉到脚本把规则和资料拆到独立文件。可以采用下面这套推荐结构pr-generator/ ├── SKILL.md ├── config.json ├── scripts/ │ ├── collect_diff.py │ └── verify_output.py └── references/ ├── pr-template.md └── team-conventions.md组件负责什么是否必需SKILL.md触发场景、执行步骤、工具选择和完成标准核心文件config.json输出目录、语言、模板路径等可调整参数按需添加scripts/获取数据、转换格式、校验结果等确定性操作按需添加references/团队规范、模板和领域资料按需添加这不是所有平台强制规定的“四件套”而是一种便于维护的工程结构。核心原则是需要推理的事情交给 Agent需要稳定重复的事情交给脚本需要长期维护的规则放进配置和参考资料。二、实战案例从代码改动生成 PR 描述下面用pr-generator串起完整流程。1. 先定义完成标准在写脚本之前先明确最终产物fix: 修复支付回调重复处理 ## 变更点 - 增加支付回调幂等检查 - 补充重复通知测试 ## 验证 - [x] 单元测试通过 - [x] 本地回调测试通过 ## 风险 - 需要观察旧订单数据的兼容情况这个例子的质量要求是首行必须包含允许的类型标签必须包含“变更点”和“验证”章节变更点不能是空内容或“待补充”输出必须来源于真实改动不能虚构测试结果。2. 在SKILL.md中编排流程--- name: pr-generator description: 根据当前 Git 代码改动生成结构化 PR 描述和变更日志。当用户要求总结分支改动、编写 PR 描述或生成 changelog 时使用。 --- # PR 描述生成器 ## 工作流 1. 确认当前目录是 Git 仓库并检查工作区状态。 2. 使用 scripts/collect_diff.py 获取待描述的代码改动。 3. 阅读 references/team-conventions.md 和 PR 模板。 4. 按“标题、变更点、验证、风险”结构生成 PR 描述。 5. 只记录能够从代码、测试结果或用户输入中确认的信息。 6. 将结果保存到配置指定的位置。 7. 使用 scripts/verify_output.py 校验输出。 8. 校验失败时根据错误修正并重新执行校验。 ## 约束 - 不执行提交、推送或创建 PR除非用户明确要求。 - 不把密钥、令牌、个人信息或无关 diff 写入结果。 - 未实际运行的测试必须标记为“未运行”。 - 无法确认的风险应标记为“待确认”。这里有两个重要设计生成与发布分离生成 PR 文案不等于提交代码或创建远程 PR外部操作应单独确认。事实与推断分离测试是否通过、风险是否存在都需要证据没有证据就明确标记未知。3. 用脚本实现质量门禁下面是精简但可以运行的verify_output.pyfrompathlibimportPathimportreimportsys ALLOWED_TYPESfeat|fix|docs|refactor|test|build|choreREQUIRED_SECTIONS(变更点,验证)PLACEHOLDERS(待补充,TODO,TBD)defsection_body(text:str,heading:str)-str:patternrf^##\s{re.escape(heading)}\s*$\n(.*?)(?^##\s|\Z)matchre.search(pattern,text,flagsre.MULTILINE|re.DOTALL)returnmatch.group(1).strip()ifmatchelsedefvalidate(text:str)-list[str]:errors[]first_linetext.splitlines()[0].strip()iftext.splitlines()elseifnotre.match(rf^({ALLOWED_TYPES})(\(.?\))?:\s\S,first_line):errors.append(标题必须以允许的类型标签开头例如 fix: 修复登录异常)forheadinginREQUIRED_SECTIONS:bodysection_body(text,heading)ifnotbody:errors.append(f缺少内容完整的“{heading}”章节)elifany(marker.lower()inbody.lower()formarkerinPLACEHOLDERS):errors.append(f“{heading}”章节仍包含占位内容)returnerrorsdefmain()-int:iflen(sys.argv)!2:print(用法: python verify_output.py pr-description.md)return2pathPath(sys.argv[1])ifnotpath.is_file():print(f文件不存在:{path})return2errorsvalidate(path.read_text(encodingutf-8))iferrors:forerrorinerrors:print(fERROR:{error})return1print(校验通过)return0if__name____main__:raiseSystemExit(main())运行方式python scripts/verify_output.py output/pr-description.md质量门禁的意义不是让脚本判断文案“写得好不好”而是让它检查那些能够明确判断的条件文件是否存在、章节是否完整、格式是否符合规范、占位符是否清除。4. 为脚本本身添加测试既然校验脚本承担“门禁”职责它本身也需要被验证。至少覆盖三类用例测试用例预期结果合法标题且章节完整返回成功缺少“验证”章节返回失败并指出缺失章节“变更点”仍含TODO返回失败并指出占位内容这一步经常被忽略。没有测试的门禁脚本也可能把错误内容放过去。三、参数怎么管理明确优先级当同一个 Skill 被不同项目复用时输出目录、语言和模板可能不同。可以将默认值放入config.json{output_dir:docs/pr,language:zh-CN,template:references/pr-template.md}建议采用清晰的覆盖顺序用户本次明确要求 命令行参数 项目配置 内置默认值例如默认输出到docs/pr但用户本次明确要求写入/tmp/pr.md就只覆盖本次输出位置不修改项目配置。配置设计还要注意路径应相对于 Skill 或项目根目录解析不要依赖某台电脑的绝对路径对配置值进行类型和范围校验不要把令牌、密码等敏感信息写进可提交的配置文件缺少可选配置时应有明确默认行为。四、跨平台不只是准备.sh和.ps1原稿把跨平台简化为“同时提供 Shell 和 PowerShell 入口”但真正的兼容性还包括路径、编码、依赖和命令差异。更实用的策略是核心逻辑优先使用跨平台语言例如 Python 或 Node.js。平台脚本只做薄封装.sh和.ps1负责定位运行时并传递参数。使用标准路径 API避免手工拼接/或\。固定文本编码读写文件时显式使用 UTF-8。启动时检查依赖缺少 Git、Python 或必要包时给出可执行的错误信息。在目标系统上测试文件看起来兼容不代表实际运行兼容。如果团队环境统一只支持一种平台反而更简单。跨平台是一项真实需求不是工程成熟度的装饰。五、一份源如何分发给多个 AI 工具不同 AI 工具对 Skill 的目录、文件格式和发现机制可能不同不能假设把同一个目录软链接过去就一定可用。更稳妥的方案是维护一个“规范源目录”再通过安装脚本适配各目标平台workflow-library/ ├── skills/ # 唯一维护源 │ └── pr-generator/ ├── adapters/ # 各工具的格式或目录适配 ├── install.py # 安装、更新、检查 └── manifest.json # 版本与目标清单安装脚本可以按环境选择两种策略策略优点注意事项软链接源文件更新后立即反映到目标目录Windows 权限、容器和部分同步工具可能不支持复制安装兼容性更好目标目录相互隔离更新时需要重新执行安装并防止版本漂移推荐流程是读取 manifest → 识别目标工具 → 转换格式或目录 → 安装到目标位置 → 校验文件 → 输出安装报告不要在文章或脚本里硬编码某个工具的目录后就宣称“全平台通用”。目标路径和格式应以对应工具当前版本的官方说明为准并在安装前检查。六、MCP 在工作流中负责什么MCPModel Context Protocol模型上下文协议用于让兼容的 AI 客户端连接外部工具和数据源例如代码托管平台、数据库、浏览器或内部服务。需要分清三层职责Skill描述什么时候调用、按什么顺序调用 Tool / MCP Server提供具体操作能力 Agent结合目标和返回结果进行决策例如PR 工作流可以这样扩展读取本地 git diff → 通过代码托管 MCP 查询关联 Issue → 生成 PR 描述 → 本地脚本执行格式校验 → 用户确认后再调用远程工具创建 PR这里有三个边界MCP 服务需要先在客户端正确配置写一个 Skill 不会自动获得外部权限能调用工具不代表应该调用写操作仍要遵循授权和确认规则外部返回值不一定可信Agent 仍需验证错误、空结果和权限失败。因此MCP 不是“联网开关”而是标准化工具接入的一种方式。七、什么时候该创建 AgentSkill 适合沉淀一类任务的方法Agent 适合承担持续决策、需要明确职责边界的角色。需求更适合 Skill更适合 Agent固定步骤整理文档是否按模板生成 PR 描述是可选审查一组跨模块改动并持续追踪问题可提供审查 Skill是协调测试、审查和发布多个环节可作为能力模块是不要仅仅为了拥有“人格”就创建 Agent。一个 Agent 至少应该明确它负责解决什么问题在什么条件下介入可以使用哪些 Skill 和 Tool哪些操作必须确认输出采用什么结构何时停止并交付。下面是一个精简的代码审查 Agent 示例。具体 frontmatter 字段和存放目录应以当前客户端支持的格式为准--- name: code-reviewer description: 审查代码或 PR 中的正确性、安全性、性能和可维护性问题。当用户明确要求代码审查或合并前检查时使用。 --- # 代码审查 Agent ## 职责 识别会导致错误、行为回归、安全问题或维护成本上升的具体问题。 ## 工作流 1. 理解改动目标和影响范围。 2. 阅读 diff 及必要的关联代码不只检查单个片段。 3. 运行与风险相匹配的测试或静态检查。 4. 按严重程度排列发现阻断、重要、建议。 5. 每条发现提供文件位置、触发条件、影响和修改建议。 6. 没有发现问题时明确说明并列出尚未验证的风险。 ## 约束 - 只报告能够用代码或执行结果支持的问题。 - 不把个人风格偏好描述成缺陷。 - 未经要求不修改代码、不提交、不推送。 - 不编造不存在的文件、API 或测试结果。 ## 输出格式 先列发现按严重程度排序然后列开放问题和验证情况最后给出简短总结。与原稿中“10 年经验”“不留情面”等人格描述相比职责、证据标准和停止条件更能决定 Agent 是否可靠。八、如何组建多 Agent 专家团多 Agent 的价值不是“角色越多越强”而是把不同目标、工具权限或上下文边界分开。以发布流程为例可以设置三个角色代码审查 Agent ─┐ 测试 Agent ─────┼→ 汇总结果 → 人工确认 → 发布 Agent 文档 Agent ─────┘Agent主要输入主要产出不负责什么代码审查diff、关联代码、规范按严重程度排列的问题不发布代码测试改动范围、测试配置测试结果和失败证据不替测试失败找借口文档功能变化、用户影响更新说明和迁移提示不臆造功能行为发布已确认的版本与检查结果发布操作及结果记录未确认时不发布多 Agent 协作应补齐四个机制输入输出契约上一个 Agent 交付什么下一个 Agent 才能开始。单一责任边界避免两个 Agent 同时修改同一文件或重复做同一判断。失败处理测试失败、工具不可用或信息不足时如何停止和报告。人工确认点提交、推送、发布和外部通知等操作应明确确认。如果任务只需一个 Agent 加几个 Skill 就能完成不要为了“专家团”增加调度成本。九、数量与 token不要用简单结论代替测量Agent 和 Skill 对上下文的影响取决于具体客户端实现有的只暴露名称和描述命中后才加载正文有的会预加载更多元数据子 Agent 是否使用独立上下文也因产品和配置而异。因此不能笼统地说“安装 100 个 Agent 几乎不耗 token”。更可靠的优化方向是缩短重复、空泛的角色描述避免多个 Skill 的description大面积重叠简单任务不要无意义地派发子 Agent控制循环次数和工具返回的数据量对长日志和大文件先筛选再送入模型使用客户端提供的上下文或用量信息进行实测。关注“实际加载了什么、调用了几次、每次返回多少内容”比只统计 Agent 数量更有意义。十、从能运行到可维护一份检查清单工程化工作流交付前可以按下面的清单检查功能正常输入可以得到预期结果缺少输入时会询问或明确失败不相关请求不会误触发质量输出格式有明确标准校验失败会阻止交付校验脚本自身有测试安全不记录或输出敏感信息写文件、提交、推送和发布的边界明确外部操作有必要的授权与确认可移植性路径没有绑定某台电脑编码和依赖要求明确已在目标系统实际运行维护配置、脚本和规范职责清晰有版本或更新策略失败信息能够指导排查这份清单比“文件数量够不够”更能判断一个工作流是否接近生产可用。总结从单文件 Skill 走向工程化可以沿着下面这条路线推进单文件 Skill → 引入脚本与质量门禁 → 拆分配置和参考资料 → 适配不同工具与平台 → 接入 MCP 外部能力 → 按职责引入 Agent 协作 → 持续测试和迭代记住四个结论工程化不是凑齐固定文件而是分离推理、执行、配置和规范。生成之后必须校验能够自动判断的条件应交给程序。跨工具分发需要适配层软链接只是安装策略之一。多 Agent 的核心是职责和契约不是角色数量和人格包装。系列收官《WorkBuddy AI 工作流实战》三篇完成了从概念到工程实践的闭环第 1 篇理解 Agent、Skill、Tool 和 Agent Loop第 2 篇写出并验证第一个SKILL.md第 3 篇加入脚本、质量门禁、跨工具分发、MCP 和 Agent 协作。下一步不必一次搭建庞大的系统。选择一个经常重复、步骤明确、结果可检查的任务从单文件 Skill 开始只有当真实需求出现再逐步加入脚本、配置和 Agent。先让流程可用再让结果可验最后让系统可维护。

相关新闻

NVIDIA GPU计算生态:从CUDA到DeepStream实战指南

NVIDIA GPU计算生态:从CUDA到DeepStream实战指南

1. NVIDIA软件生态全景解析NVIDIA构建的GPU计算生态已经形成从底层驱动到上层应用的完整技术栈。作为从业十年的AI工程师,我亲历了CUDA从7.0到12.x的演进过程,这套生态的核心组件包括:CUDA Toolkit:提供GPU通用计算的基础架构cuDN…

2026/7/17 0:35:04阅读更多 →
卡梅德生物技术快报|fab合成文库:Fab 合成文库搭建全流程优化与筛选性能量化分析

卡梅德生物技术快报|fab合成文库:Fab 合成文库搭建全流程优化与筛选性能量化分析

正文一、行业实验痛点:传统抗体库体系存在多重限制性问题在蛋白互作、靶向结合试剂开发的常规实验流程中,抗体片段筛选是核心前置环节。现阶段实验室主流采用免疫杂交瘤、天然 B 细胞抗体库两类技术路线,但长期实操中暴露出无法适配现代高通量…

2026/7/17 0:35:04阅读更多 →
HarmonyOS 应用开发《掌上英语》第17篇:声明式 UI 构建范式——ArkTS 的 @Builder 装饰器深入

HarmonyOS 应用开发《掌上英语》第17篇:声明式 UI 构建范式——ArkTS 的 @Builder 装饰器深入

声明式 UI 构建范式——ArkTS 的 Builder 装饰器深入引言 在 HarmonyOS 的 ArkTS 声明式 UI 框架中,Builder 装饰器是一个极其重要的构建工具。它允许开发者将 UI 片段封装为可复用的构建函数,从而避免在 build() 方法中编写臃肿的嵌套代码。本文将通过我…

2026/7/17 0:35:03阅读更多 →
MATLAB版AES-256加密工具包:含ECB模式、PKCS#7填充与全轮函数实现

MATLAB版AES-256加密工具包:含ECB模式、PKCS#7填充与全轮函数实现

本文还有配套的精品资源,点击获取 简介:一套开箱即用的MATLAB AES-256加密解决方案,专为兼容MATLAB 2012b及以上版本设计。完整实现AES-256标准核心运算:字节替换(SubBytes/InvSubBytes)、行移位&#x…

2026/7/17 1:45:09阅读更多 →
基于LM358和IRF540N的过流保护电路设计与实现

基于LM358和IRF540N的过流保护电路设计与实现

1. 过流保护电路的基本原理与设计需求过流保护电路是电子系统中不可或缺的安全机制,它的核心功能是监测负载电流并在超过预设阈值时迅速切断电源连接。这种保护机制对于防止设备损坏、避免火灾风险以及延长电子元件寿命都至关重要。在直流电源系统中,过流…

2026/7/17 1:45:09阅读更多 →
农业AI落地实践:从技术突破到田间应用

农业AI落地实践:从技术突破到田间应用

1. 人工智能走向田野的现状与挑战站在华北平原的麦田边,看着金黄的麦浪翻滚,我不禁思考:那些在实验室里叱咤风云的AI算法,何时才能真正融入这片土地?作为一名在农业科技领域摸爬滚打多年的从业者,我见证了A…

2026/7/17 1:45:09阅读更多 →
CRT-Royale-ReShade:终极CRT复古滤镜完整指南

CRT-Royale-ReShade:终极CRT复古滤镜完整指南

CRT-Royale-ReShade:终极CRT复古滤镜完整指南 【免费下载链接】crt-royale-reshade A port of crt-royale from libretro to ReShade 项目地址: https://gitcode.com/gh_mirrors/cr/crt-royale-reshade 你是否怀念老式CRT显示器那种温暖的视觉质感&#xff1…

2026/7/17 1:45:09阅读更多 →
HPM6750EVKMINI评估板转接板设计与实战技巧

HPM6750EVKMINI评估板转接板设计与实战技巧

1. 先楫半导体HPM6750EVKMINI评估板转接板设计背景HPM6750EVKMINI是先楫半导体推出的一款高性能微控制器评估板,搭载了HPM6750系列MCU。这款芯片采用双核RISC-V架构,主频可达816MHz,内置2MB Flash和1MB SRAM,支持多种外设接口。评…

2026/7/17 1:45:09阅读更多 →
从“系统纯净“到“应用自由“:Windows 11 LTSC用户的微软商店回归之旅

从“系统纯净“到“应用自由“:Windows 11 LTSC用户的微软商店回归之旅

从"系统纯净"到"应用自由":Windows 11 LTSC用户的微软商店回归之旅 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你…

2026/7/17 1:40:08阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/16 8:28:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/16 6:53:04阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/16 12:02:41阅读更多 →
VS Code 高效配置与个性化定制全攻略

VS Code 高效配置与个性化定制全攻略

1. VS Code 高效配置基础作为一款轻量级但功能强大的代码编辑器,VS Code 的默认配置已经能满足基本需求,但通过合理调整设置可以大幅提升编码效率。我使用 VS Code 已经有五年多时间,期间尝试过各种配置方案,总结出这套适合大多数…

2026/7/17 0:00:01阅读更多 →
从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

在异常检测领域,很多优秀算法最初都是以研究代码的形式发布的。它们能够在固定测试集上复现实验结果,却不一定能被普通用户直接拿来测试自己的图片。尤其是最近很多算法仅提供在固定测试集的测试环境,而gradio的demo演示也不会提供。 对工程应用和在自己的图片上进行测试来…

2026/7/17 0:00:01阅读更多 →
WinRAR高效配置指南:从基础安装到高级压缩实战

WinRAR高效配置指南:从基础安装到高级压缩实战

前几天帮同事处理一个客户发来的压缩包,解压时系统自带的工具弹出一串乱码,换用 WinRAR 却顺利打开了。这种看似简单的场景,恰恰暴露了不同压缩工具在处理非标准编码、分卷压缩或加密文件时的差异。WinRAR 作为一款老牌工具,真正价…

2026/7/17 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/16 20:13:14阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/16 8:58:42阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/16 17:10:26阅读更多 →