用途
CometChat Audit 用于审查一个已经存在的 CometChat 集成,回答“它有什么问题或风险”。典型触发场景包括:上线前检查、安全审查、升级前评估,以及“为什么它不稳定 / 它安全吗”这类问题。它是各家族 troubleshooting 技能(针对具体症状做出反应)的主动式补充。
判定依据
“正确”的权威来源是 RULES.md、解析出的家族技能(cometchat-<family>-core / -production / -troubleshooting),以及离线探测命令 npx @cometchat/skills detect --json。每个被标记的符号或属性都必须对照家族目录与文档(通过 -core/references/docs-map.md)核实,不得凭记忆标记。
使用方式
- 探测:运行 npx @cometchat/skills detect --json,获取框架、已安装的 UI Kit、version_conflict、existing_cometchat 等信息,并从 peers.yaml 解析出 <family>。若未探测到任何内容,应说明并停止(没有可审查的对象)。
- 阅读集成代码:init/login/生命周期文件、界面渲染位置、环境/密钥文件、服务端令牌端点(如有),以及自定义消息/主题/功能代码。不要读取 node_modules/.d.ts。
- 对下列检查项逐项打分,收集证据(file:line),撰写按严重程度排序的报告,每条发现附修复方案与负责技能。
- 最后询问是否应用修复;不要自动编辑。
检查清单
安全(最高严重级别):客户端代码/打包产物/二进制中是否存在 Auth Key(严重,须改为服务端签发令牌,涉及 cometchat-security、cometchat-<family>-production);令牌端点是否从客户端参数(?uid=)推导 UID(冒充风险);REST API Key 是否出现在客户端或仓库中(严重);离职时会话是否可撤销(flush tokens);RBAC 角色是否配置,还是所有人使用默认角色。
正确性:是否遵守 init() → login() → render 顺序;login 完成前不渲染组件;SSR 期间不 init;StrictMode/双重调用有防护;使用 initFromSettings(AI agent 归因)而非经典 builder init;界面有真实尺寸(非 0 高度塌陷);宿主 CSS 未泄漏进 .cometchat;无未翻译的原始本地化键(如 group_info);无失效的可交互控件(默认开启的控件要么接线要么隐藏);卸载/销毁时移除监听器(避免重复消息/泄漏)。
版本与漂移:detect 报出的 version_conflict(UI Kit 主版本 ≠ 家族目标版本)应转交 cometchat-<family>-migration;Kit/SDK 版本是否固定(非浮动主版本);iOS 是否固定确切的 kit+SDK+Calls 版本。
生产就绪:全站 HTTPS;登出清理(会话 + 推送令牌);生产应用上启用仪表盘扩展/AI;具备错误处理(React 家族如 CometChatErrorBoundary;iOS/Android/Flutter 使用 SDK 错误监听器 / kit 错误状态视图)。
无障碍与本地化(企业采购关注):全局 CSS 未剥离焦点环/对比度;聊天容器有标签;遵循 reduced-motion(cometchat-a11y);渲染前设置 locale;无原始键;若面向 RTL 则已处理(cometchat-i18n)。
合规(若在范围内):应用位于正确的数据驻留区域;存在数据删除路径(cometchat-compliance);若产品需要信任与安全则启用审核(cometchat-moderation)。
报告格式
先给一行结论(ship / fix-first / not-ready)与按严重级别的计数。随后是表格:严重级别 · 发现 · 证据(file:line)· 修复 · 负责技能。同时列出通过项,让读者知道已检查过。最后给出最优先修复的三件事。不要夸大严重级别,也不要标记未经文档/目录核实的问题。
常见陷阱(审查者自身)
凭记忆标记——标记错误前须对照目录与文档核实每个符号/属性;自动编辑——本技能只读,先报告再询问;读取 node_modules/.d.ts——审查用户代码与文档,而非 kit 内部;夸大严重级别——本地 .env 中仅开发用的 Auth Key 与随生产发布的 Auth Key 不同,应按实际触达用户的情况判断。
验证方式
报告应写明框架与家族,列出按严重程度排序、每条含 file:line + 修复 + 负责技能的发现,说明哪些通过,并给出明确结论;除非用户批准,否则不做任何编辑。