用途
inspect 用于对 Snowflake 环境执行一次结构化扫描,并生成带时间戳的环境快照,便于记录和追踪环境变化。它属于 CocoPlus 技能集,运行前要求当前目录已初始化 CocoPlus(存在 .cocoplus/ 目录)。若未初始化,会输出提示“CocoPlus not initialized in this directory. Run $pod init to begin.”并停止。
主要能力
扫描覆盖以下对象:
- 模式(Schemas):执行 SHOW SCHEMAS;
- 表(Tables):对每个可访问模式执行 SHOW TABLES IN SCHEMA [schema_name];
- 视图(Views):执行 SHOW VIEWS IN SCHEMA [schema_name];
- 存储过程(Stored Procedures):执行 SHOW PROCEDURES IN SCHEMA [schema_name];
- 用户权限(User Grants):执行 SHOW GRANTS TO USER CURRENT_USER();
- Cortex 函数(仅在 --full 模式下):执行 SHOW FUNCTIONS LIKE '%CORTEX%';
扫描具备容错性:任何查询失败都会被跳过并记录,不会中断整个扫描。每个失败会记录查询标签、尝试的精确 SQL、Snowflake 错误文本或工具错误、可推断的可能原因(权限、模式缺失、账户功能不支持、连接问题)以及该失败是否影响最终计数。
使用方式
参数解析:
- --schema <name>:仅扫描指定模式
- --full:扩展元数据(列级细节、查询历史),并额外扫描 Cortex 函数
- 无参数:标准扫描
扫描完成后,生成时间戳(格式 YYYYMMDD-HHMMSS),并将快照写入 .cocoplus/snapshots/[timestamp]-env.md。快照内容包含:标题、采集时间(ISO 8601)、扫描类型(standard / schema-specific / full)、模式过滤器(模式名或 "all")、模式列表、按模式分组的表名(如可用则含行数)、按模式分组的视图名、按模式分组的存储过程名、权限摘要、Cortex 函数名(仅 --full)、诊断信息(扫描耗时、对象计数、失败查询数及每个失败的详情)、扫描备注(即使无错误也需明确写出“No errors encountered”)。
完成后的输出格式为:“Environment scan complete. Snapshot written to .cocoplus/snapshots/[timestamp]-env.md. Found: [N] schemas, [N] tables, [N] views, [N] procedures. Diagnostics: [N] failed queries.”
适用场景
- 需要定期记录 Snowflake 环境结构变化时
- 在排查权限或对象范围问题时,需要一份包含失败查询详情的诊断快照
- 作为 Assist Mode 或其他后台工作流的子步骤,为父流程提供环境上下文
限制与注意事项
- 必须已初始化 CocoPlus(.cocoplus/ 存在),否则直接停止
- 扫描依赖 SnowflakeSqlExecute 工具执行查询,查询失败会被跳过而非中止
- 当被 Assist Mode 或其他后台工作流调用时,不应因单个 inspector 查询失败而使父工作流失败,而应将诊断写入快照并报告快照路径
- 快照必须带时间戳,不得覆盖最新快照,以保留环境变更历史
- 退出条件要求快照文件包含 Schemas、Tables、Views、Stored Procedures、User Permissions 各节,Diagnostics 节(含扫描耗时、对象计数、失败查询数及精确失败 SQL/错误文本),以及 Scan Notes 节(即使无错误)
- 关于收费、价格、平台支持范围等具体信息,资料中暂未提供