NPC 配置静态检查工具,用于在 CNB 平台上对 NPC 仓库进行自动化配置审查。
运行 python main.py 后,工具会对当前仓库执行以下两类检查:
| 检查项 | 说明 |
|---|---|
| settings.yml 存在 & 语法 | 文件必须存在且为合法 YAML |
| npc.roles 配置 | 必须定义至少一个角色,每个角色需有 name 和 prompt |
| slogan | 可选,建议配置以增加辨识度 |
| avatar.src | 头像文件必须在仓库中存在,建议 ≤ 512×512 px、≤ 300KB |
| 头像圆形裁剪安全 | 模拟 border-radius: 50% 裁剪,分析角区域是否存在文字或图案可能被裁掉 |
| defaultRole | 可选,如配置则指向的角色名必须在 roles 中存在 |
| 检查项 | 说明 |
|---|---|
| .cnb.yml 存在 & 语法 | 文件必须存在且为合法 YAML |
| NPC 事件配置 | 需至少配置 issue.comment@npc 或 pull_request.comment@npc |
| NPC 事件阶段 imports 合规 | NPC 事件阶段不应引用 imports(密钥仓库),否则他人 fork 后无法启动 |
| 仓库类变量检测 | NPC 事件阶段的 image/script 中不应使用 $CNB_REPO_* 等变量,跨仓库调用时会解析错误 |
| CNB_NPC_TRIGGER_CONTENT | 建议使用该变量替代 CNB_ISSUE_DESCRIPTION、CNB_COMMENT_BODY 等等效场景变量 |
| 硬编码密钥检测 | 不应在 .cnb.yml 中明文写入 API Key、Token、密码等敏感信息 |
# 安装依赖
pip install pyyaml pillow
# 在 NPC 仓库根目录执行
python main.py
npc-lint 可通过 .cnb.yml 中的 NPC 事件自动触发:
run lint:
issue.comment@npc:
- name: lint
docker:
image: docker.cnb.cool/acidbunny/npc-lint:latest
stages:
- name: run lint
script: python /app/main.py
allowFailure: true
当用户在 Issue 中 @NPC 触发事件时,自动运行检查并将结果作为评论回复。
每项检查以 ✅ PASS / ⚠️ WARN / ❌ FAIL 标记结果,末尾输出汇总统计:
总结: 8 ✅ | 2 ⚠️ | 0 ❌ (共 10 项)
退出码:全部通过返回 0,存在 FAIL 项返回 1。