养虾小技巧:怎么省下50%的Token(词元)
养虾小技巧:怎么省下50%的Token(词元)
如果你的 Agent / OpenClaw 每次都用大模型去“理解需求 + 生成代码 + 执行”,那你其实在为重复劳动付费。
本文教你一招:把自然语言 Skill 一次性编译成 Python,后续直接执行,轻松省下 50%+ Token。
🚀 背景:为什么 Token 花得这么快?
在典型调用链中:
用户问题 → LLM理解 → 生成代码 → 执行 → 返回结果
比如一个简单需求:
👉 “查询今天沪深300股价”
你可能以为只是一个 API 调用,但实际上每次都在发生:
- LLM 解析“沪深300是什么”
- LLM 决定“调用哪个数据源”
- LLM 生成 Python 代码
- 执行代码
👉 问题:这些步骤每次都在重复!
🧠 核心思路:把 Skill “编译”成 Python
目标很简单:
❗第一次用 LLM,后面都不用了
🧩 架构升级前后对比
| 阶段 | 原始方案 | 优化方案 |
|---|---|---|
| 第1次调用 | LLM生成代码 | LLM生成 + 写入 Python |
| 第2次调用 | 再次走LLM | ✅ 直接执行 Python |
| Token消耗 | 高 | 降低50%+ |
🧪 实战案例:查询“今天沪深300股价”
我们用一个真实业务场景串起来:
📊 查询“今天沪深300指数价格”
🏗️ Step 1:定义自然语言 Skill
假设我们在 OpenClaw 中定义了一个 Skill:
name: get_hs300_price
description: 获取今天沪深300指数的价格
用户输入:
今天沪深300股价是多少?
⚙️ Step 2:首次执行 → 自动生成 Python
核心逻辑:
👉 如果 mx_data.py 不存在,就调用 LLM 生成
✨ Skill 执行器核心代码
import os
from pathlib import Path
SKILL_FILE = Path("mx_data.py")
def run_skill(query: str):
if not SKILL_FILE.exists():
print("首次执行:调用LLM生成Python代码...")
code = generate_code_from_llm(query)
SKILL_FILE.write_text(code)
# 后续直接执行
import mx_data
return mx_data.run(query)
🤖 Step 3:LLM 生成 Python 代码(一次性)
假设 LLM 生成如下代码:
# mx_data.py
import requests
def run(query: str):
url = "https://api.example.com/hs300"
resp = requests.get(url).json()
return resp["price"]
👉 关键点:
- 只生成一次
- 后续复用
- Token 不再重复消耗
🔁 Step 4:第二次调用(零推理)
用户再次问:
今天沪深300股价是多少?
执行路径变成:
用户问题 → 直接调用 mx_data.py → 返回结果
👉 完全绕过 LLM!
🧪 Step 5:结合测试体系验证
你之前已经有 pytest 结构,可以直接扩展:
def test_hs300_price():
result = run_skill("今天沪深300股价是多少")
assert result is not None
🧱 进阶设计:Skill 编译缓存机制
为了更健壮,建议增加:
1️⃣ 哈希缓存(防重复生成)
import hashlib
def get_cache_key(query: str):
return hashlib.md5(query.encode()).hexdigest()
2️⃣ 多 Skill 文件隔离
skills/
├── hs300.py
├── stock_query.py
└── weather.py
3️⃣ 自动更新机制(可选)
当描述变化时重新生成:
if skill_version_changed():
regenerate_code()
📉 实测效果:Token 节省情况
| 场景 | Token 消耗 |
|---|---|
| 每次都调用 LLM | 100% |
| 编译一次后复用 | ≈ 40% - 50% |
👉 在高频调用场景(如行情查询)下,效果非常明显
⚠️ 注意事项
❗1. 代码安全
LLM 生成代码要限制:
# 禁止危险操作
exec(code, {"__builtins__": {}})
❗2. 可观测性
建议打印:
print("使用缓存Skill执行")
❗3. 数据源稳定性
比如沪深300数据源:
- Tushare
- AkShare
- 自建API
🧩 总结
一句话总结:把“推理”变成“执行”
✔ 第一次:LLM → Python
✔ 后续:Python → 结果
✔ 收益:节省 50%+ Token + 提升速度
🎯 最终落地建议
- 所有 Skill 增加“编译缓存层”
- 高频调用优先改造(如行情、天气)
- 建立 Skill 版本控制机制
- 用测试保证稳定性
如果你在做 Agent / OpenClaw,这一招几乎是“必做优化”。
不然你会一直在为“重复思考”付费。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)