Needle 调研:8-29 MB 的端侧自动化基础模型,把离线 tool calling 装进手表、机器人和 MCU

131次阅读
Needle 调研:8-29 MB 的端侧自动化基础模型,把离线 tool calling 装进手表、机器人和 MCU

一个只有 8-29 MB 的模型,能在树莓派 5 上跑到 4k tokens/s,专职干一件事:在完全没有网络的设备上,把人话变成一次次可靠的工具调用。这就是 Cactus Compute 刚发布三天的 Needle 3——端侧 Agent 拼图里缺失的那一块。

上周 GitHub 周增量榜 Top 10 里,有个项目画风不太一样:不卷通用大模型,不做 Agent 框架,专心给 ” 算力最小的那批设备 ” 做基础模型。两周涨了约 2,800 star,截至本文发布 11,166 ⭐,今天凌晨还在推代码。它叫 Needle,Apache-2.0 开源,值得单独讲一篇。

写在前面:为什么 ” 小设备 + AI” 总是卡在联网这一步

过去两年端侧 AI 的叙事基本是 ” 把小参数聊天模型塞进手机 ”——Qwen、Gemma、Phi 轮番降参数量。但真正做产品的人很快会遇到一个更本质的问题:设备上的 AI 不是用来聊天的,是用来干活的。

智能音箱要开灯、扫地机器人要回充电座、手表要把一条扣款通知变成结构化记录、车载系统要执行 ” 调低空调 ”——这些全是 tool calling(函数调用),不是对话。而当前的现实是:

  • 要么调用云端大模型的 function calling,断网就全瘫,还有隐私和延迟问题;
  • 要么本地跑通用小模型,动辄几百 MB 起,tool call 准确率还不稳;
  • 要么退回规则引擎写正则,维护成本指数上涨。

Needle 的答案是:既然设备场景里 90% 的需求是 ” 结构化输出 ”,那就别做通用聊天模型——造一个专职的自动化基础模型,把它压到 8-29 MB。

一、它解决什么问题

一句话:给没有算力、没有网络、不能等的设备,提供开箱即用的 tool calling / 结构化抽取 / 文本向量三合一能力。

项目 数据(2026-09-18 实测拉取)
仓库 cactus-compute/needle
Stars / Forks 11,166 ⭐ / 717 forks / 38 open issues
License Apache-2.0 ✅
语言 Python(推理引擎为各平台预编译二进制)
创建时间 2026-02-24(项目只有 7 个月)
最近 push 2026-09-18(本文发布当天)
当前版本 Needle 3(2026-09-17 发布)
模型体积 单个 8-29 MB 二进制(CQ2 2-bit 量化,2.125 bit/ 权重)
官网 cactuscompute.com/needle

背书来头不小:Pebble 创始人 Eric Migicovsky 确认,无屏幕的 Pebble Index Ring 就在本地跑 Needle——” 说出指令,动作就必须发生,有网没网都得行 ”。

二、三合一能力:工具调用、结构抽取、文本向量

Tool calls(工具调用):把 app 暴露的函数交给它,模型选出该调的函数并从用户话里填好每个参数。说两件事就按顺序给两次调用;问了没有工具覆盖的事,返回 空列表而不是瞎猜——这个 ” 宁可拒绝不肯编造 ” 的设计对设备端太重要了。

Structured extraction(结构抽取):声明一个数据形状(Pydantic 模型),扔进乱糟糟的文本,拿回带类型的字段——发票、订单、通知、表单都行。decode 阶段用字节级语法约束每一个 token,输出保证能 parse。抽取任务还能泛化到分类问题。

Text embeddings(文本向量):同一个模型顺手给句子出向量,设备本地就能做语义搜索、请求到工具的路由匹配、重复告警合并——数据不出设备。

三、差异化技术:智能阶梯 + 语法约束 + 置信度门控

1. Intelligence Laddering(智能阶梯)。Needle 3 基于 Simple Attention Network:用 Monarch Hadamard MLP 替代传统 FFN,GQA 注意力加因果卷积旁路,”engram” n-gram 记忆占了大头参数(所以 121M 的模型做的是 50M 的算术)。核心玩法是 每一层深度都是一个可部署模型:2 层到 20 层,2L 到 20L 子网络按需选型,小到 9 MB 大到 29 MB。

2. 字节级语法约束。开发者的 schema 会被编译成 decode 语法,逐 token 约束输出。这等于把 ”JSON 格式错误 ” 这个 LLM 工程里最常见的故障模式从源头干掉了。

3. 校准置信度。每次响应自带一个置信分(引擎默认 0.1 的门槛,低于就扣下不发)。应用可以据此做路由:高分直接执行、中分弹窗确认、空结果当拒绝。还有 triggers 机制——用正则把某类请求强制路由到指定工具,正则命中的调用即使低于置信门槛也会发出。

4. 微调阶梯。LoRA 微调对整个阶梯生效:在 DroidCall 数据集上微调后,所有子网络提升 18-36 个百分点,4 层(29M 参数)起就能超过 DeepSeek V4 Flash。needle finetune 一条命令完成训练,needle build --lora 打包部署。

四、性能与部署

官方数据(树莓派 5 实测):decode 400-4k tokens/s,prefill 1-10k tokens/s。每个平台一个 1 MB 以内的预编译引擎,启动时加载 needle3.cact 权重文件(.cact 是 mmap 友好的自定义格式,官方连解析器规范都公开了):

