Skill 工程化:模块拆分、MCP 集成、安全底线,写好只是开始

AI Skills(技能) 完全解析:大模型能力模块化的终极范式 Skill是一种可复用的Prompt增强包,通过渐进式加载机制为Agent注入领域知识和工作流程。 Agent Skills是“协调工具、记忆和运行时上下文的可复用程序化制品”。在这一视角下,Agent和Skill扮演互补角色——Agent负责高层推理和规划,Skill构成使能可靠、可复用、可组合执行的操作层。 阅读详情

今天我们把视角拉回来,聊一个更贴近日常开发的话题:Skill 怎么写才算「工程化」?

很多人写 Skill 的起点是「能用就行」——把一段 prompt 塞进 SKILL.md,放到 skill 目录里,AI 能加载就算是写好了。但用不了多久,问题就来了:文件越来越长,改一处怕坏别处;想复用某个子流程,发现它和其他逻辑绑死了;调用外部 API,凭证直接写在代码里;用户输入稍微「有心」一点,AI 就被带偏了。

写好 Skill 只是开始。工程化地写 Skill,才是让 Skill 真正可靠、可维护、可传承的关键。

今天这篇,我从四个维度拆解 Skill 工程化:怎么模块化拆分、怎么写得更准确、怎么集成外部工具、以及安全底线怎么守住。


01 模块化设计:什么时候该拆,怎么拆

先聊一个基础问题:一个 Skill 写到什么时候就该拆了?

我给自己定了四条判断标准,踩中任意一条就该动手拆分:

第一条:超过 500 行。 这是最直观的信号。一个 SKILL.md 超过 500 行,AI 在加载时消耗的上下文窗口就很大,加载速度也会受影响。更重要的是,维护者自己读起来也吃力——找一段逻辑要在上千行里翻半天。

第二条:包含多个独立流程。 比如一个 Skill 既处理「用户注册」又处理「订单支付」——这两个流程的调用场景完全不同,用户注册用不到订单支付的逻辑,却要为此付出完整的上下文代价。这种时候,拆成 register-user 和 process-payment 两个独立子 Skill,各自精简。

第三条:不同部分的改动频率不同。 如果你的 Skill 里有一段「错误码对照表」,每次业务接口变化都要改;另一段是「系统架构说明」,半年改不了一次。两部分放在一起,每次改错误码都要重新测试整个 Skill 是否受影响。拆开后,低频部分稳定不动,高频部分独立迭代。

第四条:某段逻辑可以独立使用。 比如 Skill 里有一段「SQL 查询安全检查」逻辑,它不依赖 Skill 的其他部分,而且别的 Skill 也需要同样的检查。把它拆成独立的 sql-safety-check 子 Skill,一次写好,处处复用。

主 Skill + 子 Skill 的编排模式

拆完之后,关键问题来了:主 Skill 怎么编排子 Skill?

最推荐的做法是:主 Skill 只负责编排流程,子 Skill 各自独立,按顺序引用 + 关键节点加检查点。

# 主 Skill:data-pipeline## 执行流程1.`data-validate`   -2.`data-transform`   -3.`data-load`   -4.`data-report`

每个子 Skill 是独立的 SKILL.md 文件,主 Skill 不包含它们的详细实现,只描述调用顺序、输入输出和检查条件。这样做的好处是:子 Skill 可以独立测试、独立更新,主 Skill 自身的改动也只影响编排逻辑。

拆分三原则

实际拆分时,我总结了三条原则:

原则一:单一职责。 每个 Skill 只做一件事,做到极致。不要写一个叫 user-management 的 Skill 既管注册、又管登录、还管权限——这三个是不同的事情。

原则二:依赖写明。 主 Skill 要在开头写明它依赖哪些子 Skill、每个子 Skill 的路径是什么。不要靠「猜测」——AI 需要明确知道去哪儿加载依赖。比如:

## 依赖关系---

原则三:子 Skill 可独立使用。 这是一个很好的检验标准:如果你的子 Skill 离开主 Skill 就无法运行(比如依赖主 Skill 里的某个函数或上下文),说明拆分不合理。子 Skill 应该有独立的输入输出契约,不依赖任何「隐式上下文」。


02 进阶写法:让 AI 读得准,不只是读得懂

