从0开发大模型之实现Agent(Bash到SKILL)

从0开发大模型之实现Agent(Bash到SKILL)

最近在搞大模型Agent开发,发现一个很有意思的现象------越简单,反而越强大!🤯 今天就跟大家摆摆这个龙门阵,从最基础的Bash工具讲到进阶的Skills架构,看看怎么把一个"莽子"Agent训练成"精明"助手。

🔗 Claude Code 国内代理链接 ------ 通过此链接注册使用,可以送20美金抵扣券直接可用! 真的巴适得板,搞AI开发必备神器!

一、Agent的"莽子时代":从一堆工具说起

刚开始搞Agent的时候,我也跟大多数人一样,觉得"工具越多越好"。恨不得把所有能想到的功能都封装成工具:

  • schema_lookup(查找数据库模式)
  • query_validation(查询验证)
  • error_recovery(错误恢复)
  • context_manager(上下文管理)
  • intent_classifier(意图分类)
  • ...还有一堆七八糟的

结果呢?代码写了一大堆,Agent反而越来越"憨":

复制代码
import { GetEntityJoins, LoadCatalog, RecallContext,
         LoadEntityDetails, SearchCatalog, ClarifyIntent,
         SearchSchema, GenerateAnalysisPlan, /*...*/ } from '@/lib/tools'

const agent = new ToolLoopAgent({
  model: "anthropic/claude-opus-4.5",
  tools: {
    GetEntityJoins, LoadCatalog, RecallContext, LoadEntityDetails,
    SearchCatalog, ClarifyIntent, SearchSchema, GenerateAnalysisPlan,
    FinalizeQueryPlan, FinalizeNoData, JoinPathFinder, SyntaxValidator,
    FinalizeBuild, ExecuteSQL, FormatResults, VisualizeData, ExplainResults
  }
})

十几个工具,看得脑壳痛!而且每次模型更新,还得重新调参调约束,维护成本高得吓人。😫

二、觉醒时刻:Vercel的"断舍离"大法

就在我觉得"这就是命"的时候,刷到了Vercel的技术博客------他们直接干掉了80%的工具!🎯

他们的数据对比太震撼了:

指标 复杂工具版 文件系统版 变化
平均执行时间 274.8秒 77.4秒 快3.5倍
成功率 80% 100% +20%
平均Token消耗 ~102k ~61k 省37% 💰
平均步骤 ~12步 ~7步 少42% 📉

核心思路就是:给Claude一个Bash沙箱,让它自己想办法

javascript 复制代码
const sandbox = await Sandbox.create()
await sandbox.writeFiles(files)

const agent = new ToolLoopAgent({
  model: "anthropic/claude-opus-4.5",
  tools: {
    ExecuteCommand: executeCommandTool(sandbox),  // 就这一个工具!
    ExecuteSQL  // 唯一的专用工具
  }
})

Claude会自己用grepcatls这些Unix命令去探索文件系统,就像一个真正的程序员一样!

为什么会这样?

  1. 我们低估了模型能力:Claude Opus 4.5聪明得很,不需要我们"喂饭"
  2. Unix工具已经够用了:grep 50年了还在用,说明它设计得好
  3. 约束反而成了桎梏:我们给的工具越多,模型反而越不知道该用哪个

Vercel的工程师说得好:"Don't fight gravity"(别跟地心引力过不去),简单才是王道!🎯

三、进阶之路:从Bash到Skills架构

虽然Bash Agent很强,但也不是万能的。有些复杂任务(比如生成PPT、处理Excel),还是需要专门的"技能包"。这时候,Agent Skills架构就派上用场了!

什么是Skills?

Skills就是把能力封装成可重用模块,Claude按需加载。就像给AI装插件一样,需要什么技能就调用什么:

  • pptx:自动生成PowerPoint演示文稿
  • xlsx:处理Excel表格、数据分析
  • docx:生成Word文档
  • pdf:提取PDF内容、填写表单

三层渐进加载:懒加载的艺术

Skills的设计精髓在于三级触发机制,避免浪费token:

复制代码
+-------------------------+
|      Metadata           |  ← 启动时加载:技能名称+描述(~100 tokens)
+-------------------------+
|     Instructions        |  ← 匹配时加载:使用说明(<5k tokens)
+-------------------------+
|      Resources          |  ← 执行时加载:脚本、模板、数据
+-------------------------+

Level 1: 元数据层

yaml 复制代码
name: "PPT Generator"
description: "Creates PowerPoint presentations based on user descriptions."

Level 2: 指令层

markdown 复制代码
# PPT生成指南

## Step 1: 分析用户需求
- 识别主题、页数、风格

## Step 2: 使用模板
- 调用 scripts/create_slides.py
- 填充内容到 templates/

Level 3: 资源层

  • Python脚本
  • PowerPoint模板
  • 示例文件

这样设计的好处是按需加载,Claude启动时只扫一眼技能列表,真要用的时候才详细读取指令和资源。💡

四、实战演练:5分钟生成专业PPT