needle build --platform linux-arm64 --layers 8 --out ./pi
./linux-arm64/needle --model needle3.cact --tools tools.json --serve

支持平台覆盖手机、手表、智能家居、机器人、AR 眼镜、汽车、MCU,还有浏览器和 WASI,甚至有气隙(air-gapped)部署方案。

九大官方场景里跟硬件关系最近的两个:机器人 ——” 清扫厨房但别进卧室 ”、” 干完回充电座 ”,每句话变成一串可执行动作; 智能家居——” 把卧室调暗然后锁门 ” 变成两次离线调用,不经过网关。

五、对比主流方案

维度 云端 LLM function calling 通用小模型本地跑 规则引擎 /NLU Needle 3
体积 无(在云端) 数百 MB-GB 级 KB 级 8-29 MB
离线可用 ❌ ✅ ✅ ✅
Tool call 准确率 高 不稳定 依赖穷举 官方称胜过 10 倍体积模型
通用聊天 ✅ ✅ ❌ ❌(主动放弃)
隐私 数据出设备 本地 本地 本地
单次成本 按 token 付费 电量 开发维护 近零
生态成熟度 最成熟 成熟 成熟 早期(7 个月)

结论很清晰:Needle 不是来替代聊天模型的,它在赌一个细分判断——设备端自动化场景里,小而准、永远在线(离线意义上)、结构化输出可保证,比 ” 什么都能聊 ” 值钱得多。tool 定义协议是普通函数签名 + docstring,与 MCP 这类协议层标准不冲突,反而互补:MHS 管物理设备接进来(参见此前 Anthropic MHS 调研),Needle 管设备端执行大脑。

六、实战:3 步跑通

第 1 步,安装(引擎从 Hugging Face 拉一次然后缓存):

pip install cactus-needle

第 2 步,装饰一个函数就是定义工具——签名给参数类型,docstring 就是工具描述:

import needle

@needle.tool
def get_weather(city: str):
    "Get the current weather for a city."
    return {"city": city, "temp_c": 27, "sky": "clear"}

agent = needle.Needle(tools=[get_weather])
print(agent.run("what's it like in Lagos right now?")["results"])
# [{'city': 'Lagos', 'temp_c': 27, 'sky': 'clear'}]

结构抽取用 extract() 传 Pydantic 模型,返回类型化对象。

第 3 步,交叉编译到目标设备(或微调后再部署):

needle build --platform macos-arm64            # 全 20 层
needle build --platform linux-arm64 --layers 8 # 只要 8 层子网络
pip install "cactus-needle[train]"
needle finetune data.jsonl --epochs 10 --out adapter.safetensors

注意工具描述是模型选路的唯一依据:一个工具一个动作、枚举值用用户的说法、格式写进描述——官方那篇《Designing tools for Needle》值得精读。

七、风险与坑

  1. 遥测默认开启——二进制默认上报遥测数据,离线设备场景尤其注意:设 NEEDLE_TELEMETRY=0 和 DO_NOT_TRACK=1 关闭。
  2. 不做通用聊天是特性也是边界——超出工具范围的输入返回空列表。如果产品需要 ” 先聊两句再干活 ”,得自己组合一个聊天模型。
  3. Benchmark 是官方自报的——” 胜过 10 倍体积模型 ”、” 超过 DeepSeek V4 Flash” 都来自官方测试集,接自己的任务前先用自己的工具集实测。
  4. 项目很年轻——2026 年 2 月创建,核心团队 8 人左右,GitHub 上没有 release 页(权重发在 Hugging Face),版本管理主要靠引擎版本号。上生产建议锁引擎版本。
  5. 2-bit 训练在云端平台——本地微调是 4-bit LoRA;出货级的 2-bit 后训练和量化走 Cactus Platform(商业服务)。重度定制会有一部分供应商绑定。

八、总结

最值得上车的理由 一句话
真正的离线 Agent 能力 断网也能把人话变成可靠工具调用,拒绝瞎猜
部署摩擦极低 8-29 MB 单文件 + 1 MB 引擎,树莓派到 MCU 全覆盖
微调阶梯友好 2 层起都可微调可部署,4 层微调即可对标更大的通用模型

给做机器人、智能家居、可穿戴设备的开发者一个建议:拿一个真实的 ” 设备执行 ” 场景(比如家里最常说的三句指令),花一个下午把工具集接到 Needle 上试试——它的置信度门控 + 语法保证输出这两个设计,会改变你对端侧 Agent 可靠性的预期。如果设备侧 AI 是你的方向,这个 11K star 的项目值得放进观察清单的第一梯队。

参考

  1. cactus-compute/needle – GitHub
  2. Needle 3 官方发布页
  3. Hugging Face 权重:Cactus-Compute/needle3
  4. Designing tools for Needle
  5. Leveraging Needle’s confidence
  6. Structured JSON extraction with Needle
  7. Fine-tuning Needle
  8. What devices are supported on Needle
  9. The .cact format
  10. 相关阅读:Anthropic MHS 深度调研:AI 操控物理设备的 USB-C 时刻

作者:yunying(增长运营官)· 数据实测于 2026-09-18 · Apache-2.0

正文完