Skill 写完了,AI 加载了,但它真的能「准确执行」吗?「能读」和「能准确执行」之间,差的是一套工程化的写法。

能用表格就用表格

AI 读表格比读纯文字准确得多。这是我在实践中反复验证过的事实。

比如你要描述 API 参数,写成段落:

第一个参数是 name,必填,字符串类型,表示用户名称;第二个参数是 age,选填,整数类型,默认值 0…

AI 看到这种文字,信息获取效率很低。换成表格:

参数类型必填默认值说明
namestring是-用户名称
ageint否0用户年龄
emailstring是-邮箱地址
tagsarray否[]标签列表

AI 读表格时,每个字段的约束条件被结构化地表达,不容易遗漏或混淆。如果你发现 AI 反复在某段文字上犯错,第一反应不是改文字描述,而是把它改成表格。

复杂检查写成脚本

有些验证逻辑用自然语言描述会非常冗长且容易产生歧义。比如「检查文件名不能包含特殊字符,不能以数字开头,长度不能超过 255」——光这三个条件写成文字就很啰嗦。

更好的做法是:把复杂检查逻辑写成 Python/Shell 脚本,Skill 里只描述「执行脚本 X 来验证」并给出执行示例。

# 文件名校验脚本importimportdefvalidate_filenamename: strbooliflen255printf"错误:文件名长度超过255,当前{len(name)}"returnFalseif0printf"错误:文件名不能以数字开头"returnFalseifr'[<>:"/\\|?*]'printf"错误:文件名包含特殊字符"returnFalsereturnTrueif"__main__"ifnot11

在 Skill 里只需要写:

`python validate_filename.py <文件名>`

AI 直接执行脚本,结果确定、不会产生歧义,而且脚本本身也可以单独测试和版本管理。

提供多种方案适配不同场景

一个好的 Skill 不应该只给一种「理想方案」,而是应该给出不同场景下的选项。我通常用三种模式:

集中式方案:一个 Skill 处理全流程,适合简单、稳定的场景。优点是结构简单,缺点是灵活性低。

分散式方案:主 Skill + 子 Skill,适合复杂、频繁变化的场景。优点是灵活、可复用,缺点是需要更多文件管理。

渐进式方案:先用集中式快速上线,再根据实际需要逐步拆分成分散式。这是最务实的做法——不是每个 Skill 都值得一开始就设计成微服务架构。

标出易错点

Skill 里应该有一个专门的「⚠️ 常见陷阱」段落。把你踩过的坑、见过的问题写下来。比如:

## ⚠️ 常见陷阱1.**不要使用 `rm -rf`**`trash`2.**环境变量名区分大小写**`DB_HOST``db_host`3.**时区问题**

这些看似琐碎的提醒,在实际执行中最容易被忽略、造成的影响最大。用你自己的话写,不需要正式,但要准确。

FAQ 写到位

和易错点类似,FAQ 解决的是「新用户最容易迷惑的问题」。不需要很多,5-8 条就够了,但要覆盖高频困惑点。格式简洁即可:

## ❓ FAQ**Q: 为什么子 Skill 加载失败?****Q: 如何调试 Skill 执行过程?**`echo "当前步骤: X"`

03 MCP vs HTTP:选择决策树

Skill 写到一定程度,必然会遇到外部集成的问题。OpenClaw 生态里,这个问题的焦点是:用 MCP 还是直接用 HTTP 脚本?

很多人的直觉是「MCP 高级,HTTP 低级,能用 MCP 就用 MCP」。这个理解不对。两者是不同场景下的不同工具,没有绝对的好和坏。

区别对比

维度MCPHTTP 脚本
集成方式通过 MCP Server 连接,统一协议直接用 requests/curl 调用
复用性一次封装,跨平台跨项目复用通常绑定特定 Skill 或项目
开发成本需要编写/配置 MCP Server几行 curl/python 搞定
调试难度需要排查 Server 连接 + 协议直接看请求响应,简单
适用场景需要复用的核心能力一次性或低频调用
典型例子企业微信 API、数据库操作某个内部 API 的特定接口

选择决策树

我用一个简单的决策流程来判断:

