假期用 opencode 跑漏洞复盘:下载 skills、创建 SKILL.md、读漏洞 Excel、生成 PPT,一晚上烧掉 80 多刀,原教程对模型 API 却只字带过。换成 TaoToken(https://taotoken.net/?utm_source=taotoken_aicg_blog_end 创建密钥),Base URL 填 https://taotoken.net/api,多轮 skill 调试才顺了。
如果你也用 opencode 加载 skills 做漏洞复盘分析,建议先花两分钟把模型通道统一到 TaoToken:一个后台里能创建 Key、看模型广场、查每次调用的 token 消耗,不必再为不同模型平台各养一把 Key。这篇文章按我实际跑通的路径写了一遍,从 opencode 配置到 skill-creator 建立漏洞分析技能,再到多轮优化和控成本,你可以直接照做。
1. 基础概念:Skills 的「按需加载」决定调试方式
1.1 先把 Skills 的加载机制说清楚
Skills 的核心是「按需加载、按需执行」。它不是把一堆提示词塞进每轮对话,而是把 SKILL.md 和依赖脚本作为元数据放在指定目录,opencode 维护一个技能清单,等任务和技能描述匹配之后,才把完整指令展开给模型。
这个机制带来的结果是:你的全局 skills 目录里可以放十几个技能,但它们平时几乎不占上下文。真正占上下文的是「执行那一刻」——比如漏洞分析技能被触发后,模型要读 Excel、跑统计脚本、看图表模板、再生成 PPT,几十轮工具调用连续完成。如果模型通道在这个阶段掉链子,前面所有分析状态都会断掉。
1.2 长会话里模型通道更容易暴露问题
opencode 是典型的 Agent/Harness 角色:它会自己规划步骤、调用脚本、读取文件、根据报错重试,整个会话可能持续几百轮上下文。这种长任务对模型通道的稳定性要求很高,远高于「问一句答一句」的普通聊天。
我之前用多个 Key 来回切,结果每个平台的应用额度、模型命名、计费维度全不一样。一会儿是这个 Key 没额度,一会儿是那个模型 ID 填错,最麻烦的是切模型时还要改环境变量,整个 agent 会话一旦中断,前面跑过的上下文就全废了,成本反而更高。所以后来在 opencode 里统一走 TaoToken 的模型通道,只维护一把 Key,模型 ID 以它家模型广场为准,少了很多折腾。
2. opencode 下载完,第一件事是把模型通道指到 TaoToken
2.1 先去 TaoToken 创建 API Key
打开 TaoToken 注册账号,进入控制台创建 API Key。这里创建的 Key 不是绑死某个模型平台的,而是作为统一接入凭证,opencode 里所有模型请求都走它。
创建后把 Key 复制下来,形如sk-xxxx,存到临时文件或密码管理器里。下面配置 opencode 时会用到,注意复制时不要带空格、不要带引号。
2.2 Base URL 填 https://taotoken.net/api,不是官网
opencode 里配置自定义 provider 有两种方式,选一种即可。
方式一:环境变量。在启动 opencode 的终端里执行:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_AUTH_TOKEN="YOUR_API_KEY" export ANTHROPIC_MODEL="你的模型ID"方式二:编辑 opencode 的配置文件~/.config/opencode/opencode.json,添加 provider 和 model:
{ "$schema": "https://opencode.ai/config.json", "provider": { "taotoken": { "name": "TaoToken", "options": { "baseURL": "https://taotoken.net/api", "apiKey": "YOUR_API_KEY" }, "models": { "你的模型ID": { "name": "模型广场显示的模型名称" } } } } }两个地方的YOUR_API_KEY都替换成第 2.1 步复制的内容。你的模型ID要以 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 的模型广场页面展示为准,不同时期开放的模型会有差异,别抄网上旧文章的模型名。
注意 Base URL 末尾不要加/v1,TaoToken 的接口地址就是https://taotoken.net/api。
2.3 验证一次最小调用
配好之后,先跑一条最简单的指令确认通道通没通:
opencode run "读取当前目录下的 README.md,用一句话总结内容"能正常返回结果,说明 opencode 已经能通过 TaoToken 调用模型了。如果这里报了401,检查 API Key 是否完整、有没有多余空格;如果提示模型不存在或model not found,回到模型广场核对模型 ID,大概率是填了其他平台的模型名。
3. 全局 skills 下载与 skill-creator 创建漏洞分析技能
3.1 下载 skills-main.zip,放进 .claude/skills
从 anthropics/skills 的 GitHub 仓库下载skills-main.zip,解压后挑出你需要的技能,放到全局技能目录:
C:\Users\用户名\.claude\skills这个目录和 Claude Code 的全局 skills 位置一致,opencode 也会按同一套规则加载。放进去之后,这些技能会作为元数据被始终加载,opencode 在遇到匹配任务时自动展开。
不是放得越多越好。技能太多会增加模型在「该选哪个技能」上的判断成本,反而拖慢执行。我实际只放了 pdf、xlsx、ppt 和 skill-creator 几个,跟漏洞复盘无关的技能先留在压缩包里。
3.2 用 skill-creator 把漏洞复盘需求转成 SKILL.md
创建一个新项目,把「日期+漏洞分析.xls」、复盘模板 PPT、漏洞复盘思路图都放进项目目录,然后让 skill-creator 帮你创建安全漏洞分析技能。
我当时提的需求大致是:
- 分析项目目录下的漏洞分析 Excel,统计每月漏洞数量、非漏洞数量及占比,按月绘制图表。
- 对漏洞,按高危、致命级别统计数量与占比,再按部门和漏洞类型分别统计。
- 对高危、致命漏洞,按部门和漏洞类型细分,并把根因整体归到组织、流程、技术、人员四类,总结优化思路,输出待办任务。
- 对标记为「不是问题」的非漏洞记录,分析如何从组织、流程侧减少误报。
- 最终输出一份漏洞 Review 报告 PPT,包含每月漏洞概要、漏洞分析数据、根因分析和优化方案。
skill-creator 会根据这些描述生成核心文件SKILL.md,以及依赖的一批脚本。这一步之后,opencode 才知道「遇到漏洞分析任务时该按什么步骤执行」。
3.3 opencode 读取漏洞 Excel 并输出图表
SKILL.md 生成后,直接在 opencode 里发起任务,比如:
opencode run "执行安全漏洞分析 skill,分析项目目录下的漏洞 Excel,输出漏洞 Review PPT"opencode 会自己读 Excel、跑统计脚本、画图表,再调用 ppt skills 生成最终报告。这个阶段是全流程最耗 token 的地方:模型不但要理解表格里的每一列含义,还要把统计结果转成图表代码,再把多张图拼进 PPT。
TaoToken 在这里的价值是稳定托底:同一把 Key 支撑「读表格 — 画图 — 生成 PPT」的整段多轮任务,中间不会因为某个平台额度过期而中断。每轮调用之后,还可以去 TaoToken 控制台看具体 token 消耗,对应到 SKILL.md 的哪一步花得多。
4. 细化 skills 每一版都要重新烧一遍
4.1 第一版输出的问题
第一版能跑通,但结果很粗糙:图表里有重复数据,12 月和 1 月的时间对比放错了位置,把新月份的数据并进了旧月份的报告。于是开始按实际需求细化 SKILL.md。
我提的优化点有三个方向:
- 漏洞分析对比要按时间顺序,例如 2026 年 1 月晚于 2025 年 12 月,分析时应该用 1 月的数据对比之前的数据,对比结果输出在 1 月的报告里。
- 图表绘制要参考「漏洞分析图.png」,横坐标是时间、部门或漏洞类型,纵坐标是漏洞数量。
- PPT 生成环节直接调用 ppt skills,生成简洁大气、科技风格的报告。
每个优化点看起来不大,但模型每改一版 SKILL.md,都要重新读一遍 Excel、重新生成图表脚本、重新输出一次 PPT。这个试错过程就是费用的主要来源。
4.2 优先用现成 skills,避免从头生成
网上已经有非常多现成 skills 模板,刚才下载的 skills-main.zip 里就带 pdf、xlsx、ppt 等通用技能。细化技能时,尽量在 SKILL.md 里注明「PPT 生成使用 ppt skills」「图表绘制参照已有模板」,而不是让模型自己发明一套脚本。
第一次试用时我没意识到这点,模型在生成 PPT 的过程中自己写了不少底层函数,代码跑挂了又重新生成,反复好几轮,烧钱非常快。后来改成直接引用现成技能,质量更稳定,token 消耗也降了一大截。
4.3 一次优化请求等于一次长上下文重建
每次细化 SKILL.md,都意味着更新后的技能描述要重新进入上下文,模型要重新理解需求、重新执行全套流程。上下文越长,每轮调用的成本越贵。
所以细化 skills 时不要一次性丢五个需求进去。可以这样控制节奏:
- 一次只改一个点,比如先只改时间顺序问题。
- 跑完一次,确认输出正确了,再提下一个需求。
- 如果某一版输出完全走偏,先把 SKILL.md 回退到上一版,而不是让模型在错误版本上继续打补丁。
这些习惯看着保守,但在长会话任务里能省下相当可观的 token,也避免模型越修越乱。
5. 一晚上 80 多刀,烧在哪、怎么控
5.1 有用量明细,才知道 80 刀花在哪
第一次试用一晚上用掉 80 多刀,说实话看到账单是有点心疼的。但更难受的是不知道钱具体烧在哪一步:是读 Excel 耗时太多,还是图表脚本反复报错重试,还是 PPT 生成阶段模型自我修正太多?
这个问题,光靠猜是解决不了的。后来用 TaoToken 之后,每次调用的模型、token 数、费用都能在控制台里看到。把一次完整的 skill 执行流程拆开,哪一步是峰值、哪一步可以压缩,一目了然。比如我发现「模型自己写 PPT 生成代码」那几次调用占掉了接近一半费用,而改用现成 ppt skills 之后这部分几乎可以忽略。
5.2 控制 skill 调试成本的四个习惯
结合这次的教训,整理几个实操层面的省钱策略:
- 复用现成 skills,不从头造解析脚本。PDF、Excel、PPT 都有现成模板,直接引用它们作为依赖。
- 大文件先进摘要。整个 Excel 塞进上下文很费 token,可以先让模型用脚本读出列名和前几行,再按列筛选需要的数据。
- 明确输出范围。SKILL.md 里写清楚「只输出最终 PPT,不输出中间过程」,避免模型每一步都把碎结果吐一遍。
- 每轮优化只提一个需求。改完立刻看效果,通过后再提下一个,别让模型在多目标里反复横跳。
这些策略不是玄学,核心逻辑是减少模型在无用步骤上的试错次数。
6. 把「试用」变成「每周自动复盘」
6.1 相关资源
如果你也想搭一套类似的漏洞复盘流程,下面这些资源够用了:
- anthropics/skills 官方仓库:下载通用 skills 包,包含 pdf、xlsx、ppt、skill-creator 等。
- skill-creator:官方示例,自动生成 SKILL.md 的技能,适合把原始需求快速转成可用技能。
- skills.sh:Skill 聚合入口,收集了大量社区现成 skills。
- agentskills.io:Agent Skills 官方标准站点,适合了解技能格式和演进方向。
- skillsmp.com:中文界面的 Skills 市场,查找技能时更直观。
- ComposioHQ/awesome-claude-skills:Awesome 系列精选,按场景分类整理了常用的 Skills。
6.2 下一轮漏洞复盘,先做这件事
回到 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 创建一把新的 API Key,在 opencode 里把它填进 Base URL 为 https://taotoken.net/api 的 provider 配置里,模型 ID 从模型广场挑当前开放的型号,然后跑一次「读 xlsx → 生成图表 → 输出 PPT」的最小闭环。
跑完之后登录 TaoToken 控制台,对比这次调用的 token 消耗和第一次 80 多刀那晚的明细,你会很清楚钱花在了哪里,也知道下一版 skill 该优化哪一步。等到流程稳定,就可以把每周的漏洞数据直接丢进同一个项目目录,让 opencode 按 SKILL.md 自动出报告,剩下的时间拿去改优化建议和排期。