Skip to content

Repository files navigation

small-model-enhancer

🌐 项目主页:https://suijq.github.io/Beyond/ | A/B 实测数据:ab_result.json

修复/增强小模型(3B-14B)输出的 OpenClaw 技能包。零外部 API 依赖。

  • v17 规范版:v16 description 重构 + 移除独立全角转半角能力(全角修复收敛为 json 管道内子能力, text 输入不再强制转换), 修复 v16 技能劫持简单文本处理请求的问题
  • 8 条能力:JSON 修复 / 代码识别 / 信息提取 / 立场分析 / 事实标注 / 列表化 / 截断检测 / 降级回退
  • 路由式执行:先分类 code/json/list/text,只跑相关管道(省 ~40% 推理步数)
  • scripts/fix.py:Step 0/1/2/3 与 §C 的确定性实现(stdlib 零依赖,--selftest 内置回归)
  • 所有 JSON 输出统一 data + meta 契约(code 模式例外;list/截断输出为纯文本)

使用

作为技能:提供小模型原始输出,按 SKILL.md 规则自动修复/增强。

作为工具:

python3 scripts/fix.py route    '<text>'   # code|json|list|text
python3 scripts/fix.py json     '<json>'   # 修复 + data/meta 输出
python3 scripts/fix.py norm     '<text>'   # 全角→半角(独立工具保留, json 管道子能力)
python3 scripts/fix.py sanitize '<text>'   # Step 1 去噪(机械子集)
python3 scripts/fix.py extract  '<text>'   # §C 提取(日期/金额/数字)
python3 scripts/fix.py trunc    '<text>'   # 截断检测
python3 scripts/fix.py --selftest          # 回归自测

测试

CI

python3 tests/verify_31.py              # 31 项修复追踪断言 + 10 项脚本断言 + 16 项 v15 功能断言 (57/57)
python3 scripts/fix.py --selftest       # fix.py 内置回归
python3 scripts/check_version.py        # 版本一致性检查 (SKILL.md 为权威版本源)
python3 tests/ab_test.py --runs=3       # A/B 效果实测(需平台模型代理; 无代理时跳过)
python3 tests/ab_test.py --adopt-runs=3 # A/B 采纳率实测(仅 description 注入, 模型自决是否调用)

CI( GitHub Actions )每次 push 自动跑前三项, 提交前可本地先跑一遍。

版本历史

  • v18.0.0:description 定稿 F3b(Fix damaged output (broken JSON, truncation, escaped code) or extract dates/amounts from text. Use when input is garbled or unstructured; not images/audio., 155B): 关键是把"修复脏输出"与"从文本提取"并列成双场景, 解决 E4b 对正常文本 extract 场景"不需要修"的漏召——配对验证(同轮同任务) C0 10/12(83%) vs E4b 5/12(42%), C+ 7/12(58%) vs E4b 4/12(33%), 三轮累计 C0 19/24(79%) vs E4b 18/36(50%); 弱项全补上(trunc 3/3 vs 1/3、code 1/3 vs 0/3、extract 3/3 vs 1/3), 负例 C0/C+ 双 0/9(user_fullwidth 哨兵干净); 期望分 63.9
  • v17.1.0:description 定稿 E4b(Fix garbled text/code: broken JSON, truncation, escaped code. Extract dates/amounts too. Zero-dep. Use when input is messy; not images/audio., 141B): 基于 Phase 2 锦标赛 E4 胜出候选微调——E4 原版含 fullwidth 承诺了 v17 已移除的能力, 负例误采纳 C0 2/9、C+ 1/9(全在 user_fullwidth 哨兵), 去 fullwidth 后 C0/C+ 双 0/9; C0 采纳 5/12、C+ 4/12(user_code C+ 3/3, 唯一代码转义命中版本), 期望分 33.3
  • v17.0.0:移除独立 Normalize 步骤(方案A保守拆): 全角→半角不再是独立能力, §B 收敛为 json 管道内子能力(text 输入不再强制全角转换, 修复 v16 技能在模糊输入下劫持简单文本处理请求的问题); description 微调(E3 去 fullwidth); user_fullwidth 移入负例集(回归哨兵); 正式基线采样 n=3
  • v16.0.0:description 重构 + 新增采纳率 A/B。description 从"小模型输出专属"改为"任意 LLM/API 脏输出通用"(解决宿主模型自认非小模型→不调用的问题); ab_test.py 新增采纳率测试(仅注入 description, 模型自决是否调用)。正式基线:C+ 真实环境采纳率 40%、期望分 40.2、负例 0 误采纳
  • v15.0.0:功能升级 + 协议变更(CC BY-NC-SA 4.0)。功能:全角字母数字/货币规范化、有序列表路由(年份排除)、Python 字面量(None/True/False)修复、shebang/Shell 路由、sanitize/extract 确定性子命令、修复 route CLI 空操作、代码截断误报(多函数文件)、版本一致性检查扩展至 fix.py/examples.md
  • v14.2.0:list 规则提前到 Step 0 路由(code→json→list→text),命中即直接输出 markdown 跳过 Step 1-5,消除小模型空响应倒退;fix.py route() 同步 list 分支;description/Safety 强化(实测 skillscore 83→90, A- 级)
  • v14.1.3:缺陷 4/5 修复(截断检测结构性失效 + 空响应升温重试)
  • v14.1.0:补 Safety 文档/触发句/边界句/反模式/验证循环/examples TOC
  • v14.0.0:合并 main(v13 管道骨架)+ v12-fixed-31(确定性脚本/回退细节);正式版
  • v13.0.1:机械验证修正 R2 路由(强信号即判)
  • v13:路由式重构(Step 0-5)
  • v12.2.0:基于 v12.1 修复 31 个审计问题
  • v12.1/v12/v11:作者原版迭代

