Skip to content

Agent 技能框架

MyDeskBot 的 Agent Skills 系统提供了一个强大且可扩展的框架,用于管理和使用 AI 技能。基于开放的 Agent Skills 规范,它允许您创建、加载和管理增强特定任务 AI 能力的技能。

🎯 概述

什么是 Agent 技能?

Agent 技能是自包含的软件包,提供专门的指令、脚本和资源,用于增强特定任务的 AI 能力。每个技能都遵循标准化格式,可以根据上下文动态加载和激活。

核心特性

  • 开放规范:完全兼容 Agent Skills 开放规范
  • 动态加载:从多个目录自动加载技能
  • 上下文感知激活:根据对话上下文激活技能
  • 资源管理:从技能访问脚本、参考资料和资产
  • 规则集成:技能与现有规则系统无缝集成
  • 内置工具:用于技能发现和管理的综合工具

📁 目录结构

标准技能结构

.mydeskbot/
└── skills/                          # 技能根目录
    ├── algorithmic-art/             # 技能目录(名称必须匹配 SKILL.md)
    │   ├── SKILL.md                 # 必需,遵循 Agent Skills 规范
    │   ├── LICENSE.txt              # 许可证文件(如果 license 字段引用)
    │   ├── scripts/                 # 可选,可执行代码
    │   │   └── generate-art.py      # 示例脚本
    │   ├── references/              # 可选,参考文档
    │   │   └── REFERENCE.md         # 技术参考
    │   └── assets/                  # 可选,静态资源
    │       └── templates/
    │           └── viewer.html      # 模板文件
    └── document-processing/         # 另一个技能
        └── SKILL.md

技能位置

MyDeskBot 按以下顺序搜索技能:

  1. 全局目录~/.mydeskbot/skills/(在所有项目间共享)
  2. 工作区目录项目根目录/.mydeskbot/skills/(项目特定)
  3. 内置目录:内部系统技能(只读)

📝 技能格式

SKILL.md 文件格式

markdown
---
name: skill-name # 必需,1-64个字符,小写字母、数字、连字符
description: 技能描述 # 必需,1-1024个字符
license: MIT # 可选,许可证信息
compatibility: 兼容性说明 # 可选,1-500个字符
metadata: # 可选,任意键值对
  author: 作者名称
  version: "1.0"
allowed-tools: 允许的工具 # 可选,实验性功能
---

# 技能标题

使用此技能的详细指导和说明...

## 使用场景

- 场景1
- 场景2

## 示例

```bash
# 示例命令
echo "使用技能"
```

字段规范

字段必需约束条件
name1-64个字符,小写字母、数字、连字符,不能以连字符开头或结尾
description1-1024个字符,描述技能功能和使用场景
license许可证名称或对许可证文件的引用
compatibility1-500个字符,环境要求
metadata用于扩展元数据的任意键值对
allowed-tools以空格分隔的工具列表(实验性功能)

资源目录

  1. scripts/:可执行代码(Python、Bash、JavaScript 等)
  2. references/:参考文档(技术参考、API 文档等)
  3. assets/:静态资源(模板、图像、数据文件等)

⚙️ 配置

基本配置

将以下内容添加到您的 .mydeskbot/config.yaml

yaml
name: 我的 MyDeskBot 配置
version: 0.0.1

skills:
  enabled: true
  autoActivate: true
  directories:
    - ~/.mydeskbot/skills
    - .mydeskbot/skills
  blacklist:
    - experimental-skill
  whitelist: []
  cache:
    enabled: true
    ttl: 300000

配置选项

选项类型默认值说明
enabledbooleantrue启用/禁用技能系统
autoActivatebooleantrue基于上下文自动激活技能
directoriesstring[]["~/.mydeskbot/skills", ".mydeskbot/skills"]搜索技能的目录
blackliststring[][]要排除的技能
whiteliststring[][]要包含的技能(如果为空,允许所有技能)
cache.enabledbooleantrue启用技能缓存
cache.ttlnumber300000缓存生存时间(毫秒)

🛠️ 内置工具

MyDeskBot 提供了几个用于管理技能的内置工具:

1. 列出技能

typescript
// 工具:list_skills
// 描述:列出所有可用技能
// 用法:AI 可以调用此工具来发现可用技能

2. 激活技能

typescript
// 工具:activate_skill
// 描述:激活特定技能
// 参数:skillName (字符串)
// 用法:AI 可以根据上下文激活技能

3. 获取技能资源

typescript
// 工具:get_skill_resource
// 描述:获取技能资源文件内容
// 参数:skillName (字符串), resourcePath (字符串)
// 用法:AI 可以访问技能脚本和资源

4. 搜索技能

typescript
// 工具:search_skills
// 描述:按关键字搜索技能
// 参数:keyword (字符串), limit (数字)
// 用法:AI 可以查找相关技能

5. 按上下文激活技能

typescript
// 工具:activate_skills_by_context
// 描述:根据对话上下文自动激活技能
// 参数:context (字符串)
// 用法:AI 可以自动激活相关技能

🚀 创建您的第一个技能

步骤 1:创建技能目录

bash
# 创建技能目录
mkdir -p .mydeskbot/skills/my-first-skill

步骤 2:创建 SKILL.md

