- STG 服务器:http://127.0.0.1:8404
- 上游 API:https://openrouter.ai/api/v1
- 压缩阈值:4096 tokens
- 压缩模型:qwen/qwen3.5-27b
测试命令:
curl -X POST http://127.0.0.1:8404/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen/qwen3.5-27b",
"messages": [{"role": "user", "content": "hello"}],
"stream": false,
"max_tokens": 50
}'结果:
- ✅ STG 成功接收请求
- ✅ 未触发压缩(8 tokens < 4096 阈值)
- ✅ 成功转发到 OpenRouter
- ✅ 返回正常响应(200 OK)
- ⏱️ 延迟:30.96 秒
测试数据:
- 原始消息:8 条(包含大量重复内容)
- 原始 tokens:31,077
压缩效果:
- 压缩后 tokens:12,180 (39.19%)
- 节省:18,897 tokens (60.81%)
- 压缩器消耗:14,925 tokens
- 净节省:9,488 tokens (29.5%)
详细数据:
| 项目 | 不压缩 | 使用压缩 | 节省 |
|---|---|---|---|
| 输入 tokens | 31,077 | 6,664 | 24,413 (78.6%) |
| 压缩成本 | 0 | 14,925 | -14,925 |
| 输出 tokens | 1,046 | 1,046 | 0 |
| 总计 | 32,123 | 22,635 | 9,488 (29.5%) |
配置文件: /c/Users/yangpei/.openclaw/agents/main/agent/models.json
修改内容:
{
"providers": {
"openrouter": {
"baseUrl": "http://127.0.0.1:8404/v1", // 指向 STG
"api": "openai-completions",
...
}
}
}状态: ✅ 配置完成,OpenClaw 现在会通过 STG 发送所有请求
问题: 某些请求出现 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4
原因: 中文内容编码问题
状态: 已修复(使用 body.decode('utf-8'))
问题: OpenClaw 的 openrouter:auto 模型 ID 不被 OpenRouter 接受
解决方案: 使用具体的模型 ID(如 qwen/qwen3.5-27b)
- ✅ 基础代理功能
- ✅ Token 计数
- ✅ 压缩检测和触发
- ✅ 单轮压缩
- ⏳ 多轮渐进式压缩(合并摘要)
- ⏳ 二次压缩(摘要超过阈值时)
- ⏳ History Index(存储原始消息)
- ⏳ _stg_retrieve_history 工具注入
- ⏳ L1/L2 语义缓存
- ⏳ 预算控制(四级限额)
- ⏳ Analytics 统计
- ⏳ Streaming 支持优化
- ⏳ 错误处理和降级策略
- ⏳ 性能优化
- ⏳ 完整的端到端测试
- ⏳ 文档和部署指南
✅ STG 核心压缩功能已经可以工作!
- 成功实现了基础的 ASGI 代理
- 压缩功能正常,能够将 31K tokens 压缩到 12K tokens
- 实现了约 30% 的总 token 节省
- 已配置 OpenClaw 使用 STG 作为代理
下一步重点: 实现多轮渐进式压缩和 History Index 功能。