用途:stack-detect 是 claude-db 审计的确定性入口(Phase 1 — detect),把项目归类为一个或多个数据库栈,字段包括 paradigm、engine、orm、platform、source_of_truth、confidence、files。它决定评分器 scripts/score.mjs 使用的范式 profile 与各审计器运行的模块集。
主要能力:解析目标目录($ARGUMENTS 路径,否则项目根目录或 cwd),运行检测器并读取其 JSON 标准输出:node scripts/detect-stack.mjs --dir "<dir>",返回 { stacks: [...], files_scanned }。该脚本是经过测试的基础设施,不应编辑或重新实现。
权威来源优先级:当多个来源描述同一数据库时,权威性依次为:实时 Tier-1 内省(通过 introspect 技能)高于任何文件;声明式/生成产物(schema.prisma、Drizzle *_snapshot.json、structure.sql、schema.rb、生成的迁移 SQL)置信度为 established;迁移 SQL 高于 ORM 程序源码;ORM 程序源码(schema.ts、models.py、Mongoose/CDK)置信度为 directional。从程序源码解析出的 directional 栈不会触发 severity-5 上限,只会提示转向生成产物或 Tier-1。声明式产物与 ORM 源码不一致属于 schema drift,由 db-migration-safety(M22)负责。
路由输出:每个检测到的栈会输出 paradigm(选择 score.mjs profile 与 --paradigm 标志,取值 relational | document | key-value | wide-column | vector | time-series | graph)、模块集(M0 引擎选择为建议、不计分,加按范式 profile 过滤的 M1..M22;无计分发现的类别不激活,例如文档存储不会因缺少外键被扣分)、source_of_truth 与 confidence(解析可靠性上限,Tier 0(a) 可靠 vs 0(b) 尽力而为)。
多存储:返回所有栈(如 Postgres 主库 + Redis 缓存),编排器分别审计、各自用对应 --paradigm 评分,并按轴汇总各存储的最差结果,指明拖底的存储。
限制:若 stacks 为空,表示没有可离线审计的内容,不要猜测引擎,应引导用户到 /claude-db:start 向导或让其用自然语言描述目标数据库,并原样呈现检测器的提示。输出应包含原始 stacks 数组、每栈路由与来源优先级说明,叙述保持简洁,使用用户语言(EN/ES)。