0xsarwagya/ontoly

GitHub: 0xsarwagya/ontoly

Ontoly 是一个开源的软件智能引擎,通过将 JavaScript 和 TypeScript 代码转化为确定性的 Software Graph,为各类开发工具提供可共享的语义查询层。

Stars: 0 | Forks: 1

# Ontoly [![Validation Lab](https://static.pigsec.cn/wp-content/uploads/repos/cas/60/6020b6da5d4b3e8cdf644c3becb1d40c92548c6002c34aa95968ef1bc9515ad1.svg)](https://github.com/0xsarwagya/ontoly/actions/workflows/semantic-evaluation.yml) [![npm install](https://img.shields.io/npm/v/@0xsarwagya/ontoly-cli?label=npm%20install)](https://www.npmjs.com/package/@0xsarwagya/ontoly-cli) [![License: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-blue)](LICENSE) [![TypeScript](https://img.shields.io/badge/TypeScript-5.9-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) Ontoly 是一个原生支持 JavaScript 和 TypeScript 的软件智能引擎,它将源代码转化为确定性的 Software Graph。 开发者工具不应该一遍又一遍地重新解析同一个仓库结构。Ontoly 构建了一个共享的语义表示,使得 agents、MCP servers、SDK generators、文档工具、架构工具、静态分析工具和 IDE 都可以进行查询,而无需重复搜索文件或重建部分的 AST 上下文。 Ontoly 构建的是理解能力。它不回答问题,不调用语言模型,不生成 embeddings,也不做概率性的猜测。 ## 状态 Ontoly `v1.0.0` 是第一个稳定版本。当前的 alpha 版本:`v1.1.0-alpha.2`。 公开契约已冻结,该仓库包含: - Software Graph 规范 - 确定性的编译器 pipeline - 由 TypeScript Compiler API 驱动的 JavaScript 和 TypeScript 语义前端 - 查询引擎 - MCP 功能 - 用于 artifact 生成的确定性 Enhancers - 用于特性归属、意图词汇和概念图的派生 Semantics artifact - 用于归属、热点、协同变更、变动率和漂移的派生 History artifact - 可移植的 Agent Skills - 验证和语义评估基础设施 - 针对文档、打包、skills、示例和回归检查的发布关卡 ## 链接 - 网站:[oss.sarwagya.wtf/ontoly](https://oss.sarwagya.wtf/ontoly) - 文档:[oss.sarwagya.wtf/ontoly/docs](https://oss.sarwagya.wtf/ontoly/docs) - Agent Skills 目录:[oss.sarwagya.wtf/ontoly/docs/skills](https://oss.sarwagya.wtf/ontoly/docs/skills) - Enhancers:[oss.sarwagya.wtf/ontoly/docs/enhancers](https://oss.sarwagya.wtf/ontoly/docs/enhancers) - 仓库:[github.com/0xsarwagya/ontoly](https://github.com/0xsarwagya/ontoly) - 更新日志:[CHANGELOG.md](CHANGELOG.md) - 路线图:[ROADMAP.md](ROADMAP.md) - 架构:[ARCHITECTURE.md](ARCHITECTURE.md) - RFC 索引:[RFC_INDEX.md](RFC_INDEX.md) - 治理:[GOVERNANCE.md](GOVERNANCE.md) - 第三方声明:[THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) - HOL Guard:[![HOL Guard](https://img.shields.io/endpoint?url=https%3A%2F%2Fhol.org%2Fapi%2Fregistry%2Fbadges%2Fguard%2Fhashgraph-online%2Fhol-guard-plugin)](https://hol.org/go/guard/sarwagyasingh69?dest=%2Fguard%2Fbilling%3Fpromo%3DGUARD20-SARWAGYASINGH69%23upgrade&link_id=8aab4f0e-d950-4ba5-89f1-5689b7c867c8&utm_source=insights_share&utm_medium=affiliate_cta&utm_campaign=share20) ## 什么是 Ontoly Ontoly 是软件仓库与每一个需要理解它的工具之间的语义层。 ``` Repository -> Compiler Frontends -> Semantic Model -> Software Graph -> Enhancers -> Semantics -> Query Engine -> MCP, Skills, SDKs, Docs, IDEs, Analysis ``` Software Graph 就是产品本身。其他一切都是围绕它的消费者、插件、pass 或验证层。 ## 什么不是 Ontoly - 不是聊天界面。 - 不是编程 agent。 - 不是 copilot。 - 不是向量搜索。 - 不是 embeddings pipeline。 - 不是托管的 SaaS。 - 默认不是代码生成器。 - 不能替代 TypeScript、ESLint 或测试套件。 AI 工具可以通过 MCP 和 Skills 使用 Ontoly,但该图从不依赖于 AI 输出。任何面向 LLM 的 Ontoly 使用都必须通过 [LLM Enhancement](docs/llm-enhancement.md) 进行,以确保图证据、置信度和兜底规则保持明确。 ## 为什么使用 Software Graphs 大多数开发者工具都在重复做同样昂贵的工作: - agents 搜索文件 - 文档工具解析符号 - 架构工具重建依赖图 - SDK generators 推断 API 形状 - 静态分析工具重建调用和导入关系 Ontoly 将这些重复的工作转化为一个可重用的图: - 确定性 ID - 图原生诊断 - 明确的来源 - 稳定的序列化 - 查询索引 - 语义概念索引 - 验证报告 - 扩展元数据 目标很简单:每一个需要理解软件的工具都应该首先询问 Ontoly 是否已经知道。 ## 从源码快速开始 从源码构建时请使用此路径。 ``` git clone https://github.com/0xsarwagya/ontoly.git cd ontoly corepack enable pnpm install --frozen-lockfile pnpm build ``` 为包含的基础示例构建图: ``` pnpm ontoly build examples/basic ``` 检查生成的 artifacts: ``` ls examples/basic/ontoly-output pnpm ontoly inspect src/service.ts --root examples/basic pnpm ontoly search UserService --root examples/basic pnpm ontoly impact UserService --root examples/basic pnpm ontoly stats examples/basic ``` 运行主要的发布关卡: ``` pnpm check-types pnpm test pnpm docs:check-links pnpm skills:validate pnpm validate:packages ``` 在发布前运行完整关卡: ``` pnpm release:gates ``` ## 包安装 公共包名均在 `@0xsarwagya` 作用域下。 使用以下命令安装: ``` pnpm add -D @0xsarwagya/ontoly-cli pnpm exec ontoly build . ``` 在交互式终端中,不带路径的 `ontoly build` 会询问要索引哪个文件夹。按 Enter 键选择当前目录,粘贴相对、绝对或 `~/` 路径,或者显式传递路径: ``` pnpm exec ontoly build pnpm exec ontoly build apps/api pnpm exec ontoly build --no-prompt ``` 如果您的环境中不可用 npm,请使用上方的源码检出流程。 ## 构建 Artifacts `ontoly build ` 默认会写入内容丰富的 `ontoly-output/` 捆绑包: ``` ontoly-output/ SoftwareGraph.json manifest.json coverage.json quality.json semantic-model.json reports/ architecture.json api.json dependencies.json configuration.json frameworks.json workspace.json nodes/ all.json by-type/ relationships/ all.json by-type/ communities/ communities.json community-000.json html/ graph.html architecture.html ``` 输出捆绑包是确定性的,适用于人类、agents、网站、发布 artifacts 以及调试 Ontoly 自身的理解能力。 如需紧凑的缓存式 artifact 目录,请传入 `--output .ontoly`: ``` ontoly build . --output .ontoly ``` ``` .ontoly/ SoftwareGraph.json diagnostics.json indexes.json metadata.json statistics.json ``` JSON 图是规范的序列化格式。在 Software Graph 规范稳定之前,二进制格式被刻意排除在范围之外。 可以直接编译远程仓库: ``` ontoly build --remote https://github.com/0xsarwagya/ontoly.git ontoly output --remote git@github.com:0xsarwagya/ontoly.git ``` 远程构建会克隆到一个临时检出目录中,将相对输出路径写入您运行 Ontoly 的目录,并将 git URL 记录在输出清单中。 ## Software Graph Software Graph 是一个版本化的 JSON 模型,包含: - 仓库元数据 - 节点 - 边 - 诊断 - 索引 - 统计信息 - 来源 - 扩展元数据 核心节点家族包括模块、包、函数、方法、类、接口、类型别名、枚举、路由、控制器、服务、提供者、配置、环境变量、事件和资源。 核心关系家族包括 `IMPORTS`、`EXPORTS`、`CONTAINS`、`CALLS`、`DEPENDS_ON`、`USES`、`READS`、`WRITES`、`IMPLEMENTS`、`EXTENDS`、`HANDLES`、`MOUNTS`、`INJECTS`、`AUTHORIZES`、`REGISTERED_IN`、`PUBLISHES` 和 `SUBSCRIBES`。 请阅读 [RFC-0001](rfcs/0001-software-graph.md) 中的规范说明。 ## 确定性 ID Ontoly 分配稳定的 ID,以便图输出可以进行缓存、差异对比、测试和跨构建比较。 示例: ``` module:src/auth/service.ts fn:src/auth/service.ts:login class:src/auth/user-service.ts:UserService route:POST:/login model:User ``` 只要语义标识留存,ID 就应在重建中保持不变。 ## Compiler Pipeline 编译器是一个确定性的多阶段 pipeline: ``` Repository Discovery -> Frontend Parsing -> Symbol Emission -> Semantic Model Generation -> Relationship Extraction -> Graph Construction -> Diagnostics -> Validation -> Indexing -> Serialization ``` 编译器前端发出结构化事实。编译器负责图的构建。这使得解析器包保持小巧,并将图兼容性集中在中央管理。 请阅读 [RFC-0002](rfcs/0002-compiler-pipeline.md) 中的架构说明。 ## 查询引擎 查询引擎提供确定性的图推理原语: - 按 ID、名称、类型、文件和标签查找 - 邻域扩展 - 图遍历 - 依赖遍历 - 调用者和被调用者查找 - 路径查找 - 影响分析 - 过滤 - 模式匹配 - 基于索引的遍历 请阅读 [RFC-0003](rfcs/0003-query-engine.md) 中的查询设计。 示例: ``` import { buildSoftwareGraph } from "@0xsarwagya/ontoly-compiler"; import { createQueryEngine } from "@0xsarwagya/ontoly-query"; const graph = await buildSoftwareGraph({ root: process.cwd() }); const query = createQueryEngine(graph); const services = query.services(); const callers = query.callers("fn:src/auth/service.ts:login"); const dependencies = query.dependencies("class:src/auth/user-service.ts:UserService"); ``` ## CLI 源码检出通过根目录的 `ontoly` 脚本暴露 CLI: ``` pnpm ontoly --help ``` 常用命令: | 命令 | 用途 | | --- | --- | | `pnpm ontoly build ` | 构建 Software Graph。 | | `pnpm ontoly output ` | 生成包含 JSON 报告、图社区和 HTML 浏览器的 `ontoly-output/`。 | | `pnpm ontoly inspect ` | 检查图 artifacts 或实体。 | | `pnpm ontoly search ` | 将自然概念解析为排名靠前的图实体。 | | `pnpm ontoly find ` | 查找符号、缩写、特性或配置术语。 | | `pnpm ontoly locate ` | 定位特性级别的图触点。 | | `pnpm ontoly evidence ` | 为 agents 和审查生成由图支持的紧凑型证据包。 | | `pnpm ontoly semantics build ` | 生成派生的 Semantics artifact 和概念图。 | | `pnpm ontoly history build ` | 生成仓库历史、归属、热点、协同变更和漂移 artifacts。 | | `pnpm ontoly ownership ` | 检查确定性的 Git 派生的仓库归属。 | | `pnpm ontoly hotspots` | 列出高变动率/高修改频率的图热点。 | | `pnpm ontoly trace ` | 追踪图关系。 | | `pnpm ontoly coverage ` | 报告语义覆盖率。 | | `pnpm ontoly mcp` | 启动 MCP 功能。 | | `pnpm ontoly skills list` | 列出打包的 Agent Skills。 | | `pnpm ontoly skills validate` | 验证 skill 元数据、链接、模板和示例。 | | `pnpm ontoly validate all` | 运行验证实验室。 | | `pnpm ontoly evaluate` | 运行语义评估。 | | `pnpm ontoly leaderboard` | 生成语义排行榜输出。 | | `pnpm ontoly benchmark performance` | 运行性能基准测试报告。 | | `pnpm ontoly diff base.graph head.graph` | 根据文档 [RFC 0005](rfcs/0005-graph-diffing.md) 进行确定性的 Software Graph 差异对比。 | 请参阅 [docs/cli.md](docs/cli.md) 和 [docs/reference/cli.mdx](docs/reference/cli.mdx)。 ## MCP Ontoly MCP 在 Software Graph 之上公开了结构化的功能。这些功能在执行前会验证输入,并针对缺失、歧义或不支持的请求返回结构化的诊断信息。 当 LLM 使用 Ontoly MCP 响应时,必须使用 LLM Enhancement。非 LLM 工具可以直接调用 MCP,但 LLM 生成的答案必须保留 Ontoly 的证据、置信度和兜底边界。 ``` pnpm ontoly mcp --list pnpm ontoly mcp ``` 代表性功能: - `GraphStatistics` - `ExplainArchitecture` - `FindDependencies` - `ImpactAnalysis` - `TraceExecution` - `FindConfigurationUsage` - `FindAuthenticationFlow` - `FindFeatureOwner` - `SemanticContext` 每个功能都是确定性的,并且由证据支持。置信度是根据图证据推导出来的,而非猜测。 请参阅 [docs/mcp.md](docs/mcp.md) 和 [docs/getting-started/mcp.mdx](docs/getting-started/mcp.mdx)。 ## Agent Skills Ontoly 在 [skills](skills) 下提供了可移植的 Agent Skills。这些 Skills 教导编程 agents 在回退到仓库搜索之前如何使用 Ontoly。 每一个官方 Skill 都声明了 `ontoly.enhancement: "LLM Enhancement"`。对于任何使用 Ontoly 且具备 LLM 能力的 agent 来说,这是强制要求的,而不是可选的标签。 每个 Skill 都遵循相同的工作流程: 1. 确认已安装的工作流程声明了 LLM Enhancement。 2. 验证是否存在 Ontoly 图。 3. 如果缺失,使用 `ontoly build .` 构建一个。 4. 检查图的信任度和诊断信息。 5. 首先使用 Ontoly MCP 功能。 6. 仅当图无法回答时才检查源文件。 7. 在最终响应中引用证据和置信度。 包含的 Skills: - 架构审查 - 影响分析 - 代码库引导 - 请求追踪 - 依赖分析 - 安全审查 - 配置分析 - 框架分析 - 文档生成 - 重构 - 性能分析 - 死代码分析 - 迁移分析 - SDK 生成 验证已发布的 Skills: ``` pnpm skills:validate pnpm skills:validate-installed ``` 请阅读公开的 [Agent Skills 目录](https://oss.sarwagya.wtf/ontoly/docs/skills)、 [skills/SKILL_CATALOG.md](skills/SKILL_CATALOG.md)、[docs/agent-skills.md](docs/agent-skills.md) 和 [docs/skills-validation.md](docs/skills-validation.md)。 ## 验证实验室 oly 包含一个永久的验证实验室。它会在真实的仓库和测试夹具中衡量正确性、确定性、图质量、语义覆盖率、信任度、诊断、性能和回归。 ``` pnpm validate pnpm evaluate pnpm benchmark:performance ``` 验证输出位于 [validation](validation) 下: - 仓库注册表 - 各仓库报告 - 语义排行榜 - 回归基线 - 发布关卡 - 性能报告 - 网站资产 - 徽章 请阅读 [docs/validation-lab.md](docs/validation-lab.md) 和 [docs/semantic-evaluation-harness.md](docs/semantic-evaluation-harness.md)。 ## 发布证据 发布证据报告是本地验证套件生成的 artifacts,而不是营销宣传。 | 领域 | 证据 | | --- | --- | | 验证摘要 | [validation/lab-summary.md](validation/lab-summary.md) | | 语义排行榜 | [validation/semantic/leaderboard.md](validation/semantic/leaderboard.md) | | 发布关卡 | [validation/release-gates/report.md](validation/release-gates/report.md) | | Skills 评估 | [validation/skills/report.md](validation/skills/report.md) | ## 包 | 包 | 用途 | | --- | --- | | `@0xsarwagya/ontoly-cli` | CLI 和公共便捷 API。 | | `@0xsarwagya/ontoly-core` | Software Graph schema、稳定 ID、索引、图辅助工具和 Semantic Index APIs。 | | `@0xsarwagya/ontoly-compiler` | 仓库发现、图构建 pipeline、验证和监听模式。 | | `@0xsarwagya/ontoly-parser-typescript` | JavaScript 和 TypeScript 前端及关系提取。 | | `@0xsarwagya/ontoly-parser-openapi` | 用于 Software Graph 事实的 OpenAPI 前端。 | | `@0xsarwagya/ontoly-typescript` | 纯 TypeScript 语义模型分析器。 | | `@0xsarwagya/ontoly-semantic` | 语义生成器和框架分析器注册表。 | | `@0xsarwagya/ontoly-analyzers` | 语义覆盖率和图质量分析器。 | | `@0xsarwagya/ontoly-query` | 确定性 Software Graph 查询引擎。 | | `@0xsarwagya/ontoly-enhancer` | 用于不可变图 artifact 转换的公共 Enhancer API。 | | `@0xsarwagya/ontoly-enhancer-history` | 用于归属、热点、协同变更、变动率和架构漂移的确定性 History enhancer。 | | `@0xsarwagya/ontoly-enhancer-semantics` | 用于特性归属、词汇、邻域和概念图的确定性 Semantics enhancer。 | | `@0xsarwagya/ontoly-intelligence` | 基于 Software Graph、Semantic Index、Semantics 和 History artifacts 的确定性智能 API。 | | `@0xsarwagya/ontoly-diagnostics` | 共享诊断构造函数。 | | `@0xsarwagya/ontoly-cache` | 本地图 artifact 持久化。 | | `@0xsarwagya/ontoly-mcp` | 面向 AI agents 和工具的结构化图功能。 | | `@0xsarwagya/ontoly-plugin-mermaid` | 图可视化插件示例。 | | `@0xsarwagya/ontoly-plugin-html` | 交互式离线 HTML 图可视化插件。 | 包名刻意使用了 `@0xsarwagya/ontoly-*`。 ## 仓库布局 ``` packages/ core/ compiler/ parser-typescript/ parser-openapi/ typescript/ semantic/ analyzers/ query/ diagnostics/ cache/ mcp/ cli/ plugins/ mermaid/ html/ skills/ docs/ rfcs/ examples/ validation/ site/ ``` ## 示例 可运行的示例位于 [examples](examples) 中: | 示例 | 用途 | | --- | --- | | [examples/basic](examples/basic) | 小型 TypeScript 图构建。 | | [examples/typescript-library](examples/typescript-library) | 库结构的 TypeScript 项目。 | | [examples/nestjs-api](examples/nestjs-api) | 框架式 API 结构。 | | [examples/turborepo](examples/turborepo) | 工作区和包图行为。 | | [examples/cli-usage](examples/cli-usage) | CLI 工作流程示例。 | | [examples/mcp](examples/mcp) | MCP 功能用法。 | | [examples/semantic-queries](examples/semantic-queries) | 查询引擎示例。 | ## 文档地图 根目录 `docs/` 树是事实来源。`site/` 下的 OSS 网站快照即由此生成: ``` pnpm site:docs ``` 该命令会为网站重写 Markdown 链接,将 MDX 输出到 `site/docs/`,并添加页面级的 SEO frontmatter,如规范 URL、关键字和来源出处。着陆页和项目级别的 SEO 位于 `site/landing.mdx` 和 `site/manifest.json` 中。 在 `main` 分支上,`.github/workflows/publish-site.yml` 会运行相同的生成和验证流程,然后调用 `0xsarwagya/internet/scripts/oss-sync.mjs` 将 `site/manifest.json`、`site/landing.mdx`、`site/docs/**` 和 `site/assets/**` 复制到 `https://oss.sarwagya.wtf/ontoly` 的 OSS 网站内容快照中。 专门的网站位于 `https://ontoly.sarwagya.wtf`,OSS 文档镜像位于 `https://oss.sarwagya.wtf/ontoly`。 从这里开始: - [docs/index.mdx](docs/index.mdx) - [docs/getting-started/installation.mdx](docs/getting-started/installation.mdx) - [docs/getting-started/build-a-graph.mdx](docs/getting-started/build-a-graph.mdx) - [docs/getting-started/query-the-graph.mdx](docs/getting-started/query-the-graph.mdx) - [docs/getting-started/mcp.mdx](docs/getting-started/mcp.mdx) - [docs/concepts/software-graph.mdx](docs/concepts/software-graph.mdx) - [docs/concepts/compiler-pipeline.mdx](docs/concepts/compiler-pipeline.mdx) - [docs/concepts/plugin-system.mdx](docs/concepts/plugin-system.mdx) - [docs/query-engine.md](docs/query-engine.md) - [docs/typescript-semantic-model.md](docs/typescript-semantic-model.md) - [docs/framework-detection.md](docs/framework-detection.md) - [docs/agent-skills.md](docs/agent-skills.md) - [docs/skills-overview.md](docs/skills-overview.md) - [skills/SKILL_CATALOG.md](skills/SKILL_CATALOG.md) - [docs/validation-lab.md](docs/validation-lab.md) - [docs/faq.md](docs/faq.md) - [docs/troubleshooting.md](docs/troubleshooting.md) ## RFCs Ontoly 使用 RFCs 来管理影响公共图、编译器、插件、查询和类型契约的变更。 - [RFC-0001: Software Graph](rfcs/0001-software-graph.md) - [RFC-0002: Compiler Pipeline](rfcs/0002-compiler-pipeline.md) - [RFC-0003: Query Engine](rfcs/0003-query-engine.md) - [RFC-0004: Plugin and Compiler Pass System](rfcs/0004-plugin-and-compiler-pass-system.md) ## 发布工程 发布关卡包括: - 构建 - 类型检查 - 测试 - 包验证 - 文档链接检查 - Markdown 样式检查 - 许可证检查 - skill 验证 - 已安装 artifact 的 skill 验证 - npm pack 验证 - 全新的首用户冒烟测试 - 验证实验室 - 语义评估 - 回归关卡 - 通过 `.github/workflows/publish-site.yml` 发布 OSS 网站 使用以下命令运行所有内容: ``` pnpm release:gates ``` ## 已知限制 - JavaScript 和 TypeScript 通过一个确定性的 ECMAScript 前端提供支持。 - 某些框架分析器刻意是不完整的。 - 未实现二进制图格式。 - 托管 SaaS、向量搜索和 LLM 推理属于非目标。 - 自 v1.0.0 起,Software Graph schema 已趋于稳定。 - MCP 功能仅根据可用的图证据进行回答。 - 面向 LLM 的使用需要 LLM Enhancement;Ontoly 本身保持无 AI 状态。 请阅读 [docs/known-limitations.md](docs/known-limitations.md)。 ## 贡献 贡献应该保持确定性和图兼容性。 在发起 pull request 之前: ``` pnpm install --frozen-lockfile pnpm build pnpm check-types pnpm test pnpm release:gates ``` 公共契约变更需要先提交 RFC。请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 安全 请私下报告安全问题。请参阅 [SECURITY.md](SECURITY.md)。 ## 支持 使用 GitHub issues 反馈 bug,使用 GitHub discussions 讨论设计问题。请参阅 [SUPPORT.md](SUPPORT.md)。 ## 许可证 Ontoly 采用 GNU Affero General Public License v3.0 提供授权。 为需要专有使用、私人修改、商业再分发、无 AGPL 义务的托管服务使用或合同条款的团队提供商业许可。 如需商业许可,请联系 [hello@sarwagya.wtf](mailto:hello@sarwagya.wtf)。 请参阅 [LICENSE](LICENSE)、[COMMERCIAL_LICENSE.md](COMMERCIAL_LICENSE.md)、 [CONTRIBUTOR_LICENSE_AGREEMENT.md](CONTRIBUTOR_LICENSE_AGREEMENT.md) 和 [TRADEMARK_POLICY.md](TRADEMARK_POLICY.md)。
标签:TypeScript, 云安全监控, 代码分析, 凭证管理, 威胁情报, 安全插件, 开发者工具, 数据管道, 暗色界面, 自动化攻击, 软件工程, 静态分析