FAQ — 常见问题

💡 基础

不需要。全程离线运行,仅扫描本地文件夹中的 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(一行标题也行)再跑
⚠️ 疑似外部 Skillskills/ 下有别人安装的 Skill确认后修改运行配置文件中 skills_is_external
🔴 硬编码路径SKILL.md 或脚本里有绝对路径全部改成相对路径
🟠 模糊表述说明书用了"大概/可能/通常"等词换成明确的 if-else 条件句
🔴 裸 exceptexcept: 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.yamlskills_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: passexcept: 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 里列出所有需要的环境变量

未找到匹配的结果

试试这些关键词: