news 2026/10/4 7:59:27

little-coder技能卡片与算法知识注入:如何给9.7B小模型装上“外挂小抄“

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
little-coder技能卡片与算法知识注入:如何给9.7B小模型装上“外挂小抄“

little-coder技能卡片与算法知识注入:如何给9.7B小模型装上"外挂小抄"

【免费下载链接】little-coderA harness optimized to smaller LLMs项目地址: https://gitcode.com/gh_mirrors/li/little-coder

little-coder 是一个专为小模型打造的本地编码智能体框架,它的核心思路不是让模型"变聪明",而是给模型按需发"小抄":每一轮对话自动挑选最相关的技能卡片(工具用法卡)与算法知识卡注入上下文。正是这套"知识注入"外挂,让 9.7B 的 Qwen3.5-9B 在 Aider Polyglot 基准上做到 45.6%,是同模型原生脚手架(19.1%)的 2.4 倍。下面用 5 分钟讲清楚这套机制是如何运作的。

📊 先看结果:同一模型,小抄带来 2.4 倍差距

上面是白皮书中的核心对比:同一个 9.7B 模型(Qwen3.5-9B),配上 little-coder 的脚手架后解出45.6%的题目,而同一模型的普通编码智能体只有19.1%——甚至逼近了 gpt-4.5-preview(44.9%)这类前沿大模型的成绩。整套实验只跑在一台消费级笔记本上(RTX 5070 Laptop,8GB 显存),没有任何云端推理。

结论先摆在这:模型不变,只改"脚手架",性能翻倍。这个脚手架的零件,就是下面要讲的技能卡片。

🗂️ 技能卡片是什么:30 份"即插即用"的 Markdown 小抄

little-coder 把所有"外挂知识"都写成了纯 Markdown 文件,放在 skills/ 目录下,共 30 份,分三类:

目录数量管什么
skills/tools/14 张工具使用卡:read/edit/bash/dispatch等工具的正确姿势
skills/knowledge/13 张算法小抄:动态规划、二分查找、双指针、回溯等
skills/protocols/3 份研究协议:先取证再回答、任务分解等工作流

每张卡片就是一个很小的 md 文件,头部带一段"名片"元数据(frontmatter),声明它是给哪个工具的、命中哪些关键词、以及注入它要花多少token 成本。以 skills/knowledge/dynamic_programming.md 为例:成本 110 token,挂了dp、memoize、knapsack、longest subsequence等 13 个关键词,正文只有一小段"何时用动态规划"的判据。

这正是小模型友好的设计:单张卡只有几十到一百多 token,模型看得懂、读得起,人也能直接读文件做审计。

🎯 算法知识注入:按题打分,只送最相关的小抄

光有卡片库不够,关键是每一轮该送哪几张。.pi/extensions/knowledge-inject/ 这个扩展在每轮开始时装了个"评分器",流程只有三步:

  1. 打分:把你的题目文字和每张卡的关键词表逐一比对——单个词命中 +1.0 分,双词短语命中 +2.0 分
  2. 过滤:得分低于 2.0 的卡片直接出局,避免"什么都送"
  3. 预算装箱:在约 200 token 的预算内,按分数从高到低挑选,打包成一个## Algorithm Reference块

举个例子:题目里出现 "find the minimum cost" 和 "number of ways",就会命中 dynamic_programming.md 的关键词,DP 小抄自动送达;而提到 "sorted"、"sliding window" 的题目则会收到 two_pointers.md;组合生成类题目收到 recursion_backtracking.md。卡片库里甚至有树重根(tree re-rooting)这种相当细的技巧(tree_rerooting.md)。

注意定位:项目给模型的系统提示 AGENTS.md 里明确写着,这些小抄是"小而针对性的学习辅助",模型应当信任、但不许照本宣科。

🛠️ 工具技能卡片:按"错误 > 最近 > 意图"三优先级自动挑卡

算法卡管"思路",工具卡管"手"。.pi/extensions/skill-inject/ 负责在约 300 token 预算内挑工具卡,优先级顺序很有讲究:

  1. 错误恢复:上一个工具调用失败了,就先把那个工具的卡送上去。比如edit报"String not found",edit.md 卡片里专门写了"怎么修":重新read拿准空白字符、补上下文让匹配唯一,而不是退回write重写整个文件
  2. 最近性:最近 8 次调用过的工具,卡片优先入选
  3. 意图猜测:从提示词猜你接下来要干什么——"read / fix / replace" 指向读写类工具,"train / build / serve" 这类长跑任务则指向 shell_start.md 后台任务卡

