每捎京 发表于 2025-10-26 10:10:00

Anthropic Agent Skills 技术解析与实践


前言

Anthropic 在 2025 年 10 月推出了 Agent Skills 框架,这是一个让通用 AI 获得专业技能的机制。本文通过分析这个框架的设计理念,并以 Litho 为例展示如何构建实用的 Agent Skill。

Agent Skills 的核心机制

渐进式信息披露(Progressive Disclosure)设计

根据 Anthropic 官方文档,Agent Skills 的核心创新在于采用了"渐进式信息披露"机制。这个概念虽然源自用户体验设计,但在 AI 系统中有了新的应用维度。
理解 Progressive Disclosure

传统软件中的 Progressive Disclosure 指的是界面设计策略:先展示基本信息,用户有需求时再展示详细功能。在 Agent Skills 中,这个概念被迁移到了认知层面:


三层信息架构详解

官方文档详细说明了这种分层设计的技术实现:
第一层:Metadata 触发层
---
name: your-skill-name
description: "Clear description of when and how to use this skill"
---

[*]技术细节:这个 metadata 在 agent 启动时就被加载到系统 prompt 中
[*]工作原理:Claude 在处理每个请求时,都会检查这些 metadata,判断是否需要激活某个技能
[*]中文用户的优势:description 可以用中文写,更准确地表达使用场景,帮助中文用户触发正确的技能
第二层:Core Instructions 核心指令层
# 主 SKILL.md 文件内容
## 工作流程
## 关键决策点
## 基本使用方法
## 常见模式

[*]加载时机:只有当 Claude 确认这个技能相关时,才会主动读取完整的 SKILL.md
[*]Context 管理:这一步消耗 tokens,所以内容需要精炼(官方建议保持在合理长度)
[*]设计要点:应该包含 80% 常见场景的处理逻辑
第三层:Reference Materials 参考资源层
以Litho为例,完整描述见 SKILL.md


[*]按需加载:Claude 只在实际需要特定细节时才读取这些文件
[*]无限扩展:理论上可以有无限多的辅助文件,因为不会占用基础 context
[*]模块化优势:可以将不常使用的内容独立出来,降低主要文档的复杂性

Context Window 优化的实际效果

官方文档用了一个具体的例子说明这个过程:

[*]初始状态(假设 context 为 4000 tokens):

[*]系统 prompt:1500 tokens
[*]用户消息:200 tokens
[*]已加载的所有 skill metadata:约 800 tokens(假设有 10 个技能)
[*]剩余可用空间:1500 tokens

[*]触发 skill 后:

[*]Claude 判断需要某个 skill
[*]调用 bash 工具读取该 skill 的 SKILL.md(增加 300 tokens)
[*]剩余可用空间:1200 tokens
[*]如果还需要特定细节,再调用 bash 工具读取辅助文件(增加 100 tokens)
[*]剩余可用空间:1100 tokens

这种机制确保了只在真正需要时才消耗 context 空间。
文件系统即知识网络的设计理念

Agent Skills 的另一个重要设计是将文件系统映射为知识网络结构。这在官方文档中被称为"composable resources"(可组合资源)。
文件组织的设计

参考 the agent skill of litho
skill-directory/
├── SKILL.md            # 知识根节点
├── configuration.md      # 配置知识子图
├── examples/             # 实例知识群
│   ├── basic-usage.md
│   ├── advanced-patterns.md
│   └── troubleshooting-examples.md
├── tools/               # 工具知识群
│   ├── setup.sh         # 自动化工具
│   ├── validate.py      # 验证工具
│   └── deploy.yml       # 部署工具
└── integration/         # 集成知识群
    ├── ci-cd.md         # CI/CD 集成
    └── api-clients.md   # 客户端集成这种结构背后有几个关键理念:
1. 文件夹语义化
每个子文件夹代表特定的知识域。这不仅是物理分组,更是概念的分层。Anthropic 的设计让 Claude 能够通过路径语义理解内容的分类。
2. 文件名即导航信号
文件名本身就是重要的导航线索:

[*]basic-setup.md 暗示这是入门内容
[*]advanced-config.py 暗示这是高级配置工具
[*]emergency-recovery.sh 暗示这是紧急恢复程序
3. 目录深度的信息密度控制
较深的层次通常包含:

[*]更专业的细节
[*]更少使用的功能
[*]更强的上下文依赖
可发现性与自文档化原则

官方强调了"self-documenting"的重要性:

[*]从外向内的可预测结构
参考 the agent skill of litho
用户和 Claude 都应该能够推断在什么地方找到特定类型的信息:
skill-name/
├── SKILL.md         # 第一个要读的文档
├── configuration.md   # 配置相关查询会指向这里
├── troubleshooting.md# 排错时会指向这里
└── scripts/         # 需要执行时会指向这里
[*]内部引用网络的建立
在 SKILL.md 中的引用不是简单的链接,而是建立知识图谱的边:
## Litho Agent Skill 分析

