开源
Qwen 27B 自主开发 C99 编译器,耗时近半年
社区开发者用自建 Agent 框架驱动 Qwen 3.6/3.8 27B,完成可生成 x64 ELF 的 C99 编译器…
2026.08.25 · 周二约 3 分钟阅读
社区开发者 Naiw80 在 Reddit r/LocalLLaMA 分享了一项耗时近半年的实验:使用自建的 Agent 编排框架,让 Qwen 3.6/3.8 27B 模型自主完成一款可生成 x64 ELF 可执行文件的 C99 编译器。相关代码已开源在 GitHub(Na1w/tc)。
项目背景
作者从 3 月底开始接触 Qwen 3.6 27B 模型,发现其在工具调用方面表现稳定,不会像多数同尺寸模型那样在多轮交互中跑偏。基于这一观察,他搭建了一个具备自我纠错能力的 Agent 框架,并内置了重复检测、空白回答识别等机制。Qwen 3.8 发布当天,他将模型升级至 3.8 27B。
多智能体架构
框架采用严格的角色分工,包含:
- 规划者(planner):拆解任务、制定步骤
- 编码者(coder):负责具体代码生成
- 调试者(debugger):定位并修复错误
- 研究员(researcher):查阅资料以补充预训练知识
- 验证子智能体(validator):独立校验输出
各角色聚焦自身任务,独立完成规划、重排与执行。模型被要求「先研究再执行」,而非直接依赖预训练知识,从而降低幻觉风险。
硬件配置方面,主推理节点采用 Tesla P100 + RTX 4070 跑 Qwen 模型,推理速度约 13–14 tok/s、prefill 约 250 token/s;另一台机器的 Intel Arc B580 运行 Gemma4 12B 作为验证器。
关键挑战
- 上下文管理:作者使用 llama.cpp 作为推理引擎且未启用 context-shift,因此编排器自身的上下文压缩与剪枝策略至关重要。早期方案常因 KV cache 被反复重建而陷入「6–7 分钟 prefill 后才生成下一轮 tool call」的循环,前 3 周未能找到好的解法。
- x86 指令生成:模型在编写机器码时倾向于「幻觉」操作码而非查阅资料。最终通过强化 coder/debugger 的系统提示(鼓励调用 libcapstone 等反汇编工具)才得以改善,这部分也是整个项目耗时最久的环节。
结果与意义
单次最长连续运行约 1 周,前后历经约 6 周密集迭代。作者表示,这可能是他目前所见该模型完成的最复杂项目。该案例说明:在合适的 Agent 编排下,27B 级别的开源权重模型也能胜任编译器级别的大型代码工程任务。
