ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

CAMEL Skill Toolkit:以 SKILL.md 定义数据分析师技能,为 ChatAgent 注入结构化数据分析能力

2026/9/14 17:55:40 拓冰建站 浏览量
CAMEL Skill Toolkit:以 SKILL.md 定义数据分析师技能,为 ChatAgent 注入结构化数据分析能力 CAMEL Skill Toolkit以 SKILL.md 定义数据分析师技能为 ChatAgent 注入结构化数据分析能力【免费下载链接】camel CAMEL: The first and the best multi-agent framework. Finding the Scaling Law of Agents. https://www.camel-ai.org项目地址: https://gitcode.com/GitHub_Trending/ca/camel本文以 CAMEL 仓库中>--- name:>def analyze(data): Analyze data and return statistics. if not data: return {error: No data provided} return { count: len(data), sum: sum(data), mean: sum(data) / len(data), min: min(data), max: max(data), }技能目录下附带scripts/正是 Skill 机制推荐的做法之一——SkillToolkit生成的工具描述中明确写着Ifscripts/exist, use available execution tools (terminal, code runner) to run them instead of rewriting code即优先运行技能自带的脚本而不是让 LLM 现场重写代码保证统计口径一致且可复现。3. Output Format强制输出模板保证结果可解析技能正文还规定了分析结果的固定结构## Data Overview - Total records: X - Columns: [list] ## Key Statistics | Metric | Value | |--------|-------| | ... | ... | ## Insights - Finding 1 - Finding 2这个模板的价值在于结构化产出Data Overview回答数据长什么样记录数、列清单Key Statistics用 Markdown 表格承载数值结果Insights以要点形式给出结论。当多个技能串联时例如data-analyzer的产出再交给report-writer加工成正式报告上游输出格式固定下游才能稳定消费。4. Guidelines统计可信度准则技能最后给出三条执行准则Always validate data types before analysis—— 分析前先校验数据类型避免对字符串列做数值统计Handle missing values explicitly—— 显式处理缺失值而不是默认跳过Report confidence levels for statistical claims—— 对统计性结论要报告置信水平防止过度解读。这三条准则对应的是统计分析中最常见的三类错误类型误用、缺失值静默丢弃、结论置信度缺失属于对 LLM 输出质量的护栏。二、技能如何被发现SkillToolkit 的发现与作用域机制SKILL.md 写好后需要SkillToolkit才能被 Agent 使用。SkillToolkit 继承自BaseToolkit构造参数如下见 camel/toolkits/skill_toolkit.py参数类型默认值说明working_directoryOptional[str]Path.cwd()技能扫描的repo 作用域根目录data-analyzer即位于其下的.camel/skills/allowed_skillsOptional[Set[str]]None不限制白名单集合仅暴露集合内的技能可用于权限收敛timeoutOptional[float]None继承自 BaseToolkit 的工具执行超时三级作用域与同名覆盖规则_skill_roots 定义了技能扫描的根目录按优先级从高到低依次为优先级作用域扫描路径1repoworking_directory/.camel/skills与working_directory/.agents/skills2user~/.camel/skills与~/.config/camel/skills3system/etc/camel/skills_scan_skills 用rglob(SKILL.md)递归扫描每个根目录同名的技能由优先级更高的作用域胜出先发现者保留后出现的同名技能被跳过。这意味着项目级技能可以覆盖用户级同名技能而用户级又能覆盖系统级形成了类似配置文件的分层覆盖模型。此外相对根目录路径中含隐藏目录以.开头的中间目录的SKILL.md会被 _is_hidden_path 过滤避免扫描到缓存、备份等目录中的残留文件。扫描结果缓存在_skills_cache中首次访问时扫描一次之后命中缓存需要重新扫描时可调用clear_cache()清空缓存。渐进式加载Progressive Disclosure两个工具而非一次性灌入get_tools 只暴露两个工具list_skills仅返回每个技能的name、description、path、scope元数据不加载正文成本极低load_skill按名称加载一个或多个技能接受str或List[str]返回技能正文并附上技能目录下的文件清单多个技能之间以---分隔实现见 load_skill。关键在于load_skill的工具描述不是静态的get_tools中会调用 _build_description 动态生成描述把当前会话可用的技能列表名称、描述、路径、附加文件以 XML 风格块available_skills...skill...和 Markdown 清单两种形式拼入并附上使用守则——触发规则用户点名或任务匹配描述时加载、渐进式加载按需读取references/而不全量灌入、多技能协同选最小覆盖集并说明顺序、上下文卫生长段落摘要而非粘贴全文、失败回退技能不可用时说明问题并继续。这种先列目录、再按需加载正文的设计控制住了上下文开销技能正文如>from camel.agents import ChatAgent from camel.models import ModelFactory from camel.toolkits import SkillToolkit, TerminalToolkit from camel.types import ModelPlatformType, ModelType # Set working directory to this example folder so skills are discovered EXAMPLE_DIR Path(__file__).parent.resolve() os.chdir(EXAMPLE_DIR) model ModelFactory.create( model_platformModelPlatformType.OPENAI, model_typeModelType.GPT_5_2, ) # Create skill toolkit - discovers skills from .camel/skills/ skill_toolkit SkillToolkit(working_directorystr(EXAMPLE_DIR)) # Create terminal toolkit - enables script execution from skills terminal_toolkit TerminalToolkit(working_directorystr(EXAMPLE_DIR)) # Create agent with both skill and terminal tools agent ChatAgent( system_messageYou are a helpful assistant that uses skills and can execute scripts., modelmodel, tools[*skill_toolkit.get_tools(), *terminal_toolkit.get_tools()], )组装要点有三工作目录必须包含技能根。SkillToolkit(working_directorystr(EXAMPLE_DIR))使得data-analyzer所在的.camel/skills/data-analyzer/落在 repo 作用域内可被rglob到。示例同时执行了os.chdir(EXAMPLE_DIR)让终端工具与文件路径解析基于同一目录。SkillToolkit 与 TerminalToolkit 配合。技能只声明做什么scripts/中的脚本真正执行靠TerminalToolkit完成例如运行 analyze.py 对[10, 20, 30, 40, 50]计算统计量。TerminalToolkit定义在 camel/toolkits/terminal_toolkit/terminal_toolkit.py两者都以get_tools()返回FunctionTool列表后合并进ChatAgent的tools参数。技能白名单可选。如果只想让 Agent 使用data-analyzer而不暴露report-writer、code-reviewer可传allowed_skills{data-analyzer}_get_skills会按白名单过滤。示例脚本演示了四种典型交互均在main()中通过agent.reset()隔离上下文场景用户指令Agent 行为路径1. 列举技能What skills are available?调用list_skills返回 3 个技能的名称与描述2. 加载技能Load the>cd examples/toolkits/skill_toolkit_example python example.py示例中ModelType.GPT_5_2仅为默认演示配置可按需替换为任意ModelFactory支持的模型平台与类型。四、编写自定义技能的可复用清单以data-analyzer为模板编写一个新的技能需要满足以下约束每一条都能从 SkillToolkit 的实现中得到印证目录位置放在working_directory/.camel/skills/skill-name/下根文件名为SKILL.md大小写敏感扫描模式是精确的rglob(SKILL.md)frontmatter 合规首行---包含字符串类型的name与descriptionname应全局唯一以免被更高优先级作用域的同名技能遮蔽description 写好触发语义采用做什么 Use when 什么场景的句式因为它直接进入工具描述是 LLM 的触发依据正文给出可执行的 Workflow编号步骤、明确的统计量/检查项清单像 contenteditable="false">【免费下载链接】camel CAMEL: The first and the best multi-agent framework. Finding the Scaling Law of Agents. https://www.camel-ai.org项目地址: https://gitcode.com/GitHub_Trending/ca/camel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考