AI 辅助调试

wescode 将 AI 的代码理解能力与 CKG 代码图谱、终端执行、编辑器上下文结合,提供强大的调试支持。


错误诊断

直接粘贴错误

最简单的调试方式——把错误信息发给 AI:

用户:
runtime error: invalid memory address or nil pointer dereference
goroutine 1 [running]:
main.(*Server).handleRequest(...)
    server.go:42

AI 行为:
1. 读取 server.go:42 附近的代码
2. 分析 nil pointer 的来源
3. 追踪调用链找到根因
4. 提供修复方案

编译错误修复

用户:
go build 报了这些错误,帮我修复

AI 行为:
1. 执行 go build,获取完整错误列表
2. 按依赖顺序排列修复顺序
3. 逐个修复
4. 重新构建验证

调试策略

自动化调试流程

AI 会按以下流程调试问题:

错误报告
    ↓
1. 复现问题(运行代码/测试)
    ↓
2. 定位代码(CKG 搜索 + read_file)
    ↓
3. 分析根因(调用链追踪)
    ↓
4. 提出修复方案
    ↓
5. 应用修复(edit_file)
    ↓
6. 验证修复(重新运行)

CKG 辅助调试

CKG 代码图谱在调试中提供:

能力调试用途
调用图查询找到所有调用出错函数的地方
影响分析修复后影响哪些代码
符号搜索快速定位相关类型/接口
依赖追踪找到数据流经的路径

测试调试

测试失败分析

用户:"TestCreateUser 测试失败了"

AI 行为:
1. 运行 go test -run TestCreateUser -v
2. 分析失败输出
3. 对比 expected vs actual
4. 读取被测函数
5. 定位差异原因
6. 修复代码或测试
7. 重新运行验证

间歇性失败

用户:"这个测试有时候通过有时候失败"

AI 行为:
1. 分析测试代码中的竞态条件
2. 检查共享状态和并发访问
3. 检查时间依赖(timeout、sleep)
4. 检查外部依赖(网络、文件系统)
5. 提供稳定化方案

性能调试

性能分析

用户:"这个接口响应很慢,帮我分析"

AI 行为:
1. 读取接口处理代码
2. 识别可能的性能瓶颈:
   - N+1 查询
   - 大循环中的 IO
   - 不必要的序列化
   - 缺失的索引
3. 使用 CKG 追踪调用深度
4. 建议优化方案
5. 应用优化
6. benchmark 验证

内存问题

用户:"程序运行一段时间后 OOM"

AI 行为:
1. 搜索可能的内存泄漏模式:
   - 未关闭的资源
   - 持续增长的 map/slice
   - goroutine 泄漏
   - 缓存无上限
2. CKG 分析资源生命周期
3. 建议修复 + 验证

日志分析

日志定位

用户:(粘贴一段日志)
"ERROR: connection refused to database"

AI 行为:
1. 搜索日志消息来源(grep / search_files)
2. 找到产生该日志的代码位置
3. 分析连接配置
4. 检查重试/降级逻辑
5. 给出解决方案

结构化日志

AI 理解结构化日志格式:

{"level":"error","msg":"handler failed","err":"context deadline exceeded","handler":"CreateUser","latency_ms":30042}

分析:handler 超时,检查 CreateUser 的数据库操作和超时设置。


环境问题

依赖问题

用户:"go mod tidy 报错 / npm install 失败"

AI 行为:
1. 分析错误信息
2. 检查 go.mod / package.json
3. 识别版本冲突
4. 建议解决方案
5. 执行修复命令

配置问题

用户:"部署到测试环境后不工作了"

AI 行为:
1. 检查配置文件
2. 对比开发/测试环境差异
3. 检查环境变量
4. 验证连接参数
5. 逐步排查

复杂调试场景

并发 Bug

AI 利用代码图谱和执行环境调试并发问题:

用户:"有时会出现数据不一致"

AI 行为:
1. CKG 搜索共享状态的读写路径
2. 分析锁的使用模式
3. 检查 channel 的关闭顺序
4. 识别竞态窗口
5. 使用 go vet -race 标志建议
6. 提供修复方案

跨服务调试

用户:"Service A 调用 Service B 时偶尔超时"

AI 行为:
1. 读取 A 的调用代码
2. 检查超时设置
3. 分析 B 的处理链路
4. 检查中间件/拦截器
5. 建议调整

调试工具集

AI 使用的调试工具

工具用途
exec运行测试、编译、诊断命令
read_file查看源码
search_files搜索错误来源
grep精确匹配搜索
CKG 查询调用链追踪

常用调试命令

AI 会自动选择合适的命令:

# Go
go test -run TestXxx -v -count=1
go build ./...
go vet ./...
dlv debug ./cmd/server

# Node
npm test -- --grep "test name"
npx tsc --noEmit

# 通用
git diff HEAD~1        # 最近改了什么
git log --oneline -10  # 最近提交

最佳实践

高效的调试提问

好的提问差的提问
"TestX 失败了,错误是 Y,相关代码在 Z""测试挂了"
"接口 /api/users 返回 500,日志显示...""服务器报错"
"这段代码在并发时会 panic:(贴代码)""代码有 bug"

调试建议


注意事项