用途
cocoplus-config 是 CocoPlus 插件的配置管理技能,把 cocoplus.toml 作为所有可由操作者配置的插件设置的单一事实来源(SSOT)。它处理两个命令:$cocoplus sync 将 cocoplus.toml 传播到下游产物;$cocoplus migrate-config 将旧版 safety-config.json 转换为 cocoplus.toml。
执行前需确认 .cocoplus/ 目录存在,否则提示先运行 $pod init 并停止。
主要能力
$cocoplus sync
- 从项目根目录读取 cocoplus.toml。若文件缺失或存在语法错误,输出对应提示并停止。
- 读取 .cocoplus/config/sync-manifest.json(若存在),记录上次同步的 file_hashes 用于漂移检测。
- 漂移检测:对上次清单中的每个文件比对当前内容哈希,若被手动编辑则列出并警告这些改动将被覆盖,但仍继续覆盖,因为生成文件由 cocoplus.toml 控制。
- 重新生成 Pre-Tool-Use 安全规则:读取 cocoplus.toml 的 [security] 段(always_allow、ask_first、human_required、never),更新 .cocoplus/config/security-rules.json 中的 boundary_tiers 配置,包含 generated_at、source 及四类模式列表。pre-tool-use 钩子在运行时读取该文件,无需改代码。
- 若 cocoplus.toml 中 [demo] enabled = true,确保 .cocoplus/.gitignore 包含
ops/demo/忽略项;若为 false 或缺失,该条目可保留(无害)。 - 写入同步清单:计算每个重新生成文件的 SHA-256,写入 .cocoplus/config/sync-manifest.json,包含 synced_at、toml_hash 及 files 数组(path、hash、generated_from)。
- 提交:
git add cocoplus.toml .cocoplus/config/security-rules.json .cocoplus/config/sync-manifest.json .cocoplus/.gitignore,提交信息为chore(config): $cocoplus sync — cocoplus.toml applied。 - 确认输出:列出重新生成的文件、四类安全规则的模式数量及提交信息。
$cocoplus migrate-config
- 在项目根目录或 .cocoplus/ 目录检测 safety-config.json,若不存在则提示无需迁移并停止。
- 读取旧配置,按语义映射:boundary_tiers.never_patterns → [security] never;human_required_patterns → human_required;ask_first_patterns → ask_first;always_allow_patterns → always_allow。若 schema 不同,按语义等价映射。
- 若 cocoplus.toml 已存在,提示仅合并 [security] 段、保留其他段,并等待确认(yes/no)。
- 写入 cocoplus.toml:不存在则从已安装插件包中的 templates/cocoplus.toml.template 复制,再填充 [security] 段;已存在则只更新 [security] 段。
- 将 safety-config.json 重命名为 safety-config.json.migrated 作为审计记录,不删除。
- 自动执行完整的 $cocoplus sync 流程(步骤 1–8)。
- 确认迁移完成,说明旧文件保留为 .migrated,可随时运行 $cocoplus sync 重新传播变更。
使用方式
在已初始化 CocoPlus 的项目中运行 $cocoplus sync 或 $cocoplus migrate-config。配置修改应编辑 cocoplus.toml,而非直接改生成文件。
适用场景
需要集中管理 CocoPlus 插件安全边界规则、演示数据忽略项,并希望配置变更可追溯、可提交到 git 供团队共享的场景;以及从旧版 safety-config.json 升级到 cocoplus.toml 的迁移场景。
限制
- 生成文件(如 security-rules.json)会被 sync 覆盖,直接编辑会丢失。
- 漂移检测仅警告,仍会覆盖手动修改。
- 迁移不删除旧文件,仅重命名保留审计。
- 需先存在 .cocoplus/ 目录,否则需先运行 $pod init。
- 具体模板内容、模式语法等细节资料未提供。