用户也可以接管这个选择器:输入/skills查看当前加载了哪些卡、各花多少 token;/skills edit强制钉住某一张;/skills off恢复自动选择。想深入了解某张卡的写法,直接看 skills/tools/read.md 这类文件即可。

💡 关键细节:小抄放在对话末尾,而不是系统提示

为什么不干脆把所有知识塞进系统提示?因为对本地推理来说,系统提示一变,KV 缓存前缀就作废,服务器得把整个对话历史重新算一遍——长对话下这是致命的浪费。

little-coder 的解法(README.md 的故障排查一节有完整记录)是:把技能卡与知识块作为一条位于对话末尾的普通消息发送,而不是追加到系统提示。这样请求前缀保持逐字节一致,缓存命中率能稳定在 99.8% 左右,终端状态栏里的CH字段可以直接验证。

还有一层"防重复"机制:如果这一轮挑出的小抄和上一轮完全相同,就不重复发送——反正上一份还留在对话里,重发只会白白烧掉小模型宝贵的上下文窗口。

📈 逐语言成绩:六种语言全面领先

分语言看差距同样稳定:Python 52.9%、Java 52.1%、C++ 50.0%、JavaScript 46.9%、Go 38.5%、Rust 30.0%,每种语言都是同模型基线的两倍以上。对一个跑在 8GB 显存上的 9.7B 模型来说,这不是某道题的运气,而是系统性的抬升。

🧭 自己动手:从哪里读起

  • 完整文档:README.md —— 安装、本地模型部署、模型配置都在这里
  • 系统提示:AGENTS.md —— 定义了模型"每一轮会收到哪些指导块"
  • 基准测试细节:docs/benchmark-baseline-aider.md
  • 卡片库本体:skills/ —— 30 份全是纯 Markdown,可以直接通读

小结

给小模型装"外挂小抄"的方法论,其实就三条:

  1. 知识拆小:把工具和算法知识写成几十 token 的小卡片,标注关键词与成本(skills/)
  2. 按需选择:用简单的打分 + 预算规则,每轮只送最相关的卡片(.pi/extensions/knowledge-inject/ 与 .pi/extensions/skill-inject/)
  3. 注入位置聪明:放在对话末尾、不破坏 KV 缓存、内容不变就不重发

模型一个参数都没动,每轮多花两三百 token 的"小抄",换来 2.4 倍的解题率——这就是 little-coder 想证明的事:脚手架工程,本身就是一种能力。

【免费下载链接】little-coderA harness optimized to smaller LLMs项目地址: https://gitcode.com/gh_mirrors/li/little-coder

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/4 7:58:56

16GB笔记本跑313B大模型:WARP部署GLM-5.3-Flash的完整实测教程

16GB笔记本跑313B大模型:WARP部署GLM-5.3-Flash的完整实测教程 【免费下载链接】warp Run the full 2.78-trillion-parameter Kimi K3 model, DeepSeek V4.1 Flash or GLM-5.3-Flash beyond available RAM by streaming activated weights directly from NVMe. A de…

作者头像 李华
网站建设 2026/10/4 7:57:47

Cloudflare要做CA了,证书运维这摊事值得再想想

Cloudflare在9月29日扔出一个消息,说自己要下场当公共CA,也就是证书颁发机构。申请已经递给了Chrome、苹果、微软和火狐的根证书计划,同时也跟GlobalSign签了最终协议,收购一张被广泛信任的根证书。目的很直接,等自己开…

作者头像 李华
网站建设 2026/10/4 7:55:24

bvar:C++高性能服务的嵌入式指标引擎设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/4 7:53:04

volatile到底在拦什么:SysTick->VAL读的哪格

那个空循环&#xff0c;怎么在别人机器上就废了我在自己板子上写了个空循环延时&#xff0c;跑了半个月啥事没有。代码就长这样&#xff1a;uint32_t i; for (i 0; i < 72000U; i) { }结果代码丢给同事&#xff0c;他编译完一烧&#xff0c;延时直接没了&#xff0c;电机启…

作者头像 李华