AI Agent—Tools Skill
目录二、Tool 与 Skill 的关联四层关系1. Function Calling 层模型指挥工具执行2. 标准化封装层Skill 是 Tool 的“说明书 编排”3. 安全沙箱层Skill 在围栏内Tool 受权限约束4. 架构分层业务 Skill 编排通用 Tool三、Skill 总结定义核心特征与 Tool 的关系总图一句话总结四、skill模板1、Skill 目录结构模板2、SKILL.md 结构模板3、编写 Skill 的检查清单五、Skill案列—基金当前状态分析场景目录结构SKILL.md完整案例输出模板一、Tool 与 Skill 的本质区别维度Tool工具Skill技能定义工具和接口是可调用的功能技能和能力是能完成某件事的整套流程粒度原子能力单个函数/API编排后的能力多步流程类比插头、模块、API流程图、SOP、作业手册职责执行具体动作判断意图、选工具、组织步骤、产出结果一句话Tool 回答“能做什么”Skill 回答“遇到这类问题该怎么做”。二、Tool 与 Skill 的关联四层关系1. Function Calling 层模型指挥工具执行用户提问 → 模型判断 → 生成调用指令 → 外部工具执行 → 结果回传 → 模型继续推理模型指挥家负责意图识别、选工具、组参数、整合答案Tool专家负责查数据、算结果、跑脚本等“重活”Skill模型把上述闭环固化成可复用的流程能力以“查深圳天气”为例步骤角色内容1用户“今天深圳天气怎么样”2Skill/模型决定调用get_weather(city深圳)3Tool返回{天气:晴,气温:28°C}4Skill/模型生成自然语言回答Skill 会选工具 会填参数 会解释结果Tool 真正拿到数据的函数。2. 标准化封装层Skill 是 Tool 的“说明书 编排”Anthropic Agent Skills 的思路是把 Tool 封装进标准化的SKILL.md。一个 Skill 通常包含组成部分作用触发条件何时启用关键词、场景、问题类型执行步骤先做什么、再做什么解析 → 调用 → 处理 → 输出代码/脚本底层 Tool 的具体实现Tool代码 ──封装──▶ SkillSKILL.md↑ ↑实现能力 调用逻辑 触发条件 执行步骤价值模块化、跨场景复用、降低 Agent 系统维护成本。3. 安全沙箱层Skill 在围栏内Tool 受权限约束┌─────────────────────────────────────┐│ 主机系统 ││ ┌─ Agent 执行区Skill 运行 ─┐ ││ │ 代码执行、流程编排 │ ││ └──────────┬──────────────────┘ ││ │ 白名单放行 ││ 文件系统 / 数据库 / 外部网络Tool │└─────────────────────────────────────┘Skill在隔离区内按流程执行Tool对外部资源的访问入口沙箱用最小权限、资源上限、可观测与急停保证 Skill 调用 Tool 时安全、稳定、可溯4. 架构分层业务 Skill 编排通用 Tool以“缺陷分析 Skill 架构”为例Channel 层业务 Skilldesktop / recents / animation / performance / stability↓Router Agent 层路由代理defect-analysis-router定义必要流程、解耦业务与底层↓Common 层通用 Tool/能力log-timestamp-location / 知识库检索 / 日志预处理 ...层级角色示例Channel Skill面向业务的分析能力流畅性分析、稳定性分析Router流程编排与路由决定调用哪些通用能力、顺序如何Common Tool可复用的底层能力日志定位、预处理、检索业务 Skill 不直接绑死底层 Tool 名称通过 Router 解耦便于扩展和维护。三、Skill 总结定义Skill 是一种标准化的、可复用的 Agent 能力单元把“何时用、怎么用、按什么顺序做、如何输出”写清楚并在安全边界内编排一个或多个 Tool 完成特定任务。核心特征流程性不是单次函数调用而是一套完整步骤触发性有明确的启用时机关键词、场景、问题类型编排性会选择、组合、串联多个 Tool标准化常用SKILL.md等形式便于模块化与复用安全可控在沙箱内运行遵循最小权限与可观测分层解耦业务 Skill 在上通用 Tool 在下Router 在中间与 Tool 的关系总图一句话总结Tool 是 Agent 的“手和眼”可调用的原子能力Skill 是 Agent 的“脑和手顺”知道什么问题该启动、按什么步骤调用哪些 Tool、如何安全地完成并交付结果。没有 ToolSkill 无法触达真实世界没有 SkillTool 只是零散接口无法稳定、可复用地解决复杂任务。四、skill模板1、Skill 目录结构模板skill-name/├── SKILL.md # 必需 — 主流程与触发条件├── reference.md # 可选 — 详细规范、关键词表├── examples.md # 可选 — 输入/输出样例└── scripts/ # 可选 — 底层 Tool 脚本├── analyze.py└── validate.sh存放位置参考cursor类型路径作用域个人 Skill~/.cursor/skills/skill-name/所有项目可用项目 Skill.cursor/skills/skill-name/当前仓库共享不要写入~/.cursor/skills-cursor/该目录为 Cursor 内置 Skill 专用。2、SKILL.md 结构模板---name: your-skill-namedescription: [WHAT] 本 Skill 做什么能力描述。[WHEN] 何时启用关键词、场景、问题类型。建议第三人称包含触发词便于 Agent 自动发现。disable-model-invocation: true---# Skill 名称## 核心定位- **输入**……- **输出**……- **约束**安全边界、目录规范、禁止事项- **Tool 依赖**本 Skill 会调用的工具/脚本/MCP## 激活条件Trigger当用户指令包含以下任一情况时启用- 关键词 A- 关键词 B- 问题类型 xxx## 工作流程Workflow按顺序执行不可跳步### 步骤 1信息收集- 读取 xxx- 若缺失 → 走分支 A否则 → 步骤 2### 步骤 2Tool 调用- 调用 scripts/analyze.py 或 MCP Tool- 记录原始结果### 步骤 3结果整合- 按输出模板生成结论- 写入 output/result.md## 条件分支Conditional| 条件 | 动作 ||------|------|| 日志缺失 | 输出「审核不通过」列缺失项 || 非本域问题 | 转派至 xxx Skill || 重复单 | 引用历史结论 |## 输出模板Output Templatemarkdown# [标题]## 结论- 推荐操作- 核心原因## 详细分析……3、编写 Skill 的检查清单name小写 连字符≤ 64 字符description含 WHAT WHEN 触发词第三人称工作流程步骤清晰有分支与终止条件Tool 依赖脚本路径、参数、何时执行写清楚输出模板固定格式便于下游 Skill 消费示例至少 1 组完整输入 → Tool 结果 → 最终输出SKILL.md 正文 500 行细节放reference.md路径用/不用\五、Skill案列—基金当前状态分析场景用户问「帮我看看易方达蓝筹精选这只基金现在怎么样」Agent 不应只凭训练数据猜而应通过 Skill 规定先取数 → 再算指标 → 再按模板出结论。目录结构fund-status-analysis/├── SKILL.md├── reference.md # 指标口径、风险等级定义├── examples.md # 更多输入输出样例└── scripts/├── fetch_fund_data.py # Tool拉取基金数据└── calc_indicators.py # Tool计算涨跌幅、波动等SKILL.md完整案例---name: fund-status-analysisdescription: 分析单只或多只基金的当前状态包括净值、涨跌幅、阶段收益、最大回撤、风险等级与简要投资建议。当用户询问基金怎么样、基金现状、净值分析、持仓诊断、或提到具体基金名称/代码时使用。---# 基金当前状态分析 (Fund Status Analysis)## 核心定位- **输入**基金名称或代码如 005827、可选对比基准如沪深300- **输出**output/fund_status_report.md- **Tool 依赖**- scripts/fetch_fund_data.py — 获取净值、规模、经理等基础数据- scripts/calc_indicators.py — 计算阶段收益、回撤、波动率- Shell — 格式化与校验- **约束**- 数据以 Tool 返回为准不得编造净值- 结论须标注数据日期- 仅作信息分析不构成投资建议免责声明必写## 激活条件- 「这只基金现在怎么样」- 「帮我分析一下 xxx 基金」- 「005827 当前状态」- 「对比这几只基金的表现」## 工作流程### 步骤 1解析用户意图提取- 基金代码/名称必填- 分析维度默认近1周/1月/3月/1年 最大回撤- 对比对象可选默认无若未提供基金代码1. 先按名称模糊匹配2. 若匹配到多只 → 列出候选请用户确认3. 若 0 匹配 → 终止reason 未找到对应基金### 步骤 2调用 Tool 获取数据bashpython scripts/fetch_fund_data.py \--code 005827 \--fields nav,scale,manager,industry \ output/fund_raw.json检查若 API/数据源失败 → 重试 1 次仍失败 → 输出「数据暂不可用」不生成分析结论步骤 3调用 Tool 计算指标python scripts/calc_indicators.py \--input output/fund_raw.json \--periods 7d,30d,90d,365d \ output/fund_metrics.json计算项各阶段涨跌幅近1年最大回撤近90日波动率可选同类排名若数据源支持步骤 4生成状态判断按规则映射「当前状态标签」条件状态标签近1月 0 且回撤 10%偏强近1月 -5% 或回撤 15%偏弱其余震荡风险等级回撤 ≤ 10% → 中低10% 回撤 ≤ 20% → 中回撤 20% → 偏高步骤 5输出报告写入output/fund_status_report.md严格使用输出模板。输出模板# {基金名称}{基金代码}当前状态分析 数据日期{data_date} 免责声明以下内容基于公开数据整理仅供参考不构成投资建议。## 一、核心结论- **当前状态**{偏强/震荡/偏弱}- **最新净值**{nav}{nav_date}- **近1月涨跌**{pct_30d}- **近1年最大回撤**{max_drawdown}- **风险等级**{risk_level}## 二、关键指标| 指标 | 数值 ||------|------|| 近1周 | {pct_7d} || 近1月 | {pct_30d} || 近3月 | {pct_90d} || 近1年 | {pct_365d} || 基金规模 | {scale} || 基金经理 | {manager} |## 三、简要解读{2~4 句自然语言解读表现、波动、适合人群}## 四、关注点- {关注点1}- {关注点2}## 五、下一步建议非投资建议- 若需深度分析可补充「持仓行业分布」「与基准对比」- 若需对比可提供其他基金代码进行横向比较