noahjohnson0/lemon-squeezer

GitHub: noahjohnson0/lemon-squeezer

在消费级 GPU 上对本地 LLM 编码 Agent 进行可复现基准测试,帮你找到模型、框架和提示词的最优组合。

Stars: 0 | Forks: 0

# lemon-squeezer 在单张消费级 GPU 上运行的**本地 LLM 编程 Agent** 的可复现基准测试。 核心目的:找出哪种 `(模型, 运行框架, 提示词配置)` 组合,能为你提供一个完全在你自有硬件上运行的可用编程 Agent。云端顶级模型的结果并不能告诉你,在 4070 上运行的 qwen3-coder 是否真的能完成一项任务。 硬件:通过局域网从 Mac 访问运行 Ollama 的 RTX 4070 (12 GB) 的。测试的模型包括 qwen3:14b、qwen3-coder:30b-a3b (MoE)、gpt-oss:20b (MoE)、devstral:24b、gemma4:e4b。测试的运行框架:[pi](https://pi.dev) 和 [aider](https://aider.chat)。 ## 核心发现 **运行框架的影响比模型更大。** 同样的 qwen3:14b 在 `bug-fix` 任务中: - pi → 27%(模型搞砸了精确字符串匹配的编辑) - aider → 100% Aider 的全文件重写格式,避开了会导致小型本地模型在 pi 中崩溃的失败模式。 ## 包含内容 ``` lemon-squeezer/ ├── bin/ # Runner + analysis scripts │ ├── eval-run # Run a single (harness, eval, model, tag) combo │ ├── eval-list # Tabular history │ ├── eval-diff # Side-by-side check pass/fail between two runs │ ├── eval-export # Regenerate runs.csv + RUNS.md │ ├── serve # Local web dashboard │ └── harnesses/ # Per-harness shims (pi.sh, aider.sh) ├── evals/ # One dir per eval │ ├── bug-fix/ # Fix a CSV totaller with hidden bugs │ ├── cli-tool/ # Build a `wc` clone │ ├── refactor/ # Extract function from duplicated code │ ├── wifi-stats/ # Build Next.js + FastAPI dashboard │ ├── chem-balance/ # Balance chemical equations via linear algebra │ └── projectile-sim/ # 2D motion w/ quadratic drag, RK4 integrator ├── configs/ # System-prompt augments (--read'd by aider) ├── runs/ # One dir per run: workspace + session log + score ├── runs.jsonl # One JSON per run (source of truth) ├── runs.csv # Same data, spreadsheet-friendly ├── RUNS.md # Auto-generated leaderboard + chronological log └── dashboard.html # Live web view served by bin/serve ``` ## 评测结构 每项评测由三个文件组成: - `prompt.md` — 下达给 Agent 的自然语言任务 - `setup.sh` *(可选)* — 在 Agent 运行前将初始文件放入工作区 - `rubric.sh` — 运行 Agent 的输出并打印 `{checks: [...], score_pct: N}` JSON 评分标准侧重于**运行时正确性**(生成的代码是否真正运行并产生正确的结果?)而非结构性检查。如果模型幻想出一个看似正常但在真实输入上失败的程序,将会失去大部分分数。 ## 运行评测 ``` bin/eval-run aider bug-fix qwen3-coder:30b-a3b-q4_K_M baseline # ✓ 21s | exit=0 | tok in/out=728/148 | tools=0 | score=100% # /Users/.../runs/2026-05-10T..._bug-fix_aider_qwen3_coder_30b_a3b_q4_K_M_baseline ``` `bin/eval-run` 会为每次运行写入一个专属目录,包含生成的工作区、聊天记录、token 计数、实际耗费时间以及评分结果。`runs.csv` 和 `RUNS.md` 会在每次运行后重新生成。 对比两次运行:`bin/eval-diff `。 实时监控:运行 `bin/serve` 然后打开 `http://localhost:8765/dashboard.html`。 ## 当前进展 查看 [RUNS.md](RUNS.md) 获取实时排行榜。当前最佳得分: | 评测 | 最佳得分 | 最佳配置 | |---|---|---| | bug-fix | 100% | aider × 任何 14B+ 模型 | | cli-tool | 100% | aider × qwen3:14b / gpt-oss / qwen3-coder | | refactor | 100% | aider × qwen3:14b 或 pi × gpt-oss | | wifi-stats | 94% | aider × gpt-oss:20b × `sysprompt` | 更难的评测(chem-balance、projectile-sim)以及安全评测套件正在开发中。 ## 为什么叫 "lemon-squeezer" 而不是 "pi-evals" 最初仅作为 pi 的基准测试。加入 aider 后发现 pi 的特性主导了结果,因此现在已不局限于特定的运行框架。 ## 许可证 MIT。
标签:Aider, AI基准测试, AI编程, AI自动化测试, AI风险缓解, Cutter, Devstral, Gemma, LLM评估, Mac开发环境, MoE模型, Ollama, Qwen, RTX 4070, 代码助手, 代码重构, 多模态安全, 开源大模型, 性能评测, 提示词工程, 时序数据库, 本地AI开发, 本地大语言模型, 本地推理, 本地部署LLM, 模型基准测试, 消费级GPU, 漏洞修复, 科学计算, 策略决策点, 编码智能体, 网络安全培训, 自然语言编程