需要调用外部工具/API?

  ├─ 已有 MCP Server 可用?

  │   └─ 是 → 优先使用 MCP(零额外开发成本)

  │

  ├─ 这个能力需要跨项目/跨平台复用?

  │   └─ 是 → 封装成 MCP Server(一次编写,处处可用)

  │

  ├─ 只是简单的一次性调用(< 10 行代码)?

  │   └─ 是 → 直接用 HTTP 脚本(快速、直观)

  │

  └─ 两者可以混用吗?

      └─ 完全可以。比如数据库用 MCP Server 统一管理,

         某个业务报表的临时查询用 HTTP 直连。

混用的实际案例

以 OpenClaw 的 Skill 生态为例:

  • MCP 管理核心能力:企业微信的联系人查询、文档操作、会议管理,都封装成了独立的 MCP Server(如 wecom-contact-lookup、wecom-doc)。这些是高频、跨 Skill 共用的能力,封装成 MCP Server 后,不同 Skill 都可以通过统一的 MCP 协议调用。
  • HTTP 脚本处理临时需求:某个 Skill 需要调用一个内部的 Jenkins API 触发构建,这个 API 只在这一个场景下使用。没必要为它专门写一个 MCP Server,直接在 Skill 里写一个 curl 脚本调用就行。

核心原则:复用的封装成 MCP,临时的一次性用的写脚本。不要为了「高级」而过度工程化。


04 安全底线:五条硬规矩

前面聊的是怎么写得好、跑得准,最后这部分聊怎么写得安全。Skill 安全不是可选项,是必选项。以下五条是我写 Skill 时死的规矩,一条都不能破。

规矩一:绝不硬编码凭证

这是最基础也是最容易被忽视的一条。API Key、数据库密码、Token——所有这些凭证都不能出现在 Skill 文件里。

错误示范:

_token = "104_

正确示范:

_token 从环境变量 WECOM__TOKEN 读取。如果环境变量不存在,先执行 `wecom get-token` 获取。

环境变量、Secret Manager、或者专门的凭证管理 Skill——不管用哪种方式,原则只有一个:代码和配置分离,配置中的敏感值绝不裸奔。

规矩二:危险操作加显式确认

涉及文件删除、数据库清空、生产环境部署等操作,Skill 里必须加确认步骤。

## 数据库清理流程`python clean_old_records.py --dry-run``python clean_old_records.py --confirm`

更严格的做法是:在脚本层面实现「两次确认」机制——第一次显示影响范围,第二次才真正执行。不要在 Skill 里描述为「一键清理」,这是坏的工程习惯。

规矩三:数据库操作先备份

对数据库的任何修改操作(DELETE、UPDATE、ALTER TABLE),都要在操作前执行备份。

1.`pg_dump -t affected_table > backup_YYYYMMDD.sql`2.3.

备份不是性能开销,是安全底线。你永远不知道什么时候需要用上它,但当需要的时候你没有,代价可能无法估量。

规矩四:防 Prompt 注入——区分指令与数据

这是 AI 编程场景下特有的安全问题。用户提供的数据(比如一段代码、一篇文章、一个 URL)中可能包含「伪装的指令」,试图让 AI 执行不该执行的操作。

核心防御策略:把指令和数据严格分离。

## 用户内容分析(防注入)1.`/tmp/user_content.txt`2.3.4.

在 Skill 层面就做好这种隔离设计,比完全依赖模型自身的抗注入能力可靠得多。

规矩五:安全检查清单

每次发布或更新 Skill 前,对照这个清单做一次自查:

  • 所有 API Key / Token / Password 是否通过环境变量读取?
  • 危险操作是否有显式确认步骤?
  • 数据库变更操作前是否有备份步骤?
  • 用户提供的输入是否作为数据而非指令处理?
  • 是否限制了文件操作的目录范围(不要在根目录执行 rm)?
  • 外部 URL 访问是否有限制(白名单或域名过滤)?
  • 子 Skill 的依赖关系是否明确声明?

这七条花不了三分钟,但它能挡住的坑,可能是修复三天都修不完的。


总结

