Files
kwcode/README_zh.md
Val-sss 2c4d792baa feat: v1.7.0 KAIJU架构借鉴 — bounded context + sub-task decomposition + DetailedLogger
三个核心改动:
1. Generator bounded context: 只传当前函数代码+相关failing tests,不传完整历史
2. 存根任务sub-task decomposition: 多pass函数逐个独立实现,每个函数独立context
3. DetailedLogger完整流水线日志: 不截断LLM输入输出,记录各节点IO和工程决策

附带修复:
- OpenAI兼容API检测: localhost非标准端口探测/api/tags判断是否Ollama
- LLM Backend on_call钩子: 每次调用自动触发回调记录

513 tests passed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-07 18:24:56 +08:00

488 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# KWCode · 天工开物
<div align="center">
**中国开发者的本地 Coding Agent**
*数据不出网 · Windows 打开就能用 · 越用越懂你的项目*
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![Python](https://img.shields.io/badge/Python-3.10+-blue.svg)](https://python.org)
[![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Mac%20%7C%20Linux-lightgrey.svg)]()
[![Tests](https://img.shields.io/badge/Tests-282%2F282-brightgreen.svg)]()
[![Version](https://img.shields.io/badge/Version-1.7.0-blue.svg)]()
</div>
---
## 为什么做这个
### 本地模型跑 Coding Agent有五个核心痛点
**痛点一:上下文爆炸**
小模型窗口只有 8K-32K。对话几轮后 context 塞满,模型开始胡说。现有工具没有上下文管理,用着用着就废了。
> KWCode 解法:**纯算法上下文压缩**(头尾保留 + 中间关键词提取,<10ms自动在 context 快满时压缩历史对话。你能一直聊下去,不会突然变傻。
**痛点二:错误重复回复**
小模型修 bug 失败后,用同样的方式再试一遍,三次机会全浪费在同一个错误上。
> KWCode 解法:**三阶段重试策略**——第一次正常描述,第二次从错误信息出发,第三次最小化修改。每次重试前先做 ReflectionLLM 一句话分析上次为什么失败),绝不重复同样的错。失败模式还会记录到 PATTERN.md下次遇到类似任务直接提高风险等级。
**痛点三:不能调用工具**
大部分本地 agent 框架只能生成代码文本,不能真正执行命令、读写文件、跑测试。生成的代码对不对,全靠人肉验证。
> KWCode 解法:**内置 5 个确定性工具**read_file / write_file / run_bash / list_dir / gitGenerator 生成 patch 后 Verifier 自动执行语法检查 + pytest失败立即重试。不是"建议你跑一下测试",而是真的帮你跑了。
**痛点四:数据安全**
Claude Code、Cursor 把代码发到海外服务器。公司代码、内网项目走不通。
> KWCode 解法:**全部本地运行**,代码不出你的电脑。模型跑在 Ollama搜索跑在本地 SearXNG统计数据存本地 SQLite。零网络依赖搜索增强可选
**痛点五:代码定位靠猜**
现有工具把文件列表丢给 LLM 让它猜哪个文件相关。小模型猜错文件,后面全错。
> KWCode 解法:**BM25 + AST 调用图**两阶段定位,毫秒级,不调 LLM。沿调用链追踪隐藏依赖不靠猜。
---
## 核心技术原理
### 原理一:确定性专家流水线
**理论来源**AgentlessICSE 2025——确定性流水线在 SWE-bench 上同时达到最高通过率和最低成本,优于复杂 agent 架构。
不让 LLM 自主决定下一步,而是走确定性的专家流水线:
```
用户输入
└─► Gate 任务分类,毫秒级路由
└─► Locator 精准定位文件和函数BM25+调用图不调LLM
└─► Generator 只生成修改部分从文件读originalLLM只写modified
└─► Verifier 语法检查 + pytest 自动验证
└─► SearchAugmentor 失败时自动搜索补充信息
```
小模型只需要在极小的 context 里做一件明确的事。失误可以被及时发现和纠正,不会滚雪球。
---
### 原理二BM25 + AST 调用图定位(核心差异化)
**理论来源**
- CodeCompassarXiv:2602.200482026258 次实验证明隐藏依赖任务G3类图遍历准确率 **99.4%** vs BM25 **76.2%**,相差 23.2 个百分点
- KGCompassarXiv:2503.217102025SWE-bench Lite 成功率 **58.3%**89.7% 的成功定位来自多跳图遍历
**什么是 G3 类任务**bug 所在的文件名和函数名,与错误描述没有任何关键词重叠,只能通过调用链追踪发现。这是真实项目里最常见、最难定位的一类 bug。
**KWCode 的两阶段检索**
```
用户描述 "修复登录失败的 bug"
├─► 阶段1BM25 关键词召回(毫秒级,不调 LLM
│ 从代码库所有函数/类中,按关键词相关性
│ 召回 top-20 候选函数
└─► 阶段2AST 调用图展开(毫秒级,不调 LLM
对每个候选函数,沿调用图向上向下各展开 2 跳
发现那些名字和 bug 毫无关联但实际是根因的隐藏函数
结果:精准的相关函数集合,直接注入 Generator
```
技术实现:`tree-sitter` 多语言 AST + `rank-bm25` + `SQLite` 调用图持久化。不需要 Neo4j不需要 Docker不需要 embedding 模型。
支持语言Python已完成· JavaScript/TypeScript/Java/Go/Rust规划中
---
### 原理三:专家飞轮(越用越懂你的项目)
**理论来源**EE-MCPNeurIPS 2025——从任务执行轨迹自动提取经验验证可显著提升后续同类任务成功率。
KWCode 的专家会随使用自动生长:
```
第1天15 个预置专家开箱即用
使用过程中,飞轮在后台静默积累:
同类任务成功 ≥5 次 → 触发专家草稿生成
回测门:新专家成功率 ≥ 原流水线
AB 测试门10 次真实对比,提升 >10%
三道门全过 → 专家正式投产,弹出通知
一个月后:你的项目有了专属专家池
```
专家可以导出分享:
```bash
kwcode expert export SpringBootExpert
# → SpringBootExpert-1.0.0.kwx
kwcode expert install path/to/Vue3Expert.kwx
```
---
### 原理四:模型能力自适应
KWCode 是全球唯一针对本地小模型能力差异做自适应的 coding agent。
| 模型规模 | 自动策略 |
|---------|---------|
| <10Bqwen3:8b | 强制计划确认 · 任务范围≤2文件 · 第1次失败触发搜索 |
| 10-30Bqwen3:14b | 可选计划 · 任务范围≤4文件 · 第2次失败触发搜索 |
| >30Bqwen3:72b | 宽松策略 · 任务范围≤8文件 · 自动处理复杂任务 |
切换模型,策略自动切换,无需配置。
---
## 功能特性
### 代码能力
- BM25 + 调用图两阶段定位G3 隐藏依赖准确率 99.4%(论文验证)
- Generator 只改必要部分,从文件读 originalLLM 只生成 modified
- 三阶段重试:正常描述 → 从错误出发 → 最小化修改,不重复同样的错
- Reflection 机制:第一次失败先分析根因再重试
### 流程控制
- `/plan 计划模式`:显示执行步骤+风险等级High/Medium/Low确认后才动文件
- `Checkpoint 快照`:任务开始前自动备份,失败一键还原,降级建议
- `KWCODE.md 项目规则`:写项目约定,按任务类型分段注入,永远不忘
### 知识积累
- 三层记忆PROJECT.md项目结构/ EXPERT.md专家记录/ PATTERN.md失败模式
- 非代码文件读取PDF 需求文档 / Word 规范 / MarkdownBM25 匹配相关段落注入
- 失败模式记录:历史失败积累,/plan 时作为风险评估依据
### 搜索增强
- 默认 DuckDuckGo零配置pip install 就能用)
- 可选 SearXNG 自部署:`kwcode setup-search` 一键安装,数据完全不出网
- 四级内容提取trafilatura → newspaper3k → readabilipy → BeautifulSoup
- 并行搜索 + BM25 重排:结果质量优先
- 意图感知:代码/论文/包/debug 自动优化搜索词
### Office 文档
- Excelopenpyxl 样式模板,深色表头,斑马纹,公式,冻结首行
- PPTpython-pptx商务配色三明治结构不用默认白底
- Wordpython-docx中文首行缩进规范字体表格样式
### 价值可见
- `kwcode stats`:完成任务数、节省时间估算、专属专家数
- 飞轮通知:专家投产时弹出,显示成功率提升和速度对比
- 里程碑提醒:完成 50/100/200 个任务时自动汇报
### 中国本地化
| 场景 | CC / Hermes | KWCode |
|------|------------|--------|
| Windows 运行 | 仅 WSL2 / 云端 | cmd/PowerShell 原生 |
| 搜索增强 | DDG/Brave被墙 | SearXNG 自部署 / DDG fallback |
| 推荐模型 | GPT / Claude | DeepSeek · Qwen3 · GLM |
| 中文交互 | 英文为主 | 全中文 |
---
## 与竞品对比
| 功能 | Claude Code | Hermes | KWCode |
|------|------------|--------|--------|
| 数据安全 | ❌ 代码上传云端 | ✅ 本地 | ✅ 本地 |
| Windows 原生 | ✅ | ❌ 仅 WSL2 | ✅ |
| 小模型专家流水线 | ❌ | ❌ | ✅ 独有 |
| 模型能力自适应 | ❌ | ❌ | ✅ 独有 |
| AST 调用图定位 | ❌ | ❌ | ✅ 独有 |
| 专家飞轮三道门 | ❌ | ❌ | ✅ 独有 |
| /plan 风险评估 | ✅ | ❌ | ✅ |
| Checkpoint 回滚 | ✅ | ❌ | ✅ |
| 非代码文件读取 | 部分 | ❌ | ✅ |
| 价值量化仪表盘 | ❌ | ❌ | ✅ 独有 |
| 开源 | ❌ | ✅ MIT | ✅ MIT |
---
## 快速开始
### 系统要求
- Python 3.10+
- 任意 OpenAI 兼容 API本地 Ollama / DeepSeek / 硅基流动 / Qwen 云端 等)
- Docker可选用于 SearXNG 搜索增强)
| 使用方式 | 说明 |
|---------|------|
| 本地模型 | 安装 [Ollama](https://ollama.com/download),拉取 qwen3:8b 等模型 |
| 云端 API | `/api default https://api.deepseek.com your-key`,无需本地显卡 |
本地模型显存参考:
| 显存 | 推荐模型 |
|------|---------|
| 4GB | gemma3:4b |
| 8GB | qwen3:8b |
| 16GB | qwen3:14b |
| 24GB+ | qwen3:30b-a3b |
### 安装
```bash
# 安装 KWCode
pip install kwcode
# 国内加速:
pip install kwcode -i https://pypi.tuna.tsinghua.edu.cn/simple
# 启动
kwcode
```
首次启动会引导你配置模型连接,按提示操作即可。
用云端 API 不需要本地显卡:
```
/api default https://api.deepseek.com your-api-key
```
### 可选:安装搜索增强
```bash
kwcode setup-search
```
需要 Docker Desktop 已安装并运行。会自动拉取 SearXNG 镜像(约 200MB并启动容器。不装也能用默认走 DuckDuckGo 搜索。
---
## 使用指南
### 交互模式(推荐)
```bash
kwcode
```
进入 REPL直接输入任务描述
```
> 修复登录验证失败的问题
> 写一个 FastAPI 登录接口,包含 JWT 认证
> 把 calculate_price 拆成更小的函数
```
### 单次执行
```bash
kwcode "修复登录验证失败的问题"
kwcode --plan "重构数据库连接层"
```
### REPL 命令
```
/plan <任务> 计划模式,显示步骤和风险后再执行
/model qwen3:14b 切换模型
/api API 配置(见下方说明)
/experts 查看已注册专家
/memory 查看项目记忆
/init 初始化项目规则文件
/cd <路径> 切换项目目录
/help 显示帮助
```
### 接入任意 API
KWCode 支持任何 OpenAI 兼容的 API包括 DeepSeek、Qwen 云端、硅基流动、零一万物、Groq 等。
**临时切换**(当前窗口有效,关掉就恢复):
```
/api temp https://api.deepseek.com your-api-key
/api temp https://api.siliconflow.cn/v1 your-api-key
```
**永久保存**(写入配置文件,下次启动自动使用):
```
/api default https://api.deepseek.com your-api-key
```
**查看当前配置**
```
/api show
```
也可以在启动时通过命令行指定:
```bash
kwcode --ollama-url https://api.deepseek.com
```
### 项目规则文件
在项目根目录创建 `KWCODE.md`,写入你的项目约定:
```markdown
## [all] 通用规则
- 测试框架pytest
- 运行测试pytest tests/ -v
## [bugfix] Bug修复规则
- 修复前先理解错误原因
- 不要改测试代码
## [codegen] 代码生成规则
- 变量命名用 snake_case
- 必须写 docstring
```
KWCode 启动时自动加载,按任务类型注入对应规则。
### Office 文档生成
```
> 做一个季度销售报表 Excel包含月份、销售额、环比增长
> 做一个项目汇报 PPT商务风格5页
> 写一份技术方案 Word包含架构图描述和接口设计
```
### 专家管理
```bash
kwcode expert list # 查看所有专家
kwcode expert info BugFix # 查看专家详情
kwcode expert export BugFix # 导出为 .kwx 文件
kwcode expert install path/to/x.kwx # 安装外部专家
kwcode expert create MyExpert # 创建自定义专家
```
### 价值报告
```bash
kwcode stats
```
显示过去 30 天的任务完成数、节省时间估算、最活跃专家。数据仅存本地。
---
## 开发者安装
```bash
git clone https://github.com/val1813/kwcode.git
cd kwcode
pip install -e ".[dev]"
python -m pytest kaiwu/tests/ -v --ignore=kaiwu/tests/bench_tasks
# 282 tests should pass
```
### 项目结构
```
kaiwu/
├── cli/main.py # CLI 入口REPLspinner结果摘要
├── core/
│ ├── gate.py # LLM 任务分类
│ ├── orchestrator.py # 确定性流水线编排
│ ├── planner.py # /plan 计划模式 + 风险评估
│ ├── checkpoint.py # 文件快照git stash / 文件复制)
│ ├── kwcode_md.py # KWCODE.md 规则加载
│ └── model_capability.py # 模型能力自适应
├── experts/
│ ├── locator.py # BM25 + 调用图定位
│ ├── generator.py # 代码生成(只改必要部分)
│ ├── verifier.py # 语法检查 + pytest
│ └── search_augmentor.py # 搜索增强 + BM25 重排
├── search/
│ ├── duckduckgo.py # SearXNG + DDG 并行搜索
│ ├── extraction_pipeline.py # 四级内容提取
│ └── intent_classifier.py # 意图感知分类
├── knowledge/doc_reader.py # PDF/Word/MD 文档读取
├── flywheel/ # 专家飞轮轨迹→模式→生成→AB测试
├── registry/ # 专家注册表 + .kwx 打包
├── memory/ # 三层记忆系统
├── ast_engine/ # tree-sitter AST + 调用图
├── notification/ # 飞轮通知
├── stats/ # 价值量化SQLite
└── llm/ # Ollama + llama.cpp 双后端
```
---
## 参考文献
1. **Agentless**Xia et al. *ICSE 2025* — 确定性流水线优于复杂 agent
2. **CodeCompass***arXiv:2602.20048, 2026* — 图遍历 G3 任务 99.4% vs BM25 76.2%
3. **KGCompass**Yang et al. *arXiv:2503.21710, 2025* — SWE-bench Lite 58.3%
4. **AgentCoder**Huang et al. *EMNLP 2023* — 多专家分工验证
5. **EE-MCP***NeurIPS 2025* — 任务轨迹经验提取机制
6. **Agent Psychometrics***arXiv:2604.00594, 2026* — 任务特征预测 agent 成功率
---
## 参与贡献
**KWCode 是中国开发者做的,也需要中国开发者一起来完善。**
不管你在北京还是新加坡,在上海还是旧金山,只要你是华人开发者,都欢迎参与。
### 最需要的贡献
**新增预置专家**(最简单,编辑一个 YAML 文件):
```yaml
# 急需认领:
Vue3Expert / DjangoExpert / GoGinExpert / RustActixExpert
K8sExpert / DockerExpert / RedisExpert / MySQLExpert
```
```bash
kwcode expert create MyExpert
# 用自己真实项目测试 ≥5 个任务,跑通率 ≥80%
# 提 PR
```
**语言支持扩展**PHP · C# · Kotlin · Swift · DartAST 调用图)
**B 站视频教程 / 技术博客**
### 贡献流程
```bash
git clone https://github.com/val1813/kwcode.git
cd kwcode
pip install -e ".[dev]"
python -m pytest kaiwu/tests/ -v --ignore=kaiwu/tests/bench_tasks
git checkout -b feat/your-feature
# 开发 → 测试 → PR
```
**Issues**Bug 报告、功能建议
**Discussions**:技术讨论、专家设计
---
## License
MIT — 自由使用、修改、分发。
---
<div align="center">
**如果 KWCode 对你有帮助,请给一个 ⭐**
这不只是一个工具,是华人开发者社区共同的技术资产。
*天工开物 · KWCode*
</div>