博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Agent 与 Skill 的本质区别

Posted on 2026-08-03 10:10  steve.z  阅读(67)  评论(0)    收藏  举报

Agent 与 Skill 的本质

核心结论:Agent 和 Skill 在文件层面都是 .md 文本,但系统赋予它们的“权责”和“调度方式”存在天壤之别。Skill 是“被注入的静态手册”,Agent 是“被隔离的动态执行体”。


一、定义:它们到底是什么?

  • Skill(技能):一份静态的“操作说明书”。它只包含文本指令、示例和准则,没有任何工具调用权限,本身不能执行任何代码或命令。
  • Agent(智能体):一个拥有独立上下文、独立工具集和独立模型配置的 AI 执行实例。它被调用时会在后台独立运行,完成复杂任务后只返回结果。

二、它们看起来都是一个 markdown 文件而已

从文件后缀和书写格式来看,它们确实都是 Markdown 文件。 你可以在里面写步骤 1、2、3,告诉系统“要做什么、怎么做”。

但系统的读取逻辑完全不是看正文,而是看文件头部(Frontmatter)的声明。


三、本质区别:系统如何识别与调度

1. 文件头部的“权限清单”不同

类型 Frontmatter(YAML 头)必须包含 是否允许声明工具
Skill 仅有 namedescription 严禁声明 toolsmodel
Agent 必须包含 toolsmodel 必须显式声明可用工具列表
  • Skill 的头
    ---
    name: sql-reviewer
    description: 审查 SQL 语句规范
    ---
    
  • Agent 的头
    ---
    name: sql-reviewer-agent
    tools: ["Read", "Grep", "Bash", "Write"]
    model: sonnet
    ---
    

这意味着:系统给 Agent 授予了“动手权限”(调用 API 读写文件、执行命令),而 Skill 没有权限声明,系统根本不会为其分配任何工具调用能力。


2. 调度模式截然不同(最核心的本质)

这是你在文本上看不出来的底层逻辑:

维度 Skill(技能) Agent(智能体)
调度方式 内联注入:将 SKILL.md 内容直接粘贴到当前主对话上下文 独立实例化:在后台新建一个独立的 AI 会话逻辑单元
上下文隔离 占用主窗口的 Token,永驻主对话 拥有独立上下文窗口,干完活立即销毁
由谁执行 主 Agent 读指令后亲自执行 自己(新 AI 实例)独立执行

3. “新上下文(Context)”在技术层面到底是什么?

请务必注意:它不是操作系统层面的新进程(Process),也不是新线程(Thread)。

在技术底层,它只是一个逻辑会话对象(Logical Session Object)——即服务器内存中一张带有独立 session_id 的“便签纸”,对应一次或多次独立的 HTTPS API 请求事务

  • 本地客户端(Claude Code / Copilot)不会 fork 子进程。
  • 云端 GPU 服务器不会开辟新的 CPU 线程,而是利用异步事件循环维护这个 session_id 的状态。
  • 这个“窗口”包含独立的系统提示词、独立的工具调用循环状态机,以及清零的 Token 计数。
  • 生命周期极短:Agent 返回结果后,该 session_id 即被标记为可回收(TTL 仅几分钟)。

最贴切的类比:它就像浏览器中新开的 “独立标签页(Tab)”——和主页面隔离,有自己的浏览历史和缓存,关闭后立即释放内存。


四、它们之间的关系

Agent 可以引用并加载 Skill 作为自己的内置知识库。

例如,Agent 的执行协议中写道:

“第一步,加载 security-checklist Skill 获取最新安全规则;第二步,应用这些规则进行审查。”

这样:

  • Agent 专注“执行流程”(拉取代码、生成报告);
  • Skill 专注“专业知识”(具体的漏洞规则列表)。

公司安全规范更新时,只需修改 Skill 文件,所有依赖它的 Agent 便自动获得新能力。


五、如何创建 Agent 和 Skill(实操速查)

各工具存放路径

工具 Skill 项目级路径 Agent 项目级路径 用户级路径
Claude Code .claude/skills/ .claude/agents/ ~/.claude/
GitHub Copilot CLI .github/skills/ .github/agents/ ~/.copilot/
OpenAI Codex .agents/skills/ .agents/agents/ ~/.agents/

Skill 文件示例(SKILL.md

---
name: commit-message-writer
description: 按 Conventional Commits 规范生成提交信息。当用户要求写 commit 时使用。
---

# 提交信息生成器
1. 执行 `git diff --staged` 获取暂存变更
2. 分析变更类型(feat/fix/docs 等)
3. 生成格式:`<type>(<scope>): <subject>`
4. 复杂变更需补充 body 说明原因

Agent 文件示例(my-agent.agent.md

---
name: pr-reviewer
description: 审查 PR 代码的安全与性能问题。
tools: ["Read", "Grep", "Write", "Bash"]
model: sonnet
---

# PR 审查流程
1. 执行 `git diff main...HEAD` 获取变更
2. 检查硬编码密钥:`grep -iE "password|secret|token"`
3. 检查 SQL 注入:查找字符串拼接的 SQL 语句
4. 生成 `REVIEW_REPORT.md`,列出阻断性问题与修复建议
5. 如发现严重漏洞,直接自动修复并提交

六、如何快速区别 skill 和 agent

description 的是教材(Skill)——只动嘴,不动手;
tools 的是包工头(Agent)——自己开新窗口,独立干脏活累活。

它们生而平等(都是 .md),但系统赋予的“调度权限”和“运行生命周期”天差地别。理解这一点,你就能在设计系统时做出精准的技术决策:固定的流程做成 Skill,复杂耗时的苦力活封装成 Agent。