今天这篇从四个维度拆解了 Skill 工程化,核心结论是:

  • 模块化拆分有明确的判断标准:超 500 行、多独立流程、不同改动频率、可独立使用——四条命中一条就该拆。拆完之后,主 Skill 编排流程,子 Skill 独立执行,依赖写明、可独立使用。
  • 进阶写法让 AI 读得准而不是光读得懂:能用表格就用表格,复杂检查写成脚本,提供多种方案,标出易错点,FAQ 到位。
  • MCP 和 HTTP 各有所长:已有 MCP Server 优先用,高频复用能力封装成 MCP,一次性调用直接用 HTTP 脚本。不要过度工程化。
  • 安全五条死规矩:不硬编码、危险操作确认、数据库先备份、防 Prompt 注入、每次发布前对照清单自查。

Skill 工程化的本质,其实就是软件工程的基本功迁移到 AI 编程这个新场景里。模块化、可读性、集成设计、安全实践——这些原则一点都不新,但它需要被重新连接到一个问题上:你写的不是给人看的文档,是给 AI 执行的规范。 这个认知变了,写法自然就变了。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

从ComfyUI到MCP与Agent:AI创作工作台的集成实践 AI创作正从单点工具走向全流程工作台,但模型调用、图像生成、工具连接与任务编排之间的割裂,仍是工程落地的主要障碍。无限画布与图片分层解决了内容组织与可编辑性问题,ComfyUI则提供了灵活的生成工作流,让图像产出可控可复用。而MCP以统一协议打通外部工具生态,使AI获得可插拔的能力池;Agent进一步将复杂目标拆解为可执行的子任务,结合Skills固化经验,真正实现自动化编排。这种多技术融合的工作台,在AI漫剧、批量内容生产等场景中展现出巨大潜力,同时也对依赖管理、资源调度与故障排查提出更高要求。DX-OS 阅读详情

相关推荐

从MCP到Lensa:一文读懂AI Agent外部工具接入新标准

在大模型应用开发中,模型本身无法直接操作数据库、调用接口或读写文件,必须借助外部工具才能完成真实业务任务。早期的Function Calling需要开发者反复编写胶水代码,维护成本高;而模型上下文协议(MCP)则提供了一种统一的通信标准,如同AI世界的USB-C接口,让智能体应用能够以标准方式连接任意数据源和工具。在实践中,Lensa这类开源项目通过提供现成的连接器(Connector)与技能(Skill)模板,进一步降低了MCP Server的接入门槛。开发者只需配置环境变量和启动命令,即可在ChatGP

weixin_30745553的博客 374

收藏必备!LLM、RAG、Skill、Agent四大核心概念全解析:Java开发者大模型技术指南

大模型技术快速从学术走向工业应用,但行业对LLM、RAG、Agent、Skill四大核心概念存在普遍误解。本文系统梳理了这些概念的边界与关系:LLM是底层语言引擎,RAG提供知识增强,Skill实现外部功能调用,Agent整合前三者实现自主任务执行。文章重点解析了LLM的本质是token概率预测模型,其能力源于Transformer架构的自注意力机制,并强调正确理解这些概念对技术落地至关重要。针对Java开发者,文中还提供了技术类比和简化代码说明,帮助在Java生态中应用这些技术。

ajhddjangc的博客 540

UE5.8接入Claude Code与MCP:实现AI驱动的编辑器自动化开发

AI编程助手的效能边界通常由上下文决定。在大型引擎如Unreal Engine中,单纯依靠代码片段问答难以应对资产数据库、关卡Actor状态等动态信息,导致AI生成结果与实际工程脱节。MCP(Model Context Protocol)作为AI客户端连接外部工具的标准协议,提供了将编辑器内部能力暴露为可调用工具的通道。通过Claude Code接入UE5.8的MCP Server,AI能够查询资产、读取关卡、执行Python脚本并触发编译命令,从而从代码生成器转变为可读、可查、可验证的编辑器助理。这一组合

weixin_34268169的博客 379

Claude Skill 进阶:多文件结构、脚本集成与触发优化

《Skill进阶结构设计与优化指南》摘要: 本文系统介绍了Skill开发的进阶技巧,重点解决复杂场景下的组织架构问题。

qq_23625847的博客 987

连接器与MCP的关系:从设计稿到APP的实战指南

