Files
kwcode/STATUS.md
Val-sss c32e423d04 feat: v1.9.0 — 9项架构优化,工程消化反馈替代raw输出注入
核心思路:32B模型无法有效整合raw pytest输出,工程把反馈解析成
LLM最容易理解的形式(结构化诊断句),同时加入执行反馈内循环、
docstring注入、批次拆解等机制提升通过率。

9项改动:
1. generate_diagnosis() 结构化诊断句
2. _run_execution_feedback() 内循环
3. usage_finder.py 调用关系注入
4. _extract_docstrings() + _inject_docstrings()
5. _maybe_create_missing_module() LLM生成缺失模块
6. _run_whole_file_refactor() 批次拆解
7. _build_retry_hint() delta反馈
8. _clean_code_output() 格式清理(已覆盖)
9. _inject_skill_context() SKILL.md注入

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

27 KiB
Raw Permalink Blame History

KWCode Project Status

Path: D:\program\codeagent2604\kwcode GitHub: https://github.com/val1813/kwcode Started: 2026-04-26 Goal: Local-model coding agent — maximize task completion rate via deterministic expert pipeline


Current: v1.9.0 (2026-05-09)

109 tests green. 9项架构优化从"LLM看不懂反馈"到"工程替LLM消化反馈"。 基线3/15 PASS预期优化后6-10/15 PASS。

v1.9.0 — 工程消化反馈架构9项优化

核心理念32B模型无法有效整合raw测试输出业界论文已证实kwcode的差异化是工程把反馈解析成LLM最容易理解的形式。

  1. 结构化诊断句generate_diagnosis()替代raw pytest输出按错误类型生成精确诊断
  2. Execution Feedback内循环 — Generator选出候选后立刻跑测试失败则把诊断给LLM再生成一次
  3. 调用关系注入usage_finder.py AST分析所有调用点rename/refactor任务同步更新
  4. Docstring注入 — AST提取目标函数docstring实现规范LLM读到示例后直接推理
  5. LLM生成缺失模块 — ImportError时用LLM根据测试使用方式生成模块内容
  6. 批次拆解 — 失败测试>3个时分批处理每批验证后保留进展继续下一批
  7. Delta反馈 — retry_hint中明确告知"新增通过N个"或"退步N个"
  8. 格式清理_clean_code_output()覆盖5条规则think/markdown/前缀/后缀CJK/tool-call
  9. SKILL.md稳定注入 — 按gap_type过滤相关章节只注入匹配的已验证模式

v1.7.0 — KAIJU Architecture Adoption

核心理念借鉴KAIJU三个具体机制提升Generator精度和可观测性。

Generator Bounded Context改动1

  • _generate_modified()不再注入全部structured_failures和完整retry历史
  • 新增_filter_relevant_failures():按函数名/文件名筛选,只传与当前函数相关的测试失败
  • 新增_extract_func_name_from_code():从代码片段提取函数名用于筛选
  • retry_hint截断到300字符不传完整历史文本
  • 效果LLM每次只看它需要的信息不被无关失败干扰

Sub-task Decomposition for Stub Tasks改动2

  • 新增_run_stub_decomposed()GapDetector识别stub_returns_none时逐函数独立实现
  • 新增_find_stub_functions()精确检测pass/.../ return None/raise NotImplementedError存根
  • 每个函数独立LLM调用、独立bounded context只有该函数代码+相关测试)
  • 一个函数失败不影响其他函数
  • 3+个stub函数时触发decomposition≤2个仍走whole_file更简单
  • fallbackdecomposition全失败时退回_run_whole_file

DetailedLogger完整流水线日志audit/detailed_logger.py

  • 每个任务生成独立JSON到logs/目录,文件名YYYY-MM-DD_HHMMSS_<expert_type>.json
  • LLM完整prompt/output不截断记录区别于AuditLogger的500字符截断
  • 三种timeline entry类型
    • llm_callcaller/messages/prompt/system/output/tokens/elapsed_ms
    • node_iostage/input/outputgate/locator/generator/verifier各节点
    • decisionstage/decision/reason/context重试策略/熔断/搜索触发)
  • 环境变量KWCODE_DETAIL_LOG_DIR可配置输出目录,设空禁用
  • 非阻塞所有写入try/except包裹失败不影响主流程

