基础
不需要。全程离线运行,仅扫描本地文件夹中的 SKILL.md 和 .py 文件,不会发起任何网络请求。如果执行卡住,大概率是 AI 对话环境超时或目标路径文件过多导致扫描耗时。
对 AI 说「帮我用 HaluCatch 审查 /path/to/skill」即可。AI 会先确认目标路径无误,再开始扫描评估。为避免误操作,请确保指定的路径是希望审查的 Skill 目录,不要指向系统目录或 home 目录。3 步上手:
1. 跑一次审查 → 看标准版报告了解问题
2. 打开 -行动版.md → 从列表第一条开始逐项修复
3. 修复后重新跑 → 对比分数是否改善
是。HaluCatch 采用 MIT 开源协议,完全免费,包括个人和商业使用。源代码在 GitHub 上公开。
都支持。HaluCatch 会自动检测你的 AI 对话环境的语言偏好,输出对应语言的三份报告(标准版、专业版、行动版)。也可以通过 --lang en 或 --lang zh-CN 强制指定。
HaluCatch 支持所有允许上传提示词/技能的 AI 平台,包括 ClawHub、SkillHub 等技能市场。同时支持纯命令行模式,可以在任何终端中运行。
报错速查
| 报错 / 报告标记 | 原因 | 解决 |
|---|---|---|
❌ 路径不存在 | 目录拼错或已移动 | ls <路径> 确认目录存在 |
❌ 目录为空 | 缺少 SKILL.md | 新建 SKILL.md(一行标题也行)再跑 |
⚠️ 疑似外部 Skill | skills/ 下有别人安装的 Skill | 确认后修改运行配置文件中 skills_is_external |
🔴 硬编码路径 | SKILL.md 或脚本里有绝对路径 | 全部改成相对路径 |
🟠 模糊表述 | 说明书用了"大概/可能/通常"等词 | 换成明确的 if-else 条件句 |
🔴 裸 except | except: pass 吞掉了错误 | 至少 except Exception as e: print(e) |
🟠 不存在文件引用 | 引用的脚本/文档实际不在文件夹里 | ls 确认文件存在,修正文件名 |
🟠 覆盖薄弱 | 大部分步骤没有脚本兜底 | 把核心步骤写成 .py/.sh 脚本 |
使用场景
发布前自审
你要把写好的 Skill 发布到 ClawHub / SkillHub,想确保它在别人机器上也能正常工作。
跑一次全维度审查。重点看标准版报告的「地基」和「代码风险」——硬编码路径、裸 except、虚构命令是最高频的坑。改完后跑第二次验证分数提升。
接手别人的 Skill
别人写的 Skill 文档很长,你不敢直接给 AI 执行,怕出问题。
跑一次审查,直接看「行动版报告」——它把每个问题拆成「现状 → 风险 → 修复方案 → 验证方法」,照着改就行,不用通读原始 SKILL.md。
CI 自动检查
你在维护 Skill 仓库,想每次改代码时自动检查质量不退化。
python3 -m halucatch --skill-dir . --validate # 快速扫描文件清单
python3 -m halucatch --skill-dir . --output-dir ./ci-reports # 完整审查出报告在 CI 里集成,每次 PR 确保分数不下降。
能力边界
能做什么
- ✅ 扫描 SKILL.md 和关联 .py 文件,检查执行可靠性
- ✅ 识别硬编码路径、裸异常处理、虚构命令等 7 类代码风险
- ✅ 评估业务规则歧义和护栏完整度
- ✅ 自动识别中英文,输出对应语言报告
- ✅ 生成标准版/专业版/行动版三份报告
不能做什么
- ❌ 不联网 —— 不访问任何 API,不下载文件
- ❌ 不查安全漏洞 —— SQL 注入、XSS、恶意指令交给 ClawHub SkillSpector
- ❌ 不批量处理 —— 一次一个目录
- ❌ 不代替人工决策 —— 报告是建议,最终你拍板
硬性限制
- 📏 单文件 > 10 MB 会被跳过并提示
- 📁 不支持二进制文件
- ⏱️ 处理时间取决于文件数量和大小,通常 1-60 秒
报告
会。审查完成后自动在 HaluCatch/reports/ 目录生成三份报告(标准版、专业版、行动版 .md 文件)。不会修改目标 Skill 目录中的任何文件。如需自定义输出路径,使用 --output-dir 参数。
Q: 审查结果长什么样?
标准版报告示例(白话、零术语,给非技术用户看):
# HaluCatch 审计报告 — my-skill
## 📌 一句话总结
🟢 3 通过 · ⚠️ 2 注意 · 💡 3 可优化
## 🎯 核心结论
| 地基 | 代码 | 规则 | 护栏 | 复杂度 |
|:--:|:--:|:--:|:--:|:--:|
| 🟢 稳固 6/6 | 🟢 干净 90/90 | 🟡 有歧义 4/6 | 🟢 到位 11/11 | 🟡 注意 2.2/10 |
### 做的不错 👍
- ✅ 有固化脚本兜底核心任务
### 需要注意的方面
- ⚠️ 存在模糊表述 ['大概'](说明书写了模糊词,AI 可能会猜错)包含专业版(11 项指标表 + KaTeX 公式)和行动版(修复清单)。完整示例:运行
python3 halucatch_core.py --skill-dir . 审自己的项目,或查看 [在线 Demo](https://codermoray.github.io/HaluCatch/) 的交互式报告预览。看同目录下的 HaluCatch-report-日期-行动版.md,它逐条列出了修复方案和验证检查点。按清单逐项改即可,改完后重新审查验证。
护栏检查按类型分层——工具库型只查 5 项核心项(跳过数据来源/时效性/置信度),分析型查全 8 项。分母不同,分数不可直接比较。
报告日期是生成当天,版本号跟随 HaluCatch 自身版本。同一个 Skill 在不同版本 HaluCatch 下的评分可能不同——因为检测规则在持续改进。
当前版本暂不支持批量模式。你可以逐个运行。批量功能已在 roadmap 中。
技术
含 .py 文件、或 SKILL.md 中嵌入了 \\\python` 代码块、或引用了 pandas 等数据处理库的 Skill → 代码工程型(启用全四维评估)。其余 → 纯方法论型(只查方法论+护栏)。
HaluCatch 会尝试以 UTF-8 读取所有文件。如果遇到非 UTF-8 编码(如 GBK),会用 backslashreplace 保留原始字节的转义形式,避免静默丢数据。
当前 7 条通用规则:异常处理(裸 except: pass)、浮点比较(== 0.0)、除零风险(return 中无保护除法)、硬编码阈值(固定 skiprows)、路径拼接(字符串拼路径)、静默覆盖(open 写模式无警告)、超时缺失(requests 无 timeout)。
审查完成后,HaluCatch 会询问是否按方案修复。选择「执行修复」→ 将方案发给 AI 实施 → 修复后重新审查验证。选择「我有更好建议」→ 描述你的想法 → 重新生成方案。选「不执行」→ 结束。完整的「发现→修复→验证」链路。
常见反模式(不要做的事)
⚠️ 致命反模式
| 踩坑 | 后果 | 正确做法 |
|---|---|---|
| 让 AI 看完 HaluCatch 报告就直接改代码 | AI 可能误解报告建议,添加有问题的修复 | 先人工审查每条建议,确认后再让 AI 执行 |
| 只看评分不看详情 | 高分但细节全是烂摊子 | 逐条看 warn/fail,优先修 🔴 |
| Skills/ 目录塞满别人的 Skill 后跑审查 | 别人代码的问题全算在你头上 | config.yaml 设 skills_is_external: true |
地基(Foundation)
| 踩坑 | 后果 | 怎么避 |
|---|---|---|
SKILL.md 里引用本地绝对路径(如 /Users/me/project/) | 换台机器就跑不了 | 全部用相对路径:references/guide.md 而非 /home/me/guide.md |
| 引用的脚本/文档文件实际不存在 | AI 按不存在的东西执行,产生幻觉 | 跑审查前先 ls 确认每个被引用的文件都在 |
| 明明有 Python 脚本但 SKILL.md 里没提 | HaluCatch 可能漏掉代码风险检查 | SKILL.md 里注明所有 Python 依赖和入口文件 |
代码风险(Code)
| 踩坑 | 后果 | 怎么避 |
|---|---|---|
except Exception: pass 或 except: pass | 出错静默吞掉,查 bug 如大海捞针 | 最少 except Exception as e: print(e) |
open(filename, 'w') 无保护 | 静默覆盖已有文件,数据丢失 | 改成 'x' 模式,或写入前检查 os.path.exists() |
requests.get(url) 没设 timeout= | 网络卡住时永久挂起 | 统一设 timeout=30 |
| 除法运算不检查分母是否为零 | 输入数据稍有异常就崩 | 所有除法前加 if denominator == 0: 分支 |
规则(Rules)
| 踩坑 | 后果 | 怎么避 |
|---|---|---|
| 用模糊词("大概"、"可能"、"应该"、"或许") | AI 执行时自行脑补,输出不可复现 | 把模糊词换成明确的条件:"当 A 为真时执行 B" |
| 指令只有正常路径,没有异常分支 | 出状况时 AI 不知道该怎么办 | 每条核心指令至少配一个"如果失败了怎么办" |
| 引用了 Skill 不支持的虚构命令或功能 | AI 试图执行不存在的东西 | 写指令前确认所有命令在你的环境下真实可用 |
护栏(Guardrails)
| 踩坑 | 后果 | 怎么避 |
|---|---|---|
| 没声明"不要做什么" | AI 可能在你不希望的场景下触发 Skill | 开头加一句:"仅当用户明确请求 X 时激活,其他情况下忽略" |
| 输出格式没约束 | 同样的输入每次输出格式不一样 | 明确指定输出结构:JSON schema / Markdown 表格 / 固定模板 |
| 引用了外部 API 但没声明密钥需求 | 用户装完发现跑不了 | metadata.openclaw.requires.env 里列出所有需要的环境变量 |
未找到匹配的结果
试试这些关键词: