little-coder:轻量本地编码代理
为小型本地模型调优的编码代理,融合30多个扩展和测试工具,让笔记本上的小模型也能完成编码与知识库任务。
- Star 数
- ★ 2.7k
- 最近更新
- 1 个月前
- License
- Apache-2.0
- 主语言
- TypeScript
- FA 评分
- 58/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 兼容但需适配
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 本地开发者:在无云依赖的笔记本上使用 Qwen3.6-35B-A3B 模型进行日常编码,利用其计划模式和自动上下文管理。
- 不适合
- 需要开箱即用、不想配置本地推理服务器的用户
- 没有 GPU 或显存不足 8GB 的机器
- 不愿依赖 pi 框架、希望完全独立工具链的团队
- 源码审查
- 58/100 · 缺口较多
这个 Agent 能做什么,适合哪些场景?
little-coder 是一个构建在 pi 之上的开源编码代理,专为优化小型本地语言模型(如 Qwen3.6-35B-A3B)而设计。它不fork pi,而是将 pi 作为依赖,并通过 .pi/extensions/ 下的30多个TypeScript扩展、skills/ 下的30个技能markdown文件以及 benchmarks/ 中的Python基准测试框架来增强功能。核心机制包括读写防护、技能注入、输出解析、质量监控、思考预算和权限门控,确保小模型高效且安全地工作。在Aider Polyglot、Terminal-Bench和GAIA等基准测试中表现优异,均可在消费级笔记本(8GB VRAM)上本地运行。安装简单,支持多种模型提供商,但主要针对 llama.cpp 和 Ollama 本地服务器优化。
little-coder 作为终端交互式代理运行,通过命令行启动,可读取项目文件、使用内置工具(read/write/edit/bash)修改代码、执行命令,并调用子代理进行研究和深度研究。它包含计划模式、子代理分发、历史记录、会话管理等功能。基准测试工具(如 benchmarks/aider_polyglot.py)通过 RPC 启动 pi 并执行测试任务。权限系统使用白名单限制 shell 命令,确保安全。它通过 .pi/extensions/ 中的扩展注入技能和知识,并监控模型输出质量。
- 本地开发者:在无云依赖的笔记本上使用 Qwen3.6-35B-A3B 模型进行日常编码,利用其计划模式和自动上下文管理。
- 小型团队:需要在不共享代码到云端的情况下,在本地维护知识库(如医疗、运动、教育领域),使用 little-coder 阅读和更新大量 markdown 文件。
- 基准测试爱好者:研究者使用其内置的基准测试工具在 Aider Polyglot、Terminal-Bench 2.0 和 GAIA 上评估小模型性能,并参与排行榜。
- 隐私敏感场景:用户可完全离线运行,通过 llama.cpp 或 Ollama 部署小模型,避免数据外泄。
- 多机器设置:在 GPU 服务器上运行推理,通过 LAN 从笔记本电脑连接,使用 LLAMACPP_BASE_URL 等环境变量。
- AI 代理研究者:需要参考 scaffold–model fit 研究或复现论文结果的开发者,可以克隆仓库并运行基准测试。
如何安装或部署这个 Agent?
安装需要 Node.js 22.19+。使用一行脚本:curl -fsSL https://raw.githubusercontent.com/itayinbarr/little-coder/main/install.sh | bash,或通过 npm install -g little-coder 或 bun add -g little-coder 安装。安装后 little-coder 命令即可使用。
如何使用这个 Agent?
在项目目录下运行 little-coder 启动默认模型(需本地 llama.cpp 服务器,默认 http://127.0.0.1:8888/v1),或指定 --model,例如 little-coder --model anthropic/claude-haiku-4-5。使用前需设置本地 API 密钥环境变量(如 LLAMACPP_API_KEY=noop)。交互功能包括 ctrl+q 切换计划模式、f2 进行深度研究、/resume 恢复会话。模型配置可通过 ~/.config/little-coder/models.json 覆盖。
这个 Agent 有哪些优点和局限?
- 针对小模型优化,在 8GB VRAM 笔记本上可运行,且性能超过大型云模型(Aider Polyglot 45.56% vs 基线19.11%)。
- 模块化架构:所有扩展和技能作为独立模块,便于自定义和删除,不干扰核心。
- 提供四个基准测试(Aider Polyglot、Terminal-Bench、GAIA)的完整结果,易于复现和评估。
- 安全性良好:shell 白名单、写保护、上下文管理,防止模型误操作。
- 支持多种本地模型服务器(llama.cpp、Ollama、LM Studio)和云模型,灵活性高。
- 主要依赖 pi 框架,使用 pi 的扩展模型,自定义扩展需要学习 pi 的 API。
- 安装和使用需要 Node.js 22.19+ 和 Python(基准测试),对技术栈有要求。
- 默认配置针对特定模型(Qwen3.6-35B-A3B),切换模型可能需要调整配置。
- 本地推理性能受限于硬件,大模型在无 GPU 时可能较慢。
- 社区推荐模型更新频繁,但官方 models.json 更新不频繁,需要用户自己添加。
这个 Agent 与同类方案有什么区别?
与其他编码代理(如 Aider)相比,little-coder 在小模型上表现更佳,但基于 pi 的架构可能更适合熟悉 pi 的用户。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| little-coder:轻量本地编码代理 当前 | 58 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 2.7k | 1 个月前 | TypeScript | — |
| hax | 62 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 924 | 1 天前 | C | OpenAI API · Claude API |
| Forge:自托管 LLM 工具调用的可靠性层 | 49 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 2.3k | 4 天前 | Python | OpenAI API · Claude API |
| Thunderbolt | 49 · 缺口较多 | 桌面应用免费 + 模型费 | ★ 4.8k | 1 天前 | TypeScript | OpenAI API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示:权限控制有内置白名单和写入保护,但默认允许bash执行,且用户确认流程依赖pi。数据流透明度有限,未详细说明数据如何被处理。敏感数据处理未明确。依赖安全有overrides但未审计。外部影响有明确说明。回滚机制未明确。来源归属有作者和仓库信息。扣分:数据流透明度不足,敏感数据处理不明确,依赖安全未审计。
证据显示:README与package.json一致,依赖声明明确,但失败消息未详细说明。扣分:失败消息不充分。
证据显示:明确目标用户为小型本地模型,能力边界清晰,触发方式明确,环境适配有详细说明。扣分:无重大扣分。
证据显示:信息架构清晰,安装说明详细,命名稳定,示例和FAQ有,已知限制部分提及,许可证明确,版本和变更日志有,维护责任明确。扣分:已知限制部分不完整。
证据显示:输出可用性有说明,边际价值有基准数据,成本效益有分析。扣分:无重大扣分。
证据显示:声明有链接支持,但跨来源验证有限,事实与推断分离。扣分:跨来源验证不足。
- 默认允许bash执行,需谨慎配置权限模式。
- 数据流透明度有限,建议审查数据处理方式。
- 依赖安全未审计,建议检查依赖漏洞。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
Fixed - A multi-line edit no longer deadlocks the run ([#127](https://github.com/itayinbarr/little-coder/issues/127) by [@brlucasdx](https://github.com/brlucasdx)). pi already recovers an edits argument sent as a JSON *string* instead of an array, and that recovery is a bare JSON.parse in a try. It fails on the single most common way a small local model writes one: raw newlines inside oldText/newText, which is what multi-line code *is*. JSON.parse throws Bad control character in string literal, the empty catch swallows it, edits stays a string, and schema validation …在 GitHub 查看 ↗ -
发布说明摘录
Fixed - little-coder -p survives a compaction instead of losing the run ([#115](https://github.com/itayinbarr/little-coder/issues/115) by [@Or1j1n](https://github.com/Or1j1n)). v1.18.0 stopped the crash in #108 but not the thing it was a symptom of: under -p, a long task that the TUI completes exited Request aborted with code 1 and empty stdout. pi's compact() is the manual path and its first act is await this.abort(), and print-mode reads the run's verdict straight off the last message (if (stopReason === "error" || stopReason === "aborted")), so aborting the run discards …在 GitHub 查看 ↗ -
发布说明摘录
Fixed - A compaction that settles after the session is gone no longer takes the process down ([#108](https://github.com/itayinbarr/little-coder/issues/108) by [@heinrichI](https://github.com/heinrichI)). The context watchdog reported its result through the ctx captured at the turn that fired the compaction, and pi invalidates the whole extension runtime on dispose(), so ctx.ui and pi.sendUserMessage() throw This extension ctx is stale after session replacement or reload from that point on. pi invokes the compaction callbacks from a floating void (async () => …)(), which tur …在 GitHub 查看 ↗