LLM Backend on_call钩子llm/llama_backend.py

  • _on_llm_call回调属性orchestrator设置后每次generate()/chat()自动触发
  • 记录完整messages和response到DetailedLogger
  • 安全getattr检查Mock对象不会报错

OpenAI兼容API检测修复

  • _detect_openai_compat()localhost非标准端口如kaiwu部署器11435通过探测/api/tags判断
  • 探测到/api/tags返回models → Ollama否则 → OpenAI兼容
  • 修复kaiwu部署器不再错误走/api/chat导致404

v1.6.2 — Execution Feedback Depth Upgrade

核心理念不是修retry机制是升级执行反馈的质量。

  • parse_test_failures(): 从pytest输出提取每个失败测试的expected/actual/error_type/snippet
  • TraceCoder attempt_history: 每轮累积不重置retry_hint携带最近3次历史摘要
  • 完整审计日志: llm_calls记录每次LLM调用prompt/outputnode_io记录各节点IO
  • pytest从-q改为-v: 获取完整失败详情
  • 存根检测扩展: TypeError/takes no arguments/多个TypeError
  • codegen路径文件已存在时走whole_file覆盖不再生成_1.py
  • 逐函数patch全失败时fallback到whole_file保证patches不为0
  • Reviewer在tests全通过时跳过防LLM幻觉reject

v1.6.1 — Architecture Convergence (ExpertDirective收敛)

核心变更删除独立Expert类统一走pipeline

  • 删除 experts/whole_file_impl.py238行experts/dependency_fix.py99行
  • 存根实现Generator通过ctx.gap自动解除函数限制scope=whole_file不需要独立Expert
  • 依赖安装EnvProber在Phase0处理不需要独立Expert
  • _select_moe_expert()始终返回None所有任务走统一pipeline
  • GAP_TO_EXPERT_TYPE映射NOT_IMPLEMENTED/STUB_RETURNS_NONE/MISSING_DEP → locator_repair
  • Gate VALID_EXPERT_TYPES移除whole_file_impl和dependency_fix

Generator增强

  1. _build_system()注入upstream_constraints到system prompt之前只在prompt层注入system层缺失
  2. _build_retry_hint()携带上次生成的代码前300字符LLM能看到自己的错误避免重复
  3. tier=small分支增加填空式编写规范函数签名不变/只替换函数体/每个TODO 3-5行

测试同步更新

  • test_stub_ratio_threshold.py移除WholeFileImplExpert.can_handle()测试改为验证GAP_TO_EXPERT_TYPE映射
  • test_routing_layer_stats.pyexpected_expert从whole_file_impl/dependency_fix改为locator_repair

设计意图bench结果可直接归因于GapDetector+scope+ExecutionStateTracker+EnvProber这套纯确定性机制不被枚举专家类干扰判断。

v1.6.0 — MoE Deterministic Architecture

核心原则LLM只做代码生成所有路由/决策/状态判断全部确定性化。

GapDetector (core/gap_detector.py)

  • GapType enum11种NONE/NOT_IMPLEMENTED/STUB_RETURNS_NONE/LOGIC_ERROR/MISSING_DEP/SYNTAX_STRUCTURAL/MISSING_TOOLCHAIN/WRONG_FILE/NO_TEST/ENVIRONMENT/UNKNOWN
  • Gap dataclassgap_type + confidence + files + functions + error_msg + suggestion
  • GapDetector.compute()纯正则匹配零LLM调用按优先级分类
  • GAP_TO_EXPERT_TYPE确定性映射 GapType → expert_typev1.6.1统一为locator_repair

ExecutionStateTracker (core/execution_state.py)

  • TestDelta dataclass每次修改后的测试状态变化
  • set_baseline() → record() → has_regression() → get_best_partial_state()
  • Git bisect式定位知道哪步引入了问题不盲目reset
  • 代码状态回滚交给Checkpoint本类只追踪测试状态

