agentsclimarketplace

Error explain zh

Skill YuAICode/ai-skills/skills/error-explain-zh

粘贴任意语言的报错/堆栈/panic/exception,给中文根因分析与可操作修复建议。当用户说「帮我看这个报错/分析这个错误/这个 panic 是什么意思/帮我 debug」时触发。From its SKILL.md

Install
npx -y skills add YuAICode/ai-skills --skill error-explain-zh

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.6 KB, ~2.0k tokens by cl100k_base, as published. Nobody here has run it

error-explain-zh — 通用报错中文诊断

把任意语言的错误信息/堆栈/panic/exception 解读成"为什么报这个错 + 具体怎么改", 不用再对着英文错误文档反复猜。跨语言通用:Go / JavaScript / Python / Java / Rust / Flutter / Dart / Shell / …

何时触发

  • 用户说"帮我看这个报错"、"这个错误是什么意思"、"这个 panic 怎么回事"、"帮我 debug"
  • 用户粘贴了错误日志、stack trace、panic 输出、exception 信息
  • 用户贴了 stderr / logcat / Xcode 日志并问"为什么"

lambda-logs-zh 的区别:lambda-logs-zh 专门处理 AWS CloudWatch 多条日志的聚类分析; error-explain-zh通用单次报错诊断,不限运行时和平台。

工作流

1. 识别语言 / 运行时与错误类型

  • 从错误格式、关键词、文件扩展名推断语言和运行时:
    • goroutine / panic: → Go
    • Traceback (most recent call last) → Python
    • at Object.<anonymous> / UnhandledPromiseRejection → Node.js/JavaScript
    • Exception in thread "main" / at com. → Java/Kotlin JVM
    • thread 'main' panicked at → Rust
    • flutter: Error / DartError / ══╡ EXCEPTION CAUGHT BY FLUTTER FRAMEWORK → Flutter/Dart
    • Caused by: → Java 链式异常,需向内展开到最内层
  • 识别错误大类:空指针 / 类型错误 / 连接失败 / 权限拒绝 / 断言失败 / OOM / 配置缺失 / 依赖冲突 / 并发竞争 等
  • 若有多种错误混在一起,先按"最先触发的 / 最内层的"排序

2. 定位最关键的那一行(真正根因常不在栈顶)

  • 栈跟踪逻辑:从 Caused by:、最内层 goroutinecaused bySource error: 等向内找真实根因帧
  • 区分用户代码与库代码:
    • 用户代码帧:文件路径不含 node_modules/site-packages/GOROOTvendor/jdk/android.jar
    • 优先指出用户代码中的最近帧——那通常是修复入口
    • 若根因在库内部,说明是库的哪个调用/参数触发的
  • 若错误信息里有行号,仅基于行号做分析;没有源码时不臆断行号外的代码

3. 中文讲清"为什么报这个错"

用白话解释这个错误的直接触发机制,例如:

  • "这行代码对 nil 指针做了方法调用,Go 运行时无法找到方法接收者"
  • "ECONNREFUSED 表示目标端口没有进程在监听,通常是服务未启动或端口配置错误"
  • "Python 在 json.loads 时遇到了非 UTF-8 字节,说明输入不是合法 JSON 字符串"

区分两类陈述:

  • "确定的根因":错误信息直接说明的,不加"可能"
  • "可能原因":需要更多上下文才能确认的,明确标注"可能"/"待确认"

4. 给可操作的修复方向

  • 主要修复(最可能解决问题的):优先级最高,给具体步骤或代码片段
  • 次要修复(其他可能路径):在主要修复之后列出
  • 每条建议附验证方法:如何确认修复成功(看哪个输出、跑什么命令、观察什么现象)
  • 涉及配置/依赖/版本时,给出检查命令而非凭空猜版本号

5. 信息不足时明确追问

若以下信息缺失且影响判断,不臆造,直接问:

  • 相关业务代码(堆栈里指向的那几行)
  • 运行时/框架版本(go version / node --version / python --version / 依赖版本)
  • 触发步骤 / 复现方式
  • 上下文配置(环境变量、配置文件、数据库 schema 等)

输出模板

## 错误类型

<语言/运行时> — <错误大类>(如:Go — 空指针 panic / Python — JSON 解析错误 / Java — 链式 IOException)

## 根因

<用白话讲:直接触发机制 + 关键帧指向>

**关键帧**:
- `<文件:行号>` — 用户代码,触发点
- `<文件:行号>` — 库内部(`<库名>`)

**确定的根因**:<直接说明的原因>
**可能原因**:<需进一步确认的因素,或"无"表示根因已明确>

## 修复建议

### 主要修复
1. <具体步骤或修改点>
   - 验证方法:<如何确认成功>

### 次要修复(可选)
2. <其他可能路径>
   - 验证方法:<…>

## 还需补充

<若信息不足,列出需要用户提供的内容;若信息已充分,此节省略或写"无">

硬规则

  1. 不臆断行号外的代码:没有对应源码时,只基于错误信息和帧路径分析,不编造逻辑。
  2. 区分"确定"vs"可能":错误信息直接说明的用肯定句;需要更多上下文的明确加"可能"/"待确认"。
  3. 栈跟踪必须指出帧归属:用户代码帧 vs 库/运行时帧须分开标注,给出修复入口。
  4. 密钥/PII 提醒打码:若报错里含数据库密码、API key、用户 ID、手机号等敏感信息,立即提示用户打码后再分享,不在分析中复述敏感值。
  5. 多层异常展开到最内层:Java Caused by:、Python During handling…、Go wrap error 链,都要展开找真正根因,不停在表层。
  6. 不保证修复能 100% 解决:建议带验证方法,由用户确认后决定是否继续追查。
  7. 不做任何写操作:只分析、建议;不修改文件、不执行命令、不推送代码。

边界

  • 适用所有语言/运行时的文本格式报错;二进制 core dump 无法解读。
  • 若报错只是警告(非致命),说明这是警告而非错误,不过度渲染成"崩溃"。
  • 不替代调试器;若需运行时状态(变量值/内存),提示用户用 debugger/print 补充后再分析。

What ships with it: 1 file

2.0 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.