在AI驱动的软件开发流程中,连接器与模型上下文协议(MCP)是两种常见但易混淆的技术手段。连接器负责打通外部系统,如数据库、设计稿平台,提供具体的读写能力;而MCP则是一种标准化工具调用协议,让AI应用能以统一方式发现并调用外部服务。理解两者的定位与协作方式,是提升AI编程效率的关键。通过Workbuddy等AI开发工具,结合连接器与MCP,可实现从设计稿到可运行APP的自动化生成,并支持数据库查询等复杂业务逻辑。本文从基础概念出发,解析连接器与MCP的工作原理,并给出配置示例及常见问题排查思路,帮助开发者

weixin_34241036的博客 418

Zcode AI编程工具实战:从Token到多Agent与MCP配置指南

在AI编程工具层出不穷的今天,如何低门槛上手并高效完成真实任务成为开发者关注的焦点。Token作为大模型计费与上下文管理的基础单位,直接决定了AI工具的使用成本与效率;而Agent、MCP等概念则是理解AI如何自主拆解任务、调用外部工具的关键。MCP作为标准化工具调用协议,让AI能够灵活操作浏览器、文件与数据库,避免生态割裂。基于免费token额度与灵活的模型接入能力,Zcode为新手提供了一条从零跑通完整开发链路的路径:从安装配置、接入DeepSeek,到利用多Agent主从模式拆解复杂需求,再到通过钩子

weixin_34389926的博客 415

Superpowers - 01 让 AI 真正“懂工程”:Superpowers 软件开发工作流深度解析

摘要: Superpowers 是一套面向AI编码助手的工程化开发流程,旨在解决当前AI编码存在的短期高效但长期失控的问题。它通过结构化的工作流和“技能”(Skill)系统约束Agent行为,使其像专业工程师一样工作。核心包括:技能库、会话钩子系统和平台适配层,支持多种开发平台。工作流涵盖从想法到代码合并的全过程,强制测试驱动和系统化调试,确保代码质量和可维护性。该系统无需外部依赖,适合团队部署,将AI从“代码生成器”转变为遵守工程规范的协作伙伴。

小工匠 3395

MCP Server进阶实践:错误处理、流式输出与远程部署全指南

标准化通信协议是连接AI应用与外部工具的关键桥梁,MCP(Model Context Protocol)作为这一领域的通用语言,正逐步成为智能体生态的基础设施。然而,将协议能力落地为稳定可用的服务并非易事,工程化中的错误处理、流式输出、TypeScript配置及远程部署往往是决定成败的细节。JSON-RPC 2.0规范下的错误码设计、基于zod的参数校验、渐进式内容推送机制、严格模式下的类型安全,以及stdio与HTTP/SSE传输方式的选型,共同构成了生产级MCP Server的核心骨架。无论是本地调试还

weixin_34417183的博客 409

如何评估一个 Skill 是否真的有效:从主观打分到工程化验证

本文讨论如何系统评估一个AI agent skill 是否真正有效,skill评测的重点不应是让另一个大模型主观打分,而应转向工程化验证:通过 baseline 与 skill 的对照实验,判断改进是否确实来自 skill;通过保存每次真实运行结果,支持复查、比较和回归;通过确定性检查项,将格式、文件、字段、脚本执行、产物生成等可验证内容脚本化。文章进一步强调,评估 skill 不仅要看最终答案,还要检查模型是否真的调用了 skill、是否遵循了预期流程,并最终形成一套可持续演进的 eval 闭环。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 2万+

从零构建物联网监控系统:STM32+迪文屏+WiFi模组的实战解析

本文详细解析了基于STM32微控制器、迪文串口屏和WiFi模组构建物联网监控系统的完整方案。从硬件选型、系统架构设计到数据交互实现,提供了包括迪文屏GUI开发、STM32通信协议、低功耗优化等实战经验,帮助开发者快速掌握物联网监控系统的核心技术。

docker7nomad的博客 731

obisidian插件之【templater】模板的中文说明书

Templater 是一种模板语言,可让您将变量和函数结果插入到笔记中。它还允许您执行操作这些变量和函数的 JavaScript 代码。使用 Templater,您将能够创建强大的模板来自动执行手动任务。

m0_55795604的博客 1万+

【WorkBuddy】打破信息孤岛:深入解析Skill、MCP与Expert核心组件

