MusePi

嵌入式本地 Tiny-Model 实验

English | 中文 本文档总结了可选 local tiny-model 路径背后的实验,涵盖会话标题生成(providers.tinyModel)、Mnemopi 记忆提取/整合(providers.memoryModel),以及 auto 思维层级难度分类器(providers.autoThinkingModel,复用 memory-model registry)。这是一份面向 maintainer 的事实性工程记录:我们测了什么、哪些方案胜出、哪些模型被 shipped。这三项设置均默认 online,因此现有用户在主动 opt in 之前不会产生任何下载或端侧推理成本。

Runtime / 环境发现

Task 1:会话标题生成(providers.tinyModel

任务:把首条用户消息转为 3–6 词标题。Tiny 模型(sub-1B)足够胜任。

胜出 recipe

经验

Leaderboard(tag trick,CPU,warm):

模型 结论
LFM2-350M 速度/质量平衡最佳(约 212MB)
Qwen3-0.6B 最鲁棒
gemma-3-270m 最小可用
Qwen2.5-0.5B 可接受
SmolLM2-135M 太小
flan-t5-small 被拒绝——只是复述输入

已发货 local 选项lfm2-350mqwen3-0.6bgemma-270mqwen2.5-0.5blfm2-700m默认online@smol)。

Task 2:Mnemopi memory(providers.memoryModel

Mnemopi 运行两个 small-LLM 任务:

  1. Extraction——从单条消息中提取 durable、structured items。
  2. Consolidation——把一组 memory 整合为 1–3 句忠实摘要。

这两个任务需要的模型比标题更大:1B–1.7B。我们测试了 LFM2-1.2B、Qwen2.5-1.5B、Qwen3-1.7B 和 gemma-3-1b(q4,CPU),每组通过四个并行 agent 运行 27–31 个实验。

Extraction 发现

Stock 5 类 JSON prompt 在小模型上以两种方式失败:

  1. 全空示例 {"facts":[],...}逐字复制 → 提取 0 条 facts。
  2. 部分模型在数组中输出JSON objects,被 Mnemopi 的 String(item) 强制转为字面量字符串 [object Object]

稳健修复是采用每行一条输出格式(被 Mnemopi parser 的 line-fallback 消费)或flat JSON array of strings。每个模型都会过度提取纯 small talk;显式的 chit-chat → NONE 示例是最佳缓解。

与标题任务的 Technique polarity 翻转

各模型 verdict(head-to-head,16-fixture set)

建议

Extraction 偏向精度(不污染长期 memory)→ Qwen3-1.7B 是最佳单 pick(其 consolidation 足够好)。若为 consolidation 运行第二个模型,gemma-3-1b 赢该任务。

已发货 local 选项llama3.2:3bqwen3-1.7b(推荐)、gemma-3-1bqwen2.5-1.5blfm2-1.2b默认online(使用已配置的 smol 模型)。

已知 Mnemopi parser bugs(经这些实验暴露)

Integration notes