EnvProber (core/env_prober.py)

  • 任务开始前确定性探测并修复环境(工具链+依赖+rig.json预构建
  • LANG_TOOLCHAIN dict6种语言的check/install/dep_cmd/dep_file
  • 缓存.kaiwu/env_profile.json24h TTL只缓存成功
  • _find_working_test_cmd()go用build验证spec v2修正

WholeFileImplExpert — 已删除v1.6.1功能由Generator通过ctx.gap scope=whole_file处理

DependencyFixExpert — 已删除v1.6.1功能由EnvProber在Phase0处理

Gate重构 (core/gate.py)

  • 确定性优先路由LLM只做最后兜底二分类
  • 优先级:特殊任务关键词 → Gap路由(conf>=0.7) → 关键词匹配 → LLM兜底
  • _resolve_intent_vs_gap():三层置信度消解(>=0.85 gap wins / 0.5-0.85 intersection / <0.5 user wins
  • routing_source字段记录每次路由决策来源

Orchestrator重构 (core/orchestrator.py)

  • Phase 0EnvProber.probe_and_fix()(确定性环境修复)
  • Phase 1无条件pre_test → GapDetector → ExecutionStateTracker.set_baseline()
  • Phase 2Gap驱动expert_type覆盖确定性优先于LLM分类
  • Retry loop增强回归检测→checkpoint.restore() / env_changed→_recompute_gap()
  • _select_moe_expert()v1.6.1起始终返回None统一走pipeline

Verifier增强 (experts/verifier.py)

  • whole_file write_mode支持直接写入整个文件
  • _detect_wrong_file():确定性检测修改文件与报错文件不匹配

审计日志增强 (audit/logger.py)

  • 目录分离:成功→/.kaiwu/logs/success/ / 失败→/.kaiwu/logs/failed/
  • 新增字段routing_source, initial_gap_type, iterations[]
  • log_iteration()每轮retry记录gap_type/expert_selected/can_handle_results/transition_reason/test_delta
  • 向后兼容list_logs()/show_log()同时扫描新旧目录

TestParser (core/test_parser.py)

  • extract_failing_tests() / extract_passing_tests()
  • 纯正则支持pytest/go/jest/rust四种格式
  • 供GapDetector、ExecutionStateTracker、Orchestrator共用

TaskContext新增字段 (core/context.py)

  • gap: Gap dataclass instance
  • confirmed_test_cmd: EnvProber提供的已验证测试命令
  • routing_source: 路由来源审计字段

专项诊断测试 (tests/diagnostic/, 62个测试)

  • test_gap_detector_accuracy.py20个手工样本GapType分类准确率>90%
  • test_stub_ratio_threshold.py10+10文件stub_ratio阈值验证>85% + GAP映射验证
  • test_execution_tracker_value.py5个多迭代场景回归检测+最优中间状态
  • test_routing_layer_stats.py三层消噪触发率验证gap_detector>llm_fallback

三飞轮系统(全部本地)

  • flywheel/strategy_stats.py — 错误策略有效性统计(~/.kwcode/strategy_stats.json
    • record(error_type, sequence, success, retries) → 按error_type×sequence累计成功率
    • get_best_sequence() → min_attempts≥10时返回最优策略否则用默认
    • 集成到orchestrator._record_flywheel(),每次任务完成后自动记录
  • flywheel/user_pattern_memory.py — 跨项目用户错误模式(~/.kaiwu/user_patterns.json
    • record_task() → 统计error_type频率+成功率(滑动平均)
    • get_warning_hint() → 20+任务后生成中文提示注入ctx.kaiwu_memory
    • 5种错误类型各有针对性提示syntax/assertion/import/runtime/patch_apply
  • flywheel/skill_drafter.py — SKILL.md自动提炼.kaiwu/skill_draft.md
    • 30+成功轨迹后自动生成策略草稿
    • CLI: kwcode skill review/accept/discard

匿名遥测opt-in默认关闭

  • telemetry/client.py — fire-and-forget daemon thread + httpx 3s超时
    • 只上传4字段error_type, retry_count, success, model
    • 绝不上传:代码/路径/描述/用户身份
  • onboarding.py — init时询问opt-inConfirm.askdefault=False
  • CLI: kwcode telemetry status/enable/disable
  • config: telemetry_enabled 顶层字段,缺失=关闭(向后兼容)

服务端(已部署)

  • https://llmbbs.com → nginx反代 → 127.0.0.1:9753 (FastAPI+SQLite)
  • 3张表task_events / daily_aggregates / strategy_effectiveness
  • API: POST /api/v1/event, GET /api/v1/health, GET /api/v1/stats
  • systemd: kwcode-telemetry.service, auto-restart
  • Let's Encrypt证书自动续期

CLI增强

  • kwcode stats 增强:展示三飞轮状态+遥测状态
  • kwcode telemetry status/enable/disable — 遥测管理
  • kwcode skill review/accept/discard — SKILL.md草稿管理

集成点

  • orchestrator.init: +StrategyStats +UserPatternMemory +TelemetryClient
  • orchestrator.run(): ctx创建后注入user_pattern warnings + ctx._errors_encountered追踪
  • orchestrator._record_success/_record_failure_result: 调_record_flywheel()
  • _record_flywheel(): 策略统计 + 用户模式 + 遥测,三路全非阻塞

审计日志 (audit/logger.py)

  • AuditLogger: start() → log(stage, detail) → write(ctx, elapsed, success, model)
  • 存储:~/.kaiwu/logs/YYYY-MM-DD_HHMMSS_<expert_type>.json
  • 不记录代码内容,只记录:任务描述/Gate分类/专家执行时间/文件名/测试结果/重试次数
  • 最多保留100条超出自动清理
  • orchestrator._emit()从@staticmethod改为实例方法每个事件自动记录到audit
  • CLI: kwcode log / kwcode log show <id> / kwcode log clear

kwcode model命令 (cli/commands/model_cmd.py)

  • kwcode model — 显示当前模型配置+能力tier
  • kwcode model set <名称> — 切换模型写入config.yaml
  • kwcode model probe — 探测模型详情Ollama API: family/参数量/量化/reasoning

缩进对齐修复 (Generator._align_indentation)

  • 修复系统性bugLLM返回class方法时丢失缩进0空格 vs 原始4空格
  • apply_patch替换后方法"跑出"class导致IndentationError
  • 修法_generate_modified()返回后立刻调_align_indentation()补齐缩进差

P0: Hashline锚点编辑 (tools/hashline.py)

  • add_anchors(): 每行加6字符MD5哈希锚点 行号|哈希| 内容
  • parse_anchor_edits(): 解析 EDIT/DELETE/INSERT_AFTER 指令
  • apply_anchor_edits(): 验证哈希→应用编辑,任一哈希不匹配则拒绝全部
  • Generator首次尝试用HASHLINE_PROMPTmax_tokens=1024失败fallback到完整函数生成
  • 效果模型只输出编辑指令而非复现整个函数减少输出token消除patch_apply文本不匹配

P1: Think模式自适应 (core/think_config.py)

  • get_think_config(expert_type, difficulty) → {"think": bool, "budget": int}
  • 策略表easy→think=off / medium→budget=512 / hard→budget=2048-4096
  • chat/office永远关闭think不需要推理
  • Generator根据think_config调整max_tokensbase + budget
  • orchestrator在Gate分类后自动设置ctx.think_config

P2: Fast/Slow双阶段推理融入orchestrator retry loop

  • 第一次尝试fast think默认think=off快速生成
  • 第一次失败升级到slow thinkbudget=2048
  • 第二次失败最大think预算budget=4096
  • 与现有retry_strategy(0→1→2)正交think_budget独立递增
  • 对reasoning模型(QwQ-32B等)效果最明显

测试21个新测试P0-P2

  • Hashline: anchors/strip/parse/apply/mismatch/delete/insert/roundtrip (12)
  • ThinkConfig: easy/hard/chat/unknown/apply_tokens (8)
  • FastSlow: default/escalation (1)

Reviewer闭环关键架构修复

  • 原问题Reviewer发现"改错文件"只记日志不触发重试36任务假成功
  • 修复_record_success返回None → retry loop捕获 → 重置Generator/Verifier → 重试
  • review gap注入ctx.retry_hintGenerator下次修正方向
  • Reviewer prompt增强注入initial_test_failure让LLM看到测试期望

Verifier 0/0假成功消除

  • tests_total=0时检查是否有测试文件存在
  • 有测试文件但0执行 → passed=False报错"测试未执行"
  • 消除benchmark 36/37任务"audit成功但bench失败"的根因

Syntax熔断按tier区分

  • SMALL1次重试后熔断小模型重复同样错误
  • MEDIUM/LARGE2次重试后熔断32B第一次syntax error常是偶然

Test-First LoopCC架构核心改动

  • orchestrator.run()locator_repair/refactor任务先调verifier.run_tests_only()拿测试报错
  • locator.locate_from_test_error()从pytest/go test报错提取File+行号,精准定位(不靠语义搜索猜)
  • 优先级test_error定位 > BM25+图 > LLM猜test_error成功则跳过语义搜索
  • 解决benchmark36/37任务"audit成功但bench失败"的根因Verifier 0/0假成功

Verifier修复P0影响所有结果

  • 测试文件发现扫描project_root下*_test.py/test_*.py/*_test.go/*.test.ts不只看tests/目录
  • 找不到测试文件才返回0/0有测试文件但没在tests/时用文件路径直接跑pytest
  • 工具链检测go/node/rust/java缺失时自动安装apt-get不再报syntax error
  • Go语法检查go: not found不报语法错误返回None跳过

Locator增强

  • locate_from_test_error()从Python/Go/TS测试报错提取文件名+行号+函数名
  • 过滤test文件和stdlib只返回业务代码文件
  • import语句提取被测模块名反向定位源文件

Prompt约束量化改造CC风格

  • GENERATOR_BASE_SYSTEM定性→量化
    • "只做任务要求的事" → "每次patch只修改≤2个函数修改行数≤30行"
    • "不要动无关代码" → "不触碰报错行±20行范围外的无关代码"
    • "不要加注释" → "不添加任何import/类型注解/docstring/注释到未修改的代码"
  • GENERATOR_PROMPT
    • "只修改必要的部分" → "修改行数≤15行不改动与错误无关的行"
  • RETRY_STRATEGIES hints
    • syntax: "不改其他逻辑" → "修改≤5行不触碰其他函数"
    • assertion: "只改最小代码" → "只改1个函数修改≤10行"
    • unknown: "缩小修改范围" → "只修改1个函数修改≤15行"
  • CHAT_SYSTEM
    • "简短友好回复2-3句话即可" → "≤100字回复≤3句话"
  • CHAT_SEARCH_FAIL_SYSTEM
    • 整段重写为"回复≤50字"硬约束

遥测防护(服务端三层守卫)

  • HMAC-SHA256签名客户端用密钥签payload无签名→403
  • IP限流同一IP每分钟≤30次超限→429
  • 字段校验error_type枚举白名单 + model名正则([a-zA-Z0-9.:\-_/]) + 长度限制
  • /stats端点需管理token无token→401

版本号统一

  • 唯一真相源:pyproject.toml version = "1.6.1"
  • formatters.py / telemetry/client.py / server/models.py / init.py 全部改为 importlib.metadata.version("kwcode"),未安装时 fallback "1.6.1"

测试19个新测试

  • StrategyStats: record/get_best_sequence/min_attempts/persistence/corrupted recovery (5)
  • UserPatternMemory: record/warning_threshold/top_errors/summary/unknown_ignored (6)
  • SkillDrafter: draft_generation/save/exists/insufficient (4)
  • TelemetryClient: disabled_default/enabled_config/non_blocking/skip_disabled (4)

v1.5.0 — Isolated Search + Cross-File Contracts

Theory: WarpGrep (isolated search subagent) + CGM (graph-injected attention) + PENCIL (erase intermediate state) + SWE-ContextBench (context quality > model size)

SearchSubagent (experts/search_subagent.py)

  • Independent context window — search noise never enters Generator
  • Parallel file reads: ThreadPoolExecutor, 8 concurrent
  • Returns only precise {file, start_line, end_line, content}
  • Shadow TaskContext: Locator writes to shadow, main ctx stays clean

UpstreamManifest (core/upstream_manifest.py)

  • Deterministic AST extraction: Python ast module, regex fallback for others
  • Tracks: function signatures, constants, import dependencies
  • get_constraints_for_file() → injected into Generator prompt
  • check_consistency() → Verifier pre-check, catches arg count / constant mismatches
  • Zero LLM calls

PENCIL Compression + Contract Verification

  • task_compiler: _compact_subtask_result() keeps only signatures/constants/paths/test_status
  • orchestrator: locator step uses SearchSubagent, verifier pre-checks contracts
  • contract_violation error type triggers re-locate retry strategy
  • Generator prompt receives upstream_constraints + retry_hint

Code Quality (this release)

  • orchestrator.py run() split into 5 private methods (410→253 lines)
  • Full type annotations: Optional[DebugSubagent], Callable[[str,str],None]
  • all added to 7 core modules
  • pyproject.toml: license fixed, ruff + mypy configured
  • TUI: 30+ event icons added (contract_violation, ab_test, replay, etc.)
  • Server: /api/manifest endpoint, version 1.5.0

v1.4.0 — Multi-Language + TUI + IDE

Theory: XRAY MCP Server + OpenCode + CodeCompass

  • 7-language AST (Python/JS/TS/Go/Rust/Java/C#)
  • ast-grep with QUERY_TEMPLATES (LLM never writes patterns)
  • FastAPI server (port 7355) + SSE streaming
  • Textual TUI (file tree + event log + input)
  • VSCode extension (thin client, all logic server-side)

v1.3.0 — EventBus + Error Strategy + Cognitive Gate

Theory: Dive into Claude Code + Wink + ARCS + SpecEyes + OPENDEV + Turn-Control

  • EventBus: append-only log, replay, wildcard listeners
  • ToolGateway: per-expert permissions, file cache with dirty tracking
  • Error strategy routing: 6 error types → different retry sequences
  • CognitiveGate: diminishing returns detection → auto-stop
  • GraduatedCompactor: 3-layer progressive context compression
  • Plan auto-trigger for hard tasks
  • Worktree isolation (git worktree / tempdir fallback)
  • Speculative Prefetch: background file pre-read
  • SearchRouter: intent-aware routing (arXiv/S2/GitHub/PyPI/Open-Meteo)
  • Wink self-repair: scope_creep / repetitive_fix / patch_miss / empty_output

v1.2.0 — RIG Project Map

Theory: RIG + FastCode + CodeCompass

  • export_rig(): full project index (exports/imports/routes/test coverage)
  • upstream_summary structured dict for multi-task context passing
  • ConsistencyChecker: deterministic frontend/backend API mismatch detection
  • Gate/Locator prompt explicitly guided to query rig.json

v1.1.0 — P0+P1+P2 Optimizations

  • Verifier structured output (_classify_error: 5 error types)
  • Circuit breakers (syntax 1x, import immediate, same-type 3x streak)
  • Gate confidence scoring (0.92/0.75/0.55)
  • Experience Replay (BM25 similar trajectory lookup)
  • Session continuity (SessionState, 5-turn KWCODE.md re-injection)
  • Locator minimal context (function boundaries, 60-line cap, gap markers)
  • Watchdog 300s timeout
  • Gate accuracy stats (/stats command)

v0.9.0 — DAG Compiler + Debug Subagent

  • TaskCompiler: DAG scheduler, ThreadPoolExecutor + Kahn topological sort
  • Debug Subagent: sys.settrace variable capture on failure
  • Prompt Optimizer: trajectory → experience rules → YAML system_prompt
  • Cross-Encoder search reranking

Core Pipeline (v0.5.0v0.8.0)

  • Gate → 6 pipeline routes (locator_repair/codegen/refactor/doc/office/chat)
  • BM25+AST call graph two-phase location (zero LLM, milliseconds)
  • Generator: original from file, LLM only generates modified
  • Verifier: syntax check + pytest
  • 3-stage retry + Reflection root cause analysis
  • 5 deterministic tools (read_file/write_file/run_bash/list_dir/git)
  • KWCODE.md project rules + /plan + Checkpoint + DocReader
  • Model capability tiers (SMALL/MEDIUM/LARGE)
  • Expert flywheel (trajectory → pattern → backtest → AB test → production)
  • 3-layer memory (PROJECT.md/EXPERT.md/PATTERN.md)
  • Office document generation (Excel/PPT/Word)
  • MCP Router, context compression, CJK BM25

Test Summary

Category Count Status
Core unit tests 38 PASS
Regression tests 173 PASS
P1 feature tests 33 PASS
P2 feature tests 21 PASS
Search refactor 19 PASS
Intent search 19 PASS
E2E real model 17 PASS
RIG modules 29 PASS
TaskCompiler 12 PASS
Multi-language 51 PASS
Server/TUI 16 PASS
SearchSubagent+Manifest 27 PASS
MoE Diagnostic 62 PASS
Total 513 All green

File Structure

kwcode/
├── pyproject.toml
├── README.md / README_zh.md
├── STATUS.md
└── kaiwu/
    ├── cli/
    │   ├── main.py              # 入口173行+ Typer路由
    │   ├── commands/task.py     # run/chat/vision/multi-task命令
    │   ├── commands/expert.py   # expert list/info/export/install
    │   ├── commands/config.py   # init/api/serve/setup-search
    │   ├── formatters.py        # Rich输出格式化
    │   ├── repl.py              # REPL交互循环
    │   ├── status_bar.py        # 状态栏(4档自适应)
    │   └── onboarding.py        # 首次启动引导
    ├── core/
    │   ├── event_bus.py         # Unified event bus (append-only + replay)
    │   ├── cognitive_gate.py    # Diminishing returns detection
    │   ├── wink.py              # Self-repair monitor
    │   ├── gate.py              # [v1.6] 确定性优先路由Gap→关键词→LLM兜底
    │   ├── orchestrator.py      # [v1.6] MoE pipeline + Gap驱动 + 回归检测
    │   ├── context.py           # TaskContext dataclass (+gap/confirmed_test_cmd/routing_source)
    │   ├── gap_detector.py      # [v1.6] GapType enum + GapDetector.compute() (zero LLM)
    │   ├── execution_state.py   # [v1.6] ExecutionStateTracker (regression detection)
    │   ├── env_prober.py        # [v1.6] EnvProber (toolchain/dep auto-fix, cached)
    │   ├── test_parser.py       # [v1.6] extract_failing/passing_tests (regex)
    │   ├── task_compiler.py     # DAG scheduler + WorktreeManager
    │   ├── upstream_manifest.py # [v1.5] Cross-file contract tracking (zero LLM)
    │   ├── planner.py           # /plan mode + risk assessment
    │   ├── checkpoint.py        # File snapshot (git stash / file copy)
    │   ├── kwcode_md.py         # KWCODE.md segmented loading
    │   ├── model_capability.py  # Model tier detection (SMALL/MEDIUM/LARGE)
    │   ├── context_pruner.py    # Context compression + GraduatedCompactor
    │   ├── network.py           # Network detection + proxy config
    │   └── sysinfo.py           # System info + VRAM monitoring
    ├── experts/
    │   ├── locator.py           # BM25+graph location + DocReader + Prefetch
    │   ├── search_subagent.py   # [v1.5] Isolated search (independent context)
    │   ├── generator.py         # [v1.7] Bounded context + stub decomposition + upstream_constraints
    │   ├── verifier.py          # [v1.6] Syntax + pytest + whole_file + _detect_wrong_file
    │   ├── search_augmentor.py  # Search augmentation + BM25 rerank
    │   ├── consistency_checker.py # Frontend/backend API consistency (deterministic)
    │   ├── chat_expert.py       # Chat (search gating)
    │   └── office_handler.py    # Office document generation
    ├── search/                  # Intent-aware search routing
    ├── knowledge/               # PDF/Word/MD reader + CJK BM25
    ├── flywheel/                # Trajectory → pattern → generation → AB test
    ├── registry/                # Expert registry + .kwx packaging
    ├── notification/            # Flywheel notifications
    ├── stats/                   # Value tracking (SQLite)
    ├── memory/                  # 3-layer memory system
    ├── ast_engine/              # tree-sitter AST + call graph
    ├── server/                  # FastAPI + SSE (port 7355)
    ├── tui/                     # Textual TUI
    ├── mcp/                     # MCP Router
    ├── llm/                     # Ollama + llama.cpp backends
    ├── tools/                   # 5 deterministic tools + ToolGateway
    ├── audit/                   # [v1.7] DetailedLogger + Enhanced audit (success/failed split)
    └── tests/                   # 513 unit tests + 67 bench tasks + 62 diagnostic
        └── diagnostic/          # [v1.6] 4 architecture validation test suites

TODO

  1. CLI拆分main.py 1861→173行 v1.5.0
  2. 注释统一中文 v1.5.0
  3. 专家细粒度EventBus emit v1.5.0
  4. bench tasks多语言覆盖67题 Python/Go/TS v1.5.0
  5. 删除WholeFileImplExpert/DependencyFixExpert收敛到纯pipeline v1.6.1
  6. SQLite跨session查询
  7. pip publish到PyPIv1.5.0
  8. install.ps1 / install.sh一键安装
  9. SWE-bench评测用评测VPS跑
  10. 跑bench验证v1.6.1架构收敛效果

Known Issues

  • qwen3-vl:8b outputs in thinking field, content empty (thinking extraction added)
  • Reasoning models slow on Gate (8x multiplier)
  • SearXNG requires Docker Desktop, degrades to DDG without it