markdown
---
name: my-first-skill
description: 我的第一个 MyDeskBot 自定义技能
license: MIT
compatibility: 需要 Python 3.8+
metadata:
  author: 您的名称
  version: "1.0"
---

# 我的第一个技能

此技能帮助处理特定的开发任务...

## 使用指南

1. 步骤 1:描述任务
2. 步骤 2:使用技能指令
3. 步骤 3:应用结果

## 示例

```python
# 示例 Python 代码
print("使用我的第一个技能")
```

步骤 3:添加脚本(可选)

bash
# 创建脚本目录
mkdir -p .mydeskbot/skills/my-first-skill/scripts

# 创建 Python 脚本
cat > .mydeskbot/skills/my-first-skill/scripts/process.py << 'EOF'
#!/usr/bin/env python3
import json
import sys

def process_data(input_file):
    with open(input_file, 'r') as f:
        data = json.load(f)
    # 在此添加处理逻辑
    return data

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("用法:python process.py <input_file>")
        sys.exit(1)

    result = process_data(sys.argv[1])
    print(json.dumps(result, indent=2))
EOF

步骤 4:添加参考资料(可选)

bash
# 创建参考资料目录
mkdir -p .mydeskbot/skills/my-first-skill/references

# 创建参考文档
cat > .mydeskbot/skills/my-first-skill/references/config.md << 'EOF'
# 配置参考

## 输入格式

```json
{
  "data": "要处理的数据"
}
```

## 输出格式

```json
{
  "result": "处理结果",
  "status": "success"
}
```

EOF

🔄 技能生命周期

1. 加载

MyDeskBot 启动时或技能目录发生变化时自动加载技能。

2. 验证

每个技能都会验证:

  • 正确的 SKILL.md 格式
  • 有效的元数据字段
  • 资源文件可访问性

3. 激活

技能可以通过以下方式激活:

  • 自动:基于对话上下文
  • 手动:通过 AI 工具调用
  • 编程:通过配置

4. 使用

激活后,技能提供:

  • AI 的指令
  • 访问脚本和资源
  • 特定任务的增强能力

🎯 最佳实践

技能设计

  1. 单一职责:每个技能应专注于一个特定任务
  2. 清晰的文档:提供全面的使用说明
  3. 示例:包含实用示例
  4. 错误处理:脚本应优雅地处理错误

性能

  1. 延迟加载:资源仅在需要时加载
  2. 缓存:启用缓存以获得更好的性能
  3. 最小依赖:保持脚本轻量级

安全性

  1. 沙箱执行:脚本在隔离环境中运行
  2. 输入验证:验证所有输入
  3. 权限控制:控制资源访问

📚 示例

示例 1:代码审查技能

markdown
---
name: code-review-assistant
description: AI 驱动的代码审查助手,包含最佳实践
license: Apache-2.0
compatibility: 适用于任何编程语言
metadata:
  author: MyDeskBot 团队
  version: "1.2.0"
---

# 代码审查助手

此技能帮助进行全面的代码审查...

## 审查清单

- [ ] 代码风格和格式
- [ ] 错误处理
- [ ] 性能考虑
- [ ] 安全漏洞
- [ ] 测试覆盖

## 示例

```python
# 审查前
def process_data(data):
    return data * 2

# 审查后进行改进
def process_data(data: List[int]) -> List[int]:
    """通过将每个元素加倍来处理整数列表。"""
    if not data:
        return []
    return [item * 2 for item in data]
```

示例 2:数据库迁移技能

markdown
---
name: database-migration
description: 数据库架构迁移和数据转换
license: MIT
compatibility: PostgreSQL、MySQL、SQLite
metadata:
  author: 数据库团队
  version: "2.1.0"
---

# 数据库迁移助手

此技能帮助进行数据库迁移...

## 迁移步骤

1. 备份现有数据
2. 创建迁移脚本
3. 测试迁移
4. 应用迁移
5. 验证结果

## 示例

```sql
-- 迁移脚本示例
CREATE TABLE users_new (
    id SERIAL PRIMARY KEY,
    email VARCHAR(255) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 数据迁移
INSERT INTO users_new (email, created_at)
SELECT email, created_at FROM users;
```

🔧 高级用法

技能依赖

技能可以在元数据中声明依赖关系:

yaml
metadata:
  dependencies: |
    python>=3.8
    requests>=2.25
    pandas>=1.3

技能版本控制

在元数据中使用语义化版本控制:

yaml
metadata:
  version: "1.2.3" # 主版本.次版本.修订版本

技能测试

在技能目录中创建测试脚本:

my-skill/
├── SKILL.md
├── scripts/
│   └── main.py
└── tests/
    └── test_main.py

🚨 故障排除

常见问题

  1. 技能未加载

    • 检查 SKILL.md 格式
    • 验证目录权限
    • 检查配置设置
  2. 资源无法访问

    • 验证文件路径
    • 检查文件权限
    • 确保正确的资源引用
  3. 激活问题

    • 检查上下文匹配
    • 验证技能兼容性
    • 审查技能元数据

调试命令

bash
# 列出所有已加载的技能
skills list

# 检查技能详细信息
skills show skill-name

# 重新加载技能
skills reload

# 清除技能缓存
skills clear-cache

📖 延伸阅读


准备好增强您的 AI 能力了吗? 立即开始创建您自己的技能并与社区分享!