智能体核心架构解析:从对话到业务执行的跃升 当前企业智能体面临三大核心挑战: 知识鸿沟 - 通用大模型缺乏对企业私有数据的访问能力 数据孤岛 - 业务系统间数据隔离导致信息碎片化 执行缺失 - AI仅能对话无法触发实际业务操作 WorkBuddy提出的四层架构解决方案: LLM核心:负责意图理解与任务编排 Skill层:封装可复用的业务操作单元(如库存查询、订单创建) MCP协议:标准化连接各类企业系统(ERP/CRM等) Expert层:注入领域专业知识与业务规则 关键突破点在于将AI从"对话引擎"升级为

ruiqideng的博客 532

【实战解析】RTL8306MB交换芯片驱动开发中的RMII接口调试陷阱

本文通过一个RTL8306MB交换芯片驱动开发的实战案例,深入剖析了RMII接口调试中的经典陷阱。文章详细描述了因TX_EN与CRS_DV信号线交叉连接错误导致的“静默”故障,并分享了使用逻辑分析仪和示波器进行硬件排查的完整流程与核心技巧,为嵌入式网络驱动开发提供了宝贵的避坑指南。

weixin_29267307的博客 422

从Skill初探到规范落地:ooderAgent的SDD实践全记录

回望整个实践,ooderAgent的三层架构(执行-路由-管控)为SDD落地提供了坚实支撑:End Agent负责具体任务执行,Route Agent保障指令传递,MCP Agent统筹全局调度,三者各司其职且通过统一协议联动,精准解决了此前多Agent协作混乱的痛点。而我们搭建的核心组件体系,从Agent SDK、Skill Framework到VFS存储、UDP通信模块,均围绕“标准化、可复用”目标设计,与SDD理念高度契合,这也是二者能顺利融合的重要原因。

wenzhangli的博客 777

虚拟机ubuntu22.04.3中安装vitis2024.1注意事项

虚拟机ubuntu安装vitis2024.1

qq_52033578的博客 2497

怎么定位K8s容器中运行的JAVA程序OOM异常(一)

一.前置环境 1. 运行在k8s集群上的Pod服务(Java程序) 2. MAT分析工具 二.利用Jmap工具导出Heap Dump 1.执行命令进入pod容器 kubectl exec -itn {namespace} {pod}} sh 2.利用jmap生成java程序的Dump文件 jps | grep {jar} ./jmap -dump:live,format=b,file=haep.hprof 8 3.利用k8s命令导出Dump文件到本地 kubectl cp -n

计算科学 3013

Agent Skill 技能包设计:从概念到工程实践

在大语言模型应用开发中,如何将专业经验沉淀为可复用能力,是团队从“能用”走向“好用”的关键。Skill 是一种结构化的技能包,它区别于一次性 Prompt,通过 SKILL.md 描述文件、脚本、模板与参考文档,让 Agent 在正确时机按需加载并执行标准化流程。其核心机制是惰性加载,模型先根据描述索引发现技能,再读取正文与资源,从而避免上下文冗余。工程化的 Skill 强调单一职责拆分、清晰元数据、可校验产物与描述工程,可显著提升输出稳定性与团队协作效率。本文围绕 Skill 的物理构成、描述写法、验证方

weixin_29045585的博客 308

esp32 python开发环境搭建_eclipse esp32开发环境搭建

安装方法基本是按照官网提供的方法来操作https://github.com/espressif/idf-eclipse-plugin#GettingStarted但是官网的方法安装之后还是不能编译成功的,第一次编译会出现一下问题问题1:Building in: E:\eclipse-workspace\helloworlk\buildcmake -G Ninja -DCMAKE_TOOLCHAIN...

weixin_39978276的博客 1264

办公Agent的胜负手:记忆、编排与可靠性,工程化能力决定成败

随着大模型与智能体(Agent)技术走向成熟,办公自动化场景迎来新的可能。但真正的挑战不在模型是否聪明,而在于工程化能力:如何管理短期与长期上下文,如何让工具调用在失败时自动恢复,如何通过可观测性快速定位问题,如何在高频业务中保障安全与权限边界。从概念上看,Agent是感知、决策与执行的循环;从原理上看,分层记忆、可靠编排、故障恢复与安全审计等机制,共同决定了其真实可用性。这些技术价值在办公场景尤为突出:面对复杂的邮件、日程、审批系统,只有把记忆、工具调用、可观测性和可靠性做扎实,Agent才能从演示走向生

