Skip to content

unblieving/CodeHealer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

CodeHealer

智能代码调试助手,自动分析错误并修复代码

项目简介

CodeHealer 是一个基于大语言模型(LLM)的智能代码调试助手,旨在自动化 Bug 修复流程。它能够:

  • 自动分析错误:解析错误堆栈,识别错误类型和根因
  • 智能代码修复:定位问题代码,生成修复方案
  • 反馈闭环验证:自动运行测试验证修复效果,失败时自动重试
  • 安全护栏:危险操作拦截与人工审批机制
  • 调试记忆:记录历史调试信息,避免重复解决相同问题

核心特性

特性 说明
反馈闭环 测试 + Lint + 类型检查,驱动 Agent 自我修正
治理护栏 拦截危险命令,保护项目安全
多轮修复 测试失败时自动重试(最多 3 次)
凭据安全 使用系统钥匙串存储 API Key

目标用户

  • 软件开发者(个人开发者、小团队)
  • 需要快速定位和修复 Bug 的工程师
  • 希望自动化调试流程的技术团队

安装

环境要求

  • Python >= 3.9
  • 操作系统:Windows 10/11、macOS 12+、Linux (Ubuntu 20.04+)
  • 网络连接(用于调用 DeepSeek API)

从 PyPI 安装(推荐)

pip install codehealer

从源码安装

# 克隆仓库
git clone https://github.com/unblieving/codehealer.git
cd codehealer

# 安装项目(开发模式)
pip install -e .

# 安装开发依赖(可选)
pip install -e ".[dev]"

首次配置

安装完成后,运行初始化命令配置 API Key:

codehealer setup

系统将引导您输入 DeepSeek API Key,密钥将安全存储到系统钥匙串中。


运行

基本用法

# 分析并修复错误
codehealer fix "错误信息或问题描述"

# 对指定文件进行调试
codehealer fix --file path/to/file.py "问题描述"

# 运行测试并自动修复失败用例
codehealer test-and-fix

常用选项

# 显示详细输出
codehealer fix --verbose "问题描述"

# 指定最大重试次数
codehealer fix --max-retries 5 "问题描述"

# 仅分析错误,不自动修复
codehealer analyze "错误信息"

API Key 管理

# 查看 API Key 状态
codehealer key status

# 更新 API Key
codehealer key update

# 清除 API Key
codehealer key clear

查看帮助

codehealer --help
codehealer fix --help

分发命令

构建分发包

# 安装构建工具
pip install build

# 构建 sdist 和 wheel
python -m build

构建产物将输出到 dist/ 目录:

  • dist/codehealer-{version}.tar.gz - 源码包
  • dist/codehealer-{version}-py3-none-any.whl - 轮子包

发布到 PyPI

# 安装 twine
pip install twine

