基于 Ollama + Qwen3 构建的 C/C++ AI 编程助手。
Claude-Qwen 是一个开源的 AI 编程助手,专注于 C/C++ 项目开发。通过本地部署的 Qwen3 大模型,提供智能代码补全、错误修复、测试生成等功能。
设计灵感: 参考 Anthropic Claude Code 的工作机制,结合 Ollama 的本地部署优势。
核心特性:
- 🔍 智能文件导航 - 跨目录搜索定位代码
- 🔧 自动编译修复 - 识别并修复编译错误
- ✅ 测试用例生成 - 自动生成 GTest 单元测试和集成测试
- 💾 上下文管理 - Token 预算分配和智能压缩
- 🔄 VSCode 集成 - Diff 对比和一键应用修改
- 数据不上传云端,保护代码隐私
- 无需 API Key,零使用成本
- 离线可用,不依赖网络
- 深度集成 CMake 和 GTest
- 理解 C++ 编译错误格式(gcc/clang/MSVC)
- 使用 tree-sitter 准确解析代码结构
- 128k 超长上下文窗口
- 分类 token 预算,优先保留关键信息
- 自动压缩历史对话,保持流畅体验
- 两阶段 Agent 设计(意图识别 + 自主执行)
- 动态调整工具调用策略
- 编译-修复循环,最多 3 次重试
- Python 3.10+
- Ollama 已安装
- CMake 3.15+(仅用于测试项目构建)
# 1. 克隆项目
git clone https://github.com/yourusername/claude-qwen.git
cd claude-qwen
# 2. 安装依赖
pip install -e .[dev]
# 3. 拉取 Qwen3 模型
ollama pull qwen3
# 4. 验证安装(运行测试)
python tests/run_all_tests.py# 启动 CLI 交互模式
claude-qwen
# 常用命令示例
> 找到 network_handler.cpp 并添加超时重试机制
> 编译项目并修复所有错误
> 为当前文件生成单元测试
> 分析 HTTP 模块的依赖关系修改 config/ 目录下的配置文件:
token_budget.yaml- Token 分配策略和压缩阈值ollama.yaml- 模型参数(temperature, top_p 等)tools.yaml- 工具白名单和安全限制
项目包含 6 个完整的端到端测试:
| 测试用例 | 说明 | 验证点 |
|---|---|---|
| test_case_1 | 跨目录文件定位 + 功能添加 | grep 搜索、代码插入、风格保持 |
| test_case_2 | 编译错误自动修复循环 | 错误解析、循环修复、终止条件 |
| test_case_3 | 单元测试生成 | GTest 框架、边界测试、函数覆盖 |
| test_case_4 | 模块集成测试生成 | 依赖分析、Mock 策略、边界行为 |
| test_case_5 | 上下文保持 | 多轮对话、历史记忆 |
| test_case_6 | 错误恢复机制 | 最大重试、Session 保存 |
运行测试:
# 全部测试
python tests/run_all_tests.py
# 单个测试
python tests/test_case_1.pyclaude-qwen/
├── backend/ # Python 后端
│ ├── agent/ # Agent 核心逻辑
│ ├── llm/ # Ollama 客户端
│ ├── tools/ # 工具系统(文件、编译、分析)
│ └── cli.py # 命令行界面
├── vscode-extension/ # VSCode 插件(开发中)
├── tests/ # 测试用例
│ └── fixtures/ # 测试项目(包含故意的错误)
├── config/ # 配置文件
└── README.md
- 测试用例和测试项目
- 项目结构和配置文件
- Token 计数器
- Ollama 客户端
- 基础工具(view/edit/grep/bash)
- Agent 主循环
- 上下文压缩
- CLI 交互界面
- VSCode 插件
新功能
- 工具执行结果摘要显示(最多5行,绿色成功/红色错误)
find_similar_file智能路径纠错,自动建议相似文件名
Bug 修复
- 修复 git 工具参数被 validator 校验掉的问题(LLM 发送 JSON 字符串时)
- 修复 "总是允许" 功能对 view_file 等工具未生效的问题
- 修复确认系统测试用例的 API 不匹配问题
重构
- 重写
test_edit_file_confirmation.py适配新的 edit_file API(old_str/new_str) - 更新确认测试以使用
ConfirmResult返回类型
我们欢迎任何形式的反馈和贡献!
- Bug 报告:GitHub Issues
- 功能建议:打上
enhancement标签 - 使用问题:打上
question标签
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交修改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
- Discussions:项目设计、架构讨论
- QQ 群:123456789(待建)
- 邮件:your.email@example.com
- Anthropic Claude Code - 设计灵感来源
- Ollama - 本地大模型部署
- Qwen - 基座模型
- tree-sitter - 代码解析
MIT License - 详见 LICENSE 文件