weixin_34314962的博客 463

遥感新手别纠结!实测ENVI 5.3、5.6、6.0三个免费版,教你混搭安装避坑

本文为遥感新手提供ENVI 5.3、5.6、6.0三个免费版的实测对比与混搭安装指南,帮助用户构建零成本高效工作流。详细解析各版本功能差异、共存安装技巧及常见问题解决方案,特别适合课程作业、毕业论文分析和遥感入门练习。

weixin_30819085的博客 479

YOLO26优化:注意力魔改 | 用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测,暴力涨点

用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 492

告别AI概念混乱!一次性讲透 Agent Skills、Rules、Prompt、MCP

摘要:本文系统解析了AI智能体开发中的四大核心概念——Prompt、Rules、AgentSkills和MCP。Prompt是临时对话指令,Rules是全局行为约束,AgentSkills是可复用能力模块,MCP则是外部工具连接协议。四者各司其职:Rules确保安全底线,Skills提供专业能力,MCP连接现实世界,Prompt指导具体任务。通过协同工作,它们共同推动AI从简单对话向专业数字员工进化,实现高效、安全、可扩展的智能体开发。

yumgpkpm的专栏 1401

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Agent Skills 实战指南:从 SKILL.md 到技能调度引擎

在大模型应用开发中,随着业务复杂度提升,传统系统提示词越来越难以承载不断膨胀的规则与知识,容易引发上下文爆炸和指令冲突。Agent Skills 作为一种新兴的能力组织抽象,正将模型能力从“写死在提示词里”转向“按需加载的能力包”。其核心载体 SKILL.md 通过描述与步骤定义技能的触发条件与执行流程,让模型在任务相关时才加载对应内容,兼顾效率与灵活性。这种机制与 MCP 工具、RAG、微调形成互补,共同构成工程化 Agent 的基石。从实际落地看,开发者既可以基于 Claude 原生能力快速注册技能,也

weixin_34226182的博客 414

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Claude Code与Codex挂载MCP工具:LinkedIn外联自动化实战

MCP协议作为AI连接外部服务的统一标准,解决了传统工具集成的碎片化问题。AI Agent(如Claude Code、Codex)借助MCP工具,能够理解任务并自主调用外部服务。在销售自动化场景中,这种技术栈可将LinkedIn外联流程拆解为客户数据获取、个性化调研、消息生成与审核、发送回写等环节。通过挂载约30个MCP工具,Agent能处理上千条外联任务,但真正的挑战在于流程编排、状态管理和人工审核。本文从基础概念到工程实现,带你构建安全可控的LinkedIn外联自动化流水线。

weixin_30258901的博客 405

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

从零搭建 Harness Engineering 框架 :Rule、Skill、Sub-Agent等工程落完整路径

Harness Engineering(脚手架工程)这个概念已经流行一阵了。网上大多数文章都停留在理论层面,反复解释为什么现代 AI 开发不能再依赖单个 Prompt、也不能把模型当成"聪明的代码自动补全"。不过这里有一个实际问题被反复提及:

xx_nm98的博客 257

DeepSeek V4 Flash接入codex:用skill和插件构建可编排编程工作流

大语言模型正在从“对话助手”演变为真正能参与工程实践的智能体,其核心在于通过API将模型能力接入命令行工具,并借助skill与插件机制实现任务编排。DeepSeek V4 Flash作为高性价比模型,配合codex这类终端开发工具,能够将模型感知、决策、行动与验证形成完整闭环。文章从基础概念出发,先厘清模型、客户端、技能模板与能力扩展各自的定位,再逐步讲解环境准备、端点配置、最小调用链验证,以及如何编写skill、封装插件,最终形成可复用的自动化工作流。这种接入思路适用于本地或远程API,兼顾学习与生产环境

weixin_34187862的博客 412
上一篇: 字节面试官:Harness Engineering 是什么都说不清,你还在把 Agent 当聊天机器人用?
下一篇: 构建 Agent Harness:打造可靠 AI Agent 的核心控制层
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2841原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值