CocoSentinel 是 CocoPlus 项目中的制品质量门禁,用于对单个制品进行多维度质量评估,并输出 APPROVED、CONDITIONAL 或 BLOCKED 的总体结论。
用途:作为 CocoPlus 工作流中的质量检查环节,在开发过程中对指定文件进行结构化评估,覆盖安全、正确性、性能、韧性、可维护性、合规及整洁代码等方面,帮助在进入后续环节前发现阻断性问题。
主要能力:
- 八维度并行评估:包括 A1 安全攻击面、A2 安全防御姿态、B 正确性与逻辑、C 性能、D 韧性、E 可维护性、F 合规、H 整洁代码(66条规则分类)。
- 维度 G 证据预门禁:在启动任何子代理之前,先运行确定性的 sentinel-pregate 脚本(小于50ms),检查证据完整性;若失败则立即输出 BLOCKED 报告并停止,不启动其他维度。
- 覆盖规则:维度 H(整洁代码)返回 FAIL 时,无论其他维度结果如何,总体结论强制为 BLOCKED。
- 历史上下文利用:读取 .cocoplus/wisdom/rejections.jsonl 中最近两次相关维度的 BLOCKED 记录,作为各维度子代理的先验拒绝上下文。
- SHA-256 绑定:计算制品全文哈希作为评估锚点,可检查 .cocoplus/sentinel/approvals.jsonl 中是否存在已有批准记录,并支持复用或重新评估。
- 提示注入防御:对于来自 .cocoplus/ 和项目 git 跟踪文件之外的内容,使用 <untrusted_sentinel_input> 标签包裹,确保子代理将其视为数据而非指令。
- 并发控制:评估期间写入 .cocoplus/sentinel/active-evaluation.lock 零字节锁文件,防止 PreCompact 压缩会话,评估完成后删除。
- 结果持久化:将评估结果以 JSON 格式写入 .cocoplus/sentinel/<artifact_sha>.json,并在 BLOCKED 时调用 cocowisdom/wisdom-writer 记录阻断原因。
使用方式: 开发者运行 $sentinel <file> 指定制品路径。若未提供文件则提示输入;若文件不存在则报错停止。若当前目录缺少 .cocoplus/,输出初始化提示并停止。评估流程包括解析输入、计算 SHA-256、加载 CocoWisdom 上下文、提示注入防护、运行维度 G 预门禁、写入活动评估锁、并行启动八个维度子代理、删除锁、综合结论、写入结果 JSON、必要时写入 CocoWisdom,最后输出逐维度报告。审批可通过 $sentinel --approve 记录,CONDITIONAL 情况下需附书面理由。
适用场景: 适用于使用 CocoPlus 项目框架、需要在制品交付前进行多维度质量门禁检查的开发场景,尤其关注安全、正确性、整洁代码和证据完整性的项目。
限制:
- 必须先在当前目录初始化 .cocoplus/(通过 $pod init),否则无法运行。
- 维度 G 必须由确定性脚本执行,不能以 LLM 子代理替代。
- 维度 G 失败时不得启动其他维度子代理。
- 审批需绑定 SHA 并附书面理由以保证可审计性。
- 锁文件必须在收到全部维度裁决后删除,否则会永久阻塞后续 PreCompact。
- 不得通过修改结果 JSON 来覆盖 BLOCKED,正确做法是修改制品并重新运行。
- 本资料未提供收费、价格、平台兼容性等信息。