光说不练假把式,我们来看个实际例子:

场景:老板让你马上出个AI趋势报告PPT

传统方式

  1. 自己写内容(1小时)
  2. 找模板(30分钟)
  3. 调整格式(1小时)
    总计:2.5小时 😭

Skills方式

python 复制代码
import anthropic

client = anthropic.Anthropic()

response = client.beta.messages.create(
    model="claude-sonnet-4.5",
    betas=["skills-2025-10-02", "code-execution-2025-08-25"],
    container={
        "skills": [{"type": "anthropic", "skill_id": "pptx"}]
    },
    messages=[{
        "role": "user",
        "content": "创建一个5页的AI伦理报告PPT,包括引言、风险分析和解决方案"
    }],
    tools=[{"type": "code_execution_20250825", "name": "code_execution"}]
)

# 下载生成的PPT
file_id = response.content[0].file_id
file_content = client.beta.files.download(file_id=file_id)
with open("ai_ethics_report.pptx", "wb") as f:
    file_content.write_to_file(f.name)

结果:30秒搞定!而且格式专业、逻辑清晰 🎉

五、架构演进路径总结

从零开发Agent,推荐这条路径:

阶段1️⃣:Bash Agent(起步)

  • 只给执行Bash的权限
  • 让模型自己探索
  • 适用场景:代码分析、文件操作

阶段2️⃣:Tool Agent(优化)

  • 保留通用工具(Bash、文件系统)
  • 添加1-2个核心专用工具
  • 适用场景:有特定业务逻辑的任务

阶段3️⃣:Skills Agent(扩展)

  • 封装可复用技能包
  • 模块化管理能力
  • 适用场景:复杂工作流、多任务组合

关键原则:

  1. 从简单开始:别一上来就搞复杂架构
  2. 信任模型能力:Claude Opus 4.5比你想象的聪明
  3. 渐进式复杂化:证明有必要再添加功能
  4. 投资基础建设:好的文档/代码结构比花哨工具重要

六、踩坑指南 & 最佳实践

❌ 常见错误:

  1. 过度设计:还没跑起来就想支持所有场景
  2. 不信任模型:总觉得需要给详细指令
  3. 忽视基础:代码/文档乱七八糟,靠工具来弥补

✅ 正确姿势:

  1. 元数据精炼:name用动名词,description说清楚"做什么"和"何时用"
  2. 指令简洁SKILL.md <500行,只写必要指导
  3. 资源组织:脚本放scripts/,模板放templates/
  4. 测试迭代:用不同模型测试,观察Claude如何导航文件

七、未来展望:AI技能生态

想象一下,未来可能有这样的场景:

你对Claude说:"帮我分析上周的销售数据,生成Excel图表,然后做成PPT发给老板"

Claude会自动:

  1. 调用xlsx技能读取数据
  2. 调用analytics技能进行分析
  3. 调用pptx技能生成演示文稿
  4. 调用email技能发送邮件

就像一个"具备技能目录的智能操作系统" 🚀

八、总结

从Bash到Skills,Agent架构的演进告诉我们一个道理:

最好的架构,是几乎不需要架构

  • Vercel干掉80%工具,性能反而提升3.5倍
  • Claude用grep、cat就能搞定复杂查询
  • Skills按需加载,避免资源浪费

核心思想就是:相信AI的能力,给它自由,它会给你惊喜!💪

如果你也在搞Agent开发,强烈推荐从简单的Bash Agent开始,逐步演化到Skills架构。别一上来就想搞个大新闻,先让Agent跑起来,再慢慢优化。

最后,别忘了**Claude Code 国内代理链接**,注册就送20美金抵扣券,搞AI开发的兄弟们赶紧上车!🎁


参考资料:

代码示例仓库:


本文技术栈:Claude Opus 4.5 + Agent Skills + Vercel AI SDK + Python

作者:一个爱用四川话写技术博客的AI工程师 🤖

相关推荐
skywalk81632 小时前
介绍一下 Backtrader量化框架(C# 回测快)
开发语言·c#·量化
源代码•宸2 小时前
Leetcode—3314. 构造最小位运算数组 I【简单】
开发语言·后端·算法·leetcode·面试·golang·位运算
lbb 小魔仙2 小时前
【Java】深入解析 Java 集合底层原理:HashMap 扩容与 TreeMap 红黑树实现
java·开发语言
FJW0208142 小时前
Python深浅拷贝
开发语言·python
Coder个人博客2 小时前
1233434235
java·开发语言
徐同保2 小时前
开发onlyoffice插件,功能是选择文本后立即通知父页面
开发语言·前端·javascript
Never_Satisfied2 小时前
C#数组去重方法总结
开发语言·c#
阿蒙Amon2 小时前
C#每日面试题-静态构造函数和普通构造函数区别
java·开发语言·c#
Java程序员威哥2 小时前
SpringBoot4.0+JDK25+GraalVM:云原生Java的性能革命与落地指南
java·开发语言·后端·python·云原生·c#