接下来拿(https://github.com/sopaco/deepwiki-rs)这个开源项目的Agent Skill实现范例举例

### 首先 介绍一下Litho

Litho 是一个基于 Rust 的跨平台、跨技术栈项目知识生成引擎,核心功能是将源代码自动生成Agent可理解的结构化知识。在 Agent Skill 场景下,它的主要价值是:

1. **降低 Coding Agent 的认知负担**
2. **提供预处理的代码知识图谱**
3. **减少推理过程中的 context 消耗**
4. **提高代码理解效率**

具体来说,当一个 Coding Agent 需要操作复杂代码库时:

- **传统方式**:AI 需要直接分析大量源代码文件,消耗大量 tokens 并占用推理资源
- **Litho 增强方式**:AI 先加载 Litho 生成的架构文档,快速建立系统认知,再针对具体模块进行深度分析

### Skill 结构设计

#### Metadata 设计

```yaml
name: deepwiki-rs
description: "Code analysis tool that pre-generates structured documentation to help AI agents understand complex codebases efficiently, reducing context overhead and improving coding assistance quality."描述突出了在 Agent 使用场景下的价值:降低上下文开销,提高效率。
核心工作流程设计

主 SKILL.md 保持了简洁的结构(87 行):

## Use Cases

1. **Codebase Pre-analysis**: Generate architecture overview before coding tasks
2. **Context Optimization**: Reduce tokens needed for large project understanding
3. **Module Mapping**: Understand relationships and dependencies quickly

## Command Patterns

- Quick overview: `deepwiki-rs -p ./src --skip-preprocessing`
- Full analysis: `deepwiki-rs -p ./project --model-efficient gpt4-mini --model-powerful gpt4-o`辅助文件的按需引用

详细的配置和技术细节移到独立文件:

实际工作流程示例

官方文档提供了一个完整的 PDF 处理技能示例来展示这个机制。我们用 Litho 的场景来展示类似的工作流程:
场景:AI 代理需要为现有项目添加新功能

[*]初始请求分析(用户:"在项目中添加用户认证功能")
Context: 4000 tokens
- 系统提示: 1500 tokens
- 所有技能 metadata: 800 tokens
- 用户请求: 50 tokens
- 剩余: 1650 tokens
[*]技能激活(Claude 检测到 "项目"、"添加功能" 触发了 Litho skill)
Claude 评估:这个任务需要理解项目架构, Litho skill 相关
执行:bash -c "read_file ./skill-litho/SKILL.md"
[*]加载核心指令(Litho SKILL.md 内容载入)
Context 增加: 300 tokens
剩余: 1350 tokens

Claude 获取的信息:
- 使用决策树
- 基本命令模式
- 关键注意事项
[*]深度需求分析(Claude 发现需要了解特定模块的配置)
Claude 决策:要添加认证功能,需要了解项目的配置结构
执行:bash -c "read_file ./skill-litho/configuration.md#project-config"
[*]获取专业细节(加载配置指南)
Context 增加: 150 tokens
剩余: 1200 tokens

Claude 获取:项目配置的具体参数和最佳实践
[*]执行工具调用(需要生成项目分析)
Claude 决策:先分析现有架构再设计认证集成
执行:bash -c "deepwiki-rs -p ./src --skip-preprocessing -o ./temp-analysis"
[*]基于分析结果进行设计(使用生成的文档进行推理)

Claude 现在有:

[*]完整的 Litho 使用指导(来自 SKILL.md)
[*]详细的配置选项(来自 configuration.md)
[*]实时的项目架构分析(来自 Litho 输出)
基于这些信息,Claude 可以设计合适的认证集成方案
这个流程展示了 Agent Skills 如何让 AI 在保持高效的同时,获得深度专业能力。

### 技术实现的关键细节

#### Bash 工具的智能调用机制

官方文档特别强调了 Agent Skills 与 Bash 工具的协作方式。这不仅仅是一个简单的文件读取,而是一个智能的决策过程:

**Claude 的决策逻辑**:
```python
# Claude 内部的简化决策流程
def should_use_skill(user_request, available_skills):
# 1. 分析请求内容,识别关键词和意图
intent = analyze_intent(user_request)
keywords = extract_keywords(user_request)

# 2. 匹配技能 metadata
relevant_skills = []
for skill in available_skills:
   if matches_keywords(skill.description, keywords):
         relevance_score = calculate_relevance(intent, skill.description)
         if relevance_score > threshold:
             relevant_skills.append((skill, relevance_score))

# 3. 选择最相关的技能
if relevant_skills:
   return max(relevant_skills, key=lambda x: x)
return None文件读取的智能策略:
# Claude 实际执行的命令模式
# 1. 基础技能激活
read_file ./skill-name/SKILL.md

# 2. 按需深度加载
read_file ./skill-name/configuration.md#specific-section

# 3. 工具执行(如果需要)
bash -c "./skill-name/scripts/automation.sh --params"

# 4. 结果验证
read_file ./skill-name/validation-report.md安全性和稳定性考虑

官方文档详细讨论了安全性问题,这对中文用户特别重要:
恶意技能的防护机制:

[*]代码执行限制

[*]Agent Skills 可以运行脚本,但需要用户明确授权
[*]系统会限制脚本的权限范围
[*]网络访问需要额外的安全检查

[*]内容审计要求
官方建议的审计检查清单:
✓ 检查所有可执行文件的内容
✓ 验证网络连接的目标地址
✓ 确认文件系统的访问权限
✓ 测试异常情况的处理
中文用户的特殊注意点:

[*]文件路径可能包含中文字符,需要确保脚本能正确处理
[*]错误消息可能需要本地化处理
[*]配置文件中的中文注释不能影响程序解析
错误处理和回退机制

官方文档描述了多层错误处理:
第一层:文件访问错误
# 如果 SKILL.md 读取失败
read_file ./skill-name/SKILL.md
# 错误响应:File not found
# Claude 回退:使用通用知识 + 建议用户检查技能安装第二层:内容解析错误
# 如果 SKILL.md 格式错误
# Claude 检测:缺少必需的 YAML frontmatter
# 回退策略:忽略该技能,继续处理其他任务第三层:执行失败处理
# 如果脚本执行失败
bash -c "./skill-name/script.sh"
# 错误捕获:检查退出码和标准错误输出
# 智能分析:基于错误信息提供解决方案技能与工具链的集成模式

与现有开发工具的协调

官方文档强调了 Agent Skills 需要与传统工具链和谐共存:
1. IDE 集成模式
// VS Code 扩展示例
{
"anthropic.skills": {
    "enabled": true,
    "skillsPath": "./skills/",
    "autoLoad": ["litho", "testing", "security"],
    "workspaceContext": {
      "projectType": "rust",
      "buildSystem": "cargo"
    }
}
}2. CI/CD 流水线集成
# GitHub Actions 中的技能使用
- name: Code Analysis with Skills
uses: anthropic/skills-action@v1
with:
    skills: "litho,-security-linter"
    project-path: "./src"
    output-format: "markdown"
env:
    LITHO_API_KEY: ${{ secrets.LITHO_API_KEY }}技能间的协作模式

不同技能可以组成技能链(Skill Chain):

每个技能可以:

[*]将输出作为下一个技能的输入
[*]共享临时文件和缓存
[*]协调执行顺序和依赖关系
性能优化考虑

在 Agent Skill 使用场景下,Litho 的配置重点考虑:

[*]响应速度:使用高效模型快速生成基础架构
[*]信息密度:生成的文档结构化程度高,便于 AI 快速提取关键信息
[*]增量更新:支持 diff 模式,只处理变更部分
[*]模块化输出:按功能域分割文档,便于按需加载
可执行脚本的价值

Litho Skill 包含了两个关键脚本:
quick-start.sh
#!/bin/bash
# 为 AI 代理快速设置代码分析环境
detect_project_structure() {
    # 识别项目类型和结构
    # 选择合适的分析参数
}

setup_optimized_config() {
    # 根据 agent 使用场景优化配置
    # 设置合适的模型组合
}ci-integration.sh
#!/bin/bash
# 自动化 CI/CD 中的文档更新
generate_diff_docs() {
    # 只对变更部分重新生成文档
    # 保持文档与代码同步
}这些脚本让其他 AI Agent 可以自动化地调用 Litho 的能力,而不是依赖手动操作。
构建高质量技能的设计原则

官方推荐的技能设计模式

根据 Anthropic 官方文档,好的 Agent Skill 应该遵循几个核心设计原则:
1. 边界清晰原则(Clear Boundaries)

官方强调每个技能应该有明确的应用边界,避免"大而全"的设计:
# ❌ 官方不推荐的例子
name: development-helper
description: "All-purpose development assistance for everything"

# ✅ 官方推荐的例子
name: rust-async-patterns
description: "Rust async programming patterns for high-performance backend services. Use when Claude needs to implement async/await, tokio integration, or performance optimization in Rust."关键要点:

[*]描述中应该明确"什么时候使用"
[*]避免重叠的功能范围
[*]保持技能的单一职责
2. 可发现性设计(Discoverability Design)

官方文档详细说明了如何让 Claude 能够准确识别和使用技能:
Metadata 优化技巧:
# 优化前
description: "Documentation generation tool"

# 优化后(官方建议模式)
description: "Code analysis tool that generates architectural documentation. Use when Claude needs to: 1) understand codebase structure, 2) identify module dependencies, 3) prepare for refactoring, 4) create technical specifications."关键词策略:

[*]在 description 中包含核心关键词
[*]使用数字或项目符号明确应用场景
[*]提供具体的触发条件
3. 渐进式复杂度(Progressive Complexity)

官方推荐的内容组织方式:
# SKILL.md 的内容分层

## 第一层:核心概念(所有用户都需要)
- 基本使用方法
- 关键决策点
- 常见模式

## 第二层:深入实践(有经验的用户)
- 高级配置选项
- 性能优化技巧
- 故障排除方法

## 第三层:专家级内容(按需引用)
- 内部实现原理
- 扩展开发指南
- 贡献者文档实现质量保证的官方建议

测试驱动的技能开发

官方文档提出了一个完整的测试框架:
# skills-testing/
├── unit-tests/            # 功能单元测试
│   ├── test-basic-workflow.py
│   ├── test-error-handling.py
│   └── test-integration.py
├── integration-tests/       # 集成测试
│   ├── test-context-usage.py
│   └── test-tool-chaining.py
├── performance-tests/      # 性能测试
│   ├── test-response-time.py
│   └── test-context-efficiency.py
└── user-scenario-tests/    # 用户场景测试
    ├── test-new-user.json
    └── test-expert-user.json关键测试指标:

[*]响应时间:技能激活到提供指导的时间 < 2秒
[*]Context 效率:技能相关内容的 token 密度 > 常规文档
[*]任务成功率:在标准测试场景下 > 90%
持续监控和迭代机制

官方建议的监控体系:
# 技能性能监控
class SkillMonitor:
    def track_usage_patterns(self):
      return {
            'activation_frequency': self.count_activations(),
            'context_consumption': self.measure_token_usage(),
            'task_success_rate': self.calculate_success_rate(),
            'user_satisfaction': self.collect_feedback()
      }
   
    def identify_improvement_areas(self):
      if self.context_consumption > threshold:
            return "Consider optimizing content density"
      if self.task_success_rate < 0.8:
            return "Review instruction clarity"可组合的 AI 工作流

官方文档展示了技能组合的潜力:
典型 Rust 开发工作流:
┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│Code Req   │───▶│ Litho Skill │───▶│ Rust Skill│───▶│ Test Skill│
│Analysis   │    │(架构分析)│    │(代码实现)│    │(测试生成)│
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘
       │                   │                   │                   │
       ▼                   ▼                   ▼                   ▼
   需求理解         快速建立架构认知   生成符合 Rust   自动化测试
   和拆解             系统整体视图      最佳实践的代码   用例生成这种组合让每个技能都能发挥最大价值,形成完整的开发闭环。
构建建议

基于官方最佳实践的设计原则

根据 Anthropic 官方文档,构建高质量技能应该遵循:

[*]分层信息组织:遵循 Progressive Disclosure 原则,优化 Context 使用效率
[*]边界明确:每个 Skill 专注解决特定类型的问题,避免功能重叠
[*]AI 代理优先:内容设计优先考虑 AI 代理的使用场景,而非人类直接阅读
[*]结构化输出:生成的信息应该便于其他 AI 代理解析和使用
[*]提供执行接口:包含可执行脚本,便于自动化调用和工具链集成
推荐的文件组织结构

your-skill/
├── SKILL.md                # 核心工作流程(建议 50 ~ 150个token)
├── configuration.md      # 详细配置参数和环境设置
├── troubleshooting.md      # 常见问题和解决方案
├── examples/               # 分层使用案例
│   ├── basic-usage.md
│   ├── advanced-patterns.md
│   └── integration-examples.md
├── scripts/                # 自动化工具
│   ├── setup.sh         # 环境配置
│   ├── validate.py      # 功能验证
│   └── deploy.yml         # 部署自动化
└── integration/            # 与其他系统的集成
    ├── ci-cd.md         # 持续集成配置
    └── api-clients.md   # API 客户端示例未来,随着 AI 在开发流程中的深度集成,Agent Skills 可能成为连接人类专业知识和 AI 执行能力的关键桥梁。掌握这项技术,将帮助团队在 AI 时代保持技术领先优势。
参考资料:

[*]Anthropic Agent Skills 官方文档
[*]Litho 项目地址
 

本作品由姜萌创作,采用知识共享署名 2.5 中国大陆许可协议进行许可。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

损注 发表于 7 天前

谢谢楼主提供!

丘娅楠 发表于 4 天前

用心讨论,共获提升!
页: [1]
查看完整版本: Anthropic Agent Skills 技术解析与实践