如何在little-coder中用大模型规划、小模型实现:Per-phase双模型完整使用指南
【免费下载链接】little-coderA harness optimized to smaller LLMs项目地址: https://gitcode.com/gh_mirrors/li/little-coder
little-coder是专为小模型优化的本地编码智能体(coding agent),它的 Per-phase 双模型(按阶段选模型)功能让你可以用大模型做规划、小模型做实现——规划阶段花大模型的"脑力",实现阶段交给快速廉价的小模型,从而在本地硬件上同时获得高质量计划和高执行速度。下面这份指南带你从零开始完成配置。
🎯 为什么大模型规划、小模型实现?
在动手之前,先理解这个设计背后的三个理由:
| 痛点 | 双模型方案 |
|---|---|
| 小模型做复杂规划容易跑偏、漏掉边界情况 | 规划阶段切到能力更强的大模型,产出可靠计划 |
| 大模型本地推理慢,写代码逐行输出代价高 | 实现阶段切回小模型,token 生成快、成本低 |
| 规划过程会占满上下文窗口 | 计划被批准后会保存为文件,实现阶段开全新会话只带计划本身,不把研究过程带进实现上下文 |
最后一点是 little-coder 的关键机制:计划批准后会持久化到.pi/approved-plan.md,执行/implement时会用一个"以计划为种子"的新会话启动工作,避免小上下文窗口被前期研究挤爆。
下图展示了 little-coder 这套脚手架对多语言编码任务的表现(对比 Aider Polyglot 基准),直观说明"小模型 + 好的脚手架 + 合理的阶段分工"能带来多大的提升:
⌨️ 核心命令一览
双模型配置全部通过斜杠命令完成,支持自动补全和模糊匹配(输入9b也能命中qwen3.5-9b):
| 命令 | 作用 |
|---|---|
/plan-model <名称> | 指定规划阶段(Plan Mode)使用的模型 |
/action-model <名称> | 指定实现阶段使用的模型 |
/phase-models | 查看两个阶段模型、当前激活模型和交接模式 |
/model-handover auto\|manual | 切换"自动交接"或"手动切换" |
/implement | 用实现模型在新会话中执行最近一次被批准的计划 |
示例:
/plan-model llamacpp/qwen3.8-27b /action-model llamacpp/qwen3.5-9b💡 模型标签是会话状态而非启动配置——你可以随时在会话中途更改,这正是该功能的设计初衷:拿同一份需求给两个规划模型做 A/B 对比。
📋 完整使用流程
第 1 步:设定两个阶段的模型
启动 little-coder 后,先指定规划模型与实现模型(名称支持模糊匹配):
/plan-model qwen3.8-27b /action-model 9b第 2 步:进入 Plan Mode 产出计划
按ctrl+q切换规划模式(输入框下方出现◆ PLAN MODE指示器),也可以启动时就用--plan-mode参数直接进入。提交需求后,little-coder 会:
- 派只读"子编码器"研究代码库,只把简报带回主上下文;
- 向你提 1–3 个澄清问题(带建议答案和自由填写项);
- 在聊天中写出完整计划——不会动任何文件。
第 3 步:批准计划
批准计划后它会保存到.pi/approved-plan.md并停下。此时不会切换模型——交接发生在实现真正开始的那一刻,所以"批准了又反悔想重写计划"不产生任何代价。
第 4 步:/implement 交给小模型执行
运行/implement,little-coder 会:切换到实现模型(如小模型)、开启以计划为种子上下文的全新会话、开始干活。研究、问答等前期消耗都不会吃掉实现所需的上下文。
按Esc可随时取消进行中的规划。
⚙️ 配置默认值
不想每次手动敲命令?可以在 models.json 顶层加默认键,或用环境变量:
| 来源 | 配置项 |
|---|---|
models.json | "planModel"/"actionModel"/"handover" |
| 环境变量 | LITTLE_CODER_PLAN_MODEL、LITTLE_CODER_ACTION_MODEL、LITTLE_CODER_MODEL_HANDOVER |
两个阶段都没设置时,每个阶段都用当前激活模型——即不配置就完全回退到普通用法,零影响。
⚡ 自动 vs 手动交接(本地用户必看)
默认是auto模式:进入 Plan Mode 自动切到规划模型,/implement时自动切到实现模型。
但本地部署有个重要细节:在单个 llama.cpp 后端上,模型切换会卸载并重新加载权重,可能带来约 15 秒的停顿。如果你希望完全掌控切换时机(比如在两个模型都预热的状态下手动切换),可运行:
/model-handover manual几个贴心的降级行为:
- ✅ 两个阶段指向同一模型时,交接是空操作,不会触发重载;
- ✅ 切换失败(模型不可用、缺密钥)时,会停留在当前模型并明确告知,而不是卡死。
🧰 常见问题速查
| 问题 | 解答 |
|---|---|
| 如何确认配置生效? | 运行/phase-models,可查看两个阶段模型、激活模型与交接模式 |
| 批准计划后可以不执行吗? | 可以。交接发生在/implement时而非批准时,反悔重写计划零成本 |
| 只想用一个模型? | 两个命令都不设置即可,各阶段沿用当前激活模型 |
| 本地切换卡顿? | 改用/model-handover manual,自己挑时机切换 |
| 更多模型从哪看? | little-coder --list-models列出所有已注册模型 |
📚 延伸阅读
- 功能与命令详解:README.md 的 "Per-phase model selection" 一节
- 脚手架架构与扩展机制:docs/extensions.md
- 项目系统提示词:AGENTS.md
- 基准测试叙述(含小模型实战数据):docs/benchmark-qwen3.6-35b-a3b.md
按"大模型想清楚、小模型写出来"的节奏工作,你只需记住三件事:/plan-model指定规划者、/action-model指定执行者、/implement一键交接。剩下的,little-coder 会替你管好上下文和模型切换。
【免费下载链接】little-coderA harness optimized to smaller LLMs项目地址: https://gitcode.com/gh_mirrors/li/little-coder
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考