CodeBuddy Skills 是一种创新的 AI Agent 能力封装机制,本质上是一套“AI Agent 能力包”机制。通过文件目录结构的组织形式,将 Prompt 指令、工作流 SOP、脚本工具和领域知识封装为可复用的模块,使通用大模型能够针对特定任务场景表现出领域专家的能力水平,让通用大模型在特定任务中变成“领域专家”。

核心价值:

  • 降低 AI 应用开发门槛

  • 提升任务处理专业化程度

  • 保证系统安全性和稳定性

  • 支持团队协作和知识沉淀


一、 工作原理:目录即技能


Skills 的设计哲学是“渐进式披露”。它不是一次性把几百行系统提示词塞给模型,而是按需加载,极大节省上下文窗口并提升精准度。

Skill 系统能够:

  • 按需加载:仅当检测到相关任务需求时,才动态注入对应 Skill 资源

  • 智能匹配:通过元数据扫描精准识别适用的 Skill 模块

  • 上下文优化:有效避免模型上下文窗口的无效占用,提升处理精准度

1. 核心机制和组成要素

  • 触发与加载:当用户提出需求(如“分析代码安全”),CodeBuddy 会扫描 Skills 目录,匹配元数据,仅将相关的 SKILL.md和必要资源动态注入模型上下文,而非全量加载。

  • 执行权限:Skill 内可以声明白名单工具(allowed-tools),限制 AI 在该任务下只能使用特定的命令(如 BashRead),防止越权操作。

  • 资源捆绑:除了指令,Skill 目录下可以存放 scripts/(Python/Shell 脚本)、references/(参考文档)、assets/(模板),AI 在执行时会按需读取或执行这些文件。b

Skills 的组成要素:
System Prompt:定义 AI 的角色、行为规范和约束条件
Tools(工具):可调用的能力集合,如文件读写、搜索、终端执行等
MCP 服务:外部扩展服务,通过 Model Context Protocol 连接
Memory(记忆):跨会话持久化的用户偏好和项目信息
Context(上下文):当前环境信息、打开的文件、项目结构等

与 Slash Commands 的区别

维度

Skills

Slash Commands

触发方式

AI 自动识别任务并调用

用户手动输入/cmd

适用场景

复杂 SOP、需结合脚本的专家任务

简单的快捷操作、单步任务

上下文

支持独立 SubAgent 上下文隔离

通常在当前会话上下文

2、 执行流程架构

当用户提出需求(如"代码安全分析")时,系统执行以下流程:

接收输入:用户提问 + 环境上下文 + 附件信息
意图理解:分析用户需求,判断需要哪些工具和信息
规划执行:制定工具调用计划,尽可能并行执行
迭代推理:根据工具返回结果,评估质量,决定下一步
生成输出:代码修改、回答问题、或请求更多信息

. 工具调用机制
Skills 通过 Function Calling 模式工作:

用户消息 → LLM 推理 → 生成工具调用 → 执行工具 → 获取结果 → 继续推理 → 最终回复

关键特性:
并行调用:无依赖关系的工具可同时执行
顺序调用:有依赖关系时按序执行(B 需要 A 的结果)
迭代调用:根据中间结果动态调整后续策

二、开发实践


1. 自定义 Skill 的基本结构

1. 环境与目录结构

Skills 支持项目级.codebuddy/skills/)和用户级~/.codebuddy/skills/)两种存放位置。创建如下结构:

# 项目级 Skill(跟随 Git 仓库共享)
mkdir -p .codebuddy/skills/code-reviewer
cd .codebuddy/skills/code-reviewer
touch SKILL.md

Skill 目录支持模块化资源组织:

skill-name/
├── SKILL.md              # 核心配置文件
├── scripts/              # 执行脚本(Python/Shell)
├── references/           # 参考文档
└── assets/               # 模板文件

2、编写核心 SKILL.md

这是 Skill 的“灵魂”,采用 YAML Frontmatter + Markdown 指令​ 格式:

