mcpField
P
pythia-explore

pythia-explore

github.com/thaildhe172591数据与数据库4142 次安装4 天前更新
代码仓库

关于 pythia-explore

pythia-explore 是面向开发者的技能,用于检查实时数据库架构和 PL/SQL 对象。它强调以数据库查询为准,避免仅依赖可能过时的 SQL 导出文件,并可检查源码、依赖、引用和错误。

主要功能

  1. 01检查实时架构与连接
  2. 02读取对象源码和签名
  3. 03查看列与 DDL
  4. 04追踪依赖及影响范围
  5. 05精确查找标识符引用
  6. 06检查无效对象和错误

适用场景

  1. 01核对 SQL 导出与实时数据库
  2. 02理解存储过程或函数
  3. 03查找数据库对象的使用位置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/thaildhe172591/pythia --skill pythia-explore

安装后在 Claude Code 中输入/pythia-explore确认已加载。

附带文件reference/data-dictionary.md

详细介绍

探索架构

开始时宣布:“正在使用 pythia-explore —— 直接向数据库查询。”

**阶段:**学习

原则:查询数据库,而不是导出文件

导出的 .sql 文件仓库从导出后的第二天起就会过时。一个真实的中型系统在 2026 年接受审计时,将仓库中的导出文件与实时数据库进行了比较:

对象类型导出文件中数据库中结论
存储过程3,8273,827匹配
表952952匹配
类型0115全部缺失
包09全部缺失
索引1161,016约 89% 缺失

针对导出文件编写的代码可能“看起来没问题”,却引用了导出文件中从未包含的类型和包。

当开发者交给你一个 .sql 文件时——“解释一下这个存储过程”、“这是导出文件,它的作用是什么”——这个文件只是一个说法,并非事实。先阅读它,然后运行 pythia src <NAME>,根据数据库作答。如果两者不一致,先说明这一点:哪个版本更新,正是开发者需要知道的信息,而仅凭文件无法判断。只要数据库可访问,就绝不要仅根据文件回答数据库对象相关问题。

只有在数据库不可访问时,才将文件内容作为答案,并说明你正在这样做。

你需要什么 → 运行什么命令

需求命令
连接是否正常,有什么架构pythia check
按名称查找对象pythia ls "PKG_%"
查看源代码及编译器提供的行号pythia src NAME(--body、--spec)
存储过程/函数签名pythia args NAME
列和实际数据类型pythia cols TABLE_NAME
完整 DDLpythia ddl TABLE NAME
搜索所有 PL/SQL 文本pythia grep "text"
对象依赖了什么pythia deps NAME
哪些对象依赖某个对象pythia impact NAME
精确的标识符用法(优于 grep)pythia plscope NAME
名称类似于该程序的程序pythia similar NAME
当前所有失效对象pythia invalid、pythia errors
自由形式的问题pythia sql "select ..."(仅限 SELECT/WITH)

确保答案准确的规则

  • **始终会提示输出是否被截断。**输出末尾会有 -- truncated ...,或者在 --json 中设置 "truncated": true。如果没有看到标记,就说明看到了全部内容;如果看到了,就要说明这一点,或获取更多内容(--limit、--offset、--max-lines)——绝不要把截断的列表说成完整列表。
  • 要查找“X 在哪里被使用”,先用 plscope,再用 grep:PL/Scope 由编译器记录,结果精确;grep 会匹配注释和相似名称。如果 PL/Scope 没有数据,命令会说明这一点,此时再使用 grep 作为替代方案。
  • src 中的行号是编译器提供的行号——错误出现在 line 47,就表示它位于 src 输出中的第 47 行。无需换算偏移量。
  • 默认输出上限用于保护你的上下文窗口;仅对你当前实际处理的对象调高上限。

更深入的参考资料——这些命令使用哪些数据字典视图、如何启用 PL/Scope、许可限制:reference/data-dictionary.md。

评论

支持 Markdown