ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

第5篇:Skills技能系统实战——用SKILL.md让AI掌握“怎么做”而不是“是什么”

第5篇:Skills技能系统实战——用SKILL.md让AI掌握“怎么做”而不是“是什么” 1. 为什么你的 AI 总是“懂很多却做不对”很多人用 AI 工具时都有同一种挫败感问它“怎么部署一个 Docker 容器”它能给你讲得头头是道但真让它动手它就开始泛泛而谈步骤跳来跳去甚至把关键参数漏掉。问题不在于模型不够聪明而在于它只掌握了“是什么”没有掌握“怎么做”。这就是记忆系统和技能系统的分水岭。记忆比如 MEMORY.md存的是事实像“这个项目用 pnpm”“CI 走 GitHub Actions”而技能SKILL.md存的是方法论是“把这件事跑通的具体步骤”。记忆是被动的技能是主动的、可复用的工作流。这篇就聚焦 Skills 技能系统的落地配置。我会以 SKILL.md 为切入点演示在 Hermes 这类 AI 工具里怎么定义技能文件、挂载技能目录让模型按“怎么做”执行任务而不是每次都从零推理。文末会给一条验证动作新增技能后触发调用确认 AI 是按技能步骤输出而不是泛泛回答。适合已经在用 Hermes、想让 Agent 真正“会干活”的同学。2. 前置准备TaoToken 与 Hermes 的接入关系在动手写 SKILL.md 之前先把模型调用这条链路打通。Hermes 本身是执行框架真正干活的还是背后的模型所以你需要一个稳定的模型接入点。我这边用的是 TaoToken它的 API 地址是https://taotoken.net/api兼容常见的 OpenAI 风格调用方式配置起来比较省事。先拿到 API Key。打开控制台里的 API Keys 页面https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentskills_apikey新建一个 Key复制出来。注意这个 Key 只在创建时完整显示一次丢了就得重建。拿到 Key 之后在 Hermes 的模型配置里填两样东西Base URL 填https://taotoken.net/apiAPI Key 填刚才复制的。如果你用的是环境变量方式可以这样写export OPENAI_BASE_URLhttps://taotoken.net/api export OPENAI_API_KEYsk-你的TaoToken密钥配好之后先别急着写技能用一条最简单的请求确认模型通了curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $OPENAI_API_KEY \ -d { model: gpt-4o-mini, messages: [{role: user, content: 回复两个字通了}] }返回里能看到content: 通了就说明链路没问题。这一步很关键因为后面技能触发失败时你得先排除是模型没通还是技能没挂上。如果你更习惯在网页里直接验证模型也可以去模型对话页https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentskills_chat发一条消息试试确认账号和模型都正常。3. 可复制配置SKILL.md 骨架与目录结构技能系统的核心就是 SKILL.md 这个入口文件。它描述技能的用途、输入参数和执行步骤。Hermes 的技能按分类目录组织一个技能目录下不只有 SKILL.md还可以带附件。完整结构长这样~/.hermes/skills/ ├── mlops/ # 分类目录 │ ├── axolotl/ │ │ ├── SKILL.md # 主文件必须 │ │ ├── references/ # 参考文档可选 │ │ ├── templates/ # 输出模板可选 │ │ └── scripts/ # 辅助脚本可选 │ └── vllm/ │ └── SKILL.md ├── devops/ │ └── deploy-k8s/ │ ├── SKILL.md │ └── references/ └── .hub/ # Skills Hub 状态自动生成 ├── lock.json └── audit.logreferences/ 放详细文档templates/ 放输出模板scripts/ 放辅助脚本。SKILL.md 是入口负责把这几块串起来。下面是一个可以直接复制的骨架我拿“Python 项目初始化”当例子--- name: python-project-init description: 初始化一个标准 Python 项目包含虚拟环境、依赖管理和基础目录结构 trigger: - 初始化Python项目 - 新建Python工程 - python project init inputs: - name: project_name description: 项目名称 required: true - name: python_version description: Python 版本默认 3.11 required: false steps: - 创建项目目录并进入 - 用 python -m venv 创建虚拟环境 - 生成 requirements.txt 和 .gitignore - 创建 src/ 与 tests/ 目录 - 输出初始化完成的结构树 --- # Python 项目初始化技能 ## 用途 把“新建一个 Python 项目”这件事标准化避免每次手动建目录、漏掉 .gitignore。 ## 执行步骤 1. 执行 mkdir -p {{project_name}} cd {{project_name}} 2. 执行 python{{python_version}} -m venv .venv 3. 写入 requirements.txt内容为 # 依赖列表 4. 写入 .gitignore忽略 .venv/、__pycache__/、*.pyc 5. 创建 src/ 和 tests/ 目录 6. 用 tree -L 2 输出结构确认结果 ## 注意事项 - 如果目录已存在先询问用户是否覆盖 - 虚拟环境激活命令按操作系统区分Linux/macOS 用 source .venv/bin/activate这个骨架里trigger决定什么时候自动触发inputs定义参数steps是模型要照着走的动作。{{project_name}}这种占位符会被实际参数替换。写完之后把它放到~/.hermes/skills/devops/python-project-init/SKILL.md目录名和name保持一致方便管理。挂载技能目录这一步Hermes 默认读~/.hermes/skills/一般不用额外配置。如果你用的是容器方式记得把宿主机的技能目录挂进去否则容器里看不到docker run -it \ -v ~/.hermes/skills:/root/.hermes/skills \ -e OPENAI_BASE_URLhttps://taotoken.net/api \ -e OPENAI_API_KEYsk-你的TaoToken密钥 \ hermes:latest这样技能文件在宿主机改容器里立刻生效不用每次重建镜像。4. 验证请求新增技能后触发调用技能写好了得验证它真的被调用而不是模型自己瞎编。先确认技能被识别/skills如果列表里出现了python-project-init说明挂载成功。接下来触发它。在对话里输入帮我初始化一个 Python 项目名字叫 demo-api重点观察模型的输出。如果技能生效它会按 SKILL.md 里的步骤走先建目录、再建虚拟环境、写 .gitignore、最后输出结构树。如果技能没生效模型大概率会给你一段“你可以先安装 Python然后创建虚拟环境……”的泛泛回答步骤顺序也可能是乱的。我实测下来判断技能是否真正触发看两个信号最准一是输出里出现了 SKILL.md 中定义的固定动作比如tree -L 2的结构树二是步骤顺序和steps字段一致。只要这两点对上就说明模型是在“按技能执行”而不是自由发挥。如果你想更严格一点可以在 SKILL.md 里加一句“执行前先输出[skill: python-project-init]”这样每次触发都能在日志里看到标记排查起来更快。5. 本篇常见错排查技能系统踩坑主要集中在“没触发”和“触发了但跑错”两类。下面这几个是我遇到过的高频问题。技能列表里没有我的技能。先检查目录层级。Hermes 要求~/.hermes/skills/分类/技能名/SKILL.md如果你把 SKILL.md 直接放在skills/根目录下它不会被识别。另外文件名必须是大写SKILL.md小写skill.md在部分系统上会读不到。技能识别了但对话里不触发。多半是trigger关键词没覆盖到你的说法。比如你写的是“初始化Python项目”但用户说的是“帮我建个 Python 工程”匹配不上就不会自动触发。解决办法是把常见同义说法都加进trigger或者直接在对话里点名“用 python-project-init 技能帮我建项目”。触发了但步骤执行到一半报错。常见原因是技能依赖的 Python 包在容器里没装。如果你用的是--rm临时容器每次退出容器就销毁运行时环境不保留技能文件虽然持久化在~/.hermes/skills/但依赖包得重新装。频繁用技能的话建议换成常驻容器依赖装一次就能持续用。模型没按步骤走自己加戏。这通常是 SKILL.md 的steps写得太模糊。把每一步写成可执行的具体动作而不是“配置好环境”这种抽象描述。步骤越具体模型越不容易跑偏。API 调用报 401 或超时。先确认OPENAI_BASE_URL是https://taotoken.net/apiKey 没有多余空格。如果 Key 是在控制台刚建的注意复制完整。需要重新生成的话去 API Keys 页面https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentskills_apikey2操作。接入细节和参数说明可以对照接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentskills_doc核对。6. 把技能用起来从单次调用到长期复用技能系统真正的价值是让成功的经验固化下来。你第一次手动跑通一个多步骤任务让 Hermes 把它提炼成 SKILL.md下次同类任务就能一键复用。Hermes 不会为每个简单操作都建技能一般要满足几个条件才会自动生成任务涉及超过 5 次工具调用、包含错误恢复或多步骤调试、或者本身是可复用的工作流比如搭 CI 流水线、部署 Docker 容器。你也可以主动要求。比如刚完成一个多步骤任务后说“把刚才这个操作流程保存成可复用的技能文件。”它会分析执行过程提炼关键步骤和注意事项生成对应的 SKILL.md。如果你打算长期跑编码类任务或者搭 Agent 工作流建议把模型调用也固定下来用 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentskills_plan会比每次临时配 Key 省心。技能文件写好后配合稳定的模型接入Agent 才算真正从“会聊天”升级到“会干活”。最后留一个实用习惯每写完一个 SKILL.md先手动触发一次确认输出和steps对得上再放进日常流程。技能库慢慢攒起来之后你会发现很多重复劳动都能交给它而且每次执行的结果是稳定的、可预期的。
返回列表