开发者用Qwen3 1.7B+ Ollama构建终端编程助手MINICODE,探索小模型+工具增强的可行边界。
我对本地 AI 一直很感兴趣,尤其是用那些并非 massive AI 工作站的硬件来跑 AI 模型。
某一天,我开始思考一个问题:
如果一个编程 Agent 必须跑在一个极小的本地模型上,它能做到多有用?
于是我决定动手做一个。
这就是 MINICODE 的由来。
MINICODE 是一个基于终端的 AI 编程 Agent,围绕小型本地语言模型构建。
默认配置通过 Ollama 使用 Qwen3 1.7B。
目标并不是去和那些庞大的云端模型竞争。
我真正想做的是,通过给模型配备工具、让它与编程环境交互,来实验一个小模型究竟能有多实用。
它可以操作文件、运行命令、搜索网页、维持对话上下文,以及与当前项目进行交互。
我桌下并没有一台巨大的 GPU 服务器。
我想要的是一款能跑在本地、相对轻量的工具。
1.7B 模型和那些大模型相比显然有局限,但这恰恰是这件事有意思的地方。
我不想靠砸一个更大的模型来解决问题,而是想看看通过 Agent 本身能在多大程度上改善体验。
模型不需要独自完成所有事情。
MINICODE 可以给它配备工具。
我最先认识到的一件事是:构建一个 AI 编程 Agent 和做一个聊天机器人是非常不同的。
聊天机器人只能生成回复。
而 Agent 需要与这个世界互动。
举例来说,如果我让 MINICODE 修改一个项目,模型需要搞清楚它需要哪些文件、检视这些文件、做修改,然后可能运行命令来测试这些修改。
这就形成了一个循环,大致如下:
User
↓
Model
↓
Tool call
↓
Tool executes
↓
Result goes back to model
↓
Model decides what to do next
让这个循环可靠地运转起来,是这个项目最有意思的部分之一。
我不想让 AI 拥有无限的控制权
另一件我非常在意的事是安全。
给 AI 开放终端访问意味着它有可能执行一些你并不想让它执行的命令。
所以 MINICODE 在执行潜在危险操作之前会请求确认。
AI → execute command
AI → "I want to execute this command"
↓
You approve?
↙ ↘
Yes No
↓ ↓
Execute Tell AI
如果我拒绝了一个操作,模型会收到这个反馈,然后可以尝试另一种方式。
这是一个简单的系统,但我觉得在实验自主工具时让人始终保持在循环中是非常重要的。
我希望编程会话是持久的,而不是关闭终端就消失。
MINICODE 可以保存对话,这样我之后还能回来继续。
这意味着我可以做一些工作、保存会话,然后在另一个时间继续做下去。
它不是什么复杂的长期记忆系统,但确实让这个 Agent 变得更实用了。
让安装变得简单
我还希望别人不需要花一个小时配置环境就能试用这个项目。
所以我写了一个安装脚本,负责处理初始设置。
curl -fsSL https://raw.githubusercontent.com/ANIRudH-lab-life/MINICODE/main/install.sh | bash
minicode --setup
minicode
默认配置使用 Ollama 和 Qwen3 1.7B,所以你可以直接开始实验一个本地编程 Agent,无需云端 API。
有趣的部分:小模型其实很难
使用 1.7B 模型工作实际上让我对 Agent 有了更深的理解。
用大模型的时候,一个一般的 prompt 或不完美的工具设计有时候也能勉强过关。
但用小模型,这些问题就会暴露无遗。
如果工具设计得不好,它就会卡壳。
如果上下文变得混乱,它就会卡壳。
如果错误提示不够清晰,它就会卡住无法前进。
这意味着我必须更加仔细地思考 Agent 架构是如何运作的。
而这大概是构建 MINICODE 最有价值的部分之一。
它仍然是一个进行中的项目
MINICODE 远未完成。
还有很多我想改进的地方:
但我并不觉得这是一个问题。
这个项目的全部意义就在于实验。
我想继续探索小型本地模型能做到什么程度。
为什么我要做这个
对我来说,MINICODE 不仅仅是一个 AI 包装器。
我感兴趣的是:当你给一个相对较小的模型配上合适的环境、工具和架构时,会发生什么。
也许本地 AI 的未来并不总是意味着跑最大的模型。
也许有时候,关键在于让小模型跑得更好。
这正是我想找到答案的问题。
如果你想看看,项目全部开源:
GitHub: https://github.com/ANIRudH-lab-life/MINICODE
我很期待看到大家能用它做出什么。