经 AI Skill Hub 精选评估,little-coder Agent工作流 获评「强烈推荐」。已获得 1.2k 颗 GitHub Star,这款AI工具在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 8.0 分,适合有一定技术背景的用户使用。
专为小型语言模型优化的开源AI编码代理。支持多语言代码生成和工作流编排,通过基准测试验证性能。适合开发者快速集成轻量级代码生成能力,降低LLM成本消耗。
little-coder Agent工作流 是一款基于 TypeScript 开发的开源工具,专注于 编码代理、工作流、代码生成 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
专为小型语言模型优化的开源AI编码代理。支持多语言代码生成和工作流编排,通过基准测试验证性能。适合开发者快速集成轻量级代码生成能力,降低LLM成本消耗。
little-coder Agent工作流 是一款基于 TypeScript 开发的开源工具,专注于 编码代理、工作流、代码生成 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
# 方式一:npm 全局安装 npm install -g little-coder # 方式二:npx 直接运行(无需安装) npx little-coder --help # 方式三:项目依赖安装 npm install little-coder # 方式四:从源码运行 git clone https://github.com/itayinbarr/little-coder cd little-coder npm install npm start
# 命令行使用
little-coder --help
# 基本用法
little-coder [options] <input>
# Node.js 代码中使用
const little_coder = require('little-coder');
const result = await little_coder.run(options);
console.log(result);
# little-coder 配置说明 # 查看配置选项 little-coder --config-example > config.yml # 常见配置项 # output_dir: ./output # log_level: info # workers: 4 # 环境变量(覆盖配置文件) export LITTLE_CODER_CONFIG="/path/to/config.yml"
A coding agent tuned for small local models, built on top of pi.
The research story behind all this — why scaffold–model fit matters, how a 9.7 B Qwen beat frontier entries on Aider Polyglot, and what the load-bearing mechanisms actually do — is written up on Substack: **Honey, I Shrunk the Coding Agent**. Start there if you want the "why"; stay here for the "how".
◆ PLAN MODE indicator shows below the input). Submit a request and little-coder researches it with sub-coders, asks you 1-3 clarifying questions (each with suggested answers and a free-text option), then writes a plan in the chat instead of editing anything. Esc cancels a plan mid-run. (shift+tab stays pi's thinking-level cycle.)dispatch) — little-coder can spawn isolated child sessions to research a question (read the repo + browse online, read-only) and report back concisely, without cluttering the main conversation. A live panel above the input tracks them. Tune parallelism with LITTLE_CODER_SUBCODER_CONCURRENCY (default 2)./name) and shown in the terminal tab title. Use /resume to list and reopen past sessions for the current directory.LITTLE_CODER_EXTRA_EXTENSIONS) — path-delimited list (: on POSIX, ; on Windows) of extension paths to layer on top of the bundled set. Each entry can be a direct file (e.g. a pi-ponytail-style extensions/ponytail.js) or a directory containing index.ts / index.js. ~/ is expanded; missing paths log a warning and are skipped. Survives upgrades, no patching the installed package. Example: LITTLE_CODER_EXTRA_EXTENSIONS=~/.local/lib/node_modules/pi-ponytail/extensions/ponytail.js little-coder. (Single-file extensions can still use little-coder -e <path> for one-off loads.)For local providers (llama.cpp, Ollama, LM Studio) pi expects some value in the API-key env even though local servers ignore it:
export LLAMACPP_API_KEY=noop
export OLLAMA_API_KEY=noop
export LMSTUDIO_API_KEY=noop
LLAMACPP_BASE_URL, OLLAMA_BASE_URL, and LMSTUDIO_BASE_URL override the defaults (http://127.0.0.1:8888/v1, http://127.0.0.1:11434/v1, http://127.0.0.1:1234/v1).
For cloud providers, set the standard env (ANTHROPIC_API_KEY, OPENAI_API_KEY, etc.) and pi will discover it.
One-line install (Node.js 22.19+ required):
curl -fsSL https://raw.githubusercontent.com/itayinbarr/little-coder/main/install.sh | bash
Or with npm directly:
npm install -g little-coder
Or with bun:
bun add -g little-coder
That's the whole install. No clone, no npm install in a workspace, no PATH fiddling. little-coder is now on your PATH and works from any directory.
Note forbun add -gusers. The launcher (bin/little-coder.mjs) is a Node.js script with#!/usr/bin/env nodeat the top, so Node ≥ 22.19 still has to be on your PATH for the binary to start — bun is fine for installing/updating the package, but the runtime is Node. If you want a fully node-less setup, replace the shebang in$(bun pm bin -g)/little-coderwith#!/usr/bin/env bun.
Skip this section if you're using a cloud model.
Option A — llama.cpp (fastest for local; supports Qwen3.6-35B-A3B MoE):
```bash
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=120 -DLLAMA_CURL=ON cmake --build build --config Release -j
export LITTLE_CODER_BASH_ALLOW="make ,docker compose ps"
```
The paper ran ollama/qwen3.5 through the Python little-coder at commit 1d62bde (tag v0.0.2). The 45.56 % mean figure is the average of two full 225-exercise runs on that exact codebase. For the 78.67 % headline, check out tag v0.0.5 — both are pre-pi Python and follow the pre-pi setup.
---
pip install -U "huggingface_hub[cli]" hf download unsloth/Qwen3.6-35B-A3B-GGUF Qwen3.6-35B-A3B-UD-Q4_K_M.gguf --local-dir ~/models hf download unsloth/Qwen3.6-35B-A3B-GGUF mmproj-F16.gguf --local-dir ~/models
export LLAMACPP_API_KEY=noop export LLAMACPP_BASE_URL=http://<server-lan-ip>:8888/v1
The shipped model list lives in models.json at the package root. The llama-cpp-provider extension reads it at startup and registers each provider via pi's registerProvider(). Editing this file in your global install does take effect — but it's overwritten on npm install -g little-coder@latest, so for anything you want to keep, use a user override file instead.
User override resolution (first match wins):
$LITTLE_CODER_MODELS_FILE — explicit path, useful for ad-hoc tests.$XDG_CONFIG_HOME/little-coder/models.json~/.config/little-coder/models.jsonMerge semantics: each top-level provider key in your override file fully replaces the same key in the shipped models.json. Providers only in your file are added; providers only in the shipped file are kept. (We don't deep-merge per-model fields — you redeclare the whole provider entry, which avoids "your override silently inherited new fields from a future package release" surprises.)
Example — switch the llama.cpp port and bump qwen3.6-35b-a3b to a 150K context, leave ollama untouched:
{
"providers": {
"llamacpp": {
"api": "openai-completions",
"baseUrl": "http://127.0.0.1:1234/v1",
"apiKey": "LLAMACPP_API_KEY",
"models": [
{
"id": "qwen3.6-35b-a3b",
"name": "Qwen3.6-35B-A3B (local llama.cpp, 150K)",
"reasoning": true,
"input": ["text"],
"contextWindow": 150000,
"maxTokens": 4096,
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
}
]
}
}
}
Then verify with little-coder --list-models — you should see your overridden entry.
LLAMACPP_BASE_URL, OLLAMA_BASE_URL, and LMSTUDIO_BASE_URL env vars still beat both files for those three providers.
export LITTLE_CODER_PERMISSION_MODE=accept-all ```
Write/Edit confirmations are pi's responsibility; little-coder doesn't intercept those.
---
--update flag — pass little-coder --update to force an immediate version check, bypassing the 12-hour cache. Useful right after a release. The flag is stripped before pi sees argv so it won't produce an "Unknown option" error.
Auto-update fails on Windows (≤ v1.9.5): npm exit null — the updater in those versions can't locate npm.cmd. Fixed in v1.9.6, but the broken updater can't deliver its own fix — run npm install -g little-coder@latest once to get there, then auto-update works normally.
little-coder: command not found — npm's global bin directory isn't on your PATH. Run npm config get prefix to see where it installed; add <prefix>/bin to your PATH. Or reinstall with sudo if your prefix needs root.
ECONNREFUSED 127.0.0.1:8888 — llama.cpp isn't running. Start llama-server first, or switch --model to an Ollama/cloud ID.
LAN client times out (no RST, just hangs) — the inference box's firewall is dropping the SYN. The usual cause is ufw with a default-deny policy that allow-lists only SSH / a few dev ports. From the server: sudo ufw status verbose to confirm; sudo ufw allow from <your-lan-subnet>/24 to any port 8888 proto tcp to fix (scoped to the LAN so you're not exposing the box). Docker-published ports bypass ufw via PREROUTING NAT, which is why a Docker container can be reachable while a plain llama-server on the same host isn't.
Image attachment is accepted but the request returns 4xx — your llama-server is running without a vision projector. Re-launch it with --mmproj ~/models/mmproj-F16.gguf (or another mmproj variant from the same GGUF repo). The --list-models images column reflects what the client will attempt to send, not what the server can answer; the projector is what gives the model eyes.
Failed to parse input at pos N: SomeTool(arg='…')]<|tool_call_end|> (LFM2 / Liquid models) — the model is emitting its native Pythonic tool calls (<|tool_call_start|>[Read(path='…')]<|tool_call_end|>), but llama.cpp's tool-call parser is choking on them — usually because the chat template doesn't match the parser. The GGUF's embedded template often renders tools as a plain List of tools: […] blob without the <|tool_list_start|> / <|tool_call_start|> special tokens the parser expects. Fix: serve with --jinja and the model's proper chat template, e.g. llama-server -m LFM2.5-8B-A1B-Q4_K_M.gguf --jinja --chat-template-file LFM2-8B-A1B.jinja (templates ship under llama.cpp/models/templates/). With the matching template, llama.cpp parses the calls into native tool_calls and tools execute normally — verified end-to-end with LFM2.5-8B-A1B. If your build still leaks the calls as plain text, little-coder's output-parser recognizes the format and surfaces this same diagnostic instead of a cryptic error (issue #42).
No API key env var warning — pi expects some key even for local providers. Export LLAMACPP_API_KEY=noop (or OLLAMA_API_KEY=noop) before launching.
No pi "Update Available" banner — that's intentional. little-coder defaults PI_SKIP_VERSION_CHECK=1 so the bundled pi runtime doesn't nag about updating itself; little-coder pins pi to a known-good version per release. If you actually want the banner back, export PI_SKIP_VERSION_CHECK=0 before launching.
Extension load failures on startup — run little-coder --list-models --verbose; extension errors surface there. If the install looks corrupt: npm uninstall -g little-coder && npm install -g little-coder.
Node version too old — little-coder needs Node ≥ 22.19.0 (matching the minimum of the bundled @earendil-works/pi-coding-agent v0.75+). Check with node --version. Easiest fix: nvm install 22 && nvm use 22.
---
设计精巧的编码代理框架,针对小型LLM优化显著降低成本。活跃开发维护,基准测试严谨。TypeScript实现便于集成,是轻量级代码生成的优选方案。
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ Apache 2.0 — 宽松开源协议,可商用,需保留版权声明和 NOTICE 文件,含专利授权条款。
AI Skill Hub 点评:little-coder Agent工作流 的核心功能完整,质量优秀。对于AI爱好者来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。
| 原始名称 | little-coder |
| 原始描述 | 开源AI工作流:A coding agent optimized to smaller LLMs。⭐1.2k · TypeScript |
| Topics | 编码代理工作流代码生成轻量LLM多语言 |
| GitHub | https://github.com/itayinbarr/little-coder |
| License | Apache-2.0 |
| 语言 | TypeScript |
收录时间:2026-05-19 · 更新时间:2026-05-19 · License:Apache-2.0 · AI Skill Hub 不对第三方内容的准确性作法律背书。