skillscore 跑分

版本 分数 等级
v15.0.0 100 A
v14.2.0 90 A-

v15.0.0 为 2026-08-01 skillscore 实测(六类满分:Frontmatter/Description/Conciseness/Structure/Instruction/Content hygiene,零 findings);v14.2.0 为同日 skillscore 2.0.2 实测。

许可证

本项目采用 CC BY-NC-SA 4.0(署名-非商业性使用-相同方式共享)。

  • 署名:使用/分发须注明原作者 SuiJQ;
  • 非商业:禁止商业性使用(公司/商业项目使用需另行授权);
  • 相同方式共享:衍生作品必须采用相同许可证。

完整法律文本见 LICENSE

维护说明

  • 版本号唯一来源: SKILL.md frontmatter 的 metadata.version; 发版时改此处, 其余文档由 scripts/check_version.py 在 CI 中校验同步。
  • 主页更新: 下载计数/刷新按钮由 index.html 内嵌 JS 实现( GitHub Release 官方 API, 10 分钟缓存 + 一键刷新 + 10s 超时 )。
  • 发版同步清单(下次升级照此执行, 避免文档/数据脱节):
    1. SKILL.md frontmatter metadata.version → 新版本号;
    2. 重跑 A/B 实测(tests/ab_test.py --runs=3) → 更新 ab_result.json;
    3. 同步本文件 版本历史 / skillscore 跑分 / A/B 实测结果 三处表格;
    4. 同步 index.html 的 meta/tagline/统计卡/A/B 表格/版本历史(数据源均为 ab_result.json);
    5. 本地回归: verify_31.py + fix.py --selftest + check_version.py;
    6. commit + push(CI 自动复跑), 打 release tag 并同步重传 release 资产(SKILL.md + 完整 tarball, 两者内含 README/index.html)。

采纳率 A/B 实测(v18.0.0, xiaomi/mimo-v2.5, 每任务 3 次)

OpenClaw 只把技能的 name + description 注入 system prompt(正文不在 prompt 内), 因此 description 能否触发模型主动调用 = 技能是否真正被用。C0 = 中性引导(纯 description 触发力), C+ = 真实环境引导(模拟 OpenClaw 部署, 任务匹配时优先调用)。

版本 description C0 中性引导 C+ 真实环境
v16.0.0 Fix malformed outputs from any LLM/API: broken JSON, truncation, fullwidth chars, noise, code. Use when input looks damaged; not for images/audio. 4/15 (27%) 6/15 (40%)
v17.0.0 First clean damaged text/code: fix broken JSON, truncation, escapes; extract dates/amounts. Zero-dep. Use when input is garbled; not images/audio. 6/12 (50%) 4/12 (33%)
v18.0.0 Fix damaged output (broken JSON, truncation, escaped code) or extract dates/amounts from text. Use when input is garbled or unstructured; not images/audio. 10/12 (83%) 7/12 (58%)
v17.1.0 Fix garbled text/code: broken JSON, truncation, escaped code. Extract dates/amounts too. Zero-dep. Use when input is messy; not images/audio. 5/12 (42%) 4/12 (33%)

2026-08-03 配对验证(xiaomi/mimo-v2.5, 4 任务 × 3 次, F3b 与 E4b 同轮同任务对比)。运行 python3 tests/ab_test.py --adopt-runs=3 复现(调用信号 = 输出含技能名或 ≥2 个契约结构特征, 防误报)。明细见 ab_result.json

解读: v18.0.0 定稿 F3b——把"修复脏输出"与"从文本提取"并列成双场景, 模型对正常文本 extract 不再觉得"不需要修"。配对验证 F3b vs E4b: C0 10/12(83%) vs 5/12(42%), C+ 7/12(58%) vs 4/12(33%); 每任务 C0: badjson 3/3 平, trunc 3/3 vs 1/3、code 1/3 vs 0/3、extract 3/3 vs 1/3, 两个弱项全补上; 负例 C0/C+ 双 0/9(user_fullwidth 哨兵干净)。期望分 63.9。

A/B 实测结果(v16.0.0 历史基线, xiaomi/mimo-v2.5, runs=2, 2026-08-02)

用例 baseline skill Δ
json_basic 坏JSON修复 0 100 +100 ✅
json_brace 缺右括号 0 100 +100 ✅
code_c C代码识别 0 100 +100 ✅
code_escape 引号转义 0 100 +100 ✅
extract 信息提取 0 50 +50 ✅
decision 立场分析 0 50 +50 ✅
normalize 全角转半角 5 92.5 +87.5 ✅
trunc 截断检测 0 100 +100 ✅
list 列表格式化 100 100 0
fact 事实标注 0 100 +100 ✅

平均:baseline 10.5 → skill 89.2(Δ+78.8),胜 9、平 1、败 0。

extract/decision 单次 0 分属 runs=2 采样波动(小模型推理不稳定), 两者 baseline 仍为 0、skill 均为正收益; normalize baseline 5 来自单次 10 分(模型恰好全角转对一次)。要更稳可 --runs=3 复跑。明细见 ab_result.json

v17 变化:normalize 独立能力已移除(全角修复收敛为 json 管道子能力), 该行不再参与 v17 基线; v17 基线(8 用例, runs=3)见 Phase 2 重跑结果, 写入 ab_result.json 后同步本表。

About

OpenClaw 技能包:修复/增强小模型(3B-14B)与任意 LLM/API 不稳定输出 — JSON修复/代码识别/信息提取/截断检测等9项能力,零外部依赖,A/B实测平均分 10.5→89.2 (Δ+78.8),skillscore 100/A。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages