nanocoder
开源 terminal 编程 Agent,支持 Ollama 本地模型和任意 OpenAI 兼容 A
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
开源 terminal 编程 Agent,支持 Ollama 本地模型和任意 OpenAI 兼容 A
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有遇到过这样的场景:深夜赶一个紧急需求,想让 AI 帮你写代码,但 ChatGPT、Copilot 的网页版需要联网、云端处理,你担心 prompt 里夹带的业务逻辑被"贡献给模型训练";本地跑一个 Coding Agent,配置复杂、模型还得自己搭,光启动环境就花了半小时。
Nanocoder 正是为这类痛点而生。它是一个完全开源的 terminal 编程 Agent,由 Nano Collective(一个非营利社区组织,而非商业公司)打造。核心理念很明确:Bring your own model,keep your code on your machine,owe nothing to anyone——用自己的模型,代码留在本地,不欠任何人。

Nanocoder 运行效果截图。可以看到它直接在 terminal 中呈现文件改动diff、工具调用结果和多轮对话上下文,交互体验相当流畅。
当前市面上主流的编程 Agent(如 GitHub Copilot、Cursor)背后都是商业公司。它们有漂亮的商业模式,但也带来一些天然矛盾:你的 prompt 可能会被用来优化模型(即便有隐私协议),付费墙会把"最实用的功能"锁在高价套餐里,而 roadmap 走向往往由"什么最赚钱"而非"什么对开发者最友好"来决定。
Nano Collective 作为社区集体,选择了一条不同的路。这个组织不追求利润,成员同时也是用户,工具的设计逻辑由实际使用场景驱动,而非商业变现压力。没有遥测数据偷偷上传,没有"免费版阉割核心功能",也没有"企业版专属"的护城河。这使得 Nanocoder 在架构设计上天然倾向于多模型支持和真正的隐私优先。
多模型驱动是 Nanocoder 的核心能力。它支持本地模型(通过 Ollama)和任意 OpenAI 兼容 API(OpenRouter、Anthropic、Google、DeepSeek 等)。这意味着你可以在本地用 llama3.1 跑一个完全不联网的私有编程助手,也可以切换到 Gemini-3.1-Flash 这种高性能云端模型。模型选择权完全在用户手中,不存在厂商绑定。
CLI 交互模式通过 terminal 直接工作,支持交互式对话和单次命令两种模式:
# 安装
npm install -g @nanocollective/nanocoder
# 指定模型运行单次任务(非交互)
nanocoder --provider openrouter --model google/gemini-3.1-flash run "analyze src/app.ts"
# 交互式启动
nanocoder --provider ollama --model llama3.1
# 直接进入指定模式(yolo=自动执行 plan=仅规划)
nanocoder --mode yolo
nanocoder --mode plan run "audit the auth module"
Skills 系统提供了高度可扩展的命令体系。Skills 分为四种类型:
/test、/commit,开发者可自由扩展MCP(Model Context Protocol)集成让它可以连接外部工具和数据源,通过 @modelcontextprotocol/sdk 接入 VSCode 插件、数据库、API 等。官方还提供了 nanocoder-vscode.vsix 插件,进一步扩展 IDE 集成能力。
Checkpointing 与任务管理让长周期任务可以随时暂停、恢复,不会因为终端断开而丢失进度。开发模式支持四种级别:normal(正常确认)、auto-accept(自动接受小改动)、yolo(全自动执行)和 plan(仅输出计划不执行),满足从谨慎验证到快速探索的多种场景需求。
从代码结构看,Nanocoder 采用了 TypeScript monorepo 架构,使用 pnpm workspace 管理多包,根目录 package.json 定义构建流程,TypeScript 源码在 source/ 目录模块化组织。
核心依赖揭示了它的技术选型:
| 依赖 | 用途 |
|---|---|
ai (Vercel AI SDK 6.x) | 多模型统一调用接口 |
@ai-sdk/* 系列 | Anthropic、Google、OpenAI、OpenAI-Compatible 适配器 |
@modelcontextprotocol/sdk | MCP 协议支持 |
ink + @inkjs/ui | React 风格的终端 UI 渲染 |
pino | 结构化日志 |
chokidar | 文件变化监听 |
croner | 定时任务 |
AI SDK 是关键基础设施。它是 Vercel 维护的多模型统一 SDK,支持流式输出(streaming)、工具调用(tool use)和结构化输出(structured output),使得同一套代码可以在不同模型间无缝切换,无需为每个模型单独适配 API 调用逻辑。
ink 库的引入是一大亮点——它是 React 的 terminal 渲染引擎,允许开发者用 React 组件构建交互式 CLI 界面。这意味着 Nanocoder 的 TUI(文本用户界面)可以复用 React 生态的组件库,同时保持 terminal 原生的轻量感。
测试方面,项目使用 ** AVA** 作为测试运行器,配合 Biome(Rust 实现的高速 linter/formatter)、c8(覆盖率)、Semgrep(静态安全扫描)和 Knip(死代码检测),形成了完整的质量保障体系。
Nanocoder 是纯 CLI 工具,不需要 Web UI,部署极为轻量:
npm install -g @nanocollective/nanocoder(需要 Node.js >= 22).devcontainer/ 提供完整的 VSCode Remote-Containers 开发环境(包含 Dockerfile + docker-compose)硬件要求极低——不需要 GPU,只依赖 Node.js 运行环境。磁盘占用约 200MB,内存 1GB 即可流畅运行。
唯一需要用户准备的是模型接入:要么本地部署 Ollama(支持 llama.cpp 生态的各种量化模型),要么准备一个 OpenAI 兼容 API 的密钥。Ollama 的安装和模型拉取有一定学习曲线,是唯一的入门门槛。
Nanocoder 并非银弹,有几个现实局限值得注意:
1. 无 Web UI,全 CLI 操作:对于习惯 GUI 的用户,直接在 terminal 工作可能需要适应成本。界面虽然用 ink 做了优化,但终端的显示能力终究有限。
2. 模型质量完全取决于用户选择:Nanocoder 本身不提供模型,能力上限由所选模型决定。如果选了一个理解代码能力弱的模型,体验会大打折扣。Ollama 本地模型的推理速度也受硬件限制。
3. 社区规模 vs. 商业产品:虽然 Nano Collective 的理念值得尊敬,但相比 GitHub Copilot 这类有数千工程师维护的产品,Nanocoder 的更新速度、Bug 修复响应和生态丰富程度仍有差距。
4. VSCode 插件成熟度:当前 VSCode 插件功能相对基础,nanocoder-vscode.vsix 只是一个初步集成,还没有完全将 terminal 的所有能力搬入 IDE。
Nanocoder 的出现代表了 AI 辅助编程领域的一个新兴趋势——由社区驱动、而非商业公司主导的工具链。这类工具的核心价值不在于"比 Copilot 更好",而在于提供了一种不依赖单一厂商、数据完全自主的选择。
从开源生态角度看,Nano Collective 正在构建一个工具矩阵(不只是 Nanocoder 一个项目),这个生态系统的协同效应值得关注。随着更多开发者加入贡献,Skills 库会越来越丰富,MCP 集成会越来越完善。
如果你关心数据隐私、追求工具自主可控、或者只是想体验"用自己的模型写代码"的自由感,Nanocoder 是一个值得尝试的选择。它的上手成本很低——装一个 Ollama、拉一个模型、跑一条命令,就能看到效果。
本报告基于 GitHub 仓库 v1.27.0 版本分析生成。