本贴发布的目的不是推产品,不是炫技,而是想扬眉吐气——和华人开发者一起,和开源模型本地部署开发者一起,做一件我们自己的事。
去年开始用本地模型做编程辅助。原因很简单:公司代码不能传到海外服务器,Claude Code 和 Cursor 走不通。
但更大的问题是:中国开发者根本没有一个好用的本地 coding agent 平台。
CC 需要翻墙,还要订阅。Cursor 同样。Codex 刚出来也是海外服务。Hermes 这类开源工具不支持 Windows 原生运行,要装 WSL2 ,劝退了大多数国内开发者。最后大家的选择是:要么翻墙凑合用,要么忍着不用。
这是一个真实存在的空缺,没有人填。
本地跑 qwen3:8b ,然后发现问题一个接一个:
🔴 无限循环,像卡带一样
这是本地小模型最让人抓狂的问题。遇到它不会处理的场景,它不会说"我不知道",而是开始重复——同一句话说三遍,同一个错误的修改建议循环出现,同一段代码反复生成。整个任务卡死,只能手动强制退出。这不是偶发现象,是小模型在推理能力不足时的典型崩溃模式。
🔴 修 bug 反复踩同一个坑
让它修一个函数,第一次失败,第二次用完全一样的方式再试,第三次依然。三次机会全浪费在同一个错误上,什么都没推进。
🔴 模型能力本身就弱于 API 模型
这是无法回避的现实。8B 、14B 的参数量,推理能力和 Claude Opus 、GPT-4 差距明显。让一个 8B 模型扛下一个复杂任务的全部推理,成功率很低,这不是哪个工具的问题,是模型本身的边界。
🔴 找不到要改的文件
项目大了之后,模型根本不知道要改哪个文件。让它找 bug ,它要么猜错,要么说"我需要看更多代码",然后把整个项目塞进 context ,然后 context 又爆了。
🔴 对话几轮就开始遗忘
8B 模型 context 窗口只有 8K ,对话多了就满了,模型开始给出驴唇不对马嘴的回答。
这些问题叠在一起,用本地模型做开发辅助的体验极差。
所以我想自己做一个产品来跑。有人就会说:为什么不直接用 ollama + cc ?还友情指导我命令。
哎。
大厂的产品只会为它的商业模式服务。ollama 放弃了参数微调来换取稳定,lm 让开发者纠结什么是最优,CC/Codex/Cursor 都是卖 token ,没有人会真的认真想本地部署缺什么,需要优化什么,记忆怎么优化,上下文怎么压缩,小参数怎么辅助。
但我人微言轻,所以我做了个 MVP 想抛砖引玉。我们可以一起把要优化的都优化了,打造我们自己的产品。
有人也说,我能力不够。
那我的思路是:不够就做整合,够了就做突破。
所以我做了 KWCode ,不是为了商业化,MIT 任何人都能拿走,只希望哪个感兴趣的大神,愿意和我或者和所有开发者一起把它实现并开源,给所有被本地部署膈应的宝子们。
这是 KWCode 最核心的设计决策,也是解决上面所有问题的根本思路。
传统 coding agent 的架构是:一个 LLM 扛全部——理解需求、定位代码、生成修改、验证结果,全让同一个模型做。强模型能扛,小模型扛不住,然后就开始循环、幻觉、乱说。
KWCode 用的是 MoE ( Mixture of Experts )架构:把任务切碎,每个专家只做一件事,LLM 只负责 Gate 分类和内容生成,其他步骤能不调 LLM 就不调。
用户输入
└─► Gate ( LLM 做一次分类,判断任务类型)
└─► Locator ( BM25 + 调用图,不调 LLM ,毫秒级定位文件和函数)
└─► Generator ( LLM 只写需要修改的那几行代码)
└─► Verifier (自动跑语法检查 + pytest ,不调 LLM )
└─► SearchAugmentor (两次失败后自动搜索)
LLM 在这条流水线里的任务被压到了最小:Gate 做一次分类,Generator 生成几行代码。定位文件、验证结果这两件最耗推理能力的事,完全不让 LLM 做。
参考:Agentless 论文( ICSE 2025 )——确定性流水线在 SWE-bench 上同时达到最高通过率和最低成本,优于让 LLM 自主决策的复杂 agent 。原因很简单:每一步 scope 极小,小模型在小 scope 里表现稳定。
代码定位是小模型最容易失败的步骤,把它从 LLM 手里拿走,换成确定性算法。
CodeCompass ( arXiv:2602.20048 ,2026 年)做了 258 次实验,发现了一个关键结论:
真实项目里,很多 bug 的根因文件名和错误描述毫无关联,只能通过调用链追踪才能找到。对这类"隐藏依赖"任务,BM25 关键词搜索准确率只有 **76.2%**,而图遍历达到 **99.4%**,差了 23 个百分点。
KWCode 的两阶段检索:
整个过程不调 LLM ,SQLite 持久化调用图,重启不重建。
技术栈:tree-sitter + rank-bm25 + SQLite。不需要 Neo4j ,不需要 embedding 模型,不需要额外 Docker 。
针对"反复踩同一个坑"和"无限循环"这两个问题:
反无限循环:MAX_RETRIES 硬编码为 3 ,没有任何路径能绕过。同时检测连续两次生成完全相同的 patch ,直接跳过不重试,告诉用户"模型卡住了,建议缩小任务范围"。
反重复失败:三次重试强制用三种不同的问题表述:
| 第几次 | 策略 |
|---|---|
| 第一次 | 正常描述需求 |
| 第二次 | 从错误信息出发:"直接修复这个报错,不要解释" |
| 第三次 | 最小化修改:"只改这一个函数,其他代码一行不动" |
第一次失败后先做 Reflection:让 LLM 一句话分析上次失败的原因,然后把这个分析注入下次的 prompt 。不是让模型自由发挥,是强制它先诊断再修。
参考:EE-MCP ( NeurIPS 2025 )——从任务执行轨迹自动提取经验,验证可显著提升后续同类任务成功率。
KWCode 预置了 15 个专家( BugFix 、TestGen 、SpringBoot 、FastAPI 等),每个专家有独立的 system prompt 。
同类任务成功 5 次之后,飞轮自动分析轨迹,生成新专家,经过三道验证门后投产:
专家可以导出成 .kwx 文件,kwcode expert install URL 一行安装别人分享的专家。
CC 不需要考虑这个,因为它只用一个模型。KWCode 需要。
自动检测当前模型的参数量,然后应用不同策略:
| 模型规模 | 自动策略 |
|---|---|
| < 10B ( qwen3:8b ) | 强制计划确认 · 任务范围限 2 个文件 · 第 1 次失败触发搜索 |
| 10-30B ( qwen3:14b ) | 可选计划 · 4 个文件范围 · 第 2 次失败触发搜索 |
| > 30B ( qwen3:72b ) | 宽松策略 · 8 个文件 · 自动处理复杂任务 |
切换模型,策略自动切换。
核心功能跑通了。282/282 单元测试通过,E2E 验收通过率 87%( 26/30 ,4 个失败是模型能力边界,不是框架问题)。
代码能力
工程能力
/plan 计划模式 + 风险评估( High/Medium/Low ,基于历史失败记录)体验
说实话,有些地方还挺粗糙的:
我一个人做这个工具有明显的上限,不是技术上的上限,是视野上的上限。
我自己主要用 Python 和 FastAPI ,所以这方面想得细。但我不知道每天写 Spring Boot 的人最痛的点在哪,不知道搞 Rust 的人在本地模型上遇到什么问题,不知道做小程序的人需要什么。
更重要的是,这件事不应该只是一个人的工具,应该是中国开发者社区的工具。
CC 是 Anthropic 的,Cursor 是美国公司的,Hermes 是外国社区做的。我们用的工具,我们的使用习惯、技术栈偏好、本地化需求,从来都是别人顺手加进去的功能,不是第一优先级。
我想做的是反过来——把中国开发者的需求放在第一位,把本地开源模型的适配放在第一位,然后把这个工具做到能和大厂产品掰手腕。
这件事一个人做不到,但开源社区可以。
Linux 打败了 Unix ,不是因为某一个天才,而是全球开发者共同维护了几十年。VSCode 能超过那么多商业 IDE ,也是因为背后有庞大的插件和贡献生态。
KWCode 不需要你有多高的水平,只需要你在用本地模型做开发,然后把你遇到的问题、你的解法、你的改进贡献进来。多一个人,就多一个使用场景被照顾到,多一个坑被填掉。
Fork 这个项目,改进你最痛的那个点,提 PR ,我们互相借力,一起把它做好。
闭源大厂有钱有人有算力,我们有什么?我们有真实的使用场景,有对本地部署的真实需求,有不依赖海外服务的动力。这已经足够了。
项目地址:github.com/val1813/kwcode
# Fork 项目,克隆到本地
git clone https://github.com/your-fork/kwcode.git
cd kwcode
# 安装开发版
pip install -e ".[dev]"
# 运行测试确认环境正常
python -m pytest kaiwu/tests/ -v
# 找一个你最想改的地方,开始动手
git checkout -b fix/your-improvement
改什么都可以:
Issues 里列了已知问题和规划中的功能,可以从那里找方向。Discussions 里可以聊技术思路,聊某个方向值不值得做。
没有什么贡献太小。
我不知道 KWCode 能不能真的超越 CC 或者 Hermes 。
但我知道,如果中国开发者一直用别人做的工具,一直把自己的需求当作"次要功能"等别人来实现,这件事永远不会有答案。
有些东西,只有自己做才知道能不能做到。
项目是 MIT 开源的,你贡献的代码永远是你的。如果 KWCode 最后做成了,这件事是所有参与的人一起做成的。
项目地址:github.com/val1813/kwcode
天工开物 · KWCode · 中国开发者自己的本地 Coding Agent
101
kda1578888 Apr 29
|
102
wezzard Apr 29
想起我之前用 7B 的小模型做本地的 RAG ,我感觉很没有必要
|
103
Debin006 Apr 30
有群吗?我们可以一起来开发
|
104
pipi32167 Apr 30 几个问题:
MoE 术语误用:不是模型架构层面的专家路由,而是工程上的任务流水线( LLM 分类 + 确定性模块执行)。 核心假设不成立:让小模型做 Gate 分类——编程场景的分类本身依赖深层语义理解(如“优化性能” vs “修复 bug”),8B 模型分类准确率堪忧,一旦分错整条流水线全错。 确定性定位有语义盲区:BM25 + AST 调用图只能找语法关联,无法理解业务逻辑错误(如“重复扣款”的根因是并发控制不当,而非关键词最多的文件)。 搜索增强治标不治本:小模型组织搜索词能力弱,搜索结果难以精准转化为修复方案。 |
105
KingGaruda Apr 30
@KaiWuBOSS 我不太确定我有没有聊偏;让 llm 做最基础的工作,通过局部较优,达成全局相对优,思路我理解是 ok 的,我理解这里的流程卡点是 划分局部的工作谁在执行?以及任务的合并优化谁来处理?所谓的元专家组么?他的效果怎么保证,我理解你思路所说的专家飞轮是基于存在 ground truth 的情况才存在不断迭代突破模型上限的可能。但是如果知道 ground truth 的话,理论上,我感觉其实你对 AI 的生成其实不强依赖。纯工程的方法可能会更高效。
另外,你现在的思路以及方案,总的来说是自上而下的看待问题,和拆分问题。可以实际自下而上的手动 run 一趟,自己充当框架的连接点。我理解只要能跑通一次,你的框架至少在某个场景下一定是有效的。换句话说,先针对性的实现一个东西再不断拓展。你现在认为粗糙的地方我觉得都是不紧要的,你限定 语言、操作系统、交互形式、产品形态出一个足够好用的东西,自然会引发如何拓展的思考,现在聊的太泛,大家很难聚焦问题,和了解你实际的效果。 |
106
KaiWuBOSS OP @KingGaruda 对的 现在只针对 vibe code 。python 一个语言。
另外你的观察很准确,ground truth 的问题确实存在, 但飞轮的验证标准不是人工标注,而是 pytest—— 代码跑绿就是客观的 ground truth ,这是工程上 可以自动化的。 关于元专家的问题,你说得对,任务划分和合并 不应该让 LLM 做,KWCode 里这些都是确定性代码 ( Locator/TaskCompiler/Orchestrator ), LLM 只做 Gate 分类和代码生成这两件工程做不到的事。 你的直觉是对的:能工程化的就工程化, LLM 是最后的手段,不是第一个选择。 这正是这个架构的核心思路 |
107
jinsongzhaocn 4 days ago
文档写得好认真, 感觉丢给 AI 可以开始写出来了. Kwcode 最难的可能是定位了, CC 的定位其实挺完善的, 非常难竞争. CC 很开放,它可以对接第三方大模型,对接本地模型也足够写汇总规划,引流方面这已经是极致了吧,对比其他大厂推出的 coding 工具,都是适配自家模型; 虽然禁止国内访问, 但这也是最契合它的商业定位.毕竟中国是超级流量,但是总体消费水平还不够高,大量的多人共享账号,哪怕实名制也够呛能控制. 应该算是把开放性和成本控制都做到了最佳实现.再偏袒用户一点,估计就是允许多路由了,选不同模型切换不同的供应商, 这个又被 OpenCode 实现了, 但也验证了开了这个口子,收入大减,OpenCode 的兼容适配速度这么慢就知道缺少资源投入.
|
108
COW 2 days ago
虽然你的想法很好,但看了文档前几行实在看不下去,AI 味太重了。可以参考下 #40 楼的观点,做开源就不要想着做太重了,否则你做出来的东西一定达不到社区标准。
|
109
AlexaZhou 1 day ago
|
110
KaiWuBOSS OP @AlexaZhou TSP 最有价值的场景是:多个 Agent 共享同一套工具、需要跨机器远程工具调用、工具层需要严格沙箱隔离(比如云端多租户环境)。kwcode 是本地单用户工具,这些场景都不适用。
什么时候 TSP 有价值 如果未来 kwcode 做云端多用户部署,多个用户的 agent 跑在同一台服务器上,需要严格隔离每个用户的文件系统——那时候 TSP 的沙箱机制就很有价值,值得引入。 我持续关注项目 谢谢提醒 |
111
KaiWuBOSS OP @COW 其实这也是没办法的事情,坦白说 我对代码细节不了解,我用了两个月 vibe 我对大框架和一些专有名词能理解,但是具体用什么理论实现什么工程 只能依赖 ai 。所以 readme 你让我自己写 真的有点为难。
嗯 我持续学习,尽量后面能让读者都能读懂。 |
112
AlexaZhou 1 day ago
@KaiWuBOSS 你说的是其中一方面,其实不只是这样,我举例来说:
如果模型想用 bash 命令启动一个开发服务器在后台一直跑,并且持续监控日志输出。那就需要实现 bash 实现对应的超时返回,和后台进程管理,输出获取能力,而不只是简单的执行命令 又或者 edit 在给模型用时,不能只是 apply_patch ,需要做 allow_multiple + unique match 检查来减少误操作 每个工具都有很多的细节,细节没做好,给模型用就会影响整体效果。这一块自己从头实现,想做好是很花时间的。 TSP 要提供的就是一个完整的解决方案,开发者可以直接把 tools 这一层拿去用,专注做自己的业务,就不用干这些脏活累活了。同时 TSP 因为在多个项目中得到锻炼,就可以把 tools 这一层做的更高质量 |
113
KingGaruda 10h 54m ago
@KaiWuBOSS 我觉得你思路没问题,但是没法达到替代 opus 的效果,应该能达到早期 cursor 的那种效果,代码能跑绿,符不符合预期看命,迭代会很痛苦。项目越大,效果越差。因为现在的 coding 模型起到的作用不只是单纯的生成了。
|
114
stone981023655 9h 29m ago
带有名族情绪的内容, 我一般都不看好, 这也是我个人评价. 像被绑架了 不予置评
[但我知道,如果中国开发者一直用别人做的工具,一直把自己的需求当作"次要功能"等别人来实现,这件事永远不会有答案。] |