
Understand-Anything SQL 语言提示片段解析.sql 文件如何成为知识图谱中的数据层节点与边【免费下载链接】Understand-AnythingGraphs that teach graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.项目地址: https://gitcode.com/GitHub_Trending/un/Understand-Anythingunderstand-anything-plugin/skills/understand/languages/sql.md是 Understand-Anything 技能中针对 SQL 的语言提示片段Language Prompt Snippet。它不是给人读的技术文档而是注入给 LLM 子代理的结构化指令告诉分析器如何理解 DDL/DML、如何识别迁移与种子文件的命名约定、如何为 SQL 文件发射正确的图边migrates、defines_schema等以及应该写出什么风格的摘要。读完本文你会理解这个片段在/understand七阶段流水线中被注入的确切位置以及其中的每条规则在 schema.ts 和 file-analyzer.md 中有怎样的程序化对应。片段在流水线中的位置Phase 4 的语言上下文注入SKILL.md 定义了片段的消费方式。在 Phase 4架构分析构建architecture-analyzer子代理的提示词时For each language detected in Phase 1 (e.g.,python,markdown,dockerfile,yaml,sql, ...), read the file at./languages/language-id.md... and append its content after the base template under a## Language Contextheader.Include non-code language snippets— they provide edge patterns and summary styles for non-code files.也就是说只有当 Phase 1 扫描检测到项目里存在sql语言的文件时sql.md的内容才会被追加进架构分析提示词。SQL 属于非代码语言片段non-code language snippet它提供的不是函数/类提取规则而是边模式edge patterns与摘要风格summary style——这正是sql.md全文四节的组织逻辑。SQL 能被扫到依赖 scan-project.mjs 中的两处确定性映射// 语言识别扩展名 → 语言 id .sql: sql, // 文件分类扩展名 → fileCategory .sql: data,前者让 SQL 进入语言检测集合触发本片段注入后者让每个.sql文件获得fileCategory: data后续由 file-analyzer 决定其节点类型。Key Concepts片段定义的十个 SQL 核心概念sql.md 的 Key Concepts 一节列出了分析器在语义分析时应具备的十个概念基线概念说明DDL数据定义CREATE TABLE、ALTER TABLE、DROP TABLE用于 schema 管理DML数据操作SELECT、INSERT、UPDATE、DELETE用于数据操作Normalization规范化通过 1NF、2NF、3NF 关系组织表以减少冗余Foreign Keys外键REFERENCES约束在表之间强制引用完整性Indexes索引CREATE INDEX为高频查询列优化查询性能Migrations迁移带编号、按顺序应用的 schema 变更用于版本控制Transactions事务BEGIN/COMMIT/ROLLBACK实现多语句原子操作Views视图命名查询CREATE VIEW为复杂 join 提供虚拟表Stored Procedures存储过程服务端函数将业务逻辑封装在数据库内Constraints约束NOT NULL、UNIQUE、CHECK、DEFAULT等数据完整性规则这些概念的作用体现在两处输出字段file-analyzer 为每个文件生成的summary1-2 句目的描述与可选的languageNotes仅在发现值得教学的语言模式时添加如多 SQL 规范化模式。file-analyzer.md 明确要求对 Data 文件的摘要描述 schema/数据结构并给出了正面范例Core user and orders tables with foreign key relationships and audit timestamps.——片段中的概念词汇表就是让 LLM 写出这类精确摘要的领域底座。Notable File Patterns六类 SQL 文件命名约定片段第二节列出了项目里 SQL 文件最常见的目录/命名模式分析器据此判断文件角色migrations/*.sql— 编号迁移文件如001_create_users.sql、002_add_orders.sqlschema.sql— 完整数据库 schema 定义常由迁移生成seeds/*.sql— 开发与测试环境的种子数据*.up.sql/*.down.sql— 可逆迁移对up 应用down 回滚init.sql— Docker 或全新环境用的数据库初始化脚本procedures/*.sql— 存储过程定义这些模式与 file-analyzer.md 中 data 子类型 的判定规则衔接table节点专门留给含 CREATE TABLE 的 SQL 文件或迁移文件而种子/初始化脚本则归入普通file节点但打data相关的标签。tag 约定同样在 file-analyzer.md 有对应条目*.sql with CREATE TABLE应打database、migration标签。Edge Patterns四种 SQL 边及其程序化落点片段第三节是全文最有操作性的部分它规定了 SQL 文件与项目其他节点之间的四类边迁移文件migrates它创建或修改的表— 权重0.7方向forward见 file-analyzer.md 的非代码边表格Schema 定义文件defines_schemaORM 模型或数据层代码— 权重0.8同为该表格定义表定义之间通过外键形成隐式related边— 语义边权重0.5默认值种子文件depends_on为其提供数据的那批迁移文件— 依赖边权重0.6这四类边都是核心 schema 中的合法类型。schema.ts 的EdgeTypeSchema将migrates、documents、routes、defines_schema归入 Schema/Data 类别SKILL.md 的边权重约定表中migrates为 0.7、defines_schema为 0.8与 file-analyzer 表格完全一致。更值得注意的是别名归一化这一安全网LLM 并不总能直接产出规范边型。schema.ts 中的EDGE_TYPE_ALIASES会把常见近义写法重写为规范值migrates_to: migrates, defines: defines_schema,节点类型侧同理NODE_TYPE_ALIASES将migration、database、db、view统一归一为tableschema.ts——这正好覆盖 SQL 场景下 LLM 最容易产生的措辞漂移。最终的validateGraph流水线分四层sanitize小写化、空值清理→ normalize别名映射→ autoFix缺省weight补 0.5、越界权重 clamp 到 [0,1]→ 逐节点/逐边校验并丢弃悬空引用因此即使子代理输出的边指向不存在的表节点也会在 schema.ts 的 referential integrity 检查中被显式记录并移除而不是静默保留。Summary Style片段规定的摘要句式片段第四节给出三条摘要模板约束分析器输出的summary字段风格——具体、量化、点明对象Database migration creating the users table with email, name, and authentication columns. Schema definition with N tables covering user management, orders, and payment processing. Seed data populating N tables with development fixtures for testing.注意 N 不是占位符修辞而是要求分析器给出真实的表数量这与 file-analyzer 对摘要Bad/Good对照的要求一致避免 The utils file contains utility functions. 式的空话转向 Core user and orders tables with foreign key relationships and audit timestamps. 式的信息密度。从片段到图谱一个 .sql 文件在流水线中的完整旅程把上面各节串起来一个典型迁移文件如migrations/001_create_users.sql在/understand执行中的轨迹如下Phase 1 SCANscan-project.mjs 将其标记为language: sql,fileCategory: data语言集合中出现sqlPhase 4 便会注入本片段。Phase 2 ANALYZEfile-analyzer 为它创建table类型节点。ID 约定在 file-analyzer.md 中明确table:relative-path:table-name示例即table:migrations/001.sql:users。同时按下文 Edge Patterns 发射migrates边并对照 batch 内其他 SQL 文件补depends_on种子→迁移。Phase 4 ARCHITECTUREarchitecture-analyzer.md 有两处规则承接 SQL目录名匹配sql/database/schema的文件组划入data层文件级*.sql模式同样归data类。它还会执行 Data Pipeline Detection产出schemaFiles/migrationFiles清单输出示例正是schema.sql与migrations/001_init.sql验证 schema→迁移→API 处理器的数据流。Phase 6 REVIEWinline 校验或--review子代理检查节点/边完整性table属于 13 种文件级节点类型之一SKILL.md必须被分配且仅被分配到一个 layer。需要说明的是SQL 与代码语言的配置在 languages/configs/sql.ts 中是极简的export const sqlConfig { id: sql, displayName: SQL, extensions: [.sql], concepts: [tables, columns, indexes, foreign keys, views, stored procedures, triggers, migrations], filePatterns: { entryPoints: [], barrels: [], tests: [], config: [] }, } satisfies LanguageConfig;filePatterns全空说明 SQL 没有入口/桶文件/测试这类代码概念——从源码结构看SQL 的语义承载被刻意前移到sql.md这份提示片段和 file-analyzer 的 data 子类型规则里而非核心包的解析器中SQL 不属于 tree-sitter 提取的 10 种代码语言结构数据基本为空语义判断主要依赖 LLM 结合本片段完成。小结sql.md用不到 40 行定义了 SQL 在 Understand-Anything 知识图谱中的人格概念词汇表决定摘要质量文件模式决定节点分类四条边模式决定数据层与代码层的连通方式摘要模板决定输出信息密度。它的每条规则都不是孤立的——migrates/defines_schema对应 schema.ts 中的 Schema/Data 边类型与 0.7/0.8 的权重约定table节点对应table:path:name的 ID 规范data文件分类对应 architecture-analyzer.md 的layer:data归层规则。理解这个片段也就理解了 Understand-Anything 处理非代码文件的一般范式用语言专属的提示片段把领域知识编码进提示词用 schema 层的别名归一化与引用完整性校验兜住 LLM 输出的不确定性。【免费下载链接】Understand-AnythingGraphs that teach graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.项目地址: https://gitcode.com/GitHub_Trending/un/Understand-Anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考