Composio SDK Reference 文档自动生成机制详解:TypeScript 与 Python 双 SDK 的源码驱动文档管线 Composio SDK Reference 文档自动生成机制详解TypeScript 与 Python 双 SDK 的源码驱动文档管线【免费下载链接】composioComposio powers 1000 toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.项目地址: https://gitcode.com/GitHub_Trending/co/composio本文档是 Composio 文档站中 SDK Referencedocs/content/reference/sdk-reference/的生成说明。它描述了一套完全由源码驱动的文档管线TypeScript SDK 与 Python SDK 的 API 参考页面不再是手工维护的 Markdown而是分别从ts/packages/core/src/models/*.ts的 JSDoc 注释和python/composio/**/*.py的 docstring 中自动提取、排版并发布。阅读本文后你将掌握两条生成链路各自的工具链TypeDoc 与 griffe、重新生成命令、输出物结构以及 CI 如何在源码变更时自动同步参考文档。一、SDK Reference 文档的定位与整体架构Composio 是面向 AI Agent 的集成平台同时维护 TypeScriptcomposio/core与 Pythoncomposio两套 SDK。两套 SDK 的公共 API 面很大——从Composio核心类到Tools、Toolkits、Triggers、ConnectedAccounts、AuthConfigs、MCP、Session等大量模型类——如果靠手写维护参考文档任何签名变更都容易造成文档与代码脱节。为此仓库采用了生成式文档策略核心思想是单一事实来源API 的形状方法签名、参数类型、返回类型、弃用标记只存在于源码中注释即文档开发者只需在源码里写好 JSDoc / docstring生成器负责把它渲染成 MDX 参考页CI 兜底当核心源码变更时.github/workflows/generate-sdk-docs.yml 自动重新生成并提交 PR保证文档不漂移。两条生成链路的对应关系如下表表中路径均为仓库根目录相对路径项目TypeScript SDKPython SDK文档来源ts/packages/core/src/models/*.tsJSDoc 注释python/composio/**/*.pydocstring生成器ts/packages/core/scripts/generate-docs.tspython/scripts/generate-docs.py底层工具TypeDocgriffe输出目录docs/content/reference/sdk-reference/typescript/docs/content/reference/sdk-reference/python/重新生成命令pnpm --filter composio/core generate:docscd python uv run --with griffe python scripts/generate-docs.pyCI 触发路径ts/packages/core/src/**python/composio/**注意原文档中的content/reference/sdk-reference/...在仓库中的实际完整路径为docs/content/reference/sdk-reference/...下文统一使用后者。二、TypeScript SDK 参考文档生成管线2.1 从源码到 MDX 的完整流程TypeScript 侧的核心是 ts/packages/core/scripts/generate-docs.ts其执行流程可以概括为五个阶段收集入口文件discoverModelFiles()自动扫描ts/packages/core/src/models/目录过滤掉*.test.ts/*.spec.ts将所有模型文件连同src/composio.ts一起作为 TypeDoc 的入口点运行 TypeDocrunTypeDoc()执行npx typedoc --json ... --excludePrivate --excludeProtected --excludeInternal --skipErrorChecking把源码中的类、方法、属性、构造器解析为 JSON 中间表示TYPEDOC_KIND中定义了 Module2、Class128、Constructor512、Method2048、Property1024、Accessor262144 等类型编号发现待文档化的类discoverClassesToDocument()从 TypeDoc 输出中遍历顶层类以及模块内的嵌套类Composio永远排第一位提取并渲染extractClass()/extractMethod()把每个类整理成ClassDoc/MethodDoc结构再由generateClassMdx()输出为带 frontmatter 的 MDX 文件写盘与索引每个类生成一个slug.mdx最后生成index.mdx类一览表 Quick Start和meta.json侧边栏配置。2.2 生成器中的关键决策从源码结构看generate-docs.ts内含若干精心设计的文档策略值得展开内部类排除不进入公开参考INTERNAL_CLASSES集合明确跳过以下类因为它们的访问方式另有门面const INTERNAL_CLASSES new Set([ AuthScheme, // Utility class ConnectionRequest, // Utility Files, // Not yet stable API ToolRouter, // Experimental ]);仅对用户直接实例化的类展示构造函数USER_INSTANTIATED_CLASSES new Set([Composio])。其它类如Tools、AuthConfigs在 MDX 中不渲染 Constructor 段落而是渲染一个 Usage 段落提示通过composio.accessor属性访问例如const result await composio.authConfigs.list();。命名覆盖展示名与源码名解耦源码中为了不破坏兼容性保留了ToolRouterSession/ToolRouterSessionFileMount这类旧名称但在参考文档中统一展示为规范的 Session / Session filesconst DISPLAY_NAME_OVERRIDES: Recordstring, string { ToolRouterSession: Session, ToolRouterSessionFilesMount: Session files, }; const SLUG_OVERRIDES: Recordstring, string { ToolRouterSession: session, ToolRouterSessionFilesMount: session-files, };源码级类型回填TypeDoc 有时会给出内部类型名生成器通过getSourceSignatureTypes()直接读取.ts源文件用parseSourceSignatureTypesAtLine()解析出真实的参数名与返回类型它实现了带括号/尖括号/花括号深度追踪的“顶层拆分”逻辑还处理了引号与转义保证输出的是开发者实际写下的签名。弃用标记与示例方法级或类级的deprecatedJSDoc 标签会被提取并在 MDX 中渲染为Callout typewarn titleDeprecated警告框标题处还会追加(deprecated)后缀example标签中的代码块会被清洗后放入 typescript 代码围栏。MDX 转义escapeTextForMdx()处理花括号、管道符与尖括号避免被 MDX 误判为 JSXsimplifyTypeForTable()/simplifyTypeForSignature()会清理TProvider、unknown、ArrayBufferLike等内部泛型参数并对超过 80/100 字符的复杂类型做截断或简化为Promise...、Name...。2.3 输出产物生成器会清空并重建docs/content/reference/sdk-reference/typescript/目录产物包括每个公开类一个 MDX 页composio.mdx、tools.mdx、toolkits.mdx、triggers.mdx、connected-accounts.mdx、auth-configs.mdx、mcp.mdx、sessions.mdx、session.mdx来自ToolRouterSession、session-files.mdx、remote-file.mdx、experimental.mdxindex.mdx类一览表 安装说明 Quick Start 示例meta.json侧边栏页面顺序。以 typescript/composio.mdx 为例页面结构包含 Constructor、PropertiesauthConfigs、connectedAccounts、tools、toolkits、triggers、mcp、sessions、experimental、files、provider等、Methods含createSession()的弃用警告框以及可运行的构造示例。2.4 重新生成命令pnpm --filter composio/core generate:docs该命令在ts/packages/core包内执行scripts/generate-docs.ts。生成器会输出运行日志入口点数量、发现的类清单、每个类的处理进度、最终生成的文件数便于在本地验证文档变更效果。三、Python SDK 参考文档生成管线3.1 griffe 驱动的生成流程Python 侧的核心是 python/scripts/generate-docs.py它使用griffe一个 Python API 文档提取库解析composio包。流程要点懒加载 griffeload_griffe()在模块首次需要时才import griffe并给出缺少依赖时的报错提示pip install griffe加载包griffe_module.load(composio, search_paths[str(PACKAGE_DIR)])从python/目录加载整个包结构定位 Composio 类直接通过package.members[sdk].members[Composio]找到核心类按模块发现子类CLASS_MODULES定义了core.models.tools、core.models.toolkits、core.models.triggers、core.models.connected_accounts、core.models.auth_configs、core.models.mcp六个模块EXPECTED_CLASSES则把类名映射到Composio上的属性名tools、toolkits、triggers、connected_accounts、auth_configs、mcp提取与渲染extract_class_info()解析类成员generate_class_mdx()输出 frontmatter Properties Methods View source 链接的 MDX生成索引与侧边栏generate_index_mdx()输出类一览表、Quick Start 与装饰器文档最后写meta.json。3.2 类发现与命名策略与 TypeScript 侧对称Python 生成器同样维护了一套策略跳过内部类SKIP_CLASSES {WithLogger, SDKConfig, TProvider}不会出现在参考文档中附加公开类ADDITIONAL_CLASSES {ToolRouterSession: core.models.tool_router_session}把会话对象纳入文档SessionContextImpl被有意排除——它是传给自定义工具执行函数的内部实现细节不应出现在公开参考中命名与 slug 覆盖DISPLAY_NAME_OVERRIDES {ToolRouterSession: Session}、SLUG_OVERRIDES {ToolRouterSession: session}与 TypeScript 侧保持一致让跨 SDK 的文档术语统一属性联动在生成Composio页面时prop_to_class会把tools等属性渲染为指向对应类页面的链接。3.3 docstring 解析规则parse_docstring()实现了一个轻量级 reStructuredText 解析器支持:param name: description参数说明跨行累积:returns:/:return:返回值说明.. deprecated::弃用指令渲染为Callout警告框Example段落的识别与normalize_example()去缩进、剥除多余代码围栏。类型注解会经过format_type()清洗去除typing./typing_extensions.前缀把Optional[X]改写为X | None展开Unpack[...]超过 60 字符截断显示。3.4 装饰器文档生成器专门维护了DECORATORS_TO_DOCUMENT列表为四个修饰器生成独立文档段源码位于python/composio/core/models/_modifiers.py装饰器用途before_execute工具执行前钩子可改写参数或中止执行after_execute工具执行后钩子可改写结果before_file_upload文件上传前钩子支持context单参数或(path, tool, toolkit)旧式三参数返回新路径/URL 替换或返回False中止上传抛出FileUploadAbortedErrorschema_modifier工具 schema 修饰钩子它们在docs/content/reference/sdk-reference/python/index.mdx中体现为独立的## Decorators小节每个装饰器附带签名示例与 View source 链接。3.5 输出产物与重新生成命令Python 侧输出到docs/content/reference/sdk-reference/python/包含composio.mdx、tools.mdx、toolkits.mdx、triggers.mdx、connected-accounts.mdx、auth-configs.mdx、mcp.mdx、session.mdx、index.mdx、meta.json。重新生成命令cd python uv run --with griffe python scripts/generate-docs.py命令中uv run --with griffe表示在临时环境中附带安装 griffe 后运行脚本无需污染项目依赖。运行时会输出发现Composio类、各子类及装饰器的日志。四、CI 集成源码变更自动触发文档重新生成.github/workflows/generate-sdk-docs.yml 把两条生成链路接入了 CI实现“改源码 → 自动更新参考文档”的闭环触发条件push到next分支且变更路径命中以下任一范围ts/packages/core/src/**ts/packages/core/scripts/generate-docs.tspython/composio/**python/scripts/generate-docs.py相关的 setup actions、工作流自身以及mise.toml/mise.lock同时支持workflow_dispatch手动触发。两个独立 Jobgenerate-ts-docsSetup Node/pnpm/Bun →pnpm install --frozen-lockfile→pnpm --filter composio/core generate:docsgenerate-python-docsSetup Python with UV →cd python uv run --with griffe python scripts/generate-docs.py。PR 自动化两个 Job 都会使用 GitHub App 令牌actions/create-github-app-token检出代码执行生成后通过peter-evans/create-pull-request自动创建一个 PR——TS 侧分支为docs/auto-update-ts-sdk-referencecommit messagedocs: auto-generate TypeScript SDK referencePython 侧为docs/auto-update-python-sdk-referenceadd-paths分别限定到docs/content/reference/sdk-reference/typescript/与python/最后自动请求本次 push 的提交者进行 review。这意味着贡献者不需要手动更新参考文档——只要在核心模型文件中写好 JSDoc / docstringCI 会负责把变更同步成可发布的文档 PR。五、如何阅读与使用生成的 SDK Reference生成的参考页采用统一的 MDX 模板阅读时可以关注以下固定结构以 python/composio.mdx 和 typescript/composio.mdx 为范例frontmattertitle与description描述取自类 docstring 的首句超长截断——这直接服务于文档站的 SEO 与检索Constructor / UsageComposio展示构造函数含apiKey、baseURL、自定义provider等配置示例其它类展示通过composio.accessor的访问示例Properties 表公开属性名、类型与描述Methods 表每个方法包含签名代码块、参数表含可选标记?、返回类型说明、example示例代码以及(deprecated)标记与弃用警告框View source 链接Python 页面底部会生成指向源码文件的链接GITHUB_BASE 相对路径 行号便于从文档直达实现。如果想在本地验证某次 API 修改后的文档效果直接运行第二节/第三节给出的两条命令即可产物会覆盖写入docs/content/reference/sdk-reference/下对应的typescript/与python/目录随后可通过文档站本地预览检查渲染结果。六、小结Composio 的 SDK Reference 是一个典型的“生成式文档”工程实践TypeScript 侧用 TypeDoc 自定义 MDX 渲染器Python 侧用 griffe docstring 解析器两侧共享“排除内部类、规范命名覆盖、弃用标注、示例内嵌、索引与侧边栏自动生成”的设计理念并通过 generate-sdk-docs.yml 把文档更新变成源码提交的自动化副产物。理解这条管线不仅能帮你快速定位任意 API 在源码中的定义位置ts/packages/core/src/models/*.ts与python/composio/core/models/*.py也能在贡献新 API 时遵循正确的注释规范让参考文档随代码一起保持新鲜与准确。【免费下载链接】composioComposio powers 1000 toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.项目地址: https://gitcode.com/GitHub_Trending/co/composio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考