Needle 2 Skill:把工具调用能力装进 14MB 的端侧小模型

Needle 2 Skill:把工具调用能力装进 14MB 的端侧小模型

Needle 2 是 Cactus Compute 开源的 45M 参数端侧基础模型,整个推理引擎仅 14MB,约 28MB RAM 即可运行,专为手机、穿戴设备、智能家居和机器人等资源受限场景设计。它在工具调用、设备控制和结构化 JSON 抽取三项任务上与 70 倍体量的 FunctionGemma 270M、LFM2.5 230M 性能相当,同时实现零网络依赖的纯离线推理。8 月中旬连续登顶 GitHub Trending,Star 增速超 500/天,是当前端侧 AI 领域最具话题性的新星项目。

功能与原则

Needle 2 的核心能力围绕三项精准定位展开:工具调用(让模型学会使用 API 和外部工具)、设备控制(直接操控硬件)、结构化抽取(JSON 格式输出)。设计上遵循三个原则:自包含(无外部模型文件,网络完全隔离)、接口简洁(JSON 输入输出,不依赖复杂 SDK)、置信度门控(每个回复附带校准置信分,低于阈值自动升级处理)。基于 Simple Attention Network 架构,用 Hadamard MLP 替代传统 FFN,辅以 GQA 分组查询注意力、Engram 键值记忆和多 lane 超连接,并采用自研 Cactus Quants 量化到 2bit,兼顾体积与精度。

认可度

GitHub Star 约 8,352(截至 2026-08-22),周均增速约 2,985 star,Trending 排名 8 月 13 日第 17 位 → 8 月 14 日跃升至第 4 位 → 8 月 22 日稳定在第 11 位,连续多周占据 GitHub Trending 榜单。8 月 15 日单日新增 270+ star,增速超 500/天。项目发布于 2026 年 2 月,8 月进入集中爆发期,是近期端侧 AI 领域热度最高的开源项目之一。

链接

GitHub:https://github.com/cactus-compute/needle

Hugging Face 权重:https://huggingface.co/Cactus-Compute/needle2

原作者

Cactus Compute(公司/团队),核心贡献者基于 Simple Attention Network 研究论文(arXiv:2607.18363)开发,2026 年 2 月正式发布。

介绍

Needle 2 将一个完整的工具调用基础模型压缩进单个 14MB 可执行引擎,推理过程无需任何网络请求,也不依赖外部权重文件,零依赖、纯离线。安装只需一条命令 pip install cactus-needle,即可在 Python 中声明工具列表、传入调用请求、获取结构化 JSON 回复。引擎首次运行从 Hugging Face 下载后缓存,后续完全本地运行,同时提供离线 air-gapped 设备部署指南。

模型内置工具检索头(Tool Retrieval Head),支持在大量工具目录中自动召回 Top-5 候选工具,并通过字节级语法约束(grammar-constrained decoding)将输出限制在 JSON Schema 范围内,确保每次回复都是合法的结构化数据。置信度门控机制为每个回复提供 0~1 的校准置信分数,应用可据此决定是采纳还是升级到云端大模型。

架构层面,团队提出 Simple Attention Network:用 Hadamard MLP(Hadamard 产品MLP)替代传统 FFN,配合 Group Query Attention、Engram 键值记忆和 Multi-lane Hyper-connections,并通过自研 Cactus Quants 量化到约 2bit,最终在 5~70 倍小的体量下实现与 FunctionGemma、LFM2.5、Apple FM 等竞品的性能对标。

特点

  • 14MB 自包含引擎:单文件推理,无网络依赖,适合手机、穿戴设备、机器人等离线场景
  • 28MB RAM 全会话:256 token 滑动窗口 + 工具 KV sinks,总内存恒定不随对话长度增长
  • 置信度门控:每个回复附校准置信分,低置信自动触发升级到云端模型
  • 工具检索头:支持大规模工具目录,只召回 Top-5 并语法约束输出
  • 多后端支持:NVIDIA GPU、Apple Silicon、标准 CPU 均可运行;支持 LoRA 微调和量化打包

使用方法

安装:

pip install cactus-needle

基本调用示例:

import needle

# 声明工具列表
tools = [
    {"name": "get_weather", "description": "获取天气", "params": {"type": "object", "properties": {"city": {"type": "string"}}}},
    {"name": "set_light", "description": "控制灯光", "params": {"type": "object", "properties": {"room": {"type": "string"}, "on": {"type": "boolean"}}}}
]

client = needle.Client()

# 工具调用请求
result = client.chat(
    messages=[{"role": "user", "content": "北京今天天气怎么样?"}],
    tools=tools
)
print(result.tool_calls)
# → [{"name": "get_weather", "args": {"city": "北京"}, "confidence": 0.94}]

置信度门控:

if result.confidence < 0.7:
    # 升级到云端大模型处理
    result = cloud_model.continue_chat(result)

使用场景与人群

适用场景:手机端 AI 助手(完全离线运行)、智能手表/穿戴设备(内存受限)、智能家居本地控制中枢(隐私敏感不愿上云)、机器人嵌入式控制(实时性要求高)、工业 IoT 端侧数据抽取。

目标用户:端侧 AI 工程师、嵌入式 ML 开发者、智能硬件产品团队、模型压缩研究者、以及需要在严格隐私或断网环境下部署 AI 能力的开发者。

输入与输出案例

案例一:手机端工具调用

输入(用户):

“帮我查一下明天上海的温度,如果高于 30 度就把空调打开”

模型输出(JSON 结构,带置信分):

{
  "tool_calls": [
    {"name": "get_weather", "args": {"city": "上海", "date": "2026-08-27"}, "confidence": 0.96},
    {"name": "set_ac", "args": {"room": "客厅", "on": true}, "confidence": 0.72, "requires_confirmation": true}
  ]
}

案例二:穿戴设备传感器数据抽取

输入:原始传感器 JSON 数据,要求抽取关键指标并判断异常

输出:

{
  "extracted": {"heart_rate": 78, "steps": 3421, "sleep_hours": 7.2},
  "anomalies": [],
  "confidence": 0.91,
  "model": "needle2-45m"
}

Needle 2 将工具调用从云端 API 的高耗能模式,拉低到任何一个树莓派或智能手表的本地算力都能承载的水平,是边缘 AI 落地进程中的一个重要里程碑。


GitHub: https://github.com/cactus-compute/needle

评论区

0 条评论

登录后可评论。

Skill超级捕获手 17 阅读