SKILL.md通常包含以下配置, 元数据(Frontmatter)的完整语义:


# skill 定义示例
name: "my-custom-skill"
description: "技能描述"
system_prompt: |
  你是一个专门处理 XXX 的助手...
tools:
  - read_file
  - edit_file
  - terminal
  - grep_search
mcp_servers:
  - name: "knowledge"
    tools: ["knowledgebase_search", "conditional_search"]

范例:

---
name: code-reviewer
description: 专用于 Go 项目的代码审查专家,检查安全与性能问题。
allowed-tools: Read, Bash
context: fork  # 可选:在独立子Agent中运行,避免污染主会话
---

# 代码审查专家

## 核心职责
你是一个资深 Go 开发专家。当用户请求代码审查时,请严格遵循以下 SOP:

1.  **扫描目标**:首先确认用户指定的目录或文件(默认扫描当前目录 `.`)。
2.  **静态分析**:优先使用 `go vet` 和 `staticcheck` 进行基础检查。
3.  **安全扫描**:针对 HTTP 路由检查是否有 SQL 注入风险、硬编码密码等。
4.  **输出报告**:生成 Markdown 格式报告,包含【问题描述】、【风险等级】、【修复建议】。

## 可用脚本
如果用户需要深度分析,你可以执行 `scripts/deep-scan.sh` 脚本。

调试与生效

  • 生效检查:在 CodeBuddy 对话框中输入 list skills,查看你的 code-reviewer是否被加载。

  • 手动触发:输入 /code-reviewer或直接说“请用 code-reviewer 技能检查当前代码”。

  • 自动触发:当你说“帮我 review 一下这段代码”,AI 会自动识别并启用该 Skill。

2. System Prompt 设计原则

角色定义:明确 AI 的身份和专业领域
行为约束:定义什么可以做、什么不能做
输出格式:规范回复的格式和风格
工具使用规则:指导何时、如何使用工具
错误处理:定义异常情况的处理策略

3. MCP 服务集成

MCP(Model Context Protocol)是扩展 Skills 能力的关键机制:

4. Memory 机制

Memory 用于跨会话保持一致性:

创建记忆 → 存储用户偏好/项目规范
更新记忆 → 信息变化时修正
删除记忆 → 用户纠正或信息过期

适合存储的内容:
用户编码偏好(缩进、命名风格)
项目特定规范(部署流程、目录约定)
长期角色设定

5. 实践总结


并行优先:多个独立信息收集操作应并行执行
渐进式探索:先广后深,从宽泛搜索到精确定位
上下文感知:充分利用环境信息和已打开文件
最小修改原则:只修改必要的代码,不改动无关部分
验证闭环:修改后通过 lint/test 验证正确性
错误恢复:工具失败时切换替代方案(最多重试 3 次

三、开发进阶:嵌入脚本与规则

你可以在 SKILL.md中直接编写 JS 逻辑(供 AI 理解规则),或在 scripts/目录下放置可执行文件。

1、示例:在 SKILL.md 中嵌入业务规则

## 业务校验规则
请使用以下 JavaScript 逻辑校验订单金额的合规性:

javascript

function validateOrder(order) {

if (order.amount > order.limit) {

return { risk: 'HIGH', reason: '金额超限' };

}

// ... 更多规则

}

AI 虽然不会直接执行这段 JS,但会理解并遵循你定义的逻辑结构去分析数据。

结语


CodeBuddy Skills 通过声明式的目录结构、动态的上下文管理和模块化的资源组织,为 AI Agent 的能力扩展提供了标准化、可维护的解决方案。从简单的脚本自动化到复杂的企业工作流,该框架为构建智能、可靠、安全的 AI 辅助工具提供了完整的工程实践路径。

核心价值:

  • 降低 AI 应用开发门槛

  • 提升任务处理专业化程度

  • 保证系统安全性和稳定性

  • 支持团队协作和知识沉淀

通过遵循本文提出的架构设计和开发实践,开发团队可以高效构建符合业务需求的 AI 增强工具,推动研发效能持续提升。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