# 上传到 PyPI
twine upload dist/*

# 或上传到测试 PyPI
twine upload --repository testpypi dist/*

本地安装测试

# 从本地 wheel 安装
pip install dist/codehealer-1.0.0-py3-none-any.whl

# 或从源码包安装
pip install dist/codehealer-1.0.0.tar.gz

目录结构

CodeHealer/
├── pyproject.toml          # 项目配置与依赖定义
├── README.md               # 项目文档
├── SPEC.md                 # 设计规约
├── PLAN.md                 # 开发计划
├── AGENT_LOG.md            # Agent 运行日志
├── SPEC_PROCESS.md         # 规约处理文档
│
├── src/                    # 源代码目录
│   └── codehealer/
│       ├── __init__.py
│       │
│       ├── agent/          # Agent 主循环
│       │   ├── __init__.py
│       │   └── loop.py     # 循环控制与调度
│       │
│       ├── llm/            # LLM 抽象层
│       │   ├── __init__.py
│       │   ├── base.py     # LLM 接口定义
│       │   ├── deepseek.py # DeepSeek API 实现
│       │   └── mock.py     # Mock LLM(测试用)
│       │
│       ├── tools/          # 工具实现
│       │   ├── __init__.py
│       │   ├── base.py     # 工具基类
│       │   ├── file_ops.py # 文件操作工具
│       │   ├── shell_ops.py# Shell 命令工具
│       │   └── test_ops.py # 测试运行工具
│       │
│       ├── guardrails/     # 治理护栏
│       │   ├── __init__.py
│       │   └── safety.py   # 安全检查与拦截
│       │
│       ├── feedback/       # 反馈闭环
│       │   ├── __init__.py
│       │   ├── aggregator.py   # 反馈聚合
│       │   ├── lint_checker.py # Lint 检查
│       │   └── test_runner.py  # 测试运行器
│       │
│       └── models/         # 数据模型
│           ├── __init__.py
│           ├── action.py   # 动作模型
│           ├── feedback.py # 反馈信号模型
│           ├── message.py  # 消息模型
│           └── session.py  # 调试会话模型
│
└── tests/                  # 测试目录
    ├── __init__.py
    ├── test_agent_loop.py  # Agent 循环测试
    ├── test_guardrails.py  # 护栏测试
    └── test_mock_llm.py    # Mock LLM 测试

模块说明

模块 职责
agent/ Agent 主循环,协调 LLM 决策与工具执行
llm/ LLM 抽象层,支持多模型切换
tools/ 工具集,提供文件、Shell、测试等操作
guardrails/ 安全护栏,拦截危险操作
feedback/ 反馈闭环,收集测试/Lint 结果驱动自我修正
models/ 数据模型定义

安全边界说明

凭据安全

CodeHealer 采用多层凭据保护机制:

威胁 风险等级 对策
API Key 硬编码 使用 keyring 存储到系统钥匙串
.env 文件泄露 .gitignore 排除 + 文档说明
日志泄露 日志自动脱敏处理
进程环境可见 文档说明风险

凭据管理流程

  1. 首次运行:引导用户输入 API Key(隐藏输入)
  2. 存储:使用 keyring 库存储到系统钥匙串
  3. 查看:仅显示 Key 是否存在,不回显明文
  4. 更新:提供 codehealer key update 命令
  5. 清除:提供 codehealer key clear 命令

操作安全

危险动作识别

CodeHealer 内置危险命令检测,自动拦截以下类型的操作:

DANGEROUS_PATTERNS = {
    "file_delete": [r"rm\s+", r"del\s+", r"unlink"],
    "database": [r"DROP\s+", r"DELETE\s+FROM", r"TRUNCATE"],
    "system": [r"format\s+", r"mkfs", r"dd\s+if="],
    "network": [r"curl.*POST", r"wget.*\|.*sh"],
}

拦截机制

当检测到危险操作时:

  1. 暂停执行:阻止操作立即执行
  2. 显示详情:展示操作内容和潜在影响
  3. 请求确认:等待用户明确确认
  4. 记录日志:记录所有危险操作及处理结果
⚠️  检测到危险操作: rm -rf /tmp/cache
   影响范围: 删除 /tmp/cache 目录及其所有内容
   是否继续?(y/N):

文件操作限制

  • 读取文件:允许,无需确认
  • 写入文件:需要显示变更内容
  • 删除文件:需要用户确认
  • 修改系统配置:需要用户确认

执行边界

边界项 限制值
最大迭代次数 10 次
单次 LLM 调用超时 30 秒
工具执行超时 60 秒
自动修复重试次数 3 次

已知限制

  • 需要网络连接调用 DeepSeek API
  • 不支持离线运行
  • LLM 输出可能存在不稳定性,依赖反馈闭环保证质量
  • 复杂 Bug 可能需要人工介入

开发

运行测试

# 运行所有测试
pytest

# 运行测试并显示覆盖率
pytest --cov=src/codehealer

# 运行特定测试文件
pytest tests/test_guardrails.py

代码质量

# 格式化代码
black src/ tests/

# 排序导入
isort src/ tests/

# 类型检查
mypy src/

# Lint 检查
flake8 src/ tests/

许可证

MIT License


链接

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages