Local LLM inference engine and strongly-typed agent runtime, written in pure MoonBit
Dependencies
| 交付物 | 状态 |
|---|---|
| soehi/gguf 模块(gguf/,独立发布):header / metadata KV(12 种类型 + 嵌套数组)/ 张量目录 / 对齐 | ✅ |
| 同上 soehi/gguf/tensor:F32 / F16 / Q4_0 / Q5_0 / Q8_0 / Q4_K / Q6_K 反量化 | ✅ |
| src/cli/:moonlm inspect <model.gguf>(native,另支持 --json、dequant) | ✅ |
| 双 target(native + wasm-gc)check / test / build 全绿 | ✅ |
| 交付物 | 状态 |
|---|---|
| src/tokenizer/:byte-level BPE(encode / decode / 特殊 token / 字节映射;smollm / qwen2 预分词器) | ✅ |
| src/model/:RMSNorm / RoPE(NORMAL + NEOX)/ Q/K/V bias / GQA 注意力 / SwiGLU / KV cache / 完整前向 | ✅ |
| src/sampler/:greedy / temperature / top-k / top-p | ✅ |
| src/engine/:Engine trait + PureEngine(prefill + decode 流式生成) | ✅ |
| src/cli/:generate / chat / bench / logits / profile | ✅ |
| 交付物 | 状态 |
|---|---|
| src/web/:JS 边界 API(foreign_library + #export_name,handle 表 + 流式回调) | ✅ |
| web/:演示页(本地文件 / URL 两种加载、流式输出、tok/s 实时显示) | ✅ |
| tools/serve_web.py:构建 + 组装 web/dist/ + loopback 预览服务 | ✅ |
数字更正:早期文档写「0.7 → 6.33 tok/s(9 倍)」。那比较的是 UI 路径下 8 token 与 bench 路径下 16 token 两次测量,混入了测量条件差异。同一条件下 用 tools/bench_js_kernel.mjs 逐 bundle 重测的受控结果是 1.92 → 7.56 tok/s(3.9 倍)。结论(达标 ≥3 tok/s)不变。
| 交付物 | 状态 |
|---|---|
| src/agent/:Tool trait、工具调用格式策略(ToolCallFormat,解析器独立于循环)、JSON-Schema 校验、执行循环(步数 / 上下文 / 停止条件)、滚动窗口与 observation 截断 | ✅ |
| src/tools/:list_dir / read_file / grep_text(经工作区沙箱)+ calc(纯 MoonBit) | ✅ |
| src/cli/agent_native.mbt:moonlm agent --task ... --workspace ... [--model ...] | ✅ |
| 浏览器端:calc + 内存 demo 工具;文件工具不注册(无同步文件系统,也无可信的工作区根) | ✅ |
| BM25 检索 | ❌ 未做(会话规模小,收益不抵依赖成本) |
moon check --target native # 双 target 静态检查
moon check --target wasm-gc
moon test --target native # 单元 + 黄金向量 + 畸形输入
moon test --target wasm-gc
moon build --target native
moon build --target wasm-gcmoon run src/cli --target native -- inspect path/to/model.gguf # 文本报告
moon run src/cli --target native -- inspect path/to/model.gguf --json # JSON 报告
moon run src/cli --target native -- dequant path/to/model.gguf tensor_embd.weight --limit 8
moon run src/cli --target native -- tokenize path/to/model.gguf "hello"
moon run src/cli --target native --release -- generate path/to/model.gguf "prompt" --max-tokens 64
moon run src/cli --target native --release -- chat path/to/model.gguf # 交互式多轮
moon run src/cli --target native --release -- bench path/to/model.gguf --tokens 128
moon run src/cli --target native --release -- logits path/to/model.gguf 504,3575,282 --top 5
moon run src/cli --target native --release -- profile path/to/model.gguf --iters 10python tools/serve_web.py --model-dir /path/to/ggufs
# 打开 http://127.0.0.1:8000/ ,选一个 .gguf,按「生成」python tools/gen_fixtures.py # 重新生成测试夹具(合成 GGUF + 黄金向量 + 畸形输入)
python tools/check_models.py <model.gguf> ... # 与 llama.cpp 的 gguf 读出器对拍
python tools/crosscheck_llama.py <model.gguf> --mode argmax # 逐位置 argmax 对拍
python tools/crosscheck_llama.py <model.gguf> --mode greedy # 自由生成对比注意:bartowski 的 Q4_K_M 是混精(272 个张量中 166 个是 q5_0), 不是纯 Q4_K,对拍时不要预期全部为 Q4_K。
Install
Download zipLocal LLM inference engine and strongly-typed agent runtime, written in pure MoonBit
Dependencies