logo
Public
0
1
WeChat Login

npc-lint

NPC 配置静态检查工具,用于在 CNB 平台上对 NPC 仓库进行自动化配置审查。

功能

运行 python main.py 后,工具会对当前仓库执行以下两类检查:

角色定义检查(settings.yml)

检查项说明
settings.yml 存在 & 语法文件必须存在且为合法 YAML
npc.roles 配置必须定义至少一个角色,每个角色需有 nameprompt
slogan可选,建议配置以增加辨识度
avatar.src头像文件必须在仓库中存在,建议 ≤ 512×512 px、≤ 300KB
头像圆形裁剪安全模拟 border-radius: 50% 裁剪,分析角区域是否存在文字或图案可能被裁掉
defaultRole可选,如配置则指向的角色名必须在 roles 中存在

流水线配置检查(.cnb.yml)

检查项说明
.cnb.yml 存在 & 语法文件必须存在且为合法 YAML
NPC 事件配置需至少配置 issue.comment@npcpull_request.comment@npc
NPC 事件阶段 imports 合规NPC 事件阶段不应引用 imports(密钥仓库),否则他人 fork 后无法启动
仓库类变量检测NPC 事件阶段的 image/script 中不应使用 $CNB_REPO_* 等变量,跨仓库调用时会解析错误
CNB_NPC_TRIGGER_CONTENT建议使用该变量替代 CNB_ISSUE_DESCRIPTIONCNB_COMMENT_BODY 等等效场景变量
硬编码密钥检测不应在 .cnb.yml 中明文写入 API Key、Token、密码等敏感信息

使用方式

本地运行

# 安装依赖
pip install pyyaml pillow

# 在 NPC 仓库根目录执行
python main.py

CI 集成

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

依赖

  • Python ≥ 3.11
  • PyYAML
  • Pillow

About

NPC 静态检查

lintrepo-named
Language
Python97.5%
Dockerfile2.5%