做 AI Agent 相关项目时,很多团队会把大量精力放在智能体的“骨架”上——规划、记忆、工具调用、模型接入,这些能力固然重要,但真正让智能体从“能用”变成“好用”的,往往是一套可复用、可编排、可维护的技能(Skill)体系。最近在梳理开源智能体方案时,我重点研究了开放原子基金会旗下的 Hermes Agent 体系。这篇文章就来完整拆解一下 Hermes Skill 的定位、安装方式以及如何编写一个可运行的技能包。
如果你正准备基于开源方案做智能体的私有化部署,或者在为团队内部的 AI 助手设计技能管理规范,本文提到的目录结构、配置思路、常见排错方法都可以直接参考。整体内容偏工程实践,新手可以按顺序阅读,有经验的开发者可以直接跳到第 3、4 节看安装和技能编写。
1. 什么是 Hermes Skill
1.1 Hermes 是什么
先说 Hermes 本身。Hermes 是开放原子基金会开源社区中的一个智能体项目,也被称为 Hermes Agent。它不是一个简单的聊天机器人,而是一个具备规划、执行、总结能力的智能代理系统。用户可以像在日常对话一样向它描述目标,它会结合本地的知识库、可用的工具链、外部 API 以及多模态的文件解析能力,把任务拆解成若干步骤,再逐步执行并返回结果。
这类思路在很多商业产品中已经出现过,但 Hermes 的一个特点是“可私有化部署”。也就是说,数据链路、模型调用、知识库、技能包都可以跑在自己的服务器或者本地环境里,而不是必须依赖某个云平台。对于企业内部有敏感数据、有合规要求、需要定制业务 Agent 的场景来说,这一点很有吸引力。
另外,Hermes 的交互入口并不仅限于命令行。社区发布的发行包中通常包含桌面客户端,例如 Windows 下的 exe 程序,也有独立的命令行交互方式。用户可以在客户端界面中上传 PDF、Word、PPT、Excel、图片、视频等文件,让智能体解析内容;也可以在对话中触发工具调用,让智能体操作外部系统。官方仓库里还提供了多个平台辅助系统,比如:
- 基础辅助系统(emily)
- 终端辅助系统(helper)
- 微信辅助系统(wechat)
- Windows 辅助系统(win-assist)
这些辅助系统本身也是围绕“技能”组织起来的。
1.2 Skill 在 Hermes 中扮演什么角色
Skill 这个词直译是“技能”。在 Hermes 的语境里,Skill 不是一段写死的 if-else 逻辑,而是一套可以被智能体加载、识别、调用和编排的能力单元。一个 Skill 通常包含以下内容:
- 对能力用途的描述。
- 触发条件或触发关键词。
- 给大模型看的指令说明。
- 运行脚本、配置文件、Prompt 模板等资源。
- 必要的元信息,例如名称、版本、作者、依赖。
简单理解:Hermes 主程序是一个“大脑”,负责理解用户意图、规划任务、调度模型。而 Skill 是“手和脚”,提供具体执行能力。大脑知道该调用哪个 Skill,Skill 负责把结果做出来。
这种设计的好处很明显。假设你希望智能体能帮你整理代码仓库的提交记录、生成周报、格式化 JSON、查询数据库、操作 Excel 表格,如果没有 Skill 机制,每次都要修改主程序代码,逻辑耦合会非常严重。有了 Skill,新增一种能力只需要新增一个技能包,主程序通过约定的协议自动发现并加载即可。项目的可扩展性、可维护性、协作效率都会提升。
1.3 Skill 与插件、工具、工作流的区别
很多同学第一次接触 Hermes Skill 时会把它和“插件”“工具”混为一谈。这里做一个简单区分:
| 概念 | 定位 | 典型例子 |
|---|---|---|
| Tool(工具) | 单个可执行的原子能力 | 调用百度搜索、执行一段 Python、读取一个文件 |
| Skill(技能) | 面向某个场景的能力组合,可能包含多个工具调用和指令 | 一键生成项目周报、自动分析 Excel 并输出结论 |
| Plugin(插件) | 更多指主程序层面的能力扩展机制 | 播放器插件、IDEA 插件、浏览器插件 |
| Workflow(工作流) | 预先编排好的固定流程,侧重顺序和条件分支 | 每天早上定时抓取数据,再发送到微信群 |
从粒度上看,Skill 比 Tool 更大,比完整的 Workflow 更轻。Skill 内部可以调用 Tool,也可以直接调用模型。你可以把 Skill 理解为“面向任务场景封装好的能力模块”。
对于团队来说,Skill 机制还能带来一个实际收益:能力沉淀。今天你让智能体解决了一个“读取销售数据表并生成可视化报告”的问题,只要把对应的 Skill 整理好,团队成员以后都可以复用这套能力,而不需要每次重新描述需求、重新调试代码。这种组织方式对知识资产的沉淀很有价值。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与版本说明
2.1 基础环境要求
安装 Hermes Skill 之前,需要先准备一套能运行 Hermes 主程序的环境。以当前开源社区常见的部署方式为例,基础环境大致如下:
- 操作系统:Windows 10/11、Linux(Ubuntu 20.04 及以上)、macOS。
- 编程语言:Python 3.10 或更高版本,部分辅助模块可能会用到 Node.js。
- 版本管理:Git,用于克隆开源仓库和版本切换。
- 模型服务:OpenAI 兼容接口或其他支持的大模型服务,需要准备 API Key。
- 命令行工具:建议使用 Windows Terminal、PowerShell 7、iTerm2 或 Linux 下的 bash。
需要注意,开源项目的依赖和版本更新速度比较快,上述版本只是常见组合,不代表官方唯一支持的环境。安装前务必以仓库 README 和官方文档中写明的版本要求为准。如果你所在的团队已经维护了一套内部模型网关,那么只要接口兼容 OpenAI 格式,一般也可以直接接入。
2.2 获取 Hermes 相关仓库
Hermes 主项目通常托管在开放原子基金会相关的代码托管平台上。获取代码最直接的方式是使用 Git:
bash复制git clone https://openatomworkspace.sanduspace.com/opensource/openatom-hermes/hermes-agent.git
cd hermes-agent
如果你的网络环境无法直接访问该域名,也可以关注社区后续发布的镜像地址或发行包。部分版本会直接提供打包好的可执行文件,不需要通过源码运行。对于只想试用 Skill 机制、不想折腾环境的用户,优先推荐下载官方发行包。
克隆完成后,建议先查看项目目录结构,了解仓库里有哪些模块。
bash复制ls -la
正常情况下,你会看到 README、文档目录、源码目录、配置示例以及技能目录。具体的顶层目录名可能随版本变化,但通常都会包含“skill”“docs”或“example”相关的文件夹,说明该仓库本身很重视技能体系的示例。
2.3 项目目录结构
为了更好地理解后续内容,这里以一个典型的 Hermes Agent 项目结构为例:
text复制hermes-agent/
├── docs/ # 项目文档
├── src/ # 主程序源码
├── skills/ # 技能包目录
│ ├── example-skill/
│ ├── helper/
│ └── win-assist/
├── config/ # 配置文件示例
├── scripts/ # 辅助脚本
├── requirements.txt # Python 依赖
└── README.md
如果你的项目结构不是这样,不必太担心,开源项目在快速迭代期往往会调整目录组织方式。关键是找到“技能包目录”在哪里,以及主程序通过什么方式扫描技能包。这部分信息在仓库文档里通常会有说明。接下来安装 Skill 时,我们实际上要做的就是把技能包放到正确的位置,并确认主程序能扫描到它。
3. Hermes Skill 安装与接入
3.1 安装 Hermes 主程序
在安装 Skill 之前,先确保 Hermes 主程序能正常运行。如果你使用的是源码方式,建议先创建独立的 Python 虚拟环境,避免依赖污染系统环境。
以 Linux/macOS 为例:
bash复制cd hermes-agent
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Windows 环境下激活虚拟环境的命令略有不同:
bash复制cd hermes-agent
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
主程序安装完成后,你可能还需要准备模型配置。以 OpenAI 兼容接口为例,常见做法是在环境变量中设置 API Key:
bash复制export OPENAI_API_KEY="sk-xxxx"
也可以参考项目里的配置文件示例,创建一份本地的配置文件,把模型名称、Base URL、API Key 都写进去。这时需要注意一个工程细节:不要把 API Key 硬编码到技能包里,技能包是可能被分发给团队成员的,密钥应该放在主程序的配置或环境变量中。
如果你希望验证主程序是否安装成功,可以运行项目自带的启动命令,或者执行一个最简单的对话请求。只要能收到模型返回,就说明主流程已经通了。此时,再去研究 Skill 的安装会轻松很多。
3.2 安装辅助系统 Skill
Hermes Agent 的技能体系中有一个重要分类:辅助系统 Skill。这些 Skill 不是给某一个业务场景做的,而是为了增强智能体在特定平台上的生存能力。
典型例子包括:
- 基础辅助系统:负责身份设定、通用行为准则、对话风格。
- 终端辅助系统:让智能体掌握执行命令、读取目录、管理文件等终端能力。
- 微信辅助系统:让智能体能够对接微信生态,处理群消息和自动回复。
- Windows 辅助系统:让智能体理解 Windows 系统环境,支持窗口管理、文件操作等能力。
安装辅助系统 Skill 的方式,取决于技能包的分发形式。如果技能包直接在仓库里,那么克隆仓库后就可以直接使用;如果技能包是独立目录,可能需要复制到主程序指定的 skills 目录中。
以手动安装一个技能包为例:
bash复制cd hermes-agent/skills
git clone https://openatomworkspace.sanduspace.com/opensource/openatom-hermes/hermes-agent.git helper
这个命令只是示例,实际地址需要以你拿到的技能包仓库为准。安装完成后,建议检查目录结构:
bash复制ls -la hermes-agent/skills/helper
正常时你会看到该技能的指令文件、资源文件和配置文件。指令文件是 Skill 的灵魂,大模型就是靠阅读这个文件来理解“这个技能能做什么、应该怎么干活”的。
3.3 配置模型与运行
Skill 安装好之后,进入配置阶段。打开主程序的配置文件,确认以下信息:
- 模型服务地址。
- 模型名称。
- API Key 或认证信息。
- 技能目录路径。
- 是否开启自动加载技能。
一个简化版的配置示例可能是这样的:
yaml复制model:
provider: openai-compatible
base_url: https://api.example.com/v1
api_key_env: OPENAI_API_KEY
model_name: gpt-4o-mini
skill:
path: ./skills
auto_load: true
配置完成后,启动 Hermes,在对话中尝试一句话:
text复制请查看当前目录下的文件列表,并告诉我有哪些文件。
如果终端辅助系统 Skill 配置正确,智能体应该能执行文件列举命令并返回结果。如果它回答“我不具备这个能力”,说明 Skill 没有被正确加载,可以去查看日志输出,确认扫描路径是否正确。
这里特别提醒:如果你使用的是 Windows 辅助系统,注意系统权限问题。智能体执行命令、操作文件时,应使用最小权限账户,避免直接以管理员身份运行。尤其是涉及删除、覆盖、修改系统配置的操作,一定要在可控的测试环境里先验证。
4. 编写第一个 Hermes Skill
4.1 理解 Skill 的核心文件
在动手编写 Skill 之前,先要看懂一个核心文件:指令文件。这个文件在不同项目里可能有不同命名,比如 ai-instructions.md、SKILL.md、instructions.md。它本质上是一份写给大模型看的说明书。
为什么要用 Markdown 而不是 YAML?因为大模型对自然语言的理解能力很强,Markdown 可以用标题、列表、段落把“能力描述、使用边界、执行步骤、注意事项”写得非常清晰。相比结构化的 JSON,Markdown 更适合表达复杂的语义规则。
一个 Skill 目录通常包含:
text复制my-skill/
├── ai-instructions.md # 给模型看的核心指令
├── script.py # 可选:执行脚本
├── config.yaml # 可选:技能元信息
└── resources/ # 可选:模板、素材、参考文件
这种组织结构的好处是职责单一、边界清晰。模型读取指令文件后,需要执行逻辑时,可以调用同目录下的脚本,也可以直接使用模型自身的能力输出结果。
4.2 编写一个最小 Skill
下面动手写一个最简单的 Skill:从一段文本中自动提取日期、金额和备注,并整理成表格。
先创建目录:
bash复制mkdir -p hermes-agent/skills/text-parser
cd hermes-agent/skills/text-parser
创建指令文件 ai-instructions.md:
markdown复制# 文本信息提取技能
## 能力描述
当用户提供一段包含日期、金额、备注的文本时,
本技能用于提取结构化信息并整理为 Markdown 表格。
## 触发方式
用户输入中包含以下任一关键词时,适合使用本技能:
- 提取信息
- 帮我整理文本
- 解析这段内容
- 提取日期和金额
## 处理步骤
1. 阅读用户输入的完整文本。
2. 提取所有日期,格式统一为 YYYY-MM-DD。
3. 提取金额,保留两位小数,并注明币种。
4. 提取备注字段,保留原文关键信息。
5. 输出 Markdown 表格,包含日期、金额、备注三列。
## 注意事项
- 如果文本中没有明确的日期或金额,不要编造。
- 如果存在多条记录,按文本出现顺序输出。
- 金额单位不明确时,在表格下方说明原文字段。
这个 Skill 不需要任何脚本文件,模型靠自身的理解能力就能完成。它的意义在于:你用一套明确规则约束了模型的输出格式和行为边界。对于很多文本处理类任务,这种轻量技能比写代码更灵活。
4.3 注册与加载技能
技能目录创建好之后,需要让 Hermes 识别它。常见方式有两种:
第一种,把技能目录放到主程序配置的 skills 目录中。以我们上面使用的 skills/text-parser 为例,重启 Hermes 后它会自动扫描并加载。
第二种,在技能目录中增加一个元信息文件,明确声明技能名称、版本和入口。这种方式适合技能包需要被发布和共享的场景。
一个元信息文件示例:
yaml复制name: text-parser
version: 1.0.0
description: 从文本中提取结构化信息并生成表格
author: your-name
entrypoint: ai-instructions.md
tags:
- text
- parser
- table
请注意,这段 YAML 只是展示元信息的常见结构,不代表 Hermes 官方固定采用该格式。在实际项目中,请优先参考仓库里已有技能包的写法。最简单的方式是找到一个官方示例技能包,照着它的目录结构和配置格式改。
注册完成后,重启 Hermes,在对话中输入:
text复制帮我提取这段文本的信息:2024年5月12日支付了98.5元购买咖啡,2024年5月13日支付了320元购买会议用品。
如果技能加载成功,模型应该输出类似下面的表格:
| 日期 | 金额 | 备注 |
|---|---|---|
| 2024-05-12 | 98.50 | 购买咖啡 |
| 2024-05-13 | 320.00 | 购买会议用品 |
到这里,一个最小的 Skill 就成功落地了。你可能已经发现,Skill 开发的门槛并不高。它更像是在写一份高质量的任务说明书,而不是在写复杂的算法。随着你对模型能力的理解加深,可以把越来越多的业务规则、输出格式、边界条件写进指令文件,从而获得稳定、可控的智能体行为。
4.4 编写一个带执行脚本的 Skill
文本提取类技能靠模型自身就能完成,但有些任务需要确定性计算,例如统计文件行数、调用数据库、操作 API。这时候建议把计算逻辑写到脚本里,让模型负责理解意图和生成最终回答。
接着上面的例子,我们来增强一下:让 Skill 支持统计一个文本文件的行数、单词数和字符数。
在技能目录中创建脚本 file_stats.py:
python复制import sys
from pathlib import Path
def get_stats(file_path: str) -> dict:
path = Path(file_path)
if not path.exists():
raise FileNotFoundError(f"文件不存在: {file_path}")
text = path.read_text(encoding="utf-8")
lines = text.splitlines()
words = text.split()
chars = len(text)
return {
"file": str(path),
"lines": len(lines),
"words": len(words),
"chars": chars,
}
if __name__ == "__main__":
if len(sys.argv) != 2:
print("用法: python file_stats.py <文件路径>")
sys.exit(1)
result = get_stats(sys.argv[1])
print(result)
然后在 ai-instructions.md 中补充说明:
markdown复制## 统计文件统计信息
当用户希望获取某个文本文件的行数、单词数或字符数时,
请使用以下步骤:
1. 确认用户提供的文件路径。
2. 在技能目录下执行:python3 file_stats.py <文件路径>
3. 将输出结果转换为易于阅读的格式反馈给用户。
4. 如果脚本报错,请将错误信息原样展示,不要编造原因。
这样设计的原因是:统计文件指标是确定性逻辑,不需要模型发挥,用脚本执行更准确、更快。而把结果转换成自然语言、解释给用户,则交给模型完成。这个分工在 Agent 开发中是非常经典的模式。
5. 常见问题与排查思路
5.1 Skill 没有被加载
在安装或编写 Skill 时,最常遇到的问题就是“智能体表现得像没装这个技能”。排查时可以从三个方向入手:
第一,确认技能目录位置。主程序扫描的路径是配置文件中指定的,如果你把技能包放错了目录,扫描不到是必然的。可以查看启动日志,寻找类似 loading skill、skill scan 的关键字。
第二,确认指令文件格式。不同版本的 Hermes 对指令文件的文件名、结构可能有要求。如果模型读不懂你的指令,Skill 即使被加载也会形同虚设。
第三,确认依赖环境。如果 Skill 里有脚本,脚本需要第三方库,但技能包没有声明依赖,运行时会直接报错。建议每个技能目录中都放一个 requirements.txt 或配置声明。
5.2 模型返回结果不符合预期
技能被加载了,但输出格式不稳定,这也是很常见的。原因通常在于指令文件写得不够具体。光说“请提取日期”远远不够,你应该定义好:
- 日期格式。
- 金额精度。
- 输出表格的列名。
- 无法提取时应该怎么处理。
- 是否保留原文顺序。
大模型非常依赖指令的明确程度。如果你遇到输出飘忽不定的情况,优先改指令文件,而不是改主程序。
5.3 API 连接超时或鉴权失败
模型调用阶段经常出现两类错误:
| 错误现象 | 常见原因 | 解决思路 |
|---|---|---|
| 请求超时 | 网络不稳定或 Base URL 配置错误 | 检查 base_url 是否正确,增加超时时间 |
| 401 鉴权失败 | API Key 错误或没有写入环境变量 | 确认环境变量名与配置一致,不要留空格 |
| 404 模型不存在 | 模型名称拼写错误 | 确认模型服务中实际部署的模型名 |
| 配额不足 | API 账号额度耗尽 | 联系服务提供方或在配置中更换 Key |
在排查这些问题时,建议先使用简单的 HTTP 请求工具直接调用模型服务,确认服务本身是否正常。如果直接调用成功而 Hermes 调用失败,再检查配置格式和工具链,这样能快速定位问题环节。
5.4 Windows 环境下的路径问题
Windows 上运行的坑往往出在路径分隔符和编码上。如果 Skill 脚本往文件路径里拼接 / 和 \,容易出现兼容性问题。建议统一使用 Python 的 pathlib 或 os.path.join。另外,在 PowerShell 中执行 Python 脚本时,可能存在脚本执行策略限制,必要时使用 python 而不是 python3 调用解释器。
还有一个常见问题是:智能体执行的命令可能被系统防护软件拦截。如果 Skill 涉及修改注册表、删除文件、启动服务等高权限操作,请先确认当前用户的权限范围,不要直接以管理员身份运行整个 Hermes 进程。
5.5 排查清单
如果你调试了很久依然没有解决,可以按照下面的顺序逐项检查:
- 主程序版本和 Skill 要求版本是否兼容。
- 技能目录是否被主程序正常扫描。
- 指令文件是否采用了 UTF-8 编码。
- 模型是否能读取中文内容,是否需要对中文做特殊转义。
- 脚本依赖是否安装完整。
- 启动日志中有无遗漏的异常堆栈。
- 是否使用最新稳定版而不是开发分支。
大多数情况下,问题都出在以上某一环。排查时不建议同时修改多处,一次只调整一个变量,确认结果后再继续,效率更高。
6. 最佳实践与工程建议
6.1 技能目录即接口设计
Skill 的优点是可复用,但只有在结构清晰、职责明确的前提下,复用才有价值。我给团队的建议是:把每个技能目录当成一个微服务来设计。必须包含说明文件、指令文件、依赖声明、示例代码,最好再带一个输入输出样例。
实践中有几种组织方式:
- 按业务领域分:财务、数据、运维、客服。
- 按平台分:终端、微信、Windows、Web。
- 按能力类型分:解析、生成、转换、统计分析。
无论采用哪种方式,都要避免技能包越来越大、越来越复杂。如果一个 Skill 的指令文件超过了几百行,说明它承载了太多职责,应该拆分成多个更细粒度的技能。
6.2 指令文件要面向模型可读性
编写 ai-instructions.md 时,不能像写程序注释那样惜字如金,也不能像写论文那样绕弯。模型通过自然语言理解规则,你需要做到以下几点:
- 用明确的行为动词描述步骤,例如“先确认”“再执行”“最后输出”。
- 定义清晰的条件分支,例如“如果文件中没有日期,则提示用户补充”。
- 给出正例和反例,告诉模型什么情况下不要使用该技能。
- 固定输出格式时,尽量给出模板。
把指令文件当成产品文档来写。你写得越清楚,模型的输出就越稳定。
6.3 密钥与权限隔离
技能包最终可能被复制、分发、上传到公共仓库。因此,任何敏感信息都不能写入技能包内部。API Key、数据库密码、Token 都应该通过环境变量或者全局配置文件注入。
操作权限方面,也建议遵循最小权限原则。给智能体开放的权限,只需要满足它被设定的任务即可。比如文本解析技能只需要读文件权限,就不应该给它任意删除文件的权限。尤其是在生产环境,智能体执行不可逆操作前,应先输出将要执行的动作,并要求用户确认。
6.4 测试与版本管理
Skill 也是代码,也要纳入版本管理。对于每个技能,建议准备至少一组测试输入输出:
- 正常输入,例如一段包含日期、金额的文本。
- 边界输入,例如没有日期或没有金额的文本。
- 异常输入,例如空文本、错误编码的文本。
在技能目录中加入 test_cases/ 文件夹,把典型输入输出固化下来。升级技能时,先跑测试,再全量发布。
建议在技能目录里维护 CHANGELOG,记录每次变更的内容。特别要记录那些“指令文件里哪句话影响了模型行为”的修改,这类经验在后续开发中非常宝贵。
6.5 日志与可观测性
智能体的行为链路比传统程序更不透明:模型为什么这么理解?它调用了哪个技能?执行结果是否有效?如果不做好日志记录,出了问题很难回溯。
工程上建议至少记录以下信息:
- 用户原始输入。
- 模型选中的技能名称。
- 技能执行开始和结束时间。
- 脚本返回结果。
- 模型最终输出。
- 异常信息、重试次数。
对于关键业务,建议把日志输出到独立的文件中,或者接入已有的日志系统。后续如果技能表现不稳定,你可以通过这些日志还原现场,定位是模型理解偏差、技能指令模糊,还是脚本执行错误。
6.6 从单技能到技能编排
刚开始使用 Hermes Skill 时,一个技能解决一个问题就够了。但当技能数量增多后,你会发现很多任务需要多个技能协同。
例如“生成项目周报”这个场景可能涉及:
- 读取 Git 提交记录技能。
- 分析任务完成度技能。
- 调用大模型生成摘要技能。
- 把结果写入 Markdown 文件技能。
这时候需要考虑技能编排机制。有些编排逻辑可以写在指令文件里,让模型自行决定调用顺序;有些则建议通过主程序的任务规划模块实现。编排的核心原则是:每个技能保持独立,技能之间通过标准输入输出传递信息,避免互相强依赖。这样即使未来某个技能下线了,其他技能仍然可以单独复用。
结语
Hermes Skill 的定位并不复杂:它是一个围绕大模型智能体打造的、可复用、可编排的能力单元体系。安装主程序、补充模型配置、放置技能包、编写指令文件,整个链路走通后,你会发现新增一种智能体能力变成了一件很轻量的事情——不需要改主程序,不需要重新发布,只需要新增一个目录和一份清晰的说明文件。
本文从 Hermes Agent 的背景讲起,梳理了 Skill 与工具、插件、工作流的边界,并给出了一整套从环境准备、安装辅助系统技能到编写自定义技能的实操流程。最后总结的高频问题和工程建议,来自于开源项目落地时常见的踩坑经验,希望对准备把 Hermes 引入团队或自建私有化智能体的同学有帮助。
下一步你可以做三件事:一是下载官方发行包或克隆仓库,把主程序跑起来;二是对照仓库里的官方示例技能,理解现有技能包的组织方式;三是从一个实际业务问题出发,编写你的第一个自定义 Skill。边用边改,要比只看文档更快建立手感。先把一个小而完整的技能跑通,再逐步扩展技能库,这条路走起来会很顺。
