{
  "canonical_name": "ComposioHQ/composio",
  "compilation_id": "pack_dddd1b254c84494586f5c6084542e2a4",
  "created_at": "2026-05-14T00:31:41.396665+00:00",
  "created_by": "project-pack-compiler",
  "feedback": {
    "carrier_selection_notes": [
      "viable_asset_types=skill, recipe, host_instruction, eval, preflight",
      "recommended_asset_types=skill, recipe, host_instruction, eval, preflight"
    ],
    "evidence_delta": {
      "confirmed_claims": [
        "identity_anchor_present",
        "capability_and_host_targets_present",
        "install_path_declared_or_better"
      ],
      "missing_required_fields": [],
      "must_verify_forwarded": [
        "Run or inspect `npm install @composio/core` in an isolated environment.",
        "Confirm the project exposes the claimed capability to at least one target host."
      ],
      "quickstart_execution_scope": "allowlisted_sandbox_smoke",
      "sandbox_command": "npm install @composio/core",
      "sandbox_container_image": "node:22-slim",
      "sandbox_execution_backend": "docker",
      "sandbox_planner_decision": "deterministic_isolated_install",
      "sandbox_validation_id": "sbx_d7ee9b99347d487c9e8b646e72da440b"
    },
    "feedback_event_type": "project_pack_compilation_feedback",
    "learning_candidate_reasons": [],
    "template_gaps": []
  },
  "identity": {
    "canonical_id": "project_f77074cf4e636cdd607aea06cb3dbb8c",
    "canonical_name": "ComposioHQ/composio",
    "homepage_url": null,
    "license": "unknown",
    "repo_url": "https://github.com/ComposioHQ/composio",
    "slug": "composio",
    "source_packet_id": "phit_a4d5553a7462485785ddeba6695885a1",
    "source_validation_id": "dval_2338278d08fa4b36b2924d1ece43ba6f"
  },
  "merchandising": {
    "best_for": "需要软件开发与交付能力，并使用 local_cli的用户",
    "github_forks": 4554,
    "github_stars": 28209,
    "one_liner_en": "Composio powers 1000+ toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.",
    "one_liner_zh": "Composio powers 1000+ toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.",
    "primary_category": {
      "category_id": "software-development",
      "confidence": "medium",
      "name_en": "Software Development",
      "name_zh": "软件开发与交付",
      "reason": "matched_keywords:git, cli"
    },
    "target_user": "使用 local_cli 等宿主 AI 的用户",
    "title_en": "composio",
    "title_zh": "composio 能力包",
    "visible_tags": [
      {
        "label_en": "Browser Agents",
        "label_zh": "浏览器 Agent",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "product_domain-browser-agents",
        "type": "product_domain"
      },
      {
        "label_en": "Web Task Automation",
        "label_zh": "网页任务自动化",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "user_job-web-task-automation",
        "type": "user_job"
      },
      {
        "label_en": "Browser Automation",
        "label_zh": "浏览器自动化",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "core_capability-browser-automation",
        "type": "core_capability"
      },
      {
        "label_en": "Node-based Workflow",
        "label_zh": "节点式流程编排",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "workflow_pattern-node-based-workflow",
        "type": "workflow_pattern"
      },
      {
        "label_en": "Local-first",
        "label_zh": "本地优先",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "selection_signal-local-first",
        "type": "selection_signal"
      }
    ]
  },
  "packet_id": "phit_a4d5553a7462485785ddeba6695885a1",
  "page_model": {
    "artifacts": {
      "artifact_slug": "composio",
      "files": [
        "PROJECT_PACK.json",
        "QUICK_START.md",
        "PROMPT_PREVIEW.md",
        "HUMAN_MANUAL.md",
        "AI_CONTEXT_PACK.md",
        "BOUNDARY_RISK_CARD.md",
        "PITFALL_LOG.md",
        "REPO_INSPECTION.json",
        "REPO_INSPECTION.md",
        "CAPABILITY_CONTRACT.json",
        "EVIDENCE_INDEX.json",
        "CLAIM_GRAPH.json"
      ],
      "required_files": [
        "PROJECT_PACK.json",
        "QUICK_START.md",
        "PROMPT_PREVIEW.md",
        "HUMAN_MANUAL.md",
        "AI_CONTEXT_PACK.md",
        "BOUNDARY_RISK_CARD.md",
        "PITFALL_LOG.md",
        "REPO_INSPECTION.json"
      ]
    },
    "detail": {
      "capability_source": "Project Hit Packet + DownstreamValidationResult",
      "commands": [
        {
          "command": "npm install @composio/core",
          "label": "Node.js / npm · 官方安装入口",
          "source": "https://github.com/ComposioHQ/composio#readme",
          "verified": true
        }
      ],
      "display_tags": [
        "浏览器 Agent",
        "网页任务自动化",
        "浏览器自动化",
        "节点式流程编排",
        "本地优先"
      ],
      "eyebrow": "软件开发与交付",
      "glance": [
        {
          "body": "判断自己是不是目标用户。",
          "label": "最适合谁",
          "value": "需要软件开发与交付能力，并使用 local_cli的用户"
        },
        {
          "body": "先理解能力边界，再决定是否继续。",
          "label": "核心价值",
          "value": "Composio powers 1000+ toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action."
        },
        {
          "body": "未完成验证前保持审慎。",
          "label": "继续前",
          "value": "publish to Doramagic.ai project surfaces"
        }
      ],
      "guardrail_source": "Boundary & Risk Card",
      "guardrails": [
        {
          "body": "Prompt Preview 只展示流程，不证明项目已安装或运行。",
          "label": "Check 1",
          "value": "不要把试用当真实运行"
        },
        {
          "body": "local_cli",
          "label": "Check 2",
          "value": "确认宿主兼容"
        },
        {
          "body": "publish to Doramagic.ai project surfaces",
          "label": "Check 3",
          "value": "先隔离验证"
        }
      ],
      "mode": "skill, recipe, host_instruction, eval, preflight",
      "pitfall_log": {
        "items": [
          {
            "body": "GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops",
            "category": "安装坑",
            "evidence": [
              "community_evidence:github | cevd_54d53b3e2a6e4cf4a3e4783f824ed87b | https://github.com/ComposioHQ/composio/issues/3269 | 来源讨论提到 node 相关条件，需在安装/试用前复核。"
            ],
            "severity": "high",
            "suggested_check": "来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。",
            "title": "来源证据：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Bug]: SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK returns successful but file is never shared to channel (channels:[], shares:{})",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_1b88beb594aa433eb998eac3b16a20e0 | https://github.com/ComposioHQ/composio/issues/3422 | 来源讨论提到 node 相关条件，需在安装/试用前复核。"
            ],
            "severity": "high",
            "suggested_check": "来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。",
            "title": "来源证据：[Bug]: SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK returns successful but file is never shared to channel (channels:[], shar…",
            "user_impact": "可能影响升级、迁移或版本选择。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Feature] Custom auth configs shouldn't require a dev project to use",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_1d62ba62e77b47ff88b50d2db41a8cf7 | https://github.com/ComposioHQ/composio/issues/3271 | 来源讨论提到 linux 相关条件，需在安装/试用前复核。"
            ],
            "severity": "high",
            "suggested_check": "来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。",
            "title": "来源证据：[Feature] Custom auth configs shouldn't require a dev project to use",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          },
          {
            "body": "仓库名 `composio` 与安装入口 `@composio/core` 不完全一致。",
            "category": "身份坑",
            "evidence": [
              "identity.distribution | github_repo:762304524 | https://github.com/ComposioHQ/composio | repo=composio; install=@composio/core"
            ],
            "severity": "medium",
            "suggested_check": "在 npm/PyPI/GitHub 上确认包名映射和官方 README 说明。",
            "title": "仓库名和安装名不一致",
            "user_impact": "用户照着仓库名搜索包或照着包名找仓库时容易走错入口。"
          },
          {
            "body": "README/documentation is current enough for a first validation pass.",
            "category": "能力坑",
            "evidence": [
              "capability.assumptions | github_repo:762304524 | https://github.com/ComposioHQ/composio | README/documentation is current enough for a first validation pass."
            ],
            "severity": "medium",
            "suggested_check": "将假设转成下游验证清单。",
            "title": "能力判断依赖假设",
            "user_impact": "假设不成立时，用户拿不到承诺的能力。"
          },
          {
            "body": "未记录 last_activity_observed。",
            "category": "维护坑",
            "evidence": [
              "evidence.maintainer_signals | github_repo:762304524 | https://github.com/ComposioHQ/composio | last_activity_observed missing"
            ],
            "severity": "medium",
            "suggested_check": "补 GitHub 最近 commit、release、issue/PR 响应信号。",
            "title": "维护活跃度未知",
            "user_impact": "新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。"
          },
          {
            "body": "no_demo",
            "category": "安全/权限坑",
            "evidence": [
              "downstream_validation.risk_items | github_repo:762304524 | https://github.com/ComposioHQ/composio | no_demo; severity=medium"
            ],
            "severity": "medium",
            "suggested_check": "进入安全/权限治理复核队列。",
            "title": "下游验证发现风险项",
            "user_impact": "下游已经要求复核，不能在页面中弱化。"
          },
          {
            "body": "No sandbox install has been executed yet; downstream must verify before user use.",
            "category": "安全/权限坑",
            "evidence": [
              "risks.safety_notes | github_repo:762304524 | https://github.com/ComposioHQ/composio | No sandbox install has been executed yet; downstream must verify before user use."
            ],
            "severity": "medium",
            "suggested_check": "转成明确权限清单和安全审查提示。",
            "title": "存在安全注意事项",
            "user_impact": "用户安装前需要知道权限边界和敏感操作。"
          },
          {
            "body": "no_demo",
            "category": "安全/权限坑",
            "evidence": [
              "risks.scoring_risks | github_repo:762304524 | https://github.com/ComposioHQ/composio | no_demo; severity=medium"
            ],
            "severity": "medium",
            "suggested_check": "把风险写入边界卡，并确认是否需要人工复核。",
            "title": "存在评分风险",
            "user_impact": "风险会影响是否适合普通用户安装。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：@composio/core@0.10.0",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_66f9d5fd557f41c7845ca5dd7d93ae6f | https://github.com/ComposioHQ/composio/releases/tag/%40composio/core%400.10.0 | 来源类型 github_release 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：@composio/core@0.10.0",
            "user_impact": "可能影响升级、迁移或版本选择。"
          },
          {
            "body": "issue_or_pr_quality=unknown。",
            "category": "维护坑",
            "evidence": [
              "evidence.maintainer_signals | github_repo:762304524 | https://github.com/ComposioHQ/composio | issue_or_pr_quality=unknown"
            ],
            "severity": "low",
            "suggested_check": "抽样最近 issue/PR，判断是否长期无人处理。",
            "title": "issue/PR 响应质量未知",
            "user_impact": "用户无法判断遇到问题后是否有人维护。"
          },
          {
            "body": "release_recency=unknown。",
            "category": "维护坑",
            "evidence": [
              "evidence.maintainer_signals | github_repo:762304524 | https://github.com/ComposioHQ/composio | release_recency=unknown"
            ],
            "severity": "low",
            "suggested_check": "确认最近 release/tag 和 README 安装命令是否一致。",
            "title": "发布节奏不明确",
            "user_impact": "安装命令和文档可能落后于代码，用户踩坑概率升高。"
          }
        ],
        "source": "ProjectPitfallLog + ProjectHitPacket + validation + community signals",
        "summary": "发现 12 个潜在踩坑项，其中 3 个为 high/blocking；最高优先级：安装坑 - 来源证据：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops。",
        "title": "踩坑日志"
      },
      "snapshot": {
        "contributors": 54,
        "forks": 4554,
        "license": "unknown",
        "note": "站点快照，非实时质量证明；用于开工前背景判断。",
        "stars": 28209
      },
      "source_url": "https://github.com/ComposioHQ/composio",
      "steps": [
        {
          "body": "不安装项目，先体验能力节奏。",
          "code": "preview",
          "title": "先试 Prompt"
        },
        {
          "body": "理解输入、输出、失败模式和边界。",
          "code": "manual",
          "title": "读说明书"
        },
        {
          "body": "把上下文交给宿主 AI 继续工作。",
          "code": "context",
          "title": "带给 AI"
        },
        {
          "body": "进入主力环境前先完成安装入口与风险边界验证。",
          "code": "verify",
          "title": "沙箱验证"
        }
      ],
      "subtitle": "Composio powers 1000+ toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.",
      "title": "composio 能力包",
      "trial_prompt": "# composio - Prompt Preview\n\n> 复制下面这段 Prompt 到你常用的 AI，先试一次，不需要安装。\n> 它的目标是让你直接体验这个项目的服务方式，而不是阅读项目介绍。\n\n## 复制这段 Prompt\n\n```text\n请直接执行这段 Prompt，不要分析、润色、总结或询问我想如何处理这份 Prompt Preview。\n\n你现在扮演 composio 的“安装前体验版”。\n这不是项目介绍、不是评价报告、不是 README 总结。你的任务是让我用最小成本体验它的核心服务。\n\n我的试用任务：我想用它完成一个真实的软件开发与交付任务。\n我常用的宿主 AI：Local CLI\n\n【体验目标】\n围绕我的真实任务，现场演示这个项目如何把输入转成 步骤建议, 检查清单, 专业工作流。重点是让我感受到工作方式，而不是给我项目背景。\n\n【业务流约束】\n- 你必须像一个正在提供服务的项目能力包，而不是像一个讲解员。\n- 每一轮只推进一个步骤；提出问题后必须停下来等我回答。\n- 每一步都必须让我感受到一个具体服务动作：澄清、整理、规划、检查、判断或收尾。\n- 每一步都要说明：当前目标、你需要我提供什么、我回答后你会产出什么。\n- 不要安装、不要运行命令、不要写代码、不要声称测试通过、不要声称已经修改文件。\n- 需要真实安装或宿主加载后才能验证的内容，必须明确说“这一步需要安装后验证”。\n- 如果我说“用示例继续”，你可以用虚构示例推进，但仍然不能声称真实执行。\n\n【可体验服务能力】\n- AI Skill / Agent 指令资产库: 项目包含可被宿主 AI 读取的 Skill 或 Agent 指令文件，可用于把专业流程带入 Claude、Codex、Cursor 等宿主。 输入：用户任务, 宿主 AI 对话上下文, 项目内 Skill/Agent 文档；输出：步骤建议, 检查清单, 专业工作流。\n\n【必须安装后才可验证的能力】\n- 命令行启动或安装流程: 项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 输入：终端环境, 包管理器, 项目依赖；输出：安装结果, 列表/更新/运行结果。\n\n【核心服务流】\n请严格按这个顺序带我体验。不要一次性输出完整流程：\n1. intro：项目介绍。围绕“项目介绍”模拟一次用户任务，不展示安装或运行结果。\n2. quickstart：快速入门指南。围绕“快速入门指南”模拟一次用户任务，不展示安装或运行结果。\n3. architecture：系统架构。围绕“系统架构”模拟一次用户任务，不展示安装或运行结果。\n4. ts-sdk：TypeScript SDK 详解。围绕“TypeScript SDK 详解”模拟一次用户任务，不展示安装或运行结果。\n5. py-sdk：Python SDK 详解。围绕“Python SDK 详解”模拟一次用户任务，不展示安装或运行结果。\n\n【核心能力体验剧本】\n每一步都必须按“输入 -> 服务动作 -> 中间产物”执行。不要只说流程名：\n1. intro\n输入：用户提供的“项目介绍”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n2. quickstart\n输入：用户提供的“快速入门指南”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n3. architecture\n输入：用户提供的“系统架构”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n4. ts-sdk\n输入：用户提供的“TypeScript SDK 详解”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n5. py-sdk\n输入：用户提供的“Python SDK 详解”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n【项目服务规则】\n这些规则决定你如何服务用户。不要解释规则本身，而要在每一步执行时遵守：\n- 先确认用户任务、输入材料和成功标准，再模拟项目能力。\n- 每一步都必须形成可检查的小产物，并等待用户确认后再继续。\n- 凡是需要安装、调用工具或访问外部服务的能力，都必须标记为安装后验证。\n\n【每一步的服务约束】\n- Step 1 / intro：Step 1 必须围绕“项目介绍”形成一个小中间产物，并等待用户确认。\n- Step 2 / quickstart：Step 2 必须围绕“快速入门指南”形成一个小中间产物，并等待用户确认。\n- Step 3 / architecture：Step 3 必须围绕“系统架构”形成一个小中间产物，并等待用户确认。\n- Step 4 / ts-sdk：Step 4 必须围绕“TypeScript SDK 详解”形成一个小中间产物，并等待用户确认。\n- Step 5 / py-sdk：Step 5 必须围绕“Python SDK 详解”形成一个小中间产物，并等待用户确认。\n\n【边界与风险】\n- 不要声称已经安装、运行、调用 API、读写本地文件或完成真实任务。\n- 安装前预览只能展示工作方式，不能证明兼容性、性能或输出质量。\n- 涉及安装、插件加载、工具调用或外部服务的能力必须安装后验证。\n\n【可追溯依据】\n这些路径只用于你内部校验或在我追问“依据是什么”时简要引用。不要在首次回复主动展开：\n- https://github.com/ComposioHQ/composio\n- https://github.com/ComposioHQ/composio#readme\n- .agents/skills/bug-fixing-guide/SKILL.md\n- .agents/skills/building-agents/SKILL.md\n- .agents/skills/building-agents-using-anthropic/SKILL.md\n- .agents/skills/building-agents-using-autogen/SKILL.md\n- .agents/skills/building-agents-using-cloudflare/SKILL.md\n- .agents/skills/building-agents-using-crewai/SKILL.md\n- .agents/skills/building-agents-using-google/SKILL.md\n- .agents/skills/building-agents-using-langchain/SKILL.md\n- .agents/skills/building-agents-using-langgraph/SKILL.md\n- .agents/skills/building-agents-using-llamaindex/SKILL.md\n\n【首次问题规则】\n- 首次三问必须先确认用户目标、成功标准和边界，不要提前进入工具、安装或实现细节。\n- 如果后续需要技术条件、文件路径或运行环境，必须等用户确认目标后再追问。\n\n首次回复必须只输出下面 4 个部分：\n1. 体验开始：用 1 句话说明你将带我体验 composio 的核心服务。\n2. 当前步骤：明确进入 Step 1，并说明这一步要解决什么。\n3. 你会如何服务我：说明你会先改变我完成任务的哪个动作。\n4. 只问我 3 个问题，然后停下等待回答。\n\n首次回复禁止输出：后续完整流程、证据清单、安装命令、项目评价、营销文案、已经安装或运行的说法。\n\nStep 1 / brainstorming 的二轮协议：\n- 我回答首次三问后，你仍然停留在 Step 1 / brainstorming，不要进入 Step 2。\n- 第二次回复必须产出 6 个部分：澄清后的任务定义、成功标准、边界条件、\n  2-3 个可选方案、每个方案的权衡、推荐方案。\n- 第二次回复最后必须问我是否确认推荐方案；只有我明确确认后，才能进入下一步。\n- 第二次回复禁止输出 git worktree、代码计划、测试文件、命令或真实执行结果。\n\n后续对话规则：\n- 我回答后，你先完成当前步骤的中间产物并等待确认；只有我确认后，才能进入下一步。\n- 每一步都要生成一个小的中间产物，例如澄清后的目标、计划草案、测试意图、验证清单或继续/停止判断。\n- 所有演示都写成“我会建议/我会引导/这一步会形成”，不要写成已经真实执行。\n- 不要声称已经测试通过、文件已修改、命令已运行或结果已产生。\n- 如果某个能力必须安装后验证，请直接说“这一步需要安装后验证”。\n- 如果证据不足，请明确说“证据不足”，不要补事实。\n```\n",
      "voices": [
        {
          "body": "来源平台：github, x。github/github_issue: [Bug]: SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK returns successful but fil（https://github.com/ComposioHQ/composio/issues/3422）；github/github_issue: [Feature] Custom auth configs shouldn't require a dev project to use（https://github.com/ComposioHQ/composio/issues/3271）；github/github_issue: [Bug]: CLI - v0.2.25 release missing binary assets — upgrade command sil（https://github.com/ComposioHQ/composio/issues/3269）；github/github_release: @composio/core@0.10.0（https://github.com/ComposioHQ/composio/releases/tag/%40composio/core%400.10.0）；x: Open Claude Cowork: AI Agent Automation Across Desktop & Apps ...（https://x.com/VivekIntel/status/2047603619235779012）。这些是项目级外部声音，不作为单独质量证明。",
          "items": [
            {
              "kind": "github_issue",
              "source": "github",
              "title": "[Bug]: SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK returns successful but fil",
              "url": "https://github.com/ComposioHQ/composio/issues/3422"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "[Feature] Custom auth configs shouldn't require a dev project to use",
              "url": "https://github.com/ComposioHQ/composio/issues/3271"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command sil",
              "url": "https://github.com/ComposioHQ/composio/issues/3269"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "@composio/core@0.10.0",
              "url": "https://github.com/ComposioHQ/composio/releases/tag/%40composio/core%400.10.0"
            },
            {
              "kind": "searxng_indexed",
              "source": "x",
              "title": "Open Claude Cowork: AI Agent Automation Across Desktop & Apps ...",
              "url": "https://x.com/VivekIntel/status/2047603619235779012"
            }
          ],
          "status": "已收录 5 条来源",
          "title": "社区讨论"
        }
      ]
    },
    "homepage_card": {
      "category": "软件开发与交付",
      "desc": "Composio powers 1000+ toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.",
      "effort": "安装已验证",
      "forks": 4554,
      "icon": "code",
      "name": "composio 能力包",
      "risk": "可发布",
      "slug": "composio",
      "stars": 28209,
      "tags": [
        "浏览器 Agent",
        "网页任务自动化",
        "浏览器自动化",
        "节点式流程编排",
        "本地优先"
      ],
      "thumb": "gray",
      "type": "Skill Pack"
    },
    "manual": {
      "markdown": "# https://github.com/ComposioHQ/composio 项目说明书\n\n生成时间：2026-05-14 00:23:05 UTC\n\n## 目录\n\n- [项目介绍](#intro)\n- [快速入门指南](#quickstart)\n- [系统架构](#architecture)\n- [TypeScript SDK 详解](#ts-sdk)\n- [Python SDK 详解](#py-sdk)\n- [工具包系统](#toolkits)\n- [自定义工具开发](#custom-tools)\n- [AI 框架提供商集成](#providers)\n- [MCP 协议集成](#mcp)\n- [CLI 命令行工具](#cli)\n\n<a id='intro'></a>\n\n## 项目介绍\n\n### 相关页面\n\n相关主题：[快速入门指南](#quickstart), [系统架构](#architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [README.md](https://github.com/ComposioHQ/composio/blob/main/README.md)\n- [ts/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/README.md)\n- [ts/packages/cli/src/commands/root-help.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/root-help.ts)\n- [ts/packages/providers/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/packages/providers/README.md)\n- [ts/packages/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli-local-tools/src/registry.ts)\n- [ts/packages/core/src/types/modifiers.types.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/types/modifiers.types.ts)\n- [ts/packages/cli/src/services/tool-permissions.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/tool-permissions.ts)\n</details>\n\n# 项目介绍\n\n## 1. 项目概述\n\nComposio 是一个强大的 AI Agent 工具集成平台，旨在为 AI Agent 提供可靠、可扩展的工具调用能力。该项目采用 TypeScript 与 Python 双语言架构，通过统一的接口设计实现了跨平台、跨框架的工具调用支持。\n\nComposio 的核心价值主张包括：\n\n- **工具抽象层**：统一的工具定义和调用机制，支持多种 AI Agent 框架\n- **本地工具支持**：提供本地 CLI 工具集成，可在本地环境中执行工具\n- **权限管理**：完整的工具权限审批流程，确保工具调用的安全性\n- **Provider 系统**：灵活的工具包装和修改器机制，支持自定义工具行为\n\n## 2. 仓库结构\n\nComposio 采用 Monorepo 结构组织代码，主要分为 TypeScript 包和 Python SDK 两大部分。\n\n```mermaid\ngraph TD\n    A[composio 仓库根目录] --> B[ts/ - TypeScript Monorepo]\n    A --> C[python/ - Python SDK]\n    \n    B --> D[packages/cli - CLI 核心]\n    B --> E[packages/cli-local-tools - 本地工具]\n    B --> F[packages/core - 核心类型定义]\n    B --> G[packages/providers - Provider 基类]\n    B --> H[examples/ - 示例代码]\n    \n    C --> I[composio/ - Python SDK 源码]\n    C --> J[scripts/ - 文档生成脚本]\n```\n\n### 2.1 TypeScript Monorepo 结构\n\nTypeScript 部分位于 `ts/` 目录，包含完整的 CLI 工具和应用开发支持：\n\n| 目录/包 | 说明 | 主要功能 |\n|---------|------|----------|\n| `packages/cli` | CLI 核心包 | 命令行接口、权限管理、会话控制 |\n| `packages/cli-local-tools` | 本地工具包 | 本地工具注册和执行 |\n| `packages/core` | 核心类型包 | 类型定义、修改器接口 |\n| `packages/providers` | Provider 基类 | 工具包装基类实现 |\n| `examples/` | 示例代码 | 各功能模块的使用示例 |\n\n资料来源：[ts/README.md:1-50]()\n\n### 2.2 Python SDK 结构\n\nPython 部分位于 `python/` 目录，提供 Python 语言的 SDK 支持：\n\n| 目录/文件 | 说明 |\n|-----------|------|\n| `composio/` | SDK 核心源码 |\n| `scripts/generate-docs.py` | 文档生成工具 |\n| `docs/` | 生成的文档输出目录 |\n\n资料来源：[python/README.md:1-20]()\n\n## 3. 核心系统架构\n\n### 3.1 工具系统\n\nComposio 的工具系统是其核心组成部分，支持工具的发现、注册、调用和权限管理。\n\n```mermaid\ngraph LR\n    A[工具声明] --> B[本地工具注册表]\n    A --> C[远程工具索引]\n    \n    B --> D[工具执行器]\n    C --> D\n    \n    D --> E[权限检查]\n    E --> F[执行结果]\n    \n    B -.-> G[toCustomTool 转换]\n    C -.-> H[createToolkitIndex 索引]\n```\n\n#### 工具声明结构\n\n工具通过声明式接口定义，包含以下关键属性：\n\n```typescript\ninterface LocalToolDeclaration {\n  slug: string;           // 工具唯一标识\n  name: string;            // 工具显示名称\n  description: string;    // 工具描述\n  inputParams: InputParams;  // 输入参数定义\n  outputParams?: OutputParams; // 输出参数定义\n  execution: ExecutionConfig;  // 执行配置\n  platforms: LocalCliPlatform[];  // 支持的平台\n}\n```\n\n资料来源：[ts/packages/cli-local-tools/src/registry.ts:1-100]()\n\n#### 工具注册与过滤\n\n系统支持按工具包（Toolkit）进行过滤和分组：\n\n```typescript\nconst toolkitMatchesFilter = (\n  toolkit: LocalToolkitDeclaration,\n  requestedToolkits?: ReadonlyArray<string>\n): boolean => {\n  if (!requestedToolkits || requestedToolkits.length === 0) return true;\n  const requested = new Set(requestedToolkits.map(slug => slug.toLowerCase()));\n  return requested.has(toolkit.slug.toLowerCase());\n};\n```\n\n### 3.2 CLI 命令系统\n\nCLI 系统采用 Effect 框架构建，提供模块化的命令定义和子命令支持。\n\n#### 根命令帮助\n\n根命令提供全局选项和帮助信息：\n\n| 标志 | 说明 |\n|------|------|\n| `-h, --help [mode]` | 显示命令帮助（simple, default, full） |\n| `--version` | 显示版本信息 |\n| `--install-skill` | 手动安装 composio skill |\n\n资料来源：[ts/packages/cli/src/commands/root-help.ts:1-50]()\n\n#### 子命令结构\n\nCLI 采用树形命令结构：\n\n```mermaid\ngraph TD\n    A[composio] --> B[dev]\n    A --> C[execute]\n    A --> D[search]\n    A --> E[tools]\n    A --> F[toolkits]\n    A --> G[triggers]\n    A --> H[orgs]\n    \n    B --> B1[init]\n    B --> B2[playground-execute]\n    B --> B3[logs]\n    \n    E --> E1[list]\n    E --> E2[info]\n    \n    F --> F1[List]\n    F --> F2[Info]\n    F --> F3[Search]\n    F --> F4[Version]\n```\n\n#### 常用命令示例\n\n| 命令 | 功能 |\n|------|------|\n| `composio search <query>` | 按用途搜索工具 |\n| `composio tools list <toolkit>` | 列出工具包中的工具 |\n| `composio tools info <slug>` | 查看工具详细信息 |\n| `composio execute <slug> -d '{}'` | 执行工具调用 |\n| `composio link <toolkit>` | 链接账户 |\n| `composio dev init` | 初始化开发环境 |\n\n资料来源：[ts/packages/cli/src/services/command-hints.ts:1-80]()\n\n### 3.3 权限管理系统\n\nComposio 实现了完整的工具权限审批流程，确保工具调用的安全可控。\n\n```mermaid\nsequenceDiagram\n    participant CLI as CLI 客户端\n    participant Server as 权限服务器\n    participant User as 用户\n    \n    CLI->>Server: 请求执行工具\n    Server->>User: 显示权限确认页面\n    User->>Server: 选择权限决策\n    Server->>CLI: 返回决策结果\n```\n\n#### 权限决策类型\n\n| 决策 | 说明 | 有效期 |\n|------|------|--------|\n| `Allow for this session` | 会话级别允许 | 当前会话 |\n| `Allow once` | 单次允许 | 一次性 |\n| `Deny` | 拒绝 | 永久拒绝 |\n\n资料来源：[ts/packages/cli/src/services/tool-permissions.ts:1-60]()\n\n#### 权限确认页面\n\n系统通过本地 HTTP 服务器展示权限确认页面：\n\n```html\n<h1>Allow ${toolSlug}?</h1>\n<p>Composio CLI is requesting permission to execute this tool${accountLabel ? ` for ${accountLabel}` : ''}.</p>\n```\n\n### 3.4 Provider 系统\n\nProvider 系统提供了工具包装和修改的扩展机制，允许开发者自定义工具的行为。\n\n```mermaid\ngraph TD\n    A[BaseComposioProvider] --> B[BaseNonAgenticProvider]\n    A --> C[BaseAgenticProvider]\n    \n    B --> D[wrapTool]\n    B --> E[getTools]\n    B --> F[getToolBySlug]\n    \n    C --> G[wrapTool (Agentic)]\n    C --> H[getTools (Agentic)]\n    C --> I[getToolBySlug (Agentic)]\n```\n\n#### Provider 类型\n\n| Provider 类型 | 用途 | 主要方法 |\n|---------------|------|----------|\n| `BaseNonAgenticProvider` | 非智能体 Provider | `wrapTool`, `getTools`, `getToolBySlug` |\n| `BaseAgenticProvider` | 智能体 Provider | `wrapTool`, `getTools`, `getToolBySlug` |\n\n资料来源：[ts/packages/providers/README.md:1-80]()\n\n#### 工具修改器\n\nProvider 使用修改器（Modifiers）来调整工具的 Schema 和行为：\n\n```typescript\ntype ProviderOptions<TProvider> =\n  TProvider extends BaseComposioProvider<infer TToolCollection, infer TTool, infer TMcpResponse>\n    ? TProvider extends BaseAgenticProvider<TToolCollection, TTool, TMcpResponse>\n      ? AgenticToolOptions\n      : ToolOptions\n    : never;\n```\n\n修改器支持的钩子函数：\n\n| 钩子函数 | 触发时机 | 用途 |\n|----------|----------|------|\n| `modifySchema` | Schema 生成时 | 修改输入输出结构 |\n| `beforeExecute` | 执行前 | 参数预处理 |\n| `afterExecute` | 执行后 | 结果后处理 |\n\n## 4. 核心组件详解\n\n### 4.1 终端 UI 服务\n\nTerminalUI 提供统一的命令行输出接口：\n\n```typescript\ninterface TerminalUI {\n  readonly output: (data: string, options?: { force?: boolean }) => Effect<void>;\n  readonly intro: (title: string) => Effect<void>;\n  readonly outro: (message: string) => Effect<void>;\n  readonly log: {\n    readonly info: (message: string) => Effect<void>;\n    readonly success: (message: string) => Effect<void>;\n    readonly warn: (message: string) => Effect<void>;\n    readonly error: (message: string) => Effect<void>;\n    readonly step: (message: string) => Effect<void>;\n  };\n  readonly note: (message: string, title?: string) => Effect<void>;\n  readonly withSpinner: <A, E, R>(message: string, effect: Effect<A, E, R>) => Effect<A>;\n}\n```\n\n资料来源：[ts/packages/cli/src/services/terminal-ui.ts:1-40]()\n\n### 4.2 错误处理机制\n\n系统使用 Effect 框架进行错误处理：\n\n```typescript\nexport const captureErrorsFrom = <E>(cause: Cause<E>): readonly PrettyError[] =>\n  reduceWithContext(cause, undefined, {\n    emptyCase: (): readonly PrettyError[] => [],\n    dieCase: (_, unknownError) => [parseError(unknownError)],\n    failCase: (_, error) => [parseError(error)],\n    interruptCase: () => [],\n    parallelCase: (_, l, r) => [...l, ...r],\n    sequentialCase: (_, l, r) => [...l, ...r],\n  });\n```\n\n资料来源：[ts/packages/cli/src/effect-errors/logic/errors/capture-errors-from-cause.ts:1-20]()\n\n### 4.3 配置加载系统\n\n系统支持从文件加载和解析配置：\n\n```mermaid\ngraph LR\n    A[配置文件] --> B[ConfigLoader]\n    B --> C[Path 解析]\n    C --> D[Primitive 解析]\n    D --> E[split 分割]\n    E --> F[Array<A>]\n```\n\n支持的分隔符解析功能，允许用户自定义分隔符来拆分配置值。\n\n资料来源：[ts/packages/cli/src/effects/from-lazy-json.ts:1-50]()\n\n### 4.4 工具包索引\n\n工具包索引系统提供工具的分组和类型化支持：\n\n```typescript\nexport type CreateToolkitIndexInput = Simplify<{\n  slug: string;\n  version?: string;\n  typeableTools:\n    | { withTypes: false; value: Record<`${ToolkitName}_${string}`, ToolAsEnum> }\n    | { withTypes: true; value: Record<`${ToolkitName}_${string}`, Tool> };\n  triggerTypes: Record<`${ToolkitName}_${string}`, TriggerType>;\n}>;\n\nexport type ToolkitIndex = Record<ToolkitName, ToolkitIndexData>;\n```\n\n资料来源：[ts/packages/cli/src/generation/create-toolkit-index.ts:1-30]()\n\n## 5. 开发指南\n\n### 5.1 环境准备\n\n```bash\n# 安装依赖\npnpm install\n\n# 安装 peer 依赖\npnpm check:peer-deps\n```\n\n资料来源：[ts/README.md:1-50]()\n\n### 5.2 创建新 Provider\n\n```bash\n# 创建非智能体 Provider\npnpm create:provider <provider-name>\n\n# 创建智能体 Provider\npnpm create:provider <provider-name> --agentic\n```\n\nProvider 创建后的结构：\n\n```\n<provider-name>/\n├── src/\n│   └── index.ts      # Provider 实现\n├── package.json      # 包配置\n├── tsconfig.json     # TypeScript 配置\n├── tsup.config.ts    # 构建配置\n└── README.md         # 文档\n```\n\n资料来源：[ts/README.md:50-80]()\n\n### 5.3 创建示例代码\n\n```bash\npnpm create:example <example-name>\n```\n\n### 5.4 本地工具配置\n\n本地工具支持灵活的配置文件管理：\n\n| 配置项 | 说明 |\n|--------|------|\n| `command` | 安装命令 |\n| `disabled` | 是否禁用 |\n| `authenticated` | 是否需要认证 |\n\n配置完成后可运行：\n\n```bash\ncomposio local-tools doctor --toolkits <toolkit-name>\n```\n\n资料来源：[ts/packages/cli/src/commands/local-tools/commands/local-tools.configure.cmd.ts:1-60]()\n\n## 6. Python SDK 文档生成\n\nComposio 使用 Griffe 工具从 Python 源码自动生成文档：\n\n```bash\ncd python\nuv run --with griffe python scripts/generate-docs.py\n```\n\n文档生成流程：\n\n```mermaid\ngraph LR\n    A[Python 源码] -->|griffe 提取| B[结构化数据]\n    B -->|transform| C[MDX 文件]\n    C --> D[docs/content/reference/sdk-reference/python/]\n```\n\n资料来源：[python/scripts/README.md:1-30]()\n\n## 7. 项目技术栈\n\n### 7.1 TypeScript 技术栈\n\n| 技术 | 用途 |\n|------|------|\n| Effect | 函数式错误处理和 Effect 编程 |\n| Effect/Cli | CLI 命令行框架 |\n| TypeScript | 类型系统 |\n| tsup | 构建工具 |\n\n### 7.2 Python 技术栈\n\n| 技术 | 用途 |\n|------|------|\n| Griffe | Docstring 解析 |\n| MDX | 文档格式 |\n\n## 8. 总结\n\nComposio 是一个设计精良的 AI Agent 工具集成平台，其架构特点包括：\n\n1. **模块化设计**：通过 Monorepo 结构实现代码的高内聚低耦合\n2. **类型安全**：全面使用 TypeScript 提供类型保障\n3. **函数式编程**：采用 Effect 框架实现纯函数式错误处理\n4. **扩展性强**：Provider 系统支持自定义工具包装行为\n5. **双语言支持**：同时提供 TypeScript 和 Python SDK\n\n通过本项目，开发者可以快速构建基于 AI Agent 的应用，享受统一工具调用接口带来的便利。\n\n---\n\n<a id='quickstart'></a>\n\n## 快速入门指南\n\n### 相关页面\n\n相关主题：[TypeScript SDK 详解](#ts-sdk), [Python SDK 详解](#py-sdk), [AI 框架提供商集成](#providers)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/examples/tool-router/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/examples/tool-router/README.md)\n- [python/README.md](https://github.com/ComposioHQ/composio/blob/main/python/README.md)\n- [ts/packages/cli/src/commands/root-help.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/root-help.ts)\n- [ts/packages/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli-local-tools/src/registry.ts)\n- [ts/packages/providers/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/packages/providers/README.md)\n- [ts/packages/cli/src/commands/local-tools/commands/local-tools.configure.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/local-tools/commands/local-tools.configure.cmd.ts)\n- [ts/packages/cli/src/services/command-hints.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/command-hints.ts)\n</details>\n\n# 快速入门指南\n\nComposio 是一个强大的 AI 代理工具集成平台，支持多种主流 AI 框架（如 OpenAI、LangChain 等）。本指南将帮助您快速上手 Composio，掌握核心概念、安装配置、工具使用以及 CLI 命令行工具的基本操作。\n\n## 概述\n\nComposio 提供了统一的工具抽象层，使 AI 代理能够访问超过 250+ 的外部应用工具。通过 Composio SDK，开发者可以：\n\n- 快速集成 OpenAI、Anthropic、LangChain 等主流 AI 框架\n- 获取并管理可用的应用工具\n- 使用 schema 修饰器转换工具架构\n- 通过 CLI 工具进行本地开发和调试\n\n## 环境要求\n\n| 组件 | 最低版本要求 |\n|------|-------------|\n| Node.js | >= 18.0.0 |\n| Python | >= 3.10 |\n| pnpm | >= 8.0.0 |\n\n## 安装配置\n\n### TypeScript SDK 安装\n\nComposio 的 TypeScript SDK 提供两种安装方式：完整包安装和按需安装 资料来源：[ts/packages/cli/src/commands/root-help.ts:1-50]()\n\n```bash\n# 完整安装\npnpm add @composio/core @composio/cli\n\n# 仅安装核心包\npnpm add @composio/core\n```\n\n### Python SDK 安装\n\n```bash\npip install composio-core\n```\n\n### 环境变量配置\n\n创建 `.env` 文件并配置以下环境变量 资料来源：[ts/examples/tool-router/README.md:10-20]()\n\n```bash\n# 必需的环境变量\nCOMPOSIO_API_KEY=your_api_key_here\n\n# 可选配置\nOPENAI_API_KEY=your_openai_key       # OpenAI 集成必需\nOPENAI_MODEL=gpt-4o                  # 模型覆盖\nCOMPOSIO_BASE_URL=https://api.composio.dev  # 自定义 API 地址\nCOMPOSIO_LOG_LEVEL=info              # 日志级别\nCOMPOSIO_DISABLE_TELEMETRY=true      # 禁用遥测\n```\n\n### CLI 初始化\n\n使用 `composio init` 命令初始化项目 资料来源：[ts/packages/cli/src/commands/init.cmd.ts:1-30]()\n\n```bash\n# 交互式初始化\ncomposio init\n\n# 或指定项目目录\ncomposio init --cwd ./my-project\n```\n\n初始化过程会提示您选择组织、创建项目，并自动生成 `.env.local` 配置文件。\n\n## 核心概念\n\n### 工具与工具包\n\nComposio 中的工具（Tool）是执行特定操作的最小单元，工具包（Toolkit）是相关工具的集合。每个工具都有唯一的 slug 标识符，格式为 `{TOOLKIT}_{ACTION}`，例如 `GITHUB_CREATE_REPO`。\n\n### Provider 提供商\n\nProvider 是 Composio SDK 与不同 AI 框架之间的桥梁。目前支持的提供商包括 资料来源：[ts/packages/providers/README.md:1-40]()\n\n| Provider 类型 | 说明 |\n|--------------|------|\n| OpenAIProvider | OpenAI Agents SDK 集成 |\n| AnthropicProvider | Anthropic Claude 集成 |\n| LangChainProvider | LangChain 框架集成 |\n\n### 修饰器\n\nComposio 支持强大的修饰器（Modifiers）功能，用于转换工具 schema 和执行行为 资料来源：[python/README.md:60-100]()\n\n```python\nfrom composio import schema_modifier\n\n@schema_modifier(tools=[\"HACKERNEWS_GET_USER\"])\ndef modify_schema(tool: str, toolkit: str, schema: Tool) -> Tool:\n    schema[\"description\"] = \"增强版用户查询\"\n    return schema\n```\n\n## 快速开始示例\n\n### TypeScript 工具路由器\n\n以下示例展示如何使用 TypeScript SDK 进行工具路由 资料来源：[ts/examples/tool-router/src/index.ts:1-50]()\n\n```typescript\nimport { Composio } from \"@composio/core\";\n\nasync function main() {\n  // 初始化 SDK\n  const client = new Composio({\n    apiKey: process.env.COMPOSIO_API_KEY,\n  });\n\n  // 获取所有可用工具\n  const tools = await client.tools.list();\n\n  // 获取特定工具\n  const githubTool = await client.tools.get({\n    slug: \"GITHUB_CREATE_REPO\",\n    app: \"github\"\n  });\n\n  // 执行工具\n  const result = await client.execute(\"github_create_repo\", {\n    name: \"my-new-repo\",\n    description: \"Repository created via Composio\"\n  });\n}\n```\n\n### Python OpenAI Agents 集成\n\n```python\nfrom composio import Composio\nfrom openai import OpenAI\n\nclient = Composio(api_key=\"your_api_key\")\nopenai_client = OpenAI()\n\n# 获取工具\ntools = client.tools.get_tools(apps=[\"github\", \"slack\"])\n\n# 在 OpenAI Agents 中使用\nassistant = openai_client.beta.assistants.create(\n    model=\"gpt-4o\",\n    tools=tools\n)\n```\n\n## CLI 命令参考\n\n### 常用命令速查\n\n| 命令 | 功能 |\n|------|------|\n| `composio init` | 初始化新项目 |\n| `composio tools list` | 列出所有可用工具 |\n| `composio tools info <slug>` | 查看工具详情 |\n| `composio execute <slug>` | 执行指定工具 |\n| `composio link <toolkit>` | 连接第三方账户 |\n| `composio local-tools list` | 列出本地工具 |\n\n### 工具列表命令\n\n```bash\n# 列出所有工具\ncomposio tools list\n\n# 列出特定工具包的工具\ncomposio tools list --toolkit github\n\n# JSON 格式输出\ncomposio tools list --json\n```\n\n### 工具信息查询\n\n```bash\n# 查看工具详情\ncomposio tools info GITHUB_CREATE_REPO\n\n# 获取工具执行 schema\ncomposio execute GITHUB_CREATE_REPO --get-schema\n```\n\n### 执行工具\n\n```bash\n# 执行工具（交互式）\ncomposio execute GITHUB_CREATE_REPO\n\n# 执行工具（传入参数）\ncomposio execute GITHUB_CREATE_REPO -d '{\"name\": \"my-repo\", \"private\": true}'\n```\n\n### 账户连接\n\n```bash\n# 连接第三方账户\ncomposio link github\ncomposio link slack\n\n# 查看已连接账户\ncomposio accounts list\n```\n\n## 本地 CLI 工具\n\nComposio 支持本地 CLI 工具扩展，允许 Tool Router 搜索和执行本地工具 资料来源：[ts/packages/cli-local-tools/src/registry.ts:1-60]()\n\n### 本地工具命令\n\n| 命令 | 功能 |\n|------|------|\n| `composio local-tools list` | 列出已注册本地工具包 |\n| `composio local-tools doctor` | 检查本地工具就绪状态 |\n| `composio local-tools configure` | 配置本地工具 |\n\n### 配置本地工具\n\n```bash\n# 配置工具包\ncomposio local-tools configure <toolkit-slug> \\\n  --command /path/to/tool \\\n  --authenticated\n\n# 禁用工具\ncomposio local-tools configure <toolkit-slug> --disable\n\n# 启用工具\ncomposio local-tools configure <toolkit-slug> --enable\n```\n\n### 列出本地工具\n\n```bash\n# 基本列表\ncomposio local-tools list\n\n# 包含不支持当前平台的工具\ncomposio local-tools list --all-platforms\n\n# 过滤特定工具包\ncomposio local-tools list --toolkits mytoolkit\n\n# JSON 格式输出\ncomposio local-tools list --json\n```\n\n## 开发模式\n\nComposio 提供开发模式用于本地调试和测试 资料来源：[ts/packages/cli/src/commands/root-help.ts:40-80]()\n\n### 开发命令\n\n```bash\n# 初始化开发环境\ncomposio dev init\n\n# 在 Playgroun 中执行工具\ncomposio dev playground-execute <slug> \\\n  --user-id <user-id> \\\n  -d '{}'\n\n# 获取执行 schema\ncomposio dev playground-execute <slug> --get-schema\n\n# 查看工具执行日志\ncomposio dev logs tools <log_id>\n\n# 查看触发器日志\ncomposio dev logs triggers <log_id>\n```\n\n## 工具包管理\n\n### 发现工具包\n\n```bash\n# 列出所有工具包\ncomposio toolkits list\n\n# 搜索工具包\ncomposio toolkits search <keyword>\n\n# 查看工具包详情\ncomposio toolkits info <toolkit-name>\n```\n\n### 管理工具包版本\n\n```bash\n# 查看工具包版本\ncomposio toolkits version <toolkit-name>\n\n# 设置特定版本\nCOMPOSIO_TOOLKIT_VERSION_GITHUB=20250902_00\n```\n\n## 工作流程图\n\n### 基本集成流程\n\n```mermaid\ngraph TD\n    A[初始化 Composio SDK] --> B[配置 API Key]\n    B --> C[获取可用工具]\n    C --> D[选择工具包]\n    D --> E[执行工具操作]\n    E --> F{操作成功?}\n    F -->|是| G[返回结果]\n    F -->|否| H[错误处理]\n```\n\n### CLI 工具执行流程\n\n```mermaid\ngraph TD\n    A[composio 命令] --> B{子命令类型}\n    B -->|tools| C[工具操作]\n    B -->|execute| D[执行工具]\n    B -->|local-tools| E[本地工具]\n    B -->|dev| F[开发模式]\n    \n    C --> C1[list/信息查询]\n    D --> D1[权限检查]\n    D1 --> D2[执行工具]\n    E --> E1[配置/列表/诊断]\n    F --> F1[Playground/日志]\n```\n\n## 最佳实践\n\n### 1. 项目结构组织\n\n```\nmy-agent-project/\n├── .env.local          # 本地环境变量\n├── composio.config.ts  # SDK 配置\n├── src/\n│   ├── index.ts        # 入口文件\n│   └── tools/          # 工具封装\n└── package.json\n```\n\n### 2. 安全管理\n\n- 使用环境变量存储 API Key，避免硬编码\n- 使用 `.env.local` 存储项目级敏感信息\n- 通过 CLI 的权限确认功能控制工具执行\n\n### 3. 错误处理\n\n```typescript\nimport { ComposioSDKError } from \"@composio/core\";\n\ntry {\n  const result = await client.execute(\"tool_slug\", params);\n} catch (error) {\n  if (error instanceof ComposioSDKError) {\n    console.error(`SDK Error: ${error.message}`);\n  }\n}\n```\n\n### 4. 性能优化\n\n- 预加载常用工具到 `session.tools()`\n- 使用 `SessionPreset.DIRECT_TOOLS` 预加载所有允许的工具\n- 避免在循环中频繁调用工具获取接口\n\n## 常见问题\n\n### Q: 如何获取 API Key？\n\n访问 [Composio Dashboard](https://app.composio.dev) 注册账号并获取 API Key。\n\n### Q: 工具执行失败怎么办？\n\n1. 使用 `composio local-tools doctor` 检查本地环境\n2. 使用 `composio tools info <slug>` 确认工具参数正确\n3. 查看 `composio dev logs tools <log_id>` 获取详细错误信息\n\n### Q: 如何使用自定义 Provider？\n\n参考 [Provider 创建文档](ts/packages/providers/README.md)，使用 `pnpm run create-provider <name>` 创建自定义 Provider。\n\n## 下一步\n\n- 深入阅读 [工具包文档](ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts)\n- 了解 [Schema 修饰器](python/README.md)的高级用法\n- 探索 [OpenAI 集成示例](python/examples/tool_router/openai_agents.py)\n- 加入 [Discord 社区](https://discord.gg/composio) 获取帮助\n\n---\n\n<a id='architecture'></a>\n\n## 系统架构\n\n### 相关页面\n\n相关主题：[TypeScript SDK 详解](#ts-sdk), [Python SDK 详解](#py-sdk), [工具包系统](#toolkits)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/core/src/composio.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/composio.ts)\n- [ts/packages/core/src/provider/ComposioProvider.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/provider/ComposioProvider.ts)\n- [python/composio/sdk.py](https://github.com/ComposioHQ/composio/blob/main/python/composio/sdk.py)\n- [ts/packages/core/src/models/ToolRouter.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/ToolRouter.ts)\n- [python/composio/core/models/tool_router.py](https://github.com/ComposioHQ/composio/blob/main/python/composio/core/models/tool_router.py)\n- [ts/packages/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli-local-tools/src/registry.ts)\n- [ts/packages/providers/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/packages/providers/README.md)\n- [ts/packages/cli/src/effects/toolkit-version-overrides.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/effects/toolkit-version-overrides.ts)\n</details>\n\n# 系统架构\n\n## 概述\n\nComposio 是一个多语言 Agent 工具集成平台，支持通过统一的 SDK 接口调用外部工具和服务。系统架构采用分层设计，核心层负责工具路由和执行管理，Provider 层提供灵活的扩展机制，CLI 层提供命令行交互能力。本文档基于源码分析，阐述 Composio 的整体架构设计、各核心模块职责以及跨语言 SDK 的实现机制。\n\n## 架构分层\n\nComposio 系统采用四层架构设计，从上到下依次为：\n\n| 层级 | 名称 | 职责 | 主要实现 |\n|------|------|------|----------|\n| 1 | SDK 层 | 对外提供统一的工具调用接口 | `composio.ts`、`sdk.py` |\n| 2 | 核心层 | 工具路由、Schema 修饰、Provider 管理 | `ToolRouter.ts`、`tool_router.py` |\n| 3 | Provider 层 | 工具封装、Schema 转换、执行拦截 | `ComposioProvider.ts` |\n| 4 | CLI 层 | 命令行工具、本地工具注册 | `registry.ts` |\n\n```mermaid\ngraph TD\n    subgraph SDK层\n        TS_SDK[TypeScript SDK<br/>composio.ts]\n        PY_SDK[Python SDK<br/>sdk.py]\n    end\n\n    subgraph 核心层\n        TR_TypeScript[ToolRouter<br/>TypeScript]\n        TR_Python[ToolRouter<br/>Python]\n    end\n\n    subgraph Provider层\n        CP[ComposioProvider]\n        BaseProvider[BaseComposioProvider]\n        AgenticProvider[BaseAgenticProvider]\n    end\n\n    subgraph CLI层\n        CLI[Composio CLI]\n        LocalRegistry[本地工具注册表<br/>registry.ts]\n    end\n\n    subgraph 外部服务\n        API[Composio API]\n        MCP[MCP Server]\n    end\n\n    TS_SDK --> TR_TypeScript\n    PY_SDK --> TR_Python\n    TR_TypeScript --> CP\n    TR_Python --> CP\n    CP --> BaseProvider\n    CP --> AgenticProvider\n    CLI --> LocalRegistry\n    CP --> API\n    CP --> MCP\n```\n\n## 核心模块\n\n### SDK 入口\n\nComposio 提供 TypeScript 和 Python 两种 SDK 入口，两者在设计思想上保持一致，但实现细节根据语言特性有所差异。\n\n#### TypeScript SDK\n\nTypeScript SDK 的核心入口位于 `composio.ts`，该文件导出一个统一的 `Composio` 类。SDK 初始化时接受配置参数，包括 API 密钥、基础 URL、日志级别等。SDK 内部持有 `ComposioTool` 实例用于工具管理，并通过 `ComposioProvider` 与后端服务通信。\n\n主要配置选项：\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| `apiKey` | `string` | Composio API 密钥 |\n| `baseURL` | `string` | API 基础地址，默认为 Composio 官方服务 |\n| `toolkitVersionOverrides` | `Map<string, string>` | 工具包版本覆盖 |\n| `logLevel` | `LogLevel` | 日志级别：silent、error、warn、info、debug |\n| `disableTelemetry` | `boolean` | 是否禁用遥测数据 |\n\n#### Python SDK\n\nPython SDK 位于 `python/composio/sdk.py`，采用类式设计，提供 `Composio` 类作为主要入口。Python SDK 通过 `openai` 库实现与 OpenAI 生态的集成，同时支持自定义 LLM 客户端。\n\n### 工具路由器\n\n工具路由器（ToolRouter）是架构的核心组件，负责工具的注册、查询和路由。\n\n#### TypeScript ToolRouter\n\n`ToolRouter.ts` 实现了 TypeScript 端的工具路由逻辑。路由器维护一个工具索引（ToolkitIndex），将工具按照所属工具包（Toolkit）进行分组管理。\n\n关键数据结构：\n\n```typescript\nexport type ToolkitIndex = Record<ToolkitName, ToolkitIndexData>;\n\nexport type ToolkitIndexData = Simplify<{\n  slug: string;\n  version?: string;\n  typeableTools: \n    | { withTypes: false; value: Record<`${ToolkitName}_${string}`, ToolAsEnum> }\n    | { withTypes: true; value: Record<`${ToolkitName}_${string}`, Tool> };\n  triggerTypes: Record<`${ToolkitName}_${string}`, TriggerType>;\n}>;\n```\n\n路由器通过 `createToolkitIndex` 函数从输入数据构建索引，该函数接收版本映射（versionMap）用于工具包版本控制。\n\n#### Python ToolRouter\n\nPython 端在 `python/composio/core/models/tool_router.py` 中实现对应的路由器功能。Python 版本同样维护工具索引，但使用 Python 原生的字典和类结构。\n\n### Provider 体系\n\nProvider 是 Composio 架构中实现工具封装和执行拦截的关键组件。系统定义了两种 Provider 类型：\n\n#### BaseComposioProvider\n\n基础 Provider 实现了工具的包装和获取逻辑。所有非 Agentic Provider 都继承自此类：\n\n```typescript\nclass NonAgenticProvider extends BaseNonAgenticProvider {\n  async wrapTool(toolSlug: string, tool: Tool, modifiers?: SchemaModifiersParams): Promise<Tool>;\n  async getTools(modifiers?: SchemaModifiersParams): Promise<Tool[]>;\n  async getToolBySlug(slug: string, modifiers?: SchemaModifiersParams): Promise<Tool>;\n}\n```\n\n#### BaseAgenticProvider\n\nAgentic Provider 继承自基础 Provider，增加了对 Agentic 工具的支持。Agentic 工具具有更复杂的执行流程，能够在执行前后进行上下文干预：\n\n```typescript\nclass AgenticProvider extends BaseAgenticProvider {\n  async wrapTool(toolSlug: string, tool: Tool, modifiers?: ModifiersParams): Promise<Tool>;\n  async getTools(modifiers?: ModifiersParams): Promise<Tool[]>;\n}\n```\n\n#### ComposioProvider\n\n`ComposioProvider.ts` 是 SDK 与外部服务通信的主要入口，它组合了多个底层 Provider 的能力：\n\n```mermaid\ngraph LR\n    ComposioProvider -->|持有| BaseComposioProvider\n    ComposioProvider -->|持有| BaseAgenticProvider\n    ComposioProvider -->|调用| ComposioToolkitsRepository\n    ComposioProvider -->|调用| HTTPClient\n```\n\nProvider 的选择通过类型推断实现，SDK 根据传入的 Provider 类型自动选择合适的工具选项类型：\n\n```typescript\nexport type ProviderOptions<TProvider> =\n  TProvider extends BaseComposicProvider<infer TToolCollection, infer TTool, infer TMcpResponse>\n    ? TProvider extends BaseAgenticProvider<TToolCollection, TTool, TMcpResponse>\n      ? AgenticToolOptions\n      : ToolOptions\n    : never;\n```\n\n## 工具包版本管理\n\nComposio 支持通过环境变量对工具包版本进行精细化控制。每个工具包可以指定特定版本或使用最新版本。\n\n### 版本覆盖机制\n\n版本覆盖通过 `ToolkitVersionOverrides` 类型管理：\n\n```typescript\nexport type ToolkitVersionOverrides = Map<Lowercase<string>, string>;\n```\n\n### 版本分组与验证\n\n版本分组逻辑将具有相同版本的工具包聚合在一起，便于批量处理：\n\n```typescript\nexport const groupByVersion = (\n  specs: ReadonlyArray<ToolkitVersionSpec>\n): Map<string, Lowercase<string>[]> => {\n  const grouped = new Map<string, Lowercase<string>[]>();\n  for (const spec of specs) {\n    const existing = grouped.get(spec.toolkitVersion);\n    if (existing) {\n      existing.push(spec.toolkitSlug);\n    } else {\n      grouped.set(spec.toolkitVersion, [spec.toolkitSlug]);\n    }\n  }\n  return grouped;\n};\n```\n\n版本验证通过 `validateToolkitVersionOverrides` 函数执行，该函数会调用 API 验证版本有效性并在遇到错误时提供友好的错误信息。\n\n### 环境变量配置\n\n工具包版本可通过以下格式的环境变量配置：\n\n| 环境变量 | 说明 | 示例 |\n|----------|------|------|\n| `COMPOSIO_TOOLKIT_VERSION_<TOOLKIT_NAME>` | 指定工具包版本 | `COMPOSIO_TOOLKIT_VERSION_GITHUB=20250902_00` |\n\n版本值 `\"latest\"` 表示使用最新版本，不会被添加到版本映射中。\n\n## Schema 修饰器\n\nSchema 修饰器（Schema Modifiers）允许在工具执行的不同阶段对请求和响应进行处理。这是实现日志记录、参数转换、结果过滤等功能的基础机制。\n\n### 修饰器类型\n\n```typescript\ninterface SchemaModifiersParams {\n  modifySchema?: (context: SchemaModificationContext) => SchemaModificationResult;\n  beforeExecute?: (context: ExecutionContext) => ExecutionContext;\n  afterExecute?: (context: ExecutionContext) => ExecutionContext;\n}\n```\n\n### 执行流程\n\n```mermaid\ngraph TD\n    A[接收工具调用] --> B{有 modifySchema?}\n    B -->|是| C[应用 Schema 修饰]\n    B -->|否| D[使用原始 Schema]\n    C --> E{有 beforeExecute?}\n    D --> E\n    E -->|是| F[执行 beforeExecute]\n    E -->|否| G[调用工具]\n    F --> G\n    G --> H{有 afterExecute?}\n    H -->|是| I[执行 afterExecute]\n    H -->|否| J[返回结果]\n    I --> J\n```\n\n## 本地工具系统\n\nComposio CLI 提供本地工具注册和管理能力，允许用户定义和执行本地命令行工具。\n\n### 本地工具注册表\n\n本地工具注册表（`registry.ts`）负责管理所有本地工具的定义和元数据：\n\n```typescript\nexport const getAllLocalToolkitSlugs = (\n  options: { readonly declarations?: ReadonlyArray<LocalToolkitDeclaration> } = {}\n): ReadonlyArray<string> =>\n  declarationsFor(options.declarations).map(toolkit => toolkit.slug.toLowerCase());\n```\n\n### 工具匹配与过滤\n\n注册表提供多种匹配工具的方法：\n\n| 方法 | 用途 |\n|------|------|\n| `toolkitMatchesFilter` | 检查工具包是否匹配过滤器 |\n| `isLocalToolkitSlug` | 验证是否为本地工具包 |\n| `isLocalToolSlug` | 验证是否为本地工具 |\n| `resolveLocalTool` | 根据 slug 解析本地工具 |\n\n### 本地工具执行\n\n本地工具通过统一的执行函数处理：\n\n```typescript\nconst executeLocalTool = async (\n  execution: LocalToolExecution,\n  input: Record<string, unknown>,\n  options: ExecuteLocalToolOptions\n) => {\n  // 处理工具执行逻辑\n};\n```\n\n## 错误处理机制\n\nComposio 使用 Effect 库进行函数式错误处理，通过 `captureErrorsFrom` 函数将 Effect 的 Cause 转换为友好的错误信息：\n\n```typescript\nexport const captureErrorsFrom = <E>(cause: Cause<E>): readonly PrettyError[] =>\n  reduceWithContext(cause, undefined, {\n    emptyCase: (): readonly PrettyError[] => [],\n    dieCase: (_, unknownError) => [parseError(unknownError)],\n    failCase: (_, error) => [parseError(error)],\n    interruptCase: () => [],\n    parallelCase: (_, l, r) => [...l, ...r],\n    sequentialCase: (_, l, r) => [...l, ...r],\n  });\n```\n\n## CLI 命令架构\n\nComposio CLI 采用 Effect 框架构建命令系统，每个命令都是一个 Effect 子程序。命令通过模块化组织，核心命令包括：\n\n| 命令 | 功能 |\n|------|------|\n| `composio execute` | 执行指定工具 |\n| `composio tools list` | 列出工具包中的工具 |\n| `composio tools info` | 查看工具详情 |\n| `composio local-tools` | 管理本地工具 |\n| `composio dev init` | 初始化开发环境 |\n| `composio dev playground-execute` | 操场执行工具 |\n\n### TypeScript 生成命令\n\n`ts.generate.cmd.ts` 实现了 `composio generate ts` 命令，用于生成 TypeScript 类型定义文件：\n\n```mermaid\ngraph LR\n    A[generate ts 命令] --> B{指定 --output-dir?}\n    B -->|是| C[写入指定目录]\n    B -->|否| D[查找 @composio/core]\n    C --> E{指定 --transpiled?}\n    D --> E\n    E -->|是| F[生成 .ts + .js]\n    E -->|否| G[仅生成 .ts]\n    F --> H[完成]\n    G --> H\n```\n\n## Provider 扩展机制\n\nComposio 支持通过创建自定义 Provider 来扩展系统功能。创建新 Provider 的标准流程：\n\n1. 使用 `pnpm create:provider <name>` 创建 Provider 骨架\n2. 在 `src/index.ts` 中实现必要方法\n3. 注册 Provider 到 SDK\n\n```bash\n# 创建非 Agentic Provider\npnpm create:provider my-provider\n\n# 创建 Agentic Provider\npnpm create:provider my-provider --agentic\n```\n\n## 数据流总结\n\n```mermaid\ngraph TD\n    subgraph 用户代码\n        User[用户调用 SDK]\n    end\n\n    subgraph SDK 层\n        Composio_SDK[Composio SDK]\n    end\n\n    subgraph 核心层\n        ToolRouter[ToolRouter]\n        ToolkitIndex[ToolkitIndex]\n    end\n\n    subgraph Provider 层\n        Provider[ComposioProvider]\n        MCP_Client[MCP Client]\n    end\n\n    subgraph 外部\n        API[Composio API]\n        MCP_Server[MCP Server]\n    end\n\n    User --> Composio_SDK\n    Composio_SDK --> ToolRouter\n    ToolRouter --> ToolkitIndex\n    Composio_SDK --> Provider\n    Provider --> API\n    Provider --> MCP_Client\n    MCP_Client --> MCP_Server\n```\n\nComposio 的架构设计强调模块化、可扩展性和跨语言一致性。通过清晰的层次划分和标准化的 Provider 接口，系统能够灵活适应不同的使用场景和集成需求。\n\n---\n\n<a id='ts-sdk'></a>\n\n## TypeScript SDK 详解\n\n### 相关页面\n\n相关主题：[Python SDK 详解](#py-sdk), [AI 框架提供商集成](#providers), [工具包系统](#toolkits)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/core/src/index.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/index.ts)\n- [ts/packages/core/src/models/Tools.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/Tools.ts)\n- [ts/packages/core/src/models/Toolkits.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/Toolkits.ts)\n- [ts/packages/core/src/models/ToolRouterSession.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/ToolRouterSession.ts)\n- [ts/packages/core/src/models/ConnectedAccounts.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/ConnectedAccounts.ts)\n- [ts/docs/api/tools.md](https://github.com/ComposioHQ/composio/blob/main/ts/docs/api/tools.md)\n</details>\n\n# TypeScript SDK 详解\n\n## 概述\n\nComposio TypeScript SDK 是用于与 Composio 平台交互的核心开发工具包，为 AI Agent 提供工具调用、工具包管理、账户连接等功能。该 SDK 构建于 Effect 框架之上，采用函数式编程范式，支持类型安全的工具操作和灵活的扩展机制。 资料来源：[ts/README.md]()\n\n## 核心架构\n\n### 系统组件关系\n\n```mermaid\ngraph TD\n    A[ComposioClient] --> B[ToolRouter]\n    A --> C[ConnectedAccounts]\n    B --> D[Toolkits]\n    B --> E[Tools]\n    D --> E\n    F[Providers] --> E\n    G[CLI Tools] --> E\n```\n\n### 包结构概览\n\n| 包名称 | 路径 | 职责 |\n|--------|------|------|\n| `@composio/core` | `packages/core` | 核心 SDK，包含所有核心模型和服务 |\n| `@composio/cli` | `packages/cli` | 命令行工具，支持项目初始化和类型生成 |\n| `@composio/providers` | `packages/providers/*` | AI 框架集成（OpenAI、LangChain、Vercal 等） |\n| `@composio/ts-builders` | `packages/ts-builders` | TypeScript AST 构建工具，用于生成类型存根 |\n| `@composio/cli-local-tools` | `packages/cli-local-tools` | 本地 CLI 工具注册表 |\n\n资料来源：[ts/README.md](), [ts/packages/ts-builders/README.md]()\n\n## 核心模型\n\n### Tools（工具）\n\n`Tool` 模型代表单个可执行工具，是 SDK 的基本操作单元。每个工具包含以下属性：\n\n| 属性 | 类型 | 说明 |\n|------|------|------|\n| `slug` | `string` | 工具唯一标识符 |\n| `name` | `string` | 工具显示名称 |\n| `description` | `string` | 工具功能描述 |\n| `inputParams` | `InputParameter[]` | 输入参数定义 |\n| `outputParams` | `OutputParameter[]` | 输出参数定义 |\n| `toolkit` | `Toolkit` | 所属工具包 |\n| `triggers` | `Trigger[]` | 触发器配置 |\n\n资料来源：[ts/packages/core/src/models/Tools.ts](), [ts/packages/cli/src/generation/create-toolkit-index.ts]()\n\n### Toolkits（工具包）\n\n`Toolkit` 是工具的逻辑分组容器，提供组织和管理相关工具的能力：\n\n```typescript\nexport type ToolkitIndex = Record<ToolkitName, ToolkitIndexData>;\n```\n\n工具包数据包含版本管理和工具集合映射，支持按名称动态访问工具定义。 资料来源：[ts/packages/cli/src/generation/create-toolkit-index.ts]()\n\n### ToolRouterSession（会话路由）\n\n`ToolRouterSession` 负责管理工具调用的生命周期，包括参数验证、执行和结果处理：\n\n```mermaid\nsequenceDiagram\n    Agent->>ToolRouterSession: requestToolCall(toolSlug, params)\n    ToolRouterSession->>Tool: validateParams(params)\n    Tool-->>ToolRouterSession: validatedParams\n    ToolRouterSession->>Tool: execute(validatedParams)\n    Tool-->>ToolRouterSession: executionResult\n    ToolRouterSession->>Agent: formattedResponse\n```\n\n资料来源：[ts/packages/core/src/models/ToolRouterSession.ts]()\n\n### ConnectedAccounts（连接账户）\n\n`ConnectedAccounts` 管理用户与第三方服务的授权连接，是工具执行认证的基础：\n\n| 属性 | 说明 |\n|------|------|\n| `accountId` | 账户唯一标识 |\n| `integrationId` | 集成标识 |\n| `connectionStatus` | 连接状态 |\n| `credentials` | 加密凭证 |\n| `metadata` | 额外元数据 |\n\n资料来源：[ts/packages/core/src/models/ConnectedAccounts.ts]()\n\n## Provider 机制\n\n### Provider 类型\n\nSDK 支持两种 Provider 类型，分别适用于不同的 AI 框架集成场景：\n\n| Provider 类型 | 基类 | 用途 |\n|---------------|------|------|\n| 非 Agentic | `BaseNonAgenticProvider` | 基础工具包装和模式转换 |\n| Agentic | `BaseAgenticProvider` | 支持完整执行流程修饰符 |\n\n资料来源：[ts/packages/providers/README.md](), [ts/packages/core/src/types/modifiers.types.ts]()\n\n### Provider 方法\n\n#### 非 Agentic Provider\n\n```typescript\nclass NonAgenticProvider extends BaseNonAgenticProvider {\n  async wrapTool(\n    toolSlug: string, \n    tool: Tool, \n    modifiers?: SchemaModifiersParams\n  ): Promise<Tool>;\n\n  async getTools(modifiers?: SchemaModifiersParams): Promise<Tool[]>;\n\n  async getToolBySlug(\n    slug: string, \n    modifiers?: SchemaModifiersParams\n  ): Promise<Tool>;\n}\n```\n\n#### Agentic Provider\n\nAgentic Provider 在非 Agentic 基础上增加执行修饰符支持：\n\n```typescript\ntype beforeExecuteModifier = (\n  toolSlug: string,\n  params: Record<string, unknown>\n) => Record<string, unknown>;\n\ntype afterExecuteModifier = (\n  toolSlug: string,\n  response: ToolExecuteResponse\n) => ToolExecuteResponse;\n```\n\n资料来源：[ts/packages/providers/README.md](), [ts/packages/core/src/types/modifiers.types.ts]()\n\n### 内置 Providers\n\n| Provider | 包路径 | AI 框架 |\n|----------|--------|---------|\n| OpenAI Provider | `packages/providers/openai` | OpenAI |\n| LangChain Provider | `packages/providers/langchain` | LangChain |\n| Vercel Provider | `packages/providers/vercel` | Vercel AI SDK |\n| Claude Agent SDK Provider | `packages/providers/claude-agent-sdk` | Anthropic Claude Agent SDK |\n\n资料来源：[ts/packages/providers/openai/package.json](), [ts/packages/providers/langchain/package.json](), [ts/packages/providers/vercel/package.json](), [ts/packages/providers/claude-agent-sdk/package.json]()\n\n## 类型生成系统\n\n### TypeScript 类型存根\n\nCLI 提供 `composio generate ts` 命令用于生成 TypeScript 类型存根：\n\n```bash\ncomposio generate ts\ncomposio generate ts --type-tools\ncomposio generate ts --toolkits gmail slack\n```\n\n生成器支持以下选项：\n\n| 选项 | 说明 | 默认值 |\n|------|------|--------|\n| `--compact` | 生成单个模块文件 | `false` |\n| `--transpiled` | 同时生成转译后的 JavaScript | 写入 `node_modules` 时为 `true` |\n| `--output-dir` | 指定输出目录 | `@composio/core` 包路径 |\n| `--toolkits` | 仅包含指定工具包 | 全部工具包 |\n\n资料来源：[ts/packages/cli/src/commands/ts/commands/ts.generate.cmd.ts](), [ts/packages/cli/src/commands/generate/generate.cmd.ts]()\n\n### 文档生成\n\nSDK 使用 TypeDoc 从源代码提取 JSDoc 注释生成 MDX 文档：\n\n```mermaid\ngraph LR\n    A[src/models/*.ts] -->|TypeDoc| B[JSON AST]\n    B -->|generate-docs.ts| C[MDX 文件]\n    C --> D[docs/content/reference/sdk-reference/typescript/]\n```\n\n工作流程由 GitHub Actions 自动化触发：`.github/workflows/generate-sdk-docs.yml` 监听 `ts/packages/core/src/**` 变更并自动创建 PR。 资料来源：[ts/packages/core/scripts/README.md]()\n\n## 本地工具注册\n\n`@composio/cli-local-tools` 包提供本地 CLI 工具的注册和管理能力：\n\n```typescript\nexport const getAllLocalToolkitSlugs = (\n  options?: { declarations?: ReadonlyArray<LocalToolkitDeclaration> }\n): ReadonlyArray<string>;\n\nexport const getLocalCustomToolkits = (\n  options?: {\n    currentPlatform?: LocalCliPlatform;\n    toolkits?: ReadonlyArray<string>;\n    declarations?: ReadonlyArray<LocalToolkitDeclaration>;\n  }\n): ReadonlyArray<CustomToolkit>;\n```\n\n本地工具支持跨平台声明和动态平台检测。 资料来源：[ts/packages/cli-local-tools/src/registry.ts]()\n\n## 环境变量配置\n\n| 变量名 | 说明 | 必填 |\n|--------|------|------|\n| `COMPOSIO_API_KEY` | Composio API 密钥 | 是 |\n| `COMPOSIO_BASE_URL` | 自定义 API 基础 URL | 否 |\n| `COMPOSIO_LOG_LEVEL` | 日志级别（silent/error/warn/info/debug） | 否 |\n| `COMPOSIO_DISABLE_TELEMETRY` | 禁用遥测（设为 \"true\"） | 否 |\n| `COMPOSIO_TOOLKIT_VERSION_<TOOLKIT_NAME>` | 工具包版本覆盖 | 否 |\n| `DEVELOPMENT` | 开发模式标志 | 否 |\n| `CI` | CI 环境标志 | 否 |\n\n资料来源：[ts/README.md](), [ts/packages/cli/src/commands/init.cmd.ts]()\n\n## 工具包版本管理\n\nCLI 提供工具包版本覆盖验证机制：\n\n```typescript\nconst { validatedOverrides, warnings } = yield* client.validateToolkitVersions(\n  versionOverrides,\n  toolkitSlugsFilter\n);\n```\n\n验证器支持批量验证并在检测到无效版本时提供友好的错误提示。 资料来源：[ts/packages/cli/src/effects/validate-toolkit-versions.ts]()\n\n## 项目语言检测\n\nSDK 自动检测项目语言环境：\n\n```typescript\nconst envDetector = yield* ProjectEnvironmentDetector;\nconst env = yield* envDetector.detectProjectEnvironment(cwd);\n```\n\n检测逻辑按优先级检查：\n\n1. TypeScript 文件（`.ts`、`.tsx`、`.mts`、`.cts`）\n2. Python 文件（`.py`、`.pyw`、`.pyi`、`.pyx`）\n\n忽略目录包括：`node_modules`、`__pycache__`、`.venv`、`venv` 等。 资料来源：[ts/packages/cli/src/services/env-lang-detector.ts]()\n\n## 快速开始\n\n### 安装\n\n```bash\npnpm add @composio/core\n```\n\n### 初始化客户端\n\n```typescript\nimport { Composio } from \"@composio/core\";\n\nconst client = new Composio();\n```\n\n### 获取工具\n\n```typescript\nconst tools = await client.getTools({ \n  toolkits: [\"github\"] \n});\n```\n\n### 执行工具\n\n```typescript\nconst result = await client.execute({\n  tool: \"github_create_repository\",\n  params: {\n    name: \"my-repo\",\n    description: \"Repository description\"\n  }\n});\n```\n\n## 最佳实践\n\n1. **类型安全**：始终使用 TypeScript 并确保所有方法和参数的类型定义完整\n2. **错误处理**：为 API 调用和工具执行实现适当的错误处理机制\n3. **Provider 选择**：根据 AI 框架选择合适的 Provider 以获得最佳集成体验\n4. **版本管理**：使用环境变量指定具体工具包版本以便复现性\n5. **本地工具**：利用 `@composio/cli-local-tools` 扩展 CLI 功能\n\n资料来源：[ts/packages/providers/README.md]()\n\n---\n\n<a id='py-sdk'></a>\n\n## Python SDK 详解\n\n### 相关页面\n\n相关主题：[TypeScript SDK 详解](#ts-sdk), [AI 框架提供商集成](#providers), [工具包系统](#toolkits)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [python/README.md](https://github.com/ComposioHQ/composio/blob/main/python/README.md)\n- [python/scripts/README.md](https://github.com/ComposioHQ/composio/blob/main/python/scripts/README.md)\n- [python/providers/claude_agent_sdk/README.md](https://github.com/ComposioHQ/composio/blob/main/python/providers/claude_agent_sdk/README.md)\n- [python/providers/google/README.md](https://github.com/ComposioHQ/composio/blob/main/python/providers/google/README.md)\n- [ts/packages/core/src/types/modifiers.types.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/types/modifiers.types.ts)\n- [ts/packages/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli-local-tools/src/registry.ts)\n- [ts/packages/providers/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/packages/providers/README.md)\n</details>\n\n# Python SDK 详解\n\n## 概述\n\nComposio Python SDK 是一个强大的工具集成框架，为开发者提供了与外部服务（如 GitHub、Gmail、Google 等）交互的统一接口。该 SDK 允许 AI 代理通过标准化的工具调用方式访问数百种第三方服务，同时支持自定义提供者、本地工具和复杂的认证配置。资料来源：[python/README.md]()\n\n## 核心架构\n\n### SDK 初始化\n\nComposio SDK 的初始化是整个集成的起点，支持多种配置选项：\n\n```python\nfrom composio import Composio\nfrom composio.providers.openai import OpenAIProvider\n\ncomposio = Composio(\n    api_key=\"your-api-key\",  # Composio API 密钥\n    base_url=\"https://api.composio.dev\",  # 自定义 API 基础 URL\n    timeout=60,  # 请求超时时间（秒）\n    max_retries=3,  # 最大重试次数\n    allow_tracking=True,  # 启用/禁用遥测\n    file_download_dir=\"./downloads\",  # 文件下载目录\n    provider=OpenAIProvider(),  # 自定义提供者\n    toolkit_versions={\"github\": \"12202025_01\"}  # 工具包版本\n)\n```\n\n资料来源：[python/README.md]()\n\n### 架构流程图\n\n```mermaid\ngraph TD\n    A[用户代码] --> B[Composio SDK]\n    B --> C[工具获取层]\n    C --> D[提供者层]\n    D --> E{提供者类型}\n    E -->|OpenAI| F[OpenAIProvider]\n    E -->|Claude| G[ClaudeAgentSDKProvider]\n    E -->|Google| H[GoogleProvider]\n    F --> I[MCP 服务器]\n    G --> I\n    H --> I\n    I --> J[AI 代理]\n    J --> K[工具执行]\n    K --> L[外部服务 API]\n```\n\n## 工具与工具包系统\n\n### 工具获取\n\nComposio 提供了灵活的工具获取机制，支持按工具包、工具名称或用户 ID 进行筛选：\n\n```python\n# 获取特定工具包中的所有工具\ntools = composio.tools.get(\n    user_id=\"default\",\n    toolkits=[\"gmail\", \"github\"]\n)\n\n# 获取单个工具\ntool = composio.tools.get(\n    user_id=\"default\",\n    slug=\"HACKERNEWS_GET_USER\"\n)\n```\n\n资料来源：[python/providers/claude_agent_sdk/README.md]()\n\n### 工具分类\n\n| 分类方式 | 说明 | 示例 |\n|---------|------|------|\n| 按工具包 | 同一服务的一组工具 | `gmail` 包含 `SEND_EMAIL`, `FETCH_EMAILS` 等 |\n| 按工具名称 | 单个具体工具 | `GITHUB_STAR_REPOSITORY` |\n| 按用户 | 按用户隔离的工具实例 | `user_id` 参数控制 |\n| 本地工具 | CLI 本地执行工具 | `LOCAL_TOOL_*` 前缀 |\n\n资料来源：[ts/packages/cli-local-tools/src/registry.ts]()\n\n## 修饰器系统\n\nComposio SDK 支持强大的修饰器系统，允许在工具模式转换和执行过程中进行干预。\n\n### 模式修饰器\n\n模式修饰器（Schema Modifiers）允许在工具模式被使用前进行转换：\n\n```python\nfrom composio import schema_modifier\nfrom composio.types import Tool\n\n@schema_modifier(tools=[\"HACKERNEWS_GET_USER\"])\ndef modify_schema(tool: str, toolkit: str, schema: Tool) -> Tool:\n    schema[\"description\"] = \"Enhanced HackerNews user lookup\"\n    schema[\"parameters\"][\"properties\"][\"include_karma\"] = {\n        \"type\": \"boolean\",\n        \"description\": \"Include user karma in response\",\n        \"default\": True\n    }\n    return schema\n\n# 使用修饰器获取工具\ntools = composio.tools.get(\n    user_id=\"default\",\n    slug=\"HACKERNEWS_GET_USER\",\n    modifiers=[modify_schema]\n)\n```\n\n资料来源：[python/README.md]()\n\n### 执行修饰器\n\n执行修饰器允许在工具执行前和执行后进行拦截处理：\n\n```python\nfrom composio import before_execute, after_execute\n\n@before_execute(tools=[\"GITHUB_CREATE_ISSUE\"])\ndef validate_issue_params(context):\n    # 执行前验证参数\n    return context.params\n\n@after_execute(tools=[\"GITHUB_CREATE_ISSUE\"])\ndef process_issue_result(context):\n    # 执行后处理结果\n    return context.result\n```\n\n资料来源：[python/README.md]()\n\n### 修饰器类型系统\n\n```typescript\nexport type ProviderOptions<TProvider> =\n  TProvider extends BaseComposioProvider<infer TToolCollection, infer TTool, infer TMcpResponse>\n    ? TProvider extends BaseAgenticProvider<TToolCollection, TTool, TMcpResponse>\n      ? AgenticToolOptions\n      : ToolOptions\n    : never;\n```\n\n资料来源：[ts/packages/core/src/types/modifiers.types.ts]()\n\n## 提供者系统\n\n### 提供者架构\n\nComposio SDK 使用提供者模式来适配不同的 AI 框架：\n\n```mermaid\nclassDiagram\n    class BaseComposioProvider {\n        <<abstract>>\n        +wrapTool()\n        +getTools()\n        +getToolBySlug()\n    }\n    class BaseNonAgenticProvider {\n        +wrapTool(toolSlug, tool, modifiers?)\n    }\n    class BaseAgenticProvider {\n        +wrapTool(toolSlug, tool, modifiers?)\n        +create_mcp_server()\n    }\n    class OpenAIProvider {\n        +wrapTool()\n    }\n    class ClaudeAgentSDKProvider {\n        +wrapTool()\n        +create_mcp_server()\n    }\n    class GoogleProvider {\n        +wrapTool()\n    }\n    \n    BaseComposioProvider <|-- BaseNonAgenticProvider\n    BaseComposioProvider <|-- BaseAgenticProvider\n    BaseNonAgenticProvider <|-- OpenAIProvider\n    BaseAgenticProvider <|-- ClaudeAgentSDKProvider\n    BaseAgenticProvider <|-- GoogleProvider\n```\n\n### OpenAI Provider\n\n标准的 OpenAI 提供者实现：\n\n```python\nfrom composio import Composio\nfrom composio.providers.openai import OpenAIProvider\n\ncomposio = Composio(provider=OpenAIProvider())\ntools = composio.tools.get(user_id=\"default\", toolkits=[\"github\"])\n```\n\n资料来源：[python/README.md]()\n\n### Claude Agent SDK Provider\n\n与 Claude Code Agents SDK 的集成：\n\n```python\nimport asyncio\nfrom composio import Composio\nfrom composio_claude_agent_sdk import ClaudeAgentSDKProvider\nfrom claude_agent_sdk import query, ClaudeAgentOptions\n\ncomposio = Composio(provider=ClaudeAgentSDKProvider())\n\nasync def main():\n    tools = composio.tools.get(\n        user_id=\"default\",\n        toolkits=[\"gmail\"],\n    )\n    mcp_server = composio.provider.create_mcp_server(tools)\n    \n    async for message in query(\n        prompt=\"Fetch my latest email from Gmail\",\n        options=ClaudeAgentOptions(\n            mcp_servers={\"composio\": mcp_server}\n        )\n    ):\n        print(message)\n```\n\n资料来源：[python/providers/claude_agent_sdk/README.md]()\n\n### Google Provider\n\n与 Google AI 的集成示例：\n\n```python\nfrom composio import ComposioToolset\nfrom composio.google import App\n\ntoolset = ComposioToolset()\nactions = toolset.get_tools(apps=[App.GITHUB])\n\ntask = \"Star a repo composiohq/composio on GitHub\"\nresponse = chat.send_message(task)\nresult = toolset.handle_response(response)\n```\n\n资料来源：[python/providers/google/README.md]()\n\n### 创建自定义提供者\n\n```typescript\n// 非代理类型提供者\nclass NonAgenticProvider extends BaseNonAgenticProvider {\n  async wrapTool(toolSlug: string, tool: Tool, modifiers?: SchemaModifiersParams): Promise<Tool>;\n  async getTools(modifiers?: SchemaModifiersParams): Promise<Tool[]>;\n  async getToolBySlug(slug: string, modifiers?: SchemaModifiersParams): Promise<Tool>;\n}\n\n// 代理类型提供者\nclass AgenticProvider extends BaseAgenticProvider {\n  async wrapTool(toolSlug: string, tool: Tool, modifiers?: ModifiersParams): Promise<Tool>;\n  async getTools(modifiers?: ModifiersParams): Promise<Tool[]>;\n  async create_mcp_server(tools: Tool[]): Promise<any>;\n}\n```\n\n资料来源：[ts/packages/providers/README.md]()\n\n## 本地工具系统\n\n### 本地工具注册表\n\nComposio CLI 本地工具系统使用注册表模式管理本地可执行工具：\n\n```typescript\nexport const getAllLocalToolkitSlugs = (\n  options: { readonly declarations?: ReadonlyArray<LocalToolkitDeclaration> } = {}\n): ReadonlyArray<string> =>\n  declarationsFor(options.declarations).map(toolkit => toolkit.slug.toLowerCase());\n```\n\n### 本地工具标识\n\n本地工具使用特殊前缀进行标识：\n\n```typescript\nconst LOCAL_TOOL_PREFIX = \"LOCAL_TOOL_\";\n\nconst normalizeLocalToolSlug = (\n  toolSlug: string,\n  toolkitSlug?: string\n): string =>\n  toolkitSlug\n    ? `${LOCAL_TOOL_PREFIX}${normalizeSegment(toolkitSlug)}_${normalizeSegment(toolSlug)}`\n    : `${LOCAL_TOOL_PREFIX}${normalizeSegment(toolSlug)}`;\n```\n\n### 本地工具过滤\n\n```typescript\nconst toolkitMatchesFilter = (\n  toolkit: LocalToolkitDeclaration,\n  requestedToolkits?: ReadonlyArray<string>\n): boolean => {\n  if (!requestedToolkits || requestedToolkits.length === 0) return true;\n  const requested = new Set(requestedToolkits.map(slug => slug.toLowerCase()));\n  return requested.has(toolkit.slug.toLowerCase());\n};\n```\n\n资料来源：[ts/packages/cli-local-tools/src/registry.ts]()\n\n## 工具包管理\n\n### 工具包发现命令\n\nCLI 提供了完整的工具包管理命令：\n\n```bash\n# 列出所有可用工具包\ncomposio toolkits list\n\n# 查看工具包详情\ncomposio toolkits info <toolkit-name>\n\n# 搜索工具包\ncomposio toolkits search <query>\n\n# 查看工具包版本\ncomposio toolkits version <toolkit-name>\n```\n\n资料来源：[ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts]()\n\n### 工具包索引创建\n\n```mermaid\ngraph LR\n    A[工具数据] --> B[groupByToolkits]\n    B --> C[Record.fromEntries]\n    C --> D[Record.mapEntries]\n    D --> E[ToolkitIndex]\n    \n    F[版本映射] --> D\n```\n\n工具包索引数据结构：\n\n```typescript\nexport type ToolkitIndexData = Simplify<{\n  slug: string;\n  version?: string;\n  typeableTools:\n    | { withTypes: false; value: Record<`${ToolkitName}_${string}`, ToolAsEnum> }\n    | { withTypes: true; value: Record<`${ToolkitName}_${string}`, Tool> };\n  triggerTypes: Record<`${ToolkitName}_${string}`, TriggerType>;\n}>;\n\nexport type ToolkitIndex = Record<ToolkitName, ToolkitIndexData>;\n```\n\n资料来源：[ts/packages/cli/src/generation/create-toolkit-index.ts]()\n\n## 认证与账户管理\n\n### 工具权限请求\n\n当执行需要认证的工具时，系统会启动权限请求流程：\n\n```typescript\nconst requestPermissionInBrowser = (params: {\n  readonly toolSlug: string;\n  readonly accountLabel?: string;\n}): Promise<PermissionDecision> =>\n  new Promise((resolve, reject) => {\n    const token = crypto.randomUUID();\n    // 启动 HTTP 服务器等待用户响应\n  });\n```\n\n权限选项包括：\n\n| 选项 | 说明 |\n|------|------|\n| Allow for this session | 本次会话内允许所有调用 |\n| Allow once | 仅允许本次调用 |\n| Deny | 拒绝本次调用 |\n\n资料来源：[ts/packages/cli/src/services/tool-permissions.ts]()\n\n### 账户链接\n\n```bash\n# 链接工具包账户\ncomposio link <toolkit>\n```\n\n## 项目初始化\n\n### 初始化流程\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant CLI\n    participant API\n    participant FileSystem\n    \n    User->>CLI: composio init\n    CLI->>API: 获取会话信息\n    API-->>CLI: 返回 API 密钥\n    CLI->>FileSystem: 创建 .env.local\n    FileSystem-->>CLI: 确认文件创建\n    CLI->>User: 显示成功消息\n```\n\n初始化过程会自动：\n\n1. 检测项目环境（TypeScript/Python）\n2. 创建本地环境文件 `.env.local`\n3. 配置项目 API 密钥\n4. 设置测试用户 ID\n\n```bash\ncomposio dev init\n```\n\n资料来源：[ts/packages/cli/src/commands/init.cmd.ts]()\n\n## SDK 文档生成\n\n### Python 文档生成器\n\n使用 Griffe 从 Python 源码提取文档：\n\n```bash\ncd python\nuv run --with griffe python scripts/generate-docs.py\n```\n\n生成流程：\n\n```mermaid\ngraph LR\n    A[composio/**/*.py] -->|griffe| B[结构化数据]\n    B -->|generate-docs.py| C[MDX 文件]\n    C --> D[docs/content/reference/sdk-reference/python/]\n```\n\n### 配置选项\n\n| 配置项 | 说明 |\n|--------|------|\n| `EXPECTED_CLASSES` | 类名到 Composio 属性的映射 |\n| `CLASS_MODULES` | 要搜索的模块列表 |\n| `DECORATORS_TO_DOCUMENT` | 要记录的装饰器列表 |\n\n资料来源：[python/scripts/README.md]()\n\n## 常见使用模式\n\n### 基础工具调用\n\n```python\nfrom composio import Composio\n\ncomposio = Composio()\n\n# 获取工具\ntools = composio.tools.get(\n    user_id=\"user123\",\n    toolkits=[\"github\"]\n)\n\n# 执行工具\nresult = composio.tools.execute(\n    tool_name=\"GITHUB_STAR_REPOSITORY\",\n    params={\n        \"owner\": \"composiohq\",\n        \"repo\": \"composio\"\n    }\n)\n```\n\n### 触发器使用\n\n```bash\n# 列出触发器\ncomposio triggers list <toolkit>\n\n# 查看触发器详情\ncomposio triggers info <trigger-slug>\n```\n\n### 开发调试\n\n```bash\n# 在 Playground 中执行\ncomposio dev playground-execute \"<slug>\" --user-id \"<user-id>\"\n\n# 查看工具日志\ncomposio dev logs tools <log_id>\n\n# 查看触发器日志\ncomposio dev logs triggers <log_id>\n```\n\n## 配置参考\n\n### 初始化参数\n\n| 参数 | 类型 | 默认值 | 说明 |\n|------|------|--------|------|\n| `api_key` | string | 必需 | Composio API 密钥 |\n| `base_url` | string | `https://api.composio.dev` | API 基础 URL |\n| `timeout` | int | 60 | 请求超时（秒） |\n| `max_retries` | int | 3 | 最大重试次数 |\n| `allow_tracking` | bool | True | 启用遥测 |\n| `file_download_dir` | string | `./downloads` | 下载目录 |\n| `provider` | Provider | OpenAIProvider | AI 提供者 |\n| `toolkit_versions` | dict | {} | 工具包版本映射 |\n\n### 环境变量\n\n| 变量名 | 说明 |\n|--------|------|\n| `COMPOSIO_API_KEY` | Composio API 密钥 |\n| `COMPOSIO_TEST_USER_ID` | 测试用户 ID |\n| `ANTHROPIC_API_KEY` | Claude API 密钥（使用 Claude Provider 时） |\n\n## 相关资源\n\n- [官方文档](https://docs.composio.dev)\n- [Discord 社区](https://discord.gg/composio)\n- [GitHub Issues](https://github.com/composio/composio/issues)\n\n---\n\n<a id='toolkits'></a>\n\n## 工具包系统\n\n### 相关页面\n\n相关主题：[自定义工具开发](#custom-tools), [TypeScript SDK 详解](#ts-sdk), [Python SDK 详解](#py-sdk)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/cli/src/services/command-hints.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/command-hints.ts)\n- [ts/packages/cli/src/generation/create-toolkit-index.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/generation/create-toolkit-index.ts)\n- [ts/packages/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli-local-tools/src/registry.ts)\n- [ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts)\n- [ts/packages/cli/src/effects/toolkit-version-overrides.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/effects/toolkit-version-overrides.ts)\n- [ts/packages/providers/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/packages/providers/README.md)\n</details>\n\n# 工具包系统\n\n## 概述\n\n工具包系统（Toolkit System）是 Composio 框架的核心组件之一，负责组织和封装一组相关的工具（Tools），供 AI Agent 在执行任务时调用。每个工具包代表一个功能领域，如 Gmail、Slack、GitHub 等，为 Agent 提供与外部服务交互的能力。\n\n工具包系统的主要职责包括：\n\n- **工具组织**：将相关工具归类到同一个工具包中，便于管理和发现\n- **版本管理**：支持同一工具包的多个版本，允许开发者使用特定版本或最新版本\n- **本地工具支持**：提供本地 CLI 工具包扩展，允许在本地环境中执行自定义工具\n- **权限管理**：为每个工具包的执行提供权限控制和确认机制\n\n## 架构设计\n\n### 核心组件关系\n\n```mermaid\ngraph TD\n    subgraph \"工具包系统架构\"\n        A[ToolkitIndex] --> B[ToolkitName]\n        A --> C[ToolIndex]\n        D[Tool] --> E[Action]\n        F[TriggerType] --> G[Trigger]\n        H[LocalToolkitDeclaration] --> I[LocalTool]\n    end\n    \n    subgraph \"提供者层\"\n        J[BaseComposioProvider] --> K[BaseAgenticProvider]\n        J --> L[NonAgenticProvider]\n        K --> M[SchemaModifiersParams]\n        L --> N[ToolOptions]\n    end\n```\n\n### 工具包索引结构\n\n工具包索引（ToolkitIndex）是一个 TypeScript 类型别名，定义为：\n\n```typescript\nexport type ToolkitIndex = Record<ToolkitName, ToolkitIndexData>;\n```\n\n`ToolkitIndexData` 包含以下字段：\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| `slug` | `string` | 工具包唯一标识符 |\n| `version` | `string \\| undefined` | 版本覆盖（仅当非 'latest' 时存在） |\n| `typeableTools` | `Record<${ToolkitName}_${string}, Tool>` | 工具集合（带类型或不带类型） |\n| `triggerTypes` | `Record<${ToolkitName}_${string}, TriggerType>` | 触发器类型集合 |\n\n资料来源：[ts/packages/cli/src/generation/create-toolkit-index.ts:1-18]()\n\n### 工具包索引创建流程\n\n```mermaid\nsequenceDiagram\n    participant Input as CreateToolkitIndexInput\n    participant Group as groupByToolkits\n    participant Map as Record.mapEntries\n    participant Output as ToolkitIndex\n    \n    Input->>Group: 原始工具数据\n    Group->>Group: 按工具包名称分组\n    Group->>Map: 分组后的数据\n    Map->>Map: 提取版本覆盖\n    Map->>Map: 处理类型化工具\n    Map->>Output: 最终索引结构\n```\n\n## 工具包类型\n\n### 远程工具包\n\n远程工具包（Remote Toolkits）是由 Composio 服务器托管的工具包，通过 API 获取工具定义和执行能力。\n\n**特性**：\n- 集中管理和更新\n- 支持版本控制\n- 可通过 CLI 命令查询和操作\n\n### 本地工具包\n\n本地工具包（Local Toolkits）是在本地环境中运行的工具包，允许开发者定义自定义工具直接在本地执行。\n\n**核心数据结构**：\n\n```typescript\ninterface LocalToolkitDeclaration {\n  slug: string;\n  name: string;\n  description: string;\n  platforms: ReadonlyArray<LocalCliPlatform>;\n  tools: ReadonlyArray<LocalToolDeclaration>;\n  setup?: LocalToolkitSetup;\n  source?: ToolkitSource;\n}\n```\n\n资料来源：[ts/packages/cli-local-tools/src/registry.ts:1-50]()\n\n**本地工具注册流程**：\n\n```mermaid\ngraph TD\n    A[LocalToolkitDeclaration] --> B{requestedToolkits存在?}\n    B -->|是| C[转为小写Set]\n    B -->|否| D[返回true]\n    C --> E{slug小写化}\n    E --> F{包含在requested中?}\n    F -->|是| D\n    F -->|否| G[返回false]\n```\n\n## 版本管理\n\n### 版本覆盖机制\n\n工具包版本覆盖允许开发者在配置中指定特定工具包的版本，而不是使用默认的最新版本。\n\n**配置格式**：\n\n```typescript\ntype ToolkitVersionOverrides = Map<Lowercase<string>, string>;\n```\n\n**版本分组逻辑**：\n\n```mermaid\ngraph LR\n    A[ToolkitVersionSpec] --> B{版本为latest?}\n    B -->|是| C[跳过]\n    B -->|否| D[添加到versionMap]\n    A --> E[groupByVersion]\n    E --> F[Map: version -> slugs[]]\n```\n\n**核心函数**：\n\n```typescript\nexport const buildVersionMapFromSpecs = (\n  specs: ReadonlyArray<ToolkitVersionSpec>\n): ToolkitVersionOverrides => {\n  const versionMap = new Map<Lowercase<string>, string>();\n  for (const spec of specs) {\n    if (spec.toolkitVersion !== 'latest') {\n      versionMap.set(spec.toolkitSlug, spec.toolkitVersion);\n    }\n  }\n  return versionMap;\n};\n```\n\n资料来源：[ts/packages/cli/src/effects/toolkit-version-overrides.ts:1-40]()\n\n### 版本验证\n\nComposio 提供了版本验证机制，确保指定的版本覆盖有效：\n\n- 验证工具包标识符是否正确\n- 检查指定版本是否存在\n- 对无效版本提供友好的错误提示\n\n## CLI 命令\n\n### 工具包发现命令\n\n`composio toolkits` 是工具包发现命令的入口点，支持以下子命令：\n\n| 命令 | 说明 |\n|------|------|\n| `toolkits list` | 列出所有可用的工具包 |\n| `toolkits info` | 显示特定工具包的详细信息 |\n| `toolkits search` | 搜索工具包 |\n| `toolkits version` | 管理工具包版本 |\n\n资料来源：[ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts:1-25]()\n\n### 命令示例\n\n```bash\n# 列出所有工具包\ncomposio tools list\n\n# 查看特定工具包信息\ncomposio tools info \"<slug>\"\n\n# 执行工具包中的工具\ncomposio execute \"<slug>\" -d '{}'\n\n# 获取工具执行模式\ncomposio execute \"<slug>\" --get-schema\n\n# 链接账户\ncomposio link <toolkit>\n```\n\n资料来源：[ts/packages/cli/src/services/command-hints.ts:1-50]()\n\n## 提供者集成\n\n### 提供者类型层次\n\n```mermaid\nclassDiagram\n    class BaseComposioProvider~TToolCollection, TTool, TMcpResponse~ {\n        <<abstract>>\n    }\n    class BaseAgenticProvider~TToolCollection, TTool, TMcpResponse~ {\n        <<abstract>>\n    }\n    class NonAgenticProvider {\n        ToolOptions\n    }\n    class AgenticProvider {\n        AgenticToolOptions\n    }\n    \n    BaseComposioProvider <|-- BaseAgenticProvider\n    BaseComposioProvider <|-- NonAgenticProvider\n    BaseAgenticProvider <|-- AgenticProvider\n```\n\n### 提供者选项类型\n\n```typescript\nexport type ProviderOptions<TProvider> =\n  TProvider extends BaseComposioProvider<infer TToolCollection, infer TTool, infer TMcpResponse>\n    ? TProvider extends BaseAgenticProvider<TToolCollection, TTool, TMcpResponse>\n      ? AgenticToolOptions\n      : ToolOptions\n    : never;\n```\n\n资料来源：[ts/packages/core/src/types/modifiers.types.ts:1-20]()\n\n### 创建自定义提供者\n\n开发者可以通过以下命令创建新的提供者：\n\n```bash\n# 创建非代理提供者\npnpm create:provider <provider-name>\n\n# 创建代理提供者\npnpm create:provider <provider-name> --agentic\n```\n\n**生成的文件结构**：\n\n```\n<provider-name>/\n├── src/\n│   └── index.ts      # 提供者实现\n├── package.json      # 包配置\n├── tsconfig.json     # TypeScript 配置\n├── tsup.config.ts    # 构建配置\n└── README.md         # 文档\n```\n\n**必需方法（非代理提供者）**：\n\n```typescript\nclass NonAgenticProvider extends BaseNonAgenticProvider {\n  async wrapTool(\n    toolSlug: string, \n    tool: Tool, \n    modifiers?: SchemaModifiersParams\n  ): Promise<Tool>;\n\n  async getTools(modifiers?: SchemaModifiersParams): Promise<Tool[]>;\n\n  async getToolBySlug(\n    slug: string, \n    modifiers?: SchemaModifiersParams\n  ): Promise<Tool>;\n}\n```\n\n**必需方法（代理提供者）**：\n\n```typescript\nclass AgenticProvider extends BaseAgenticProvider {\n  async wrapTool(\n    toolSlug: string, \n    tool: Tool, \n    modifiers?: ModifiersParams\n  ): Promise<Tool>;\n\n  async getTools(modifiers?: ModifiersParams): Promise<Tool[]>;\n}\n```\n\n资料来源：[ts/packages/providers/README.md:1-80]()\n\n## 本地工具配置\n\n### 本地工具元数据管理\n\n本地工具支持通过 `local_tools.json` 文件进行配置：\n\n```json\n{\n  \"toolkits\": {\n    \"<toolkit-slug>\": {\n      \"disabled\": false,\n      \"installation\": {\n        \"command\": \"npm install my-toolkit\"\n      }\n    }\n  },\n  \"tools\": {\n    \"<tool-slug>\": {\n      \"disabled\": false,\n      \"authenticated\": true,\n      \"installation\": {\n        \"command\": \"pip install my-tool\"\n      }\n    }\n  }\n}\n```\n\n### 工具包就绪状态检查\n\n```mermaid\ngraph TD\n    A[开始就绪检查] --> B{平台支持?}\n    B -->|否| C[status: unsupported]\n    B -->|是| D{工具包禁用?}\n    D -->|是| E[status: disabled]\n    D -->|否| F[检查工具状态]\n    F --> G{所有工具就绪?}\n    G -->|是| H[status: ready]\n    G -->|否| I[status: needs_setup]\n```\n\n**就绪状态类型**：\n\n| 状态 | 说明 | 可能原因 |\n|------|------|----------|\n| `ready` | 可用 | 所有依赖已安装 |\n| `disabled` | 已禁用 | 在配置中被禁用 |\n| `unsupported` | 不支持 | 当前平台不兼容 |\n| `needs_setup` | 需设置 | 部分工具未配置 |\n\n## 权限管理\n\n### 权限确认流程\n\n```mermaid\nsequenceDiagram\n    participant Agent as AI Agent\n    participant CLI as Composio CLI\n    participant Server as Permission Server\n    participant User as User\n    \n    Agent->>CLI: 请求执行工具\n    CLI->>Server: 发起权限请求\n    Server->>User: 显示确认页面\n    User->>Server: 选择操作\n    Server-->>CLI: 返回决策\n    CLI->>CLI: 执行或拒绝\n```\n\n### 权限决策选项\n\n| 选项 | 说明 | 有效期 |\n|------|------|--------|\n| Allow for this session | 允许 | 当前会话 |\n| Allow once | 允许一次 | 单次执行 |\n| Deny | 拒绝 | 单次执行 |\n\n资料来源：[ts/packages/cli/src/services/tool-permissions.ts:1-80]()\n\n## 数据模型\n\n### 工具包模型（Python）\n\n```python\nclass Toolkit(BaseModel, Generic[Tool]):\n    id: str\n    name: str\n    description: str\n    slug: str\n    logo: Optional[str]\n    version: str\n    categories: List[str]\n    tools: List[Tool]\n    enabled: bool = True\n    \n    def get_action(self, action_slug: str) -> Tool: ...\n    def filter_tools(self, actions: List[str]) -> \"Toolkit[Tool]\": ...\n```\n\n### 自定义工具模型\n\n```typescript\nexport interface CustomTool {\n  slug: string;\n  name: string;\n  description: string;\n  inputParams: Param[];\n  outputParams?: Param[];\n  execute: (input: Record<string, unknown>) => Promise<unknown>;\n}\n```\n\n## 工作流程\n\n### 工具包发现与执行流程\n\n```mermaid\ngraph TD\n    A[开发者请求工具包] --> B{本地工具包?}\n    B -->|是| C[查询本地注册表]\n    B -->|否| D[调用 API 获取]\n    C --> E{工具包存在?}\n    D --> F{工具包存在?}\n    E -->|否| G[返回错误]\n    F -->|否| G\n    E -->|是| H[验证版本]\n    F -->|是| H\n    H --> I{版本有效?}\n    I -->|否| J[返回警告]\n    I -->|是| K[加载工具定义]\n    K --> L[检查权限]\n    L --> M{权限已授权?}\n    M -->|否| N[请求确认]\n    M -->|是| O[执行工具]\n    N --> P[用户确认]\n    P -->|允许| O\n    P -->|拒绝| Q[终止]\n```\n\n## 配置参考\n\n### 环境变量配置\n\n| 变量 | 说明 | 示例 |\n|------|------|------|\n| `COMPOSIO_API_KEY` | API 密钥 | `sk-xxx` |\n| `COMPOSIO_TOOLKIT_VERSION_*` | 工具包版本覆盖 | `COMPOSIO_TOOLKIT_VERSION_GMAIL=20250901_00` |\n\n### CLI 配置选项\n\n| 选项 | 说明 | 默认值 |\n|------|------|--------|\n| `--compact` | 生成单模块文件 | false |\n| `--transpiled` | 生成转译后的 JS | 依赖输出目录 |\n| `--output-dir` | 输出目录 | node_modules/@composio/core |\n| `--toolkits` | 过滤工具包 | 全部 |\n\n## 最佳实践\n\n### 工具包开发\n\n1. **遵循命名约定**：工具包 slug 应使用小写字母和连字符\n2. **版本控制**：在 `package.json` 中指定版本范围\n3. **平台支持**：明确声明支持的平台列表\n4. **错误处理**：提供有意义的错误消息和恢复建议\n\n### 性能优化\n\n1. **按需加载**：使用工具包过滤避免加载全部工具\n2. **版本锁定**：在生产环境中使用固定版本而非 'latest'\n3. **本地缓存**：利用本地工具包减少网络请求\n\n## 相关资源\n\n- [自定义工具和工具包文档](https://github.com/ComposioHQ/composio/blob/main/docs/content/docs/toolkits/custom-tools-and-toolkits.mdx)\n- [工具包索引文档](https://github.com/ComposioHQ/composio/blob/main/docs/content/toolkits/index.mdx)\n- [CLI 工具命令参考](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts)\n- [版本覆盖机制](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/effects/toolkit-version-overrides.ts)\n\n---\n\n<a id='custom-tools'></a>\n\n## 自定义工具开发\n\n### 相关页面\n\n相关主题：[工具包系统](#toolkits), [MCP 协议集成](#mcp)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/core/src/models/CustomTools.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/CustomTools.ts)\n- [python/composio/core/models/custom_tools.py](https://github.com/ComposioHQ/composio/blob/main/python/composio/core/models/custom_tools.py)\n- [ts/examples/custom-tools/src/simple.ts](https://github.com/ComposioHQ/composio/blob/main/ts/examples/custom-tools/src/simple.ts)\n- [python/examples/custom_tools.py](https://github.com/ComposioHQ/composio/blob/main/python/examples/custom_tools.py)\n- [docs/content/docs/tools-direct/custom-tools.mdx](https://github.com/ComposioHQ/composio/blob/main/docs/content/docs/tools-direct/custom-tools.mdx)\n</details>\n\n# 自定义工具开发\n\n## 概述\n\n自定义工具（Custom Tools）允许开发者扩展 Composio 的工具生态系统，创建符合特定业务需求的专用工具。通过自定义工具接口，开发者可以定义工具的名称、描述、输入输出参数以及具体的执行逻辑，从而实现与外部系统或内部服务的集成。\n\nComposio 支持多种工具创建方式，包括基于函数的自定义工具、工具包（Toolkit）组合以及本地 CLI 工具集成。这种灵活性使得开发者能够根据不同的使用场景选择最合适的工具定义方式。\n\n## 核心概念\n\n### 自定义工具的数据结构\n\n自定义工具的核心模型包含以下关键属性：\n\n| 属性名 | 类型 | 描述 |\n|--------|------|------|\n| `name` | string | 工具的显示名称 |\n| `description` | string | 工具功能的详细描述 |\n| `slug` | string | 工具的唯一标识符 |\n| `inputParams` | InputParams | 工具的输入参数定义 |\n| `outputParams` | OutputParams | 工具的输出参数定义（可选） |\n| `execute` | ExecuteFunction | 工具的执行逻辑 |\n\n### 工具包（Toolkit）\n\n工具包是多个相关工具的集合，用于组织和管理具有相似功能或服务于同一目标的自定义工具。工具包提供了更高层次的抽象，便于批量处理和分类管理。\n\n## 架构设计\n\n### 工具执行流程\n\n```mermaid\ngraph TD\n    A[用户请求执行工具] --> B[验证输入参数]\n    B --> C{参数校验}\n    C -->|通过| D[权限检查]\n    C -->|失败| E[返回错误]\n    D --> F{权限状态}\n    F -->|已授权| G[执行工具逻辑]\n    F -->|需授权| H[请求权限]\n    H --> I{用户授权}\n    I -->|允许| G\n    I -->|拒绝| J[返回拒绝错误]\n    G --> K[返回执行结果]\n    K --> L[记录执行日志]\n```\n\n### 工具创建流程\n\n```mermaid\ngraph TD\n    A[定义工具元数据] --> B[创建工具实例]\n    B --> C[配置执行函数]\n    C --> D[注册到工具系统]\n    D --> E[可用性验证]\n    E --> F[工具已就绪]\n```\n\n## TypeScript 实现\n\n### 创建自定义工具\n\n在 TypeScript 中，使用 `createCustomTool` 函数创建自定义工具。该函数接受工具的唯一标识符（slug）和一个配置对象。\n\n```typescript\nimport { createCustomTool } from '@composio/core';\n\nconst myTool = createCustomTool({\n  slug: 'my-custom-tool',\n  name: 'My Custom Tool',\n  description: 'Executes custom logic based on provided parameters',\n  inputParams: {\n    param1: {\n      type: 'string',\n      description: 'First parameter',\n      required: true,\n    },\n    param2: {\n      type: 'number',\n      description: 'Second parameter',\n      required: false,\n      default: 42,\n    },\n  },\n  execute: async (params) => {\n    // 自定义执行逻辑\n    const result = await performOperation(params.param1, params.param2);\n    return result;\n  },\n});\n```\n\n### 创建自定义工具包\n\n使用 `createCustomToolkit` 函数将多个相关工具组合成一个工具包：\n\n```typescript\nimport { createCustomToolkit } from '@composio/core';\n\nconst myToolkit = createCustomToolkit('my-toolkit', {\n  name: 'My Custom Toolkit',\n  description: 'A collection of custom tools for my use case',\n  tools: [myTool, anotherTool, thirdTool],\n});\n```\n\n### 本地 CLI 工具\n\n对于需要本地执行的工具，Composio 提供了本地工具声明机制：\n\n```typescript\nimport { \n  LocalToolDeclaration,\n  LocalToolkitDeclaration,\n  executeLocalTool \n} from '@composio/cli-local-tools';\n\nconst localTool: LocalToolDeclaration = {\n  slug: 'local-command',\n  name: 'Local Command Tool',\n  description: 'Executes a local shell command',\n  inputParams: {\n    command: {\n      type: 'string',\n      description: 'The command to execute',\n      required: true,\n    },\n  },\n  execution: {\n    type: 'command',\n    command: async (params) => {\n      const { exec } = await import('child_process');\n      return new Promise((resolve, reject) => {\n        exec(params.command, (error, stdout, stderr) => {\n          if (error) reject(error);\n          else resolve({ stdout, stderr });\n        });\n      });\n    },\n  },\n};\n```\n\n本地工具支持多种执行类型，包括命令执行、脚本执行和函数执行。平台支持情况通过 `platforms` 属性进行配置。\n\n## Python 实现\n\n### 创建自定义工具\n\n在 Python 中，使用 `CustomTool` 类创建自定义工具：\n\n```python\nfrom composio import CustomTool, InputParam\n\nmy_tool = CustomTool(\n    name=\"my_custom_tool\",\n    description=\"Executes custom logic based on provided parameters\",\n    parameters={\n        \"param1\": InputParam(\n            type=\"string\",\n            description=\"First parameter\",\n            required=True\n        ),\n        \"param2\": InputParam(\n            type=\"number\",\n            description=\"Second parameter\",\n            required=False,\n            default=42\n        )\n    },\n    action=lambda params: perform_operation(\n        params[\"param1\"], \n        params.get(\"param2\", 42)\n    )\n)\n```\n\n### 创建自定义工具包\n\n使用 `CustomToolkit` 类组合多个工具：\n\n```python\nfrom composio import CustomToolkit\n\nmy_toolkit = CustomToolkit(\n    name=\"my_custom_toolkit\",\n    description=\"A collection of custom tools\",\n    tools=[my_tool, another_tool]\n)\n```\n\n### 异步执行支持\n\nPython 版本支持异步工具定义：\n\n```python\nimport asyncio\nfrom composio import CustomTool\n\nasync_tool = CustomTool(\n    name=\"async_tool\",\n    description=\"An asynchronous tool\",\n    parameters={\n        \"url\": InputParam(type=\"string\", description=\"URL to fetch\")\n    },\n    action=lambda params: asyncio.to_thread(fetch_data, params[\"url\"])\n)\n```\n\n## 输入参数配置\n\n### 参数类型\n\n| 类型 | 描述 | 适用场景 |\n|------|------|----------|\n| `string` | 字符串类型参数 | 文本输入、URL、标识符 |\n| `number` | 数值类型参数 | 数量、索引、阈值 |\n| `boolean` | 布尔类型参数 | 开关选项、标志位 |\n| `object` | 对象类型参数 | 复杂配置、嵌套数据 |\n| `array` | 数组类型参数 | 列表输入、多选项 |\n\n### 参数属性\n\n| 属性 | 类型 | 描述 |\n|------|------|------|\n| `type` | string | 参数的数据类型 |\n| `description` | string | 参数用途说明 |\n| `required` | boolean | 是否必填，默认 false |\n| `default` | any | 默认值 |\n| `enum` | array | 枚举可选值 |\n\n## 工具权限管理\n\nComposio 提供了工具权限验证机制，确保工具执行的安全性：\n\n```mermaid\nsequenceDiagram\n    participant Client\n    participant Composio\n    participant Tool\n    participant User\n    \n    Client->>Composio: 请求执行工具\n    Composio->>Tool: 验证权限\n    Tool-->>Composio: 需要授权\n    Composio->>User: 展示权限请求\n    User-->>Composio: 授权决策\n    alt 已授权\n        Composio->>Tool: 执行工具\n        Tool-->>Client: 返回结果\n    else 未授权\n        Composio-->>Client: 返回权限错误\n    end\n```\n\n权限请求支持三种模式：\n\n| 模式 | 描述 |\n|------|------|\n| 会话级授权 | 允许在当前会话中重复执行 |\n| 单次授权 | 仅允许本次执行 |\n| 拒绝 | 阻止本次执行 |\n\n## 工具发现与注册\n\n### 注册表机制\n\nComposio 维护一个工具注册表，用于管理所有可用的工具和工具包：\n\n| 函数 | 用途 |\n|------|------|\n| `getLocalToolkitDeclarations` | 获取本地工具包声明列表 |\n| `getLocalCustomToolkits` | 获取本地自定义工具包 |\n| `isLocalToolkitSlug` | 验证工具包标识符是否有效 |\n| `isLocalToolSlug` | 验证工具标识符是否有效 |\n\n### 工具过滤\n\n支持按工具包名称过滤工具：\n\n```typescript\nconst declarations = getLocalToolkitDeclarations({\n  toolkits: ['gmail', 'slack'],\n  currentPlatform: 'linux',\n});\n```\n\n## 最佳实践\n\n### 工具设计原则\n\n1. **单一职责**：每个工具应专注于完成一个特定任务\n2. **清晰的描述**：提供详尽的工具和参数描述，便于 AI 理解\n3. **适当的参数**：避免过多必填参数，提供合理的默认值\n4. **错误处理**：在执行函数中妥善处理异常情况\n5. **类型安全**：使用正确的参数类型并提供验证\n\n### 命名规范\n\n| 元素 | 规范 | 示例 |\n|------|------|------|\n| 工具名称 | 小写下划线分隔 | `fetch_user_data` |\n| 工具包名称 | 小写下划线分隔 | `user_management` |\n| 参数名称 | 小写下划线分隔 | `user_id` |\n| 枚举值 | 小写下划线分隔 | `status_active` |\n\n### 安全性考虑\n\n- 避免在工具描述中包含敏感信息\n- 对外部输入进行严格验证\n- 使用环境变量存储凭据而非硬编码\n- 实现最小权限原则\n\n## 示例项目\n\n### TypeScript 完整示例\n\n```typescript\nimport { createCustomTool, createCustomToolkit } from '@composio/core';\n\n// 定义数据获取工具\nconst fetchData = createCustomTool('fetch_data', {\n  name: 'Fetch Data',\n  description: '从指定源获取数据',\n  inputParams: {\n    source: {\n      type: 'string',\n      description: '数据源标识',\n      required: true,\n    },\n    format: {\n      type: 'string',\n      description: '返回格式 (json/xml)',\n      required: false,\n      default: 'json',\n    },\n  },\n  execute: async (params) => {\n    const response = await fetch(`${params.source}?format=${params.format}`);\n    return response.json();\n  },\n});\n\n// 定义数据处理工具\nconst processData = createCustomTool('process_data', {\n  name: 'Process Data',\n  description: '处理和分析数据',\n  inputParams: {\n    data: {\n      type: 'object',\n      description: '待处理的数据对象',\n      required: true,\n    },\n    operation: {\n      type: 'string',\n      description: '操作类型 (transform/filter/aggregate)',\n      required: true,\n    },\n  },\n  execute: async (params) => {\n    return applyOperation(params.data, params.operation);\n  },\n});\n\n// 创建工具包\nconst dataToolkit = createCustomToolkit('data_processing', {\n  name: 'Data Processing Toolkit',\n  description: '数据获取和处理工具集',\n  tools: [fetchData, processData],\n});\n```\n\n### Python 完整示例\n\n```python\nfrom composio import CustomTool, CustomToolkit, InputParam\n\n# 定义文件操作工具\nfile_tool = CustomTool(\n    name=\"file_operations\",\n    description=\"文件系统操作工具\",\n    parameters={\n        \"operation\": InputParam(\n            type=\"string\",\n            description=\"操作类型 (read/write/delete)\",\n            required=True,\n            enum=[\"read\", \"write\", \"delete\"]\n        ),\n        \"path\": InputParam(\n            type=\"string\",\n            description=\"文件路径\",\n            required=True\n        ),\n        \"content\": InputParam(\n            type=\"string\",\n            description=\"文件内容 (write操作时需要)\",\n            required=False\n        )\n    },\n    action=lambda params: execute_file_operation(\n        params[\"operation\"],\n        params[\"path\"],\n        params.get(\"content\")\n    )\n)\n\n# 创建工具包\nfile_toolkit = CustomToolkit(\n    name=\"file_operations_kit\",\n    description=\"文件系统操作工具集\",\n    tools=[file_tool]\n)\n```\n\n## 调试与测试\n\n### 本地工具诊断\n\nComposio CLI 提供了工具诊断命令：\n\n```bash\n# 检查工具就绪状态\ncomposio local-tools doctor --toolkits <toolkit-name>\n\n# 列出所有本地工具\ncomposio local-tools list --all-platforms\n```\n\n### 日志查看\n\n查看工具执行日志：\n\n```bash\n# 查看工具执行日志\ncomposio dev logs tools <log_id>\n\n# 查看触发器执行日志\ncomposio dev logs triggers <log_id>\n```\n\n## 集成与使用\n\n### 在代理中使用自定义工具\n\n```typescript\nimport { Composio } from '@composio/core';\n\nconst client = Composio();\n\n// 注册自定义工具包\nclient.register(myToolkit);\n\n// 获取配置好的代理\nconst agent = client.getAgent({\n  instruction: '使用我的自定义工具完成数据处理任务',\n});\n```\n\n### 配置本地工具元数据\n\n通过 `~/composio/local_tools.json` 配置文件自定义工具行为：\n\n```json\n{\n  \"toolkits\": {\n    \"my-toolkit\": {\n      \"disabled\": false,\n      \"installation\": {\n        \"command\": \"pip install my-toolkit-dependency\"\n      }\n    }\n  }\n}\n```\n\n## 相关资源\n\n- 官方文档：[Custom Tools Guide](https://docs.composio.dev/tools-direct/custom-tools)\n- TypeScript 示例：[ts/examples/custom-tools](https://github.com/ComposioHQ/composio/tree/main/ts/examples/custom-tools)\n- Python 示例：[python/examples/custom_tools.py](https://github.com/ComposioHQ/composio/blob/main/python/examples/custom_tools.py)\n- API 参考：[CustomTools.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/CustomTools.ts)\n\n---\n\n<a id='providers'></a>\n\n## AI 框架提供商集成\n\n### 相关页面\n\n相关主题：[TypeScript SDK 详解](#ts-sdk), [Python SDK 详解](#py-sdk), [MCP 协议集成](#mcp)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/providers/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/packages/providers/README.md)\n- [ts/packages/core/src/types/modifiers.types.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/types/modifiers.types.ts)\n- [ts/packages/cli/src/services/command-hints.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/command-hints.ts)\n- [ts/packages/cli/src/services/tool-permissions.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/tool-permissions.ts)\n- [ts/packages/cli/src/services/terminal-ui.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/terminal-ui.ts)\n- [ts/packages/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli-local-tools/src/registry.ts)\n</details>\n\n# AI 框架提供商集成\n\n## 概述\n\nAI 框架提供商（Provider）是 Composio 架构中的核心抽象层，负责将 Composio 的工具和功能与各类 AI 框架（如 OpenAI、Anthropic、LangChain 等）进行集成。提供商层作为中间件，封装了工具的获取、包装和执行逻辑，使开发者能够以统一的方式在不同的 AI 框架中使用 Composio 的工具集合。\n\nComposio 的提供商系统设计为可扩展的架构，支持两种类型的提供商：\n\n- **非代理型提供商（Non-Agentic Provider）**：适用于直接将工具集成到 AI 框架的场景\n- **代理型提供商（Agentic Provider）**：适用于需要更复杂代理行为和上下文管理的场景\n\n资料来源：[ts/packages/providers/README.md:1-30]()\n\n## 架构设计\n\n### 整体架构图\n\n```mermaid\ngraph TD\n    subgraph \"客户端层\"\n        User[用户应用]\n        CLI[Composio CLI]\n    end\n    \n    subgraph \"提供商层\"\n        OpenAIProv[OpenAI Provider]\n        AnthropicProv[Anthropic Provider]\n        LangChainProv[LangChain Provider]\n        CustomProv[自定义 Provider]\n    end\n    \n    subgraph \"核心层\"\n        BaseNonAgentic[BaseNonAgenticProvider]\n        BaseAgentic[BaseAgenticProvider]\n        BaseComposio[BaseComposioProvider]\n    end\n    \n    subgraph \"工具层\"\n        Tools[Composio 工具集]\n        Toolkits[工具包]\n        Triggers[触发器]\n    end\n    \n    User --> OpenAIProv\n    User --> AnthropicProv\n    User --> LangChainProv\n    CLI --> BaseAgentic\n    \n    OpenAIProv --> BaseNonAgentic\n    AnthropicProv --> BaseNonAgentic\n    LangChainProv --> BaseAgentic\n    CustomProv --> BaseComposio\n    \n    BaseNonAgentic --> Tools\n    BaseAgentic --> Tools\n    BaseComposio --> Tools\n```\n\n### 提供商继承体系\n\n```mermaid\ngraph LR\n    A[BaseComposioProvider] --> B[BaseAgenticProvider]\n    A --> C[BaseNonAgenticProvider]\n    B --> D[Agentic Provider 实现]\n    C --> E[Non-Agentic Provider 实现]\n```\n\n## 提供商类型系统\n\n### 类型层次结构\n\nComposio 使用 TypeScript 的条件类型系统来定义提供商的选项类型，确保类型安全性和正确的继承关系。\n\n```typescript\nexport type ProviderOptions<TProvider> =\n  TProvider extends BaseComposioProvider<infer TToolCollection, infer TTool, infer TMcpResponse>\n    ? TProvider extends BaseAgenticProvider<TToolCollection, TTool, TMcpResponse>\n      ? AgenticToolOptions\n      : ToolOptions\n    : never;\n```\n\n资料来源：[ts/packages/core/src/types/modifiers.types.ts:1-50]()\n\n### Schema 修饰器\n\n提供商支持通过 Schema 修饰器来修改工具的输入输出格式：\n\n```typescript\n_GET_REPOS', {\n  modifySchema: (context) => context.schema,\n  beforeExecute: (context) => context.params,\n  afterExecute: (context) => context.result\n});\n```\n\n## 非代理型提供商\n\n### 必需方法\n\n非代理型提供商必须实现以下接口：\n\n```typescript\nclass NonAgenticProvider extends BaseNonAgenticProvider {\n  // 使用 Schema 修饰器包装工具\n  async wrapTool(\n    toolSlug: string, \n    tool: Tool, \n    modifiers?: SchemaModifiersParams\n  ): Promise<Tool>;\n\n  // 获取所有可用工具\n  async getTools(modifiers?: SchemaModifiersParams): Promise<Tool[]>;\n\n  // 根据 slug 获取特定工具\n  async getToolBySlug(\n    slug: string, \n    modifiers?: SchemaModifiersParams\n  ): Promise<Tool>;\n}\n```\n\n### 使用场景\n\n非代理型提供商适用于以下场景：\n\n| 场景 | 描述 | 示例 |\n|------|------|------|\n| 简单工具调用 | 直接调用单个工具 | `provider.getToolBySlug('gmail_send_email')` |\n| 批量工具获取 | 获取多个工具进行处理 | `provider.getTools()` |\n| Schema 定制 | 修改工具的输入输出结构 | 使用 `modifiers` 参数 |\n\n资料来源：[ts/packages/providers/README.md:30-50]()\n\n## 代理型提供商\n\n### 必需方法\n\n代理型提供商需要实现更复杂的方法集：\n\n```typescript\nclass AgenticProvider extends BaseAgenticProvider {\n  // 使用修饰器包装工具\n  async wrapTool(\n    toolSlug: string, \n    tool: Tool, \n    modifiers?: ModifiersParams\n  ): Promise<Tool>;\n\n  // 获取所有可用工具\n  async getTools(modifiers?: ModifiersParams): Promise<Tool[]>;\n}\n```\n\n### 代理型特性\n\n代理型提供商相比非代理型增加了以下能力：\n\n- **上下文管理**：自动维护执行上下文和状态\n- **触发器支持**：集成 Composio 的触发器系统\n- **增强的错误处理**：基于 Effect 的错误处理机制\n\n资料来源：[ts/packages/providers/README.md:50-70]()\n\n## 创建新的提供商\n\n### 目录结构\n\n使用提供的脚本可以快速创建新的提供商：\n\n```bash\n# 创建非代理型提供商\npnpm run create-provider <your-provider-name>\n\n# 创建代理型提供商\npnpm run create-provider <your-provider-name> --agentic\n```\n\n脚本将创建以下目录结构：\n\n```\n<provider-name>/\n├── src/\n│   └── index.ts      # 提供商实现\n├── package.json      # 包配置\n├── tsconfig.json     # TypeScript 配置\n├── tsup.config.ts    # 构建配置\n└── README.md         # 提供商文档\n```\n\n### 文件模板\n\n**package.json 配置**\n\n```json\n{\n  \"name\": \"@composio/<provider-name>\",\n  \"version\": \"0.0.1\",\n  \"main\": \"./dist/index.js\",\n  \"types\": \"./dist/index.d.ts\"\n}\n```\n\n资料来源：[ts/packages/providers/README.md:10-30]()\n\n## 工具包装机制\n\n### 包装流程\n\n```mermaid\nsequenceDiagram\n    participant User as 用户\n    participant Provider as Provider\n    participant Modifiers as Schema修饰器\n    participant Tool as Composio Tool\n    \n    User->>Provider: wrapTool(toolSlug, tool, modifiers)\n    Provider->>Tool: 加载工具定义\n    Provider->>Modifiers: 应用 Schema 修改\n    Modifiers-->>Provider: 修改后的 Schema\n    Provider->>Tool: 应用 beforeExecute 修改\n    Provider-->>User: 包装后的工具\n```\n\n### 修饰器参数\n\n| 参数 | 类型 | 描述 |\n|------|------|------|\n| `modifySchema` | `Function` | 修改工具的输入输出 Schema |\n| `beforeExecute` | `Function` | 工具执行前的参数处理 |\n| `afterExecute` | `Function` | 工具执行后的结果处理 |\n\n## 与 CLI 的集成\n\n### 命令行接口\n\nComposio CLI 提供了完整的工具执行和查看命令：\n\n| 命令 | 描述 | 示例 |\n|------|------|------|\n| `composio execute` | 执行指定工具 | `composio execute \"gmail_send_email\" -d '{}'` |\n| `composio tools list` | 列出工具包中的工具 | `composio tools list \"gmail\"` |\n| `composio tools info` | 查看工具详细信息 | `composio tools info \"<slug>\"` |\n| `composio execute --get-schema` | 获取工具 Schema | `composio execute \"slack_send\" --get-schema` |\n\n资料来源：[ts/packages/cli/src/services/command-hints.ts:1-60]()\n\n### 工具权限系统\n\nCLI 提供了交互式权限确认机制：\n\n```mermaid\ngraph TD\n    A[执行工具请求] --> B{权限检查}\n    B -->|已授权| D[执行工具]\n    B -->|未授权| C[浏览器授权页面]\n    C --> E[用户决策]\n    E -->|Allow| F[允许本次会话]\n    E -->|Allow Once| G[仅本次允许]\n    E -->|Deny| H[拒绝执行]\n```\n\n权限页面提供了三个选项：\n\n- **Allow for this session**：当前会话内允许所有调用\n- **Allow once**：仅允许本次调用\n- **Deny**：拒绝本次调用\n\n资料来源：[ts/packages/cli/src/services/tool-permissions.ts:1-50]()\n\n## 本地工具集成\n\n### 注册表架构\n\n本地工具通过注册表系统进行管理，与提供商架构协同工作：\n\n```mermaid\ngraph TD\n    subgraph \"本地工具注册表\"\n        Decl[工具声明]\n        Toolkit[工具包声明]\n        Platform[平台标识]\n    end\n    \n    Decl --> Toolkit\n    Toolkit --> Platform\n```\n\n### 工具匹配逻辑\n\n```typescript\nconst toolkitMatchesFilter = (\n  toolkit: LocalToolkitDeclaration,\n  requestedToolkits?: ReadonlyArray<string>\n): boolean => {\n  if (!requestedToolkits || requestedToolkits.length === 0) return true;\n  const requested = new Set(requestedToolkits.map(slug => slug.toLowerCase()));\n  return requested.has(toolkit.slug.toLowerCase());\n};\n```\n\n本地工具 slug 格式为：`LOCAL_TOOL_PREFIX + toolkitSlug + _ + toolSlug`\n\n资料来源：[ts/packages/cli-local-tools/src/registry.ts:1-80]()\n\n### 平台支持\n\n工具可以指定支持的平台集合：\n\n```typescript\nconst descriptionWithPlatform = (\n  description: string,\n  platforms: ReadonlyArray<LocalCliPlatform>\n): string => `${description}\\n\\nLocal CLI platforms: ${formatSupportedPlatforms(platforms)}.`;\n```\n\n## 工具包版本管理\n\n### 版本覆盖机制\n\nComposio 支持对工具包进行版本控制：\n\n```typescript\nexport const groupByVersion = (\n  specs: ReadonlyArray<ToolkitVersionSpec>\n): Map<string, Lowercase<string>[]> => {\n  const grouped = new Map<string, Lowercase<string>[]>();\n  for (const spec of specs) {\n    const existing = grouped.get(spec.toolkitVersion);\n    if (existing) {\n      existing.push(spec.toolkitSlug);\n    } else {\n      grouped.set(spec.toolkitVersion, [spec.toolkitSlug]);\n    }\n  }\n  return grouped;\n};\n```\n\n### 版本规范处理\n\n| 场景 | 行为 |\n|------|------|\n| 指定版本号 | 如 `20250901_00` |\n| latest | 使用最新版本 |\n| 混合规范 | 按版本分组处理 |\n\n版本映射仅包含非 `latest` 的版本规范作为覆盖项。\n\n资料来源：[ts/packages/core/src/types/modifiers.types.ts:1-50]()\n\n## 终端 UI 服务\n\n### 日志级别\n\nCLI 提供结构化的日志输出：\n\n| 方法 | 用途 | 输出符号 |\n|------|------|----------|\n| `ui.log.info` | 信息日志 | 蓝色标记 |\n| `ui.log.success` | 成功日志 | 绿色标记 |\n| `ui.log.warn` | 警告日志 | 黄色标记 |\n| `ui.log.error` | 错误日志 | 红色标记 |\n| `ui.log.step` | 步骤日志 | 绿色步骤标记 |\n\n```typescript\nreadonly log: {\n  readonly info: (message: string) => Effect.Effect<void>;\n  readonly success: (message: string) => Effect.Effect<void>;\n  readonly warn: (message: string) => Effect.Effect<void>;\n  readonly error: (message: string) => Effect.Effect<void>;\n  readonly step: (message: string) => Effect.Effect<void>;\n};\n```\n\n### 交互式选择\n\n```typescript\nselect: (\n  message: string,\n  options: ReadonlyArray<{ value: unknown; label: string; hint?: string }>\n) => Effect.Effect<unknown>\n```\n\n支持用户从列表中选择选项，并在非交互模式下返回默认值。\n\n资料来源：[ts/packages/cli/src/services/terminal-ui.ts:1-80]()\n\n## 错误处理机制\n\n### 错误捕获流程\n\n```mermaid\ngraph TD\n    A[Effect 执行] --> B{Cause 分析}\n    B -->|emptyCase| D[返回空错误数组]\n    B -->|dieCase| E[解析未知错误]\n    B -->|failCase| F[解析 Effect 错误]\n    B -->|interruptCase| G[忽略中断]\n    B -->|parallelCase| H[合并并行错误]\n    B -->|sequentialCase| I[合并顺序错误]\n```\n\n### 错误解析\n\n```typescript\nexport const captureErrorsFrom = <E>(cause: Cause<E>): readonly PrettyError[] =>\n  reduceWithContext(cause, undefined, {\n    emptyCase: (): readonly PrettyError[] => [],\n    dieCase: (_, unknownError) => [parseError(unknownError)],\n    failCase: (_, error) => [parseError(error)],\n    interruptCase: () => [],\n    parallelCase: (_, l, r) => [...l, ...r],\n    sequentialCase: (_, l, r) => [...l, ...r],\n  });\n```\n\n## 最佳实践\n\n### 1. 扩展 BaseProvider\n\n始终从对应的基类继承以确保类型安全性和功能完整性。\n\n### 2. 实现必需方法\n\n确保所有必需方法都正确实现，包括参数验证和错误处理。\n\n### 3. 使用 Schema 修饰器\n\n通过 `modifySchema`、`beforeExecute`、`afterExecute` 实现工具的自定义行为。\n\n### 4. 类型脚本生成\n\n对于需要类型提示的场景，使用 `composio generate ts` 命令生成完整的 TypeScript 类型定义。\n\n### 5. 权限管理\n\n集成时注意工具权限系统，确保用户能够正确授权工具执行。\n\n## 总结\n\nAI 框架提供商集成是 Composio 连接各类 AI 框架的桥梁，通过统一的抽象层，开发者可以轻松地将 Composio 的工具能力集成到 OpenAI、Anthropic、LangChain 等主流 AI 框架中。提供商系统的可扩展设计允许开发者创建自定义提供商以满足特定需求，同时保持与现有系统的高度兼容性。\n\n---\n\n<a id='mcp'></a>\n\n## MCP 协议集成\n\n### 相关页面\n\n相关主题：[AI 框架提供商集成](#providers), [工具包系统](#toolkits)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/core/src/models/MCP.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/MCP.ts)\n- [python/composio/core/models/mcp.py](https://github.com/ComposioHQ/composio/blob/main/python/composio/core/models/mcp.py)\n- [ts/examples/mcp/src/index.ts](https://github.com/ComposioHQ/composio/blob/main/ts/examples/mcp/src/index.ts)\n- [python/examples/mcp.py](https://github.com/ComposioHQ/composio/blob/main/python/examples/mcp.py)\n- [docs/content/docs/single-toolkit-mcp.mdx](https://github.com/ComposioHQ/composio/blob/main/docs/content/docs/single-toolkit-mcp.mdx)\n- [docs/content/reference/api-reference/mcp/index.mdx](https://github.com/ComposioHQ/composio/blob/main/docs/content/reference/api-reference/mcp/index.mdx)\n</details>\n\n# MCP 协议集成\n\nMCP（Model Context Protocol）协议集成是 Composio 框架的核心功能之一，它为 AI 模型提供了标准化的工具调用和上下文管理能力。通过 MCP 协议，Composio 能够将各种第三方工具和服务桥接到 AI 代理的运行环境中，实现跨平台、跨服务的统一工具调用体验。\n\n## 核心概念\n\n### 什么是 MCP 协议\n\nMCP 是一种专为 AI 模型设计的通信协议，它定义了 AI 模型与外部工具之间交互的标准方式。该协议允许 AI 模型通过统一的接口发现、调用和管理各种工具，同时保持类型安全和参数验证能力。\n\nComposio 的 MCP 集成层负责将框架内的工具系统转换为 MCP 兼容的格式，使任何支持 MCP 协议的 AI 客户端都能直接使用 Composio 提供的全部工具能力。\n\n### 架构定位\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                        AI 客户端                             │\n│              (Claude Desktop, Cursor, etc.)                  │\n└─────────────────────┬───────────────────────────────────────┘\n                      │ MCP 协议\n                      ▼\n┌─────────────────────────────────────────────────────────────┐\n│                    Composio MCP 服务器                       │\n│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │\n│  │  工具发现    │  │  参数验证    │  │   执行引擎          │  │\n│  └─────────────┘  └─────────────┘  └─────────────────────┘  │\n└─────────────────────┬───────────────────────────────────────┘\n                      │ 内部 API\n                      ▼\n┌─────────────────────────────────────────────────────────────┐\n│                    Composio 工具生态                         │\n│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────────┐   │\n│  │ Gmail   │ │ Slack   │ │ Notion  │ │  300+ 更多工具   │   │\n│  └─────────┘ └─────────┘ └─────────┘ └─────────────────┘   │\n└─────────────────────────────────────────────────────────────┘\n```\n\n## 数据模型\n\n### TypeScript 实现\n\nComposio 的 TypeScript MCP 模型定义在 `ts/packages/core/src/models/MCP.ts` 中，提供了完整的类型定义和接口规范。\n\n| 类/接口 | 用途 | 关键属性 |\n|---------|------|----------|\n| `MCPClient` | MCP 协议客户端封装 | `connection`, `tools`, `requests` |\n| `MCPServer` | MCP 协议服务端实现 | `port`, `host`, `handlers` |\n| `MCPTool` | MCP 工具表示 | `name`, `description`, `inputSchema`, `outputSchema` |\n| `MCPRequest` | 工具调用请求 | `id`, `tool`, `params`, `timestamp` |\n| `MCPResponse` | 工具调用响应 | `id`, `result`, `error`, `duration` |\n\n### Python 实现\n\nPython 端的 MCP 模型位于 `python/composio/core/models/mcp.py`，采用 dataclass 风格的类型定义，与 TypeScript 版本保持功能对齐。\n\n| 类/接口 | 用途 | 关键属性 |\n|---------|------|----------|\n| `MCPClient` | Python MCP 客户端 | `connection`, `tools`, `callbacks` |\n| `MCPServer` | Python MCP 服务器 | `host`, `port`, `routes` |\n| `MCPTool` | Python 工具定义 | `name`, `description`, `input_schema`, `output_schema` |\n| `MCPRequest` | Python 请求对象 | `id`, `method`, `params`, `jsonrpc_version` |\n\n## 工作流程\n\n### 工具发现流程\n\n当 AI 客户端连接到 Composio MCP 服务器时，系统按以下流程完成工具发现：\n\n```mermaid\nsequenceDiagram\n    participant Client as AI 客户端\n    participant Server as MCP 服务器\n    participant Registry as 工具注册表\n    participant Toolkit as 工具包\n\n    Client->>Server: 建立 MCP 连接\n    Server->>Registry: 查询可用工具\n    Registry->>Toolkit: 加载工具包\n    Toolkit-->>Registry: 返回工具列表\n    Registry-->>Server: 返回合并的工具清单\n    Server-->>Client: 发送 tools/list 响应\n    Client->>Server: 发起工具调用请求\n    Server->>Toolkit: 调用目标工具\n    Toolkit-->>Server: 返回执行结果\n    Server-->>Client: 发送工具响应\n```\n\n### 工具执行流程\n\n```mermaid\ngraph TD\n    A[接收 MCP 请求] --> B{验证请求格式}\n    B -->|格式错误| C[返回 JSON-RPC 错误]\n    B -->|格式正确| D{验证工具存在}\n    D -->|工具不存在| E[返回 -32601 错误]\n    D -->|工具存在| F{验证参数}\n    F -->|参数无效| G[返回参数验证错误]\n    F -->|参数有效| H[执行工具逻辑]\n    H --> I[捕获执行异常]\n    I -->|有异常| J[返回错误响应]\n    I -->|正常执行| K[返回成功结果]\n```\n\n## 使用方式\n\n### TypeScript 示例\n\n在 `ts/examples/mcp/src/index.ts` 中提供了完整的使用示例：\n\n```typescript\nimport { Composio } from \"@composio/core\";\nimport { MCPServer } from \"@composio/core/mcp\";\n\nasync function main() {\n  const client = new Composio();\n  \n  // 创建 MCP 服务器\n  const server = new MCPServer({\n    port: 3000,\n    host: \"localhost\"\n  });\n\n  // 注册工具\n  await server.registerTools(await client.getTools());\n\n  // 启动服务器\n  await server.start();\n  console.log(\"MCP 服务器运行在 http://localhost:3000\");\n}\n\nmain();\n```\n\n### Python 示例\n\n`python/examples/mcp.py` 展示了 Python 环境下的使用方式：\n\n```python\nfrom composio import Composio\nfrom composio.mcp import MCPServer\n\ndef main():\n    client = Composio()\n    \n    # 创建 MCP 服务器实例\n    server = MCPServer(\n        host=\"localhost\",\n        port=3000\n    )\n    \n    # 注册可用工具\n    server.register_tools(client.get_tools())\n    \n    # 启动服务\n    server.start()\n    print(\"MCP 服务器已启动\")\n\nif __name__ == \"__main__\":\n    main()\n```\n\n## 单工具包 MCP 模式\n\nComposio 支持将单个工具包暴露为独立的 MCP 服务，这种模式称为 `single-toolkit-mcp`。适用于需要隔离权限或简化配置的部署场景。\n\n```mermaid\ngraph LR\n    A[AI 客户端] -->|MCP| B[单一工具包 MCP 服务器]\n    B --> C[指定工具包]\n    C --> D[该工具包下的所有工具]\n```\n\n配置示例：\n\n```yaml\n# 单工具包 MCP 配置\nmcp:\n  mode: single-toolkit\n  toolkit: gmail\n  tools:\n    - send_email\n    - read_emails\n```\n\n## API 参考\n\n### 核心类\n\n#### MCPServer\n\n| 参数 | 类型 | 必需 | 默认值 | 说明 |\n|------|------|------|--------|------|\n| `host` | `string` | 是 | - | 服务器监听地址 |\n| `port` | `number` | 是 | - | 服务器监听端口 |\n| `tools` | `MCPTool[]` | 否 | `[]` | 初始加载的工具列表 |\n| `auth` | `AuthConfig` | 否 | - | 认证配置 |\n\n#### MCPTool\n\n| 参数 | 类型 | 必需 | 说明 |\n|------|------|------|------|\n| `name` | `string` | 是 | 工具唯一标识 |\n| `description` | `string` | 是 | 工具功能描述 |\n| `inputSchema` | `JSONSchema` | 是 | 输入参数模式 |\n| `outputSchema` | `JSONSchema` | 否 | 输出结果模式 |\n| `handler` | `Function` | 是 | 工具执行函数 |\n\n### JSON-RPC 接口\n\nMCP 协议基于 JSON-RPC 2.0 规范实现，支持以下标准方法：\n\n| 方法名 | 用途 | 请求参数 | 响应类型 |\n|--------|------|----------|----------|\n| `tools/list` | 列出所有可用工具 | `{}` | `ToolListResponse` |\n| `tools/call` | 调用指定工具 | `ToolCallRequest` | `ToolCallResponse` |\n| `tools/schema` | 获取工具参数模式 | `{ name: string }` | `SchemaResponse` |\n\n## 配置选项\n\n### 服务端配置\n\n| 配置项 | 类型 | 说明 | 可选值 |\n|--------|------|------|--------|\n| `strict_mode` | `boolean` | 启用严格参数验证 | `true` / `false` |\n| `timeout` | `number` | 工具调用超时时间(毫秒) | 默认 `30000` |\n| `rate_limit` | `RateLimitConfig` | 请求速率限制 | - |\n| `cors` | `CORSConfig` | 跨域资源共享配置 | - |\n\n### 客户端配置\n\n| 配置项 | 类型 | 说明 |\n|--------|------|------|\n| `server_url` | `string` | MCP 服务器地址 |\n| `api_key` | `string` | API 认证密钥 |\n| `timeout` | `number` | 请求超时时间 |\n| `retries` | `number` | 失败重试次数 |\n\n## 错误处理\n\nMCP 协议定义了标准化的错误码体系：\n\n| 错误码 | 名称 | 说明 |\n|--------|------|------|\n| `-32700` | Parse Error | JSON 解析失败 |\n| `-32600` | Invalid Request | 无效的请求格式 |\n| `-32601` | Method Not Found | 方法不存在 |\n| `-32602` | Invalid Params | 参数无效 |\n| `-32603` | Internal Error | 服务器内部错误 |\n| `-32000` | Tool Execution Error | 工具执行失败 |\n\n## 与主流 AI 客户端集成\n\n### Claude Desktop\n\n在 `~/.config/claude-desktop/claude_desktop_config.json` 中添加配置：\n\n```json\n{\n  \"mcpServers\": {\n    \"composio\": {\n      \"command\": \"npx\",\n      \"args\": [\"@composio/core\", \"mcp\", \"--port\", \"8080\"]\n    }\n  }\n}\n```\n\n### Cursor IDE\n\n在 Cursor 设置中配置 MCP 服务器地址为 `http://localhost:8080` 即可。\n\n## 最佳实践\n\n### 性能优化\n\n1. **工具分页加载**：大型工具集建议使用分页加载，避免首次连接超时\n2. **结果缓存**：对频繁调用的工具启用结果缓存，减少重复执行\n3. **连接复用**：保持长连接以减少握手开销\n\n### 安全建议\n\n1. **参数验证**：始终启用 `strict_mode` 进行参数校验\n2. **密钥管理**：通过环境变量而非硬编码方式配置 API 密钥\n3. **权限隔离**：生产环境建议使用单工具包模式限制暴露范围\n\n## 相关文档\n\n- [单一工具包 MCP 文档](docs/content/docs/single-toolkit-mcp.mdx)\n- [MCP API 参考](docs/content/reference/api-reference/mcp/index.mdx)\n- [Composio 核心概念](../getting-started/concepts.md)\n\n---\n\n<a id='cli'></a>\n\n## CLI 命令行工具\n\n### 相关页面\n\n相关主题：[工具包系统](#toolkits)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/cli/src/commands/root-help.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/root-help.ts)\n- [ts/packages/cli/src/services/tool-permissions.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/tool-permissions.ts)\n- [ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts)\n- [ts/packages/cli/src/commands/init.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/init.cmd.ts)\n- [ts/packages/cli/src/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/cli-local-tools/src/registry.ts)\n- [ts/packages/cli/src/commands/local-tools/commands/local-tools.configure.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/local-tools/commands/local-tools.configure.cmd.ts)\n- [ts/packages/cli/src/commands/tools/tools.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/tools/tools.cmd.ts)\n- [ts/packages/cli/src/commands/logs-cmd/logs.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/logs-cmd/logs.cmd.ts)\n- [ts/packages/cli/src/services/command-hints.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/command-hints.ts)\n- [ts/packages/cli/src/generation/create-toolkit-index.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/generation/create-toolkit-index.ts)\n</details>\n\n# CLI 命令行工具\n\nComposio CLI 是 Composio 平台提供的命令行界面工具，为开发者提供了一套完整的命令行接口，用于工具发现、执行、日志查看、项目初始化等操作。CLI 基于 TypeScript/Effect 框架开发，提供了丰富的交互式体验和灵活的扩展机制。\n\n## 架构概览\n\nComposio CLI 采用模块化架构设计，核心组件包括命令解析层、服务层和数据层。整个系统以 Effect 函数式编程库为基础，实现了声明式的命令定义和错误处理。\n\n```mermaid\ngraph TD\n    A[CLI 入口] --> B[命令路由层]\n    B --> C[toolkits 命令组]\n    B --> D[tools 命令组]\n    B --> E[triggers 命令组]\n    B --> F[logs 命令组]\n    B --> G[local-tools 命令组]\n    B --> H[init 命令]\n    \n    C --> I[list - 列出工具包]\n    C --> J[info - 工具包详情]\n    C --> K[search - 搜索工具包]\n    C --> L[version - 版本信息]\n    \n    G --> M[list - 列出本地工具]\n    G --> N[configure - 配置本地工具]\n    G --> O[doctor - 诊断检查]\n```\n\n## 核心命令结构\n\n### 命令组织方式\n\nCLI 使用 Effect 框架的 Command 模块进行命令定义，每个命令都是一个独立的 Effect 对象，通过组合子命令形成树状结构。\n\n```typescript\nexport const toolkitsCmd = Command.make('toolkits').pipe(\n  Command.withDescription('Discover and inspect Composio toolkits.'),\n  Command.withSubcommands([\n    toolkitsCmd$List,\n    toolkitsCmd$Info,\n    toolkitsCmd$Search,\n    toolkitsCmd$Version,\n  ])\n);\n```\n\n资料来源：[ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts:14-23]()\n\n### 根命令层级\n\n| 命令组 | 功能描述 | 子命令 |\n|--------|----------|--------|\n| `toolkits` | 发现和检查 Composio 工具包 | list, info, search, version |\n| `tools` | 工具浏览和详情查看 | list, info |\n| `triggers` | 触发器相关操作 | list, info |\n| `connected-accounts` | 账户连接管理 | link, list, remove |\n| `logs` | 日志查看 | tools, triggers |\n| `local-tools` | 本地工具管理 | list, configure, doctor |\n| `dev` | 开发调试命令 | init, playground-execute |\n| `execute` | 执行工具 | - |\n\n资料来源：[ts/packages/cli/src/commands/tools/tools.cmd.ts:3-10]()\n\n## 全局选项与帮助系统\n\n### 全局 Flags\n\nCLI 提供了一系列全局选项，用于控制命令行为：\n\n| Flag | 说明 | 可用模式 |\n|------|------|----------|\n| `-h, --help [mode]` | 显示帮助信息 | simple, default, full |\n| `--version` | 显示 CLI 版本 | - |\n| `--install-skill [skill-name]` | 手动安装 composio skill | claude, codex, openclaw |\n\n资料来源：[ts/packages/cli/src/commands/root-help.ts:1-15]()\n\n### 帮助级别解析\n\n帮助系统支持三种显示模式，通过 `parseHelpLevel` 函数进行解析：\n\n```typescript\nconst parseHelpLevel = (token?: string): HelpLevel | undefined => {\n  if (!token) return undefined;\n  if (token === 'simple') return 'simple';\n  if (token === 'default') return 'default';\n  if (token === 'verbose') return 'full';\n  return HELP_LEVELS.find(level => level === token);\n};\n```\n\n帮助信息支持尾随参数传递，例如 `composio command --help simple` 会被正确解析为显示简化帮助。\n\n资料来源：[ts/packages/cli/src/commands/root-help.ts:1-100]()\n\n## 工具权限管理\n\n### 权限请求流程\n\n当 CLI 执行需要授权的工具时，会启动一个本地 HTTP 服务器，显示浏览器内嵌的权限请求页面。\n\n```mermaid\nsequenceDiagram\n    用户执行工具 --> CLI: 请求权限\n    CLI --> HTTP服务器: 启动本地服务\n    HTTP服务器 --> 用户浏览器: 显示权限页面\n    用户 --> 浏览器: 选择 Allow/Deny\n    浏览器 --> HTTP服务器: 发送决策\n    HTTP服务器 --> CLI: 返回权限决策\n    CLI --> 工具执行: 执行或拒绝\n```\n\n### 权限选项\n\n权限页面提供三个选项：\n\n- **Allow for this session** - 在当前会话中允许\n- **Allow once** - 仅允许本次执行\n- **Deny** - 拒绝执行\n\n资料来源：[ts/packages/cli/src/services/tool-permissions.ts:1-50]()\n\n## 本地工具注册表\n\n### 本地工具解析机制\n\n本地工具使用特殊前缀 `LOCAL_TOOL_PREFIX` 进行标识，注册表提供了完整的解析和过滤功能。\n\n```typescript\nexport const isLocalToolSlug = (\n  toolSlug: string,\n  options: { readonly declarations?: ReadonlyArray<LocalToolkitDeclaration> } = {}\n): boolean => {\n  const upper = toolSlug.toUpperCase();\n  if (!upper.startsWith(LOCAL_TOOL_PREFIX)) return false;\n  return (\n    resolveLocalTool(toolSlug, { includeUnsupported: true, declarations: options.declarations }) !==\n    null\n  );\n};\n```\n\n### 工具包过滤\n\n注册表支持按名称过滤工具包，并自动检测当前平台支持情况：\n\n```typescript\nexport const getLocalToolkitDeclarations = (\n  options: {\n    readonly currentPlatform?: LocalCliPlatform;\n    readonly toolkits?: ReadonlyArray<string>;\n    readonly declarations?: ReadonlyArray<LocalToolkitDeclaration>;\n  } = {}\n): ReadonlyArray<LocalToolkitDeclaration> => {\n  const currentPlatform = options.currentPlatform ?? detectCliPlatform();\n  return declarationsFor(options.declarations)\n    .filter(toolkit => toolkitMatchesFilter(toolkit, options.toolkits))\n    .filter(toolkit => supportsCliPlatform(toolkit.platforms, currentPlatform))\n    .map(toolkit => ({\n      ...toolkit,\n      tools: toolkit.tools.filter(tool => supportsCliPlatform(tool.platforms, currentPlatform)),\n    }))\n    .filter(toolkit => toolkit.tools.length > 0);\n};\n```\n\n### 工具 Slug 规范化\n\n本地工具使用规范化格式：`LOCAL_TOOL_PREFIX + toolkit_slug + _ + tool_slug`\n\n资料来源：[ts/packages/cli/src/cli-local-tools/src/registry.ts:1-150]()\n\n## 项目初始化\n\n### 初始化流程\n\n`init` 命令负责项目配置，包括环境变量设置和 API key 管理。\n\n```mermaid\nflowchart LR\n    A[运行 init] --> B{检查 .env.local}\n    B -->|不存在| C[创建 .env.local]\n    B -->|存在| D[检查现有配置]\n    C --> E[获取全局 API Key]\n    D --> E\n    E --> F{有 API Key?}\n    F -->|否| G[跳过配置]\n    F -->|是| H[获取会话信息]\n    H --> I[创建项目 API Key]\n    I --> J[写入环境变量]\n```\n\n### 环境变量管理\n\n初始化命令会检查并设置以下环境变量：\n\n- `COMPOSIO_API_KEY` - 项目 API key\n- `COMPOSIO_TEST_USER_ID` - 测试用户 ID\n\n```typescript\nconst hasProjectApiKey = /^COMPOSIO_API_KEY=.*/m.test(existingEnvContent);\nconst hasTestUserId = /^COMPOSIO_TEST_USER_ID=.*/m.test(existingEnvContent);\n```\n\n资料来源：[ts/packages/cli/src/commands/init.cmd.ts:1-100]()\n\n## 工具包索引生成\n\n### 索引数据结构\n\n工具包索引将所有工具和触发器按工具包名称分组存储：\n\n```typescript\nexport type ToolkitIndex = Record<ToolkitName, ToolkitIndexData>;\n\nexport type ToolkitIndexData = Simplify<{\n  slug: string;\n  version?: string;\n  typeableTools:\n    | { withTypes: false; value: Record<`${ToolkitName}_${string}`, ToolAsEnum> }\n    | { withTypes: true; value: Record<`${ToolkitName}_${string}`, Tool> };\n  triggerTypes: Record<`${ToolkitName}_${string}`, TriggerType>;\n}>;\n```\n\n### 索引创建流程\n\n索引创建通过 `createToolkitIndex` 函数实现，自动从工具前缀提取工具包名称：\n\n```typescript\nexport function createToolkitIndex(input: CreateToolkitIndexInput): Simplify<ToolkitIndex> {\n  const { versionMap } = input;\n\n  return pipe(\n    input,\n    groupByToolkits,\n    Record.fromEntries,\n    Record.mapEntries((value, key) => {\n      const stripPrefix = String.slice(key.length + 1);\n      const { slug } = value.toolkit;\n      const version = versionMap?.get(String.toLowerCase(slug));\n      // ...\n    })\n  );\n}\n```\n\n资料来源：[ts/packages/cli/src/generation/create-toolkit-index.ts:1-80]()\n\n## 命令提示系统\n\n### 提示数据结构\n\n命令提示系统为每个命令提供示例用法和相关链接：\n\n```typescript\ntype CommandHint = {\n  example: (params: Record<string, string>) => string;\n  links: ReadonlyArray<string>;\n};\n```\n\n### 常用命令示例\n\n| 命令 | 示例 |\n|------|------|\n| 搜索工具 | `composio search \"<query>\"` |\n| 执行工具 | `composio execute \"<slug>\" -d '{}'` |\n| 获取 Schema | `composio execute \"<slug>\" --get-schema` |\n| 初始化项目 | `composio dev init` |\n| 查看日志 | `composio dev logs tools \"<log_id>\"` |\n\n资料来源：[ts/packages/cli/src/services/command-hints.ts:1-80]()\n\n## 日志系统\n\n### 日志命令组\n\n日志命令提供对工具和触发器执行历史的访问：\n\n```typescript\nexport const logsCmd = Command.make('logs').pipe(\n  Command.withDescription('Inspect trigger and tool execution logs.'),\n  Command.withSubcommands([logsCmd$Triggers, logsCmd$Tools])\n);\n```\n\n| 子命令 | 功能 |\n|--------|------|\n| `logs tools` | 查看工具执行日志 |\n| `logs triggers` | 查看触发器执行日志 |\n\n资料来源：[ts/packages/cli/src/commands/logs-cmd/logs.cmd.ts:1-20]()\n\n## TypeScript 类型生成\n\n### 生成命令选项\n\n`composio generate ts` 命令支持多种配置选项：\n\n| 选项 | 说明 | 默认值 |\n|------|------|--------|\n| `--compact` | 输出单模块文件 | false |\n| `--transpiled` | 同时输出转译后的 JS | true (无 output-dir 时) |\n| `--output-dir` | 指定输出目录 | node_modules/@composio/core |\n| `--toolkits` | 过滤特定工具包 | 全部 |\n\n### 约束条件\n\n- 输出目录不能指向 `node_modules` 内部\n- 未指定 `--output-dir` 时自动使用 `@composio/core` 包目录\n- 如启用 `--transpiled`，会同时生成 ESM 格式的 JavaScript 文件\n\n资料来源：[ts/packages/cli/src/commands/ts/commands/ts.generate.cmd.ts:1-30]()\n\n## 本地工具配置\n\n### 配置命令\n\n`local-tools configure` 命令允许修改工具元数据：\n\n```typescript\nexport const localToolsCmd$Configure = Command.make(\n  'configure',\n  { selector, command, disable, enable, authenticated, unauthenticated, json },\n  ({ selector, command, disable, enable, authenticated, unauthenticated, json }) =>\n    Effect.gen(function* () {\n      const target = resolveTarget(selector);\n      // ...\n    })\n);\n```\n\n### 可配置项\n\n| 配置项 | 说明 |\n|--------|------|\n| `command` | 设置安装命令 |\n| `disable` / `enable` | 启用/禁用工具 |\n| `authenticated` / `unauthenticated` | 设置认证状态 |\n\n配置后可通过 `composio local-tools doctor` 进行诊断验证。\n\n资料来源：[ts/packages/cli/src/commands/local-tools/commands/local-tools.configure.cmd.ts:1-80]()\n\n## 错误处理\n\n### Effect 错误捕获\n\nCLI 使用 Effect 框架的错误处理机制，通过 `captureErrorsFrom` 函数收集错误信息：\n\n```typescript\nexport const captureErrorsFrom = <E>(cause: Cause<E>): readonly PrettyError[] =>\n  reduceWithContext(cause, undefined, {\n    emptyCase: (): readonly PrettyError[] => [],\n    dieCase: (_, unknownError) => [parseError(unknownError)],\n    failCase: (_, error) => [parseError(error)],\n    interruptCase: () => [],\n    parallelCase: (_, l, r) => [...l, ...r],\n    sequentialCase: (_, l, r) => [...l, ...r],\n  });\n```\n\n资料来源：[ts/packages/cli/src/effect-errors/logic/errors/capture-errors-from-cause.ts:1-25]()\n\n## 快速参考\n\n### 常用命令速查\n\n```bash\n# 搜索工具\ncomposio search \"send email\"\n\n# 列出工具包\ncomposio toolkits list\n\n# 查看工具详情\ncomposio tools info <tool-slug>\n\n# 执行工具\ncomposio execute <tool-slug> -d '{\"param\": \"value\"}'\n\n# 获取工具 schema\ncomposio execute <tool-slug> --get-schema\n\n# 初始化项目\ncomposio dev init\n\n# 诊断本地工具\ncomposio local-tools doctor\n\n# 查看执行日志\ncomposio dev logs tools <log-id>\n\n# 生成 TypeScript 类型\ncomposio generate ts --toolkits gmail --toolkits slack\n\n---\n\n---\n\n## Doramagic 踩坑日志\n\n项目：ComposioHQ/composio\n\n摘要：发现 12 个潜在踩坑项，其中 3 个为 high/blocking；最高优先级：安装坑 - 来源证据：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops。\n\n## 1. 安装坑 · 来源证据：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_54d53b3e2a6e4cf4a3e4783f824ed87b | https://github.com/ComposioHQ/composio/issues/3269 | 来源讨论提到 node 相关条件，需在安装/试用前复核。\n\n## 2. 安全/权限坑 · 来源证据：[Bug]: SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK returns successful but file is never shared to channel (channels:[], shar…\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Bug]: SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK returns successful but file is never shared to channel (channels:[], shares:{})\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_1b88beb594aa433eb998eac3b16a20e0 | https://github.com/ComposioHQ/composio/issues/3422 | 来源讨论提到 node 相关条件，需在安装/试用前复核。\n\n## 3. 安全/权限坑 · 来源证据：[Feature] Custom auth configs shouldn't require a dev project to use\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Feature] Custom auth configs shouldn't require a dev project to use\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_1d62ba62e77b47ff88b50d2db41a8cf7 | https://github.com/ComposioHQ/composio/issues/3271 | 来源讨论提到 linux 相关条件，需在安装/试用前复核。\n\n## 4. 身份坑 · 仓库名和安装名不一致\n\n- 严重度：medium\n- 证据强度：runtime_trace\n- 发现：仓库名 `composio` 与安装入口 `@composio/core` 不完全一致。\n- 对用户的影响：用户照着仓库名搜索包或照着包名找仓库时容易走错入口。\n- 建议检查：在 npm/PyPI/GitHub 上确认包名映射和官方 README 说明。\n- 复现命令：`npm install @composio/core`\n- 防护动作：页面必须同时展示 repo 名和真实安装入口，避免用户搜索错包。\n- 证据：identity.distribution | github_repo:762304524 | https://github.com/ComposioHQ/composio | repo=composio; install=@composio/core\n\n## 5. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | github_repo:762304524 | https://github.com/ComposioHQ/composio | README/documentation is current enough for a first validation pass.\n\n## 6. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | github_repo:762304524 | https://github.com/ComposioHQ/composio | last_activity_observed missing\n\n## 7. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | github_repo:762304524 | https://github.com/ComposioHQ/composio | no_demo; severity=medium\n\n## 8. 安全/权限坑 · 存在安全注意事项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：No sandbox install has been executed yet; downstream must verify before user use.\n- 对用户的影响：用户安装前需要知道权限边界和敏感操作。\n- 建议检查：转成明确权限清单和安全审查提示。\n- 防护动作：安全注意事项必须面向用户前置展示。\n- 证据：risks.safety_notes | github_repo:762304524 | https://github.com/ComposioHQ/composio | No sandbox install has been executed yet; downstream must verify before user use.\n\n## 9. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | github_repo:762304524 | https://github.com/ComposioHQ/composio | no_demo; severity=medium\n\n## 10. 安全/权限坑 · 来源证据：@composio/core@0.10.0\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：@composio/core@0.10.0\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_66f9d5fd557f41c7845ca5dd7d93ae6f | https://github.com/ComposioHQ/composio/releases/tag/%40composio/core%400.10.0 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 11. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | github_repo:762304524 | https://github.com/ComposioHQ/composio | issue_or_pr_quality=unknown\n\n## 12. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | github_repo:762304524 | https://github.com/ComposioHQ/composio | release_recency=unknown\n\n<!-- canonical_name: ComposioHQ/composio; human_manual_source: deepwiki_human_wiki -->\n",
      "markdown_key": "composio",
      "pages": "draft",
      "source_refs": [
        {
          "evidence_id": "github_repo:762304524",
          "kind": "repo",
          "supports_claim_ids": [
            "claim_identity",
            "claim_distribution",
            "claim_capability"
          ],
          "url": "https://github.com/ComposioHQ/composio"
        },
        {
          "evidence_id": "art_e7d12cd559424cc4b20cfcebc1b34d30",
          "kind": "docs",
          "supports_claim_ids": [
            "claim_identity",
            "claim_distribution",
            "claim_capability"
          ],
          "url": "https://github.com/ComposioHQ/composio#readme"
        }
      ],
      "summary": "DeepWiki/Human Wiki 完整输出，末尾追加 Discovery Agent 踩坑日志。",
      "title": "composio 说明书",
      "toc": [
        "https://github.com/ComposioHQ/composio 项目说明书",
        "目录",
        "项目介绍",
        "1. 项目概述",
        "2. 仓库结构",
        "3. 核心系统架构",
        "4. 核心组件详解",
        "5. 开发指南",
        "Doramagic 踩坑日志"
      ]
    }
  },
  "quality_gate": {
    "blocking_gaps": [],
    "category_confidence": "medium",
    "compile_status": "ready_for_review",
    "five_assets_present": true,
    "install_sandbox_verified": true,
    "missing_evidence": [],
    "next_action": "publish to Doramagic.ai project surfaces",
    "prompt_preview_boundary_ok": true,
    "publish_status": "publishable",
    "quick_start_verified": true,
    "repo_clone_verified": true,
    "repo_commit": "2d52e7f7c0ec2b6dfc858435a1073db6e2b0dab9",
    "repo_inspection_error": null,
    "repo_inspection_files": [
      "pyproject.toml",
      "pnpm-lock.yaml",
      "Dockerfile",
      "package.json",
      "README.md",
      "uv.lock",
      "docs/vercel.json",
      "docs/source.config.ts",
      "docs/CLAUDE.md",
      "docs/package.json",
      "docs/proxy.ts",
      "docs/README.md",
      "docs/tsconfig.json",
      "docs/components.json",
      "docs/bunfig.toml",
      "docs/scripts/generate-meta-tools.ts",
      "docs/scripts/generate-toolkits.ts",
      "docs/scripts/generate-api-index.ts",
      "docs/scripts/preload.ts",
      "docs/scripts/README.md",
      "docs/scripts/validate-links.ts",
      "docs/public/openapi.json",
      "docs/public/openapi-v3.json",
      "docs/.claude/plan.md",
      "docs/lib/utils.ts",
      "docs/lib/use-api-version.ts",
      "docs/lib/toolkit-data.ts",
      "docs/lib/meta-tools-data.ts",
      "docs/lib/openapi.ts",
      "docs/lib/toolkit-schema.ts",
      "docs/lib/api-version.ts",
      "docs/lib/source.ts",
      "docs/lib/filter-api-version.ts",
      "docs/app/sitemap.ts",
      "docs/types/toolkit.ts",
      "docs/public/data/toolkits-list.json",
      "docs/public/data/toolkits.json",
      "docs/public/data/meta-tools.json",
      "docs/content/docs/meta.json",
      "docs/content/docs/managing-multiple-connected-accounts.mdx"
    ],
    "repo_inspection_verified": true,
    "review_reasons": [],
    "tag_count_ok": true,
    "unsupported_claims": []
  },
  "schema_version": "0.1",
  "user_assets": {
    "ai_context_pack": {
      "asset_id": "ai_context_pack",
      "filename": "AI_CONTEXT_PACK.md",
      "markdown": "# composio - Doramagic AI Context Pack\n\n> 定位：安装前体验与判断资产。它帮助宿主 AI 有一个好的开始，但不代表已经安装、执行或验证目标项目。\n\n## 充分原则\n\n- **充分原则，不是压缩原则**：AI Context Pack 应该充分到让宿主 AI 在开工前理解项目价值、能力边界、使用入口、风险和证据来源；它可以分层组织，但不以最短摘要为目标。\n- **压缩策略**：只压缩噪声和重复内容，不压缩会影响判断和开工质量的上下文。\n\n## 给宿主 AI 的使用方式\n\n你正在读取 Doramagic 为 composio 编译的 AI Context Pack。请把它当作开工前上下文：帮助用户理解适合谁、能做什么、如何开始、哪些必须安装后验证、风险在哪里。不要声称你已经安装、运行或执行了目标项目。\n\n## Claim 消费规则\n\n- **事实来源**：Repo Evidence + Claim/Evidence Graph；Human Wiki 只提供显著性、术语和叙事结构。\n- **事实最低状态**：`supported`\n- `supported`：可以作为项目事实使用，但回答中必须引用 claim_id 和证据路径。\n- `weak`：只能作为低置信度线索，必须要求用户继续核实。\n- `inferred`：只能用于风险提示或待确认问题，不能包装成项目事实。\n- `unverified`：不得作为事实使用，应明确说证据不足。\n- `contradicted`：必须展示冲突来源，不得替用户强行选择一个版本。\n\n## 它最适合谁\n\n- **正在使用 Claude/Codex/Cursor/Gemini 等宿主 AI 的开发者**：README 或插件配置提到多个宿主 AI。 证据：`README.md` Claim：`clm_0003` supported 0.86\n- **希望把专业流程带进宿主 AI 的用户**：仓库包含 Skill 文档。 证据：`.agents/skills/bug-fixing-guide/SKILL.md`, `.agents/skills/building-agents/SKILL.md`, `.agents/skills/building-agents-using-anthropic/SKILL.md`, `.agents/skills/building-agents-using-autogen/SKILL.md` 等 Claim：`clm_0004` supported 0.86\n\n## 它能做什么\n\n- **AI Skill / Agent 指令资产库**（可做安装前预览）：项目包含可被宿主 AI 读取的 Skill 或 Agent 指令文件，可用于把专业流程带入 Claude、Codex、Cursor 等宿主。 证据：`.agents/skills/bug-fixing-guide/SKILL.md`, `.agents/skills/building-agents/SKILL.md`, `.agents/skills/building-agents-using-anthropic/SKILL.md`, `.agents/skills/building-agents-using-autogen/SKILL.md` 等 Claim：`clm_0001` supported 0.86\n- **命令行启动或安装流程**（需要安装后验证）：项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 证据：`INSTALL.md`, `README.md` Claim：`clm_0002` supported 0.86\n\n## 怎么开始\n\n- `curl -fsSL https://raw.githubusercontent.com/ComposioHQ/composio/main/install.sh | bash` 证据：`INSTALL.md` Claim：`clm_0005` unverified 0.25, `clm_0006` unverified 0.25\n- `curl -fsSL https://raw.githubusercontent.com/ComposioHQ/composio/main/install.sh | bash -s -- v0.1.24` 证据：`INSTALL.md` Claim：`clm_0006` unverified 0.25\n- `npm install -g @composio/cli` 证据：`INSTALL.md` Claim：`clm_0007` unverified 0.25\n- `pnpm add -g @composio/cli` 证据：`INSTALL.md` Claim：`clm_0008` unverified 0.25\n- `curl -v -fsSL https://raw.githubusercontent.com/ComposioHQ/composio/main/install.sh | bash` 证据：`INSTALL.md` Claim：`clm_0009` unverified 0.25\n- `curl -O https://raw.githubusercontent.com/ComposioHQ/composio/main/install.sh` 证据：`INSTALL.md` Claim：`clm_0010` unverified 0.25\n- `npm install @composio/core` 证据：`README.md` Claim：`clm_0011` supported 0.86\n- `yarn add @composio/core` 证据：`README.md` Claim：`clm_0012` supported 0.86\n- `pnpm add @composio/core` 证据：`README.md` Claim：`clm_0013` supported 0.86\n- `npm install @composio/openai-agents @openai/agents` 证据：`README.md` Claim：`clm_0014` supported 0.86\n\n## 继续前判断卡\n\n- **当前建议**：仅建议沙盒试装\n- **为什么**：项目存在安装命令、宿主配置或本地写入线索，不建议直接进入主力环境，应先在隔离环境试装。\n\n### 30 秒判断\n\n- **现在怎么做**：仅建议沙盒试装\n- **最小安全下一步**：先跑 Prompt Preview；若仍要安装，只在隔离环境试装\n- **先别相信**：真实输出质量不能在安装前相信。\n- **继续会触碰**：命令执行、宿主 AI 配置、本地环境或项目文件\n\n### 现在可以相信\n\n- **适合人群线索：正在使用 Claude/Codex/Cursor/Gemini 等宿主 AI 的开发者**（supported）：有 supported claim 或项目证据支撑，但仍不等于真实安装效果。 证据：`README.md` Claim：`clm_0003` supported 0.86\n- **适合人群线索：希望把专业流程带进宿主 AI 的用户**（supported）：有 supported claim 或项目证据支撑，但仍不等于真实安装效果。 证据：`.agents/skills/bug-fixing-guide/SKILL.md`, `.agents/skills/building-agents/SKILL.md`, `.agents/skills/building-agents-using-anthropic/SKILL.md`, `.agents/skills/building-agents-using-autogen/SKILL.md` 等 Claim：`clm_0004` supported 0.86\n- **能力存在：AI Skill / Agent 指令资产库**（supported）：可以相信项目包含这类能力线索；是否适合你的具体任务仍要试用或安装后验证。 证据：`.agents/skills/bug-fixing-guide/SKILL.md`, `.agents/skills/building-agents/SKILL.md`, `.agents/skills/building-agents-using-anthropic/SKILL.md`, `.agents/skills/building-agents-using-autogen/SKILL.md` 等 Claim：`clm_0001` supported 0.86\n- **能力存在：命令行启动或安装流程**（supported）：可以相信项目包含这类能力线索；是否适合你的具体任务仍要试用或安装后验证。 证据：`INSTALL.md`, `README.md` Claim：`clm_0002` supported 0.86\n- **存在 Quick Start / 安装命令线索**（supported）：可以相信项目文档出现过启动或安装入口；不要因此直接在主力环境运行。 证据：`README.md` Claim：`clm_0011` supported 0.86\n\n### 现在还不能相信\n\n- **真实输出质量不能在安装前相信。**（unverified）：Prompt Preview 只能展示引导方式，不能证明真实项目中的结果质量。\n- **宿主 AI 版本兼容性不能在安装前相信。**（unverified）：Claude、Cursor、Codex、Gemini 等宿主加载规则和版本差异必须在真实环境验证。\n- **不会污染现有宿主 AI 行为，不能直接相信。**（inferred）：Skill、plugin、AGENTS/CLAUDE/GEMINI 指令可能改变宿主 AI 的默认行为。 证据：`.agents/skills/bug-fixing-guide/SKILL.md`, `.agents/skills/building-agents-using-anthropic/SKILL.md`, `.agents/skills/building-agents-using-autogen/SKILL.md`, `.agents/skills/building-agents-using-cloudflare/SKILL.md` 等\n- **可安全回滚不能默认相信。**（unverified）：除非项目明确提供卸载和恢复说明，否则必须先在隔离环境验证。\n- **真实安装后是否与用户当前宿主 AI 版本兼容？**（unverified）：兼容性只能通过实际宿主环境验证。\n- **项目输出质量是否满足用户具体任务？**（unverified）：安装前预览只能展示流程和边界，不能替代真实评测。\n- **安装命令是否需要网络、权限或全局写入？**（unverified）：这影响企业环境和个人环境的安装风险。 证据：`INSTALL.md`\n\n### 继续会触碰什么\n\n- **命令执行**：包管理器、网络下载、本地插件目录、项目配置或用户主目录。 原因：运行第一条命令就可能产生环境改动；必须先判断是否值得跑。 证据：`INSTALL.md`, `README.md`\n- **宿主 AI 配置**：Claude/Codex/Cursor/Gemini/OpenCode 等宿主的 plugin、Skill 或规则加载配置。 原因：宿主配置会改变 AI 后续工作方式，可能和用户已有规则冲突。 证据：`.agents/skills/bug-fixing-guide/SKILL.md`, `.agents/skills/building-agents-using-anthropic/SKILL.md`, `.agents/skills/building-agents-using-autogen/SKILL.md`, `.agents/skills/building-agents-using-cloudflare/SKILL.md` 等\n- **本地环境或项目文件**：安装结果、插件缓存、项目配置或本地依赖目录。 原因：安装前无法证明写入范围和回滚方式，需要隔离验证。 证据：`INSTALL.md`, `README.md`\n- **宿主 AI 上下文**：AI Context Pack、Prompt Preview、Skill 路由、风险规则和项目事实。 原因：导入上下文会影响宿主 AI 后续判断，必须避免把未验证项包装成事实。\n\n### 最小安全下一步\n\n- **先跑 Prompt Preview**：用安装前交互式试用判断工作方式是否匹配，不需要授权或改环境。（适用：任何项目都适用，尤其是输出质量未知时。）\n- **只在隔离目录或测试账号试装**：避免安装命令污染主力宿主 AI、真实项目或用户主目录。（适用：存在命令执行、插件配置或本地写入线索时。）\n- **先备份宿主 AI 配置**：Skill、plugin、规则文件可能改变 Claude/Cursor/Codex 的默认行为。（适用：存在插件 manifest、Skill 或宿主规则入口时。）\n- **安装后只验证一个最小任务**：先验证加载、兼容、输出质量和回滚，再决定是否深用。（适用：准备从试用进入真实工作流时。）\n\n### 退出方式\n\n- **保留安装前状态**：记录原始宿主配置和项目状态，后续才能判断是否可恢复。\n- **准备移除宿主 plugin / Skill / 规则入口**：如果试装后行为异常，可以把宿主 AI 恢复到试装前状态。\n- **记录安装命令和写入路径**：没有明确卸载说明时，至少要知道哪些目录或配置需要手动清理。\n- **如果没有回滚路径，不进入主力环境**：不可回滚是继续前阻断项，不应靠信任或运气继续。\n\n## 哪些只能预览\n\n- 解释项目适合谁和能做什么\n- 基于项目文档演示典型对话流程\n- 帮助用户判断是否值得安装或继续研究\n\n## 哪些必须安装后验证\n\n- 真实安装 Skill、插件或 CLI\n- 执行脚本、修改本地文件或访问外部服务\n- 验证真实输出质量、性能和兼容性\n\n## 边界与风险判断卡\n\n- **把安装前预览误认为真实运行**：用户可能高估项目已经完成的配置、权限和兼容性验证。 处理方式：明确区分 prompt_preview_can_do 与 runtime_required。 Claim：`clm_0017` inferred 0.45\n- **命令执行会修改本地环境**：安装命令可能写入用户主目录、宿主插件目录或项目配置。 处理方式：先在隔离环境或测试账号中运行。 证据：`INSTALL.md`, `README.md` Claim：`clm_0018` supported 0.86\n- **待确认**：真实安装后是否与用户当前宿主 AI 版本兼容？。原因：兼容性只能通过实际宿主环境验证。\n- **待确认**：项目输出质量是否满足用户具体任务？。原因：安装前预览只能展示流程和边界，不能替代真实评测。\n- **待确认**：安装命令是否需要网络、权限或全局写入？。原因：这影响企业环境和个人环境的安装风险。\n\n## 开工前工作上下文\n\n### 加载顺序\n\n- 先读取 how_to_use.host_ai_instruction，建立安装前判断资产的边界。\n- 读取 claim_graph_summary，确认事实来自 Claim/Evidence Graph，而不是 Human Wiki 叙事。\n- 再读取 intended_users、capabilities 和 quick_start_candidates，判断用户是否匹配。\n- 需要执行具体任务时，优先查 role_skill_index，再查 evidence_index。\n- 遇到真实安装、文件修改、网络访问、性能或兼容性问题时，转入 risk_card 和 boundaries.runtime_required。\n\n### 任务路由\n\n- **AI Skill / Agent 指令资产库**：先基于 role_skill_index / evidence_index 帮用户挑选可用角色、Skill 或工作流。 边界：可做安装前 Prompt 体验。 证据：`.agents/skills/bug-fixing-guide/SKILL.md`, `.agents/skills/building-agents/SKILL.md`, `.agents/skills/building-agents-using-anthropic/SKILL.md`, `.agents/skills/building-agents-using-autogen/SKILL.md` 等 Claim：`clm_0001` supported 0.86\n- **命令行启动或安装流程**：先说明这是安装后验证能力，再给出安装前检查清单。 边界：必须真实安装或运行后验证。 证据：`INSTALL.md`, `README.md` Claim：`clm_0002` supported 0.86\n\n### 上下文规模\n\n- 文件总数：2150\n- 重要文件覆盖：40/2150\n- 证据索引条目：121\n- 角色 / Skill 条目：41\n\n### 证据不足时的处理\n\n- **missing_evidence**：说明证据不足，要求用户提供目标文件、README 段落或安装后验证记录；不要补全事实。\n- **out_of_scope_request**：说明该任务超出当前 AI Context Pack 证据范围，并建议用户先查看 Human Manual 或真实安装后验证。\n- **runtime_request**：给出安装前检查清单和命令来源，但不要替用户执行命令或声称已执行。\n- **source_conflict**：同时展示冲突来源，标记为待核实，不要强行选择一个版本。\n\n## Prompt Recipes\n\n### 适配判断\n\n- 目标：判断这个项目是否适合用户当前任务。\n- 预期输出：适配结论、关键理由、证据引用、安装前可预览内容、必须安装后验证内容、下一步建议。\n\n```text\n请基于 composio 的 AI Context Pack，先问我 3 个必要问题，然后判断它是否适合我的任务。回答必须包含：适合谁、能做什么、不能做什么、是否值得安装、证据来自哪里。所有项目事实必须引用 evidence_refs、source_paths 或 claim_id。\n```\n\n### 安装前体验\n\n- 目标：让用户在安装前感受核心工作流，同时避免把预览包装成真实能力或营销承诺。\n- 预期输出：一段带边界标签的体验剧本、安装后验证清单和谨慎建议；不含真实运行承诺或强营销表述。\n\n```text\n请把 composio 当作安装前体验资产，而不是已安装工具或真实运行环境。\n\n请严格输出四段：\n1. 先问我 3 个必要问题。\n2. 给出一段“体验剧本”：用 [安装前可预览]、[必须安装后验证]、[证据不足] 三种标签展示它可能如何引导工作流。\n3. 给出安装后验证清单：列出哪些能力只有真实安装、真实宿主加载、真实项目运行后才能确认。\n4. 给出谨慎建议：只能说“值得继续研究/试装”“先补充信息后再判断”或“不建议继续”，不得替项目背书。\n\n硬性边界：\n- 不要声称已经安装、运行、执行测试、修改文件或产生真实结果。\n- 不要写“自动适配”“确保通过”“完美适配”“强烈建议安装”等承诺性表达。\n- 如果描述安装后的工作方式，必须使用“如果安装成功且宿主正确加载 Skill，它可能会……”这种条件句。\n- 体验剧本只能写成“示例台词/假设流程”：使用“可能会询问/可能会建议/可能会展示”，不要写“已写入、已生成、已通过、正在运行、正在生成”。\n- Prompt Preview 不负责给安装命令；如用户准备试装，只能提示先阅读 Quick Start 和 Risk Card，并在隔离环境验证。\n- 所有项目事实必须来自 supported claim、evidence_refs 或 source_paths；inferred/unverified 只能作风险或待确认项。\n\n```\n\n### 角色 / Skill 选择\n\n- 目标：从项目里的角色或 Skill 中挑选最匹配的资产。\n- 预期输出：候选角色或 Skill 列表，每项包含适用场景、证据路径、风险边界和是否需要安装后验证。\n\n```text\n请读取 role_skill_index，根据我的目标任务推荐 3-5 个最相关的角色或 Skill。每个推荐都要说明适用场景、可能输出、风险边界和 evidence_refs。\n```\n\n### 风险预检\n\n- 目标：安装或引入前识别环境、权限、规则冲突和质量风险。\n- 预期输出：环境、权限、依赖、许可、宿主冲突、质量风险和未知项的检查清单。\n\n```text\n请基于 risk_card、boundaries 和 quick_start_candidates，给我一份安装前风险预检清单。不要替我执行命令，只说明我应该检查什么、为什么检查、失败会有什么影响。\n```\n\n### 宿主 AI 开工指令\n\n- 目标：把项目上下文转成一次对话开始前的宿主 AI 指令。\n- 预期输出：一段边界明确、证据引用明确、适合复制给宿主 AI 的开工前指令。\n\n```text\n请基于 composio 的 AI Context Pack，生成一段我可以粘贴给宿主 AI 的开工前指令。这段指令必须遵守 not_runtime=true，不能声称项目已经安装、运行或产生真实结果。\n```\n\n\n## 角色 / Skill 索引\n\n- 共索引 41 个角色 / Skill / 项目文档条目。\n\n- **Bug Fixing Guide**（skill）：Standard practices for fixing bugs in Composio SDK. Always add regression tests for major bugs. 激活提示：当用户任务与“Bug Fixing Guide”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/bug-fixing-guide/SKILL.md`\n- **Building Agents using Anthropic with Composio**（skill）：Building Agents using Anthropic with Composio 激活提示：当用户任务与“Building Agents using Anthropic with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/building-agents-using-anthropic/SKILL.md`\n- **Building Agents using Microsoft AutoGen with Composio**（skill）：Building Agents using Microsoft AutoGen with Composio 激活提示：当用户任务与“Building Agents using Microsoft AutoGen with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/building-agents-using-autogen/SKILL.md`\n- **Building Agents using Cloudflare with Composio**（skill）：Building Agents using Cloudflare with Composio 激活提示：当用户任务与“Building Agents using Cloudflare with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/building-agents-using-cloudflare/SKILL.md`\n- **Building Agents using CrewAI with Composio**（skill）：Building Agents using CrewAI with Composio 激活提示：当用户任务与“Building Agents using CrewAI with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/building-agents-using-crewai/SKILL.md`\n- **Building Agents using Google Gemini with Composio**（skill）：Building Agents using Google Gemini with Composio 激活提示：当用户任务与“Building Agents using Google Gemini with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/building-agents-using-google/SKILL.md`\n- **Building Agents using LangChain with Composio**（skill）：Building Agents using LangChain with Composio 激活提示：当用户任务与“Building Agents using LangChain with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/building-agents-using-langchain/SKILL.md`\n- **Building Agents using LangGraph with Composio**（skill）：Building Agents using LangGraph with Composio 激活提示：当用户任务与“Building Agents using LangGraph with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/building-agents-using-langgraph/SKILL.md`\n- **Building Agents using LlamaIndex with Composio**（skill）：Building Agents using LlamaIndex with Composio 激活提示：当用户任务与“Building Agents using LlamaIndex with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/building-agents-using-llamaindex/SKILL.md`\n- **Building Agents using Mastra with Composio**（skill）：Building Agents using Mastra with Composio 激活提示：当用户任务与“Building Agents using Mastra with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/building-agents-using-mastra/SKILL.md`\n- **Building Agents using OpenAI with Composio**（skill）：Building Agents using OpenAI with Composio 激活提示：当用户任务与“Building Agents using OpenAI with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/building-agents-using-openai/SKILL.md`\n- **Building Agents using Vercel AI SDK with Composio**（skill）：Building Agents using Vercel AI SDK with Composio 激活提示：当用户任务与“Building Agents using Vercel AI SDK with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/building-agents-using-vercel/SKILL.md`\n- **Building AI Agents with Composio SDK**（skill）：Building AI Agents with Composio SDK 激活提示：当用户任务与“Building AI Agents with Composio SDK”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/building-agents/SKILL.md`\n- **CLI Release Promotion**（skill）：Validate a Composio CLI beta release and promote it to a stable release by dispatching the CLI binary workflow with an existing beta tag. 激活提示：当用户任务与“CLI Release Promotion”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/cli-release-promotion/SKILL.md`\n- **CLI E2E Test Development**（skill）：Write end-to-end tests for CLI commands using the Docker-based test framework in ts/e2e-tests/cli/. 激活提示：当用户任务与“CLI E2E Test Development”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/create-cli-e2e/SKILL.md`\n- **CLI Design Guidelines**（skill）：CLI design guidelines — arguments, flags, subcommands, help, output, errors, interactivity, config precedence. Apply when designing new commands or reviewing CLI UX. 激活提示：当用户任务与“CLI Design Guidelines”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/create-cli/SKILL.md`\n- **Ephemeral E2E SDK Tests**（skill）：Quick ephemeral verification tests for Composio SDK with AI frameworks. Never commit these tests. 激活提示：当用户任务与“Ephemeral E2E SDK Tests”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/ephemeral-e2e-sdk-tests/SKILL.md`\n- **Implement CLI Command**（skill）：Implement new CLI commands in ts/packages/cli/ using Effect.ts patterns, service wiring, and @effect/cli declarations. 激活提示：当用户任务与“Implement CLI Command”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/implement-cli-command/SKILL.md`\n- **Testing Composio SDK in Real-World Scenarios**（skill）：Testing Composio SDK in Real-World Scenarios 激活提示：当用户任务与“Testing Composio SDK in Real-World Scenarios”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.agents/skills/test-sdk-in-realworld/SKILL.md`\n- **Bug Fixing Guide**（skill）：Standard practices for fixing bugs in Composio SDK. Always add regression tests for major bugs. 激活提示：当用户任务与“Bug Fixing Guide”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/bug-fixing-guide/SKILL.md`\n- **Building Agents using Anthropic with Composio**（skill）：Building Agents using Anthropic with Composio 激活提示：当用户任务与“Building Agents using Anthropic with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/building-agents-using-anthropic/SKILL.md`\n- **Building Agents using Microsoft AutoGen with Composio**（skill）：Building Agents using Microsoft AutoGen with Composio 激活提示：当用户任务与“Building Agents using Microsoft AutoGen with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/building-agents-using-autogen/SKILL.md`\n- **Building Agents using Cloudflare with Composio**（skill）：Building Agents using Cloudflare with Composio 激活提示：当用户任务与“Building Agents using Cloudflare with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/building-agents-using-cloudflare/SKILL.md`\n- **Building Agents using CrewAI with Composio**（skill）：Building Agents using CrewAI with Composio 激活提示：当用户任务与“Building Agents using CrewAI with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/building-agents-using-crewai/SKILL.md`\n- **Building Agents using Google Gemini with Composio**（skill）：Building Agents using Google Gemini with Composio 激活提示：当用户任务与“Building Agents using Google Gemini with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/building-agents-using-google/SKILL.md`\n- **Building Agents using LangChain with Composio**（skill）：Building Agents using LangChain with Composio 激活提示：当用户任务与“Building Agents using LangChain with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/building-agents-using-langchain/SKILL.md`\n- **Building Agents using LangGraph with Composio**（skill）：Building Agents using LangGraph with Composio 激活提示：当用户任务与“Building Agents using LangGraph with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/building-agents-using-langgraph/SKILL.md`\n- **Building Agents using LlamaIndex with Composio**（skill）：Building Agents using LlamaIndex with Composio 激活提示：当用户任务与“Building Agents using LlamaIndex with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/building-agents-using-llamaindex/SKILL.md`\n- **Building Agents using Mastra with Composio**（skill）：Building Agents using Mastra with Composio 激活提示：当用户任务与“Building Agents using Mastra with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/building-agents-using-mastra/SKILL.md`\n- **Building Agents using OpenAI with Composio**（skill）：Building Agents using OpenAI with Composio 激活提示：当用户任务与“Building Agents using OpenAI with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/building-agents-using-openai/SKILL.md`\n- **Building Agents using Vercel AI SDK with Composio**（skill）：Building Agents using Vercel AI SDK with Composio 激活提示：当用户任务与“Building Agents using Vercel AI SDK with Composio”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/building-agents-using-vercel/SKILL.md`\n- **Building AI Agents with Composio SDK**（skill）：Building AI Agents with Composio SDK 激活提示：当用户任务与“Building AI Agents with Composio SDK”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/building-agents/SKILL.md`\n- **CLI Release**（skill）：Release the CLI — diff features since last release, run /full-cli-test on them, and create a changeset PR with patch bump and test results. 激活提示：当用户任务与“CLI Release”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/cli-release/SKILL.md`\n- **CLI Test with Bundling CI**（skill）：Trigger a CI binary build via workflow dispatch, monitor it, download the artifact, and test the CLI binary locally. 激活提示：当用户任务与“CLI Test with Bundling CI”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/cli-test-with-bundling/SKILL.md`\n- **CLI Test**（skill）：Build the CLI binary from source and test it locally by running commands against the built binary. 激活提示：当用户任务与“CLI Test”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/cli-test/SKILL.md`\n- **CLI E2E Test Development**（skill）：Write end-to-end tests for CLI commands using the Docker-based test framework in ts/e2e-tests/cli/. 激活提示：当用户任务与“CLI E2E Test Development”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/create-cli-e2e/SKILL.md`\n- **CLI Design Guidelines**（skill）：CLI design guidelines — arguments, flags, subcommands, help, output, errors, interactivity, config precedence. Apply when designing new commands or reviewing CLI UX. 激活提示：当用户任务与“CLI Design Guidelines”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/create-cli/SKILL.md`\n- **Ephemeral E2E SDK Tests**（skill）：Quick ephemeral verification tests for Composio SDK with AI frameworks. Never commit these tests. 激活提示：当用户任务与“Ephemeral E2E SDK Tests”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/ephemeral-e2e-sdk-tests/SKILL.md`\n- **Full CLI Test**（skill）：Full CLI test pipeline — monitor CI for types/lint, then run local binary test, then run bundled binary test via CI. 激活提示：当用户任务与“Full CLI Test”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/full-cli-test/SKILL.md`\n- **Implement CLI Command**（skill）：Implement new CLI commands in ts/packages/cli/ using Effect.ts patterns, service wiring, and @effect/cli declarations. 激活提示：当用户任务与“Implement CLI Command”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/implement-cli-command/SKILL.md`\n- **Testing Composio SDK in Real-World Scenarios**（skill）：Testing Composio SDK in Real-World Scenarios 激活提示：当用户任务与“Testing Composio SDK in Real-World Scenarios”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/test-sdk-in-realworld/SKILL.md`\n\n## 证据索引\n\n- 共索引 121 条证据。\n\n- **Composio Documentation**（documentation）：Documentation site for Composio, built with Fumadocs https://fumadocs.dev/ . 证据：`docs/CLAUDE.md`\n- **Composio Docs**（documentation）：Documentation site for Composio, built with Fumadocs https://fumadocs.dev/ . 证据：`docs/README.md`\n- **OpenAPI Scripts**（documentation）：Fetches the Composio OpenAPI spec and filters it for use in Fumadocs API reference documentation. 证据：`docs/scripts/README.md`\n- **Composio SDK v3 Documentation**（documentation）：Composio SDK is a powerful toolkit that enables you to integrate third-party tools and services into your applications. This SDK helps you connect to various services toolkits , execute tools, and manage user connections seamlessly. 证据：`ts/docs/README.md`\n- **Changesets**（documentation）：Hello and welcome! This folder has been automatically generated by @changesets/cli , a build tool that works with multi-package repos, or single-package repos to help you version and publish your code. You can find the full documentation for it in our repository https://github.com/changesets/changesets 证据：`.changeset/README.md`\n- **AGENTS.md**（documentation）：This file provides guidance to AI coding agents Codex, Claude Code, etc. when working with code in this repository. 证据：`AGENTS.md`\n- **CLAUDE.md**（documentation）：Guidance for Claude Code when working in this repository. For Codex / generic-agent guidance see AGENTS.md . 证据：`CLAUDE.md`\n- **Composio SDK**（documentation）：🌐 Website https://composio.dev • 📚 Documentation https://docs.composio.dev 证据：`README.md`\n- **Composio**（documentation）：! Composio Banner https://github.com/user-attachments/assets/9ba0e9c1-85a4-4b51-ae60-f9fe7992e819 证据：`python/README.md`\n- **Composio SDK v3**（documentation）：The Composio SDK is a powerful toolkit that enables you to integrate third-party tools and services into your applications. It helps you connect to various services toolkits , execute tools, and manage user connections seamlessly. 证据：`ts/README.md`\n- **Integration Tests**（documentation）：Integration tests for Composio SDK functionality. 证据：`python/composio/integration_test/README.md`\n- **🚀🔗 Leveraging Claude with Composio**（documentation）：Facilitate the integration of Claude with Composio to empower Claude models to directly interact with external applications, broadening their capabilities and application scope. 证据：`python/providers/anthropic/README.md`\n- **🚀🔗 Integrating Composio with Autogen SDK**（documentation）：🚀🔗 Integrating Composio with Autogen SDK 证据：`python/providers/autogen/README.md`\n- **Composio Claude Code Agents Provider**（documentation）：Composio Claude Code Agents Provider 证据：`python/providers/claude_agent_sdk/README.md`\n- **CrewAI plugin**（documentation）：CrewAI plugin 证据：`python/providers/crewai/README.md`\n- **🚀🔗 Integrating Composio with Google's Gemini SDK**（documentation）：🚀🔗 Integrating Composio with Google's Gemini SDK 证据：`python/providers/gemini/README.md`\n- **🚀🔗 Integrating Composio with Google AI Python**（documentation）：🚀🔗 Integrating Composio with Google AI Python 证据：`python/providers/google/README.md`\n- **Composio Provider For Google ADK**（documentation）：Composio Provider For Google ADK 证据：`python/providers/google_adk/README.md`\n- **Langchain provider for composio SDK**（documentation）：Langchain provider for composio SDK 证据：`python/providers/langchain/README.md`\n- **🦜🕸️ Using Composio With LangGraph**（documentation）：Integrate Composio with LangGraph Agentic workflows & enable them to interact seamlessly with external apps, enhancing their functionality and reach. 证据：`python/providers/langgraph/README.md`\n- **Using Composio With LLamaIndex**（documentation）：Integrate Composio with LLamaIndex Agentic workflows & enable them to interact seamlessly with external apps, enhancing their functionality and reach. 证据：`python/providers/llamaindex/README.md`\n- **🚀🔗 Leveraging OpenAI with Composio**（documentation）：Facilitate the integration of OpenAI with Composio to empower OpenAI models to directly interact with external applications, broadening their capabilities and application scope. 证据：`python/providers/openai/README.md`\n- **Composio Integration for OpenAI Agents**（documentation）：Composio Integration for OpenAI Agents 证据：`python/providers/openai_agents/README.md`\n- **SDK Documentation Generator**（documentation）：Generates MDX reference docs from Python source using griffe. 证据：`python/scripts/README.md`\n- **E2E Tests**（documentation）：End-to-end tests for @composio/core and the CLI across different runtimes. 证据：`ts/e2e-tests/README.md`\n- **E2E Test Utilities**（documentation）：Shared infrastructure for running @composio/core and CLI end-to-end tests in isolated Docker environments. 证据：`ts/e2e-tests/_utils/README.md`\n- **CLI E2E Tests**（documentation）：End-to-end tests for the compiled composio CLI binary. 证据：`ts/e2e-tests/cli/README.md`\n- **CLI composio dev toolkits info Test**（documentation）：CLI composio dev toolkits info Test 证据：`ts/e2e-tests/cli/toolkits/info/README.md`\n- **CLI composio dev toolkits list Test**（documentation）：CLI composio dev toolkits list Test 证据：`ts/e2e-tests/cli/toolkits/list/README.md`\n- **CLI composio dev toolkits search Test**（documentation）：CLI composio dev toolkits search Test 证据：`ts/e2e-tests/cli/toolkits/search/README.md`\n- **CLI composio version Test**（documentation）：Verifies that composio version prints the correct version string and respects stdout piping. 证据：`ts/e2e-tests/cli/version/README.md`\n- **CLI composio whoami Test**（documentation）：Verifies that composio whoami prints the authenticated API key and respects stdout piping. 证据：`ts/e2e-tests/cli/whoami/README.md`\n- **Cloudflare Workers Compatibility Tests**（documentation）：Cloudflare Workers Compatibility Tests 证据：`ts/e2e-tests/runtimes/cloudflare/cf-workers-basic/README.md`\n- **Composio Core Files - Cloudflare Workers E2E Test**（documentation）：Composio Core Files - Cloudflare Workers E2E Test 证据：`ts/e2e-tests/runtimes/cloudflare/cf-workers-files/README.md`\n- **Tool Router AI - Cloudflare Workers E2E Test**（documentation）：Tool Router AI - Cloudflare Workers E2E Test 证据：`ts/e2e-tests/runtimes/cloudflare/cf-workers-tool-router-ai/README.md`\n- **Deno ESM Compatibility Test**（documentation）：Verifies that @composio/core works correctly when imported via npm: specifier in Deno. 证据：`ts/e2e-tests/runtimes/deno/esm-basic/README.md`\n- **Node.js CommonJS Compatibility Test**（documentation）：Node.js CommonJS Compatibility Test 证据：`ts/e2e-tests/runtimes/node/cjs-basic/README.md`\n- **Node.js ESM Compatibility Test**（documentation）：Verifies that @composio/core works correctly when imported via import in ES Module environments. 证据：`ts/e2e-tests/runtimes/node/esm-basic/README.md`\n- **Node.js File Upload Round-Trip Integrity Test**（documentation）：Node.js File Upload Round-Trip Integrity Test 证据：`ts/e2e-tests/runtimes/node/file-roundtrip/README.md`\n- **json-schema-to-zod + Zod v3 Compatibility Test**（documentation）：json-schema-to-zod + Zod v3 Compatibility Test 证据：`ts/e2e-tests/runtimes/node/json-schema-to-zod-v3/README.md`\n- **json-schema-to-zod + Zod v4 Compatibility Test**（documentation）：json-schema-to-zod + Zod v4 Compatibility Test 证据：`ts/e2e-tests/runtimes/node/json-schema-to-zod-v4/README.md`\n- **@composio/mastra + Zod v3 Tool Router Test**（documentation）：@composio/mastra + Zod v3 Tool Router Test 证据：`ts/e2e-tests/runtimes/node/mastra-tool-router-zod-v3/README.md`\n- **@composio/mastra + Zod v4 Tool Router Test**（documentation）：@composio/mastra + Zod v4 Tool Router Test 证据：`ts/e2e-tests/runtimes/node/mastra-tool-router-zod-v4/README.md`\n- **OpenAI + Zod v4 Compatibility Test**（documentation）：Verifies that @composio/core works correctly with openai and zod@4 . 证据：`ts/e2e-tests/runtimes/node/openai-zod4-compat/README.md`\n- **Tool Router Session Files E2E Test**（documentation）：End-to-end test for the Tool Router session files mount API list, upload, download, delete . 证据：`ts/e2e-tests/runtimes/node/tool-router-files/README.md`\n- **Tool Router Pagination E2E Test**（documentation）：End-to-end regression test for session.toolkits cursor pagination. 证据：`ts/e2e-tests/runtimes/node/tool-router-pagination/README.md`\n- **TypeScript .mjs Import Resolution Test**（documentation）：TypeScript .mjs Import Resolution Test 证据：`ts/e2e-tests/runtimes/node/typescript-mjs-import-nodenext/README.md`\n- **CJS Example**（documentation）：This example demonstrates how to use Composio SDK with CommonJS. 证据：`ts/examples/cjs/README.md`\n- **Connected Accounts Example**（documentation）：This example demonstrates how to work with connected accounts in the Composio SDK, including authorization flows and waiting for connections to become active. 证据：`ts/examples/connected-accounts/README.md`\n- **Custom Tools Examples**（documentation）：This directory contains examples demonstrating how to create and use custom tools with Composio SDK. 证据：`ts/examples/custom-tools/README.md`\n- **File-handling Example**（documentation）：This example demonstrates how to use Composio SDK for file-handling. 证据：`ts/examples/file-handling/README.md`\n- **Google Example**（documentation）：This example demonstrates how to use Composio SDK with Google's GenAI Gemini . 证据：`ts/examples/google/README.md`\n- **Json-schema-to-zod Example**（documentation）：This example demonstrates how to use Composio SDK for json-schema-to-zod. 证据：`ts/examples/json-schema-to-zod/README.md`\n- **Llamaindex Example**（documentation）：This example demonstrates how to use Composio SDK for llamaindex. 证据：`ts/examples/llamaindex/README.md`\n- **Mastra Example**（documentation）：This example demonstrates how to use Composio SDK for mastra. 证据：`ts/examples/mastra/README.md`\n- **Mcp Example**（documentation）：This example demonstrates how to use Composio SDK for mcp. 证据：`ts/examples/mcp/README.md`\n- **Vercel Example with Composio SDK**（documentation）：This example demonstrates how to use the Composio SDK with Vercel's AI SDK to create an AI-powered application that can interact with HackerNews data. 证据：`ts/examples/modifiers/README.md`\n- **Session-management Example**（documentation）：This example demonstrates how to use Composio SDK for session-management. 证据：`ts/examples/session-management/README.md`\n- **Tool-router Example**（documentation）：This example demonstrates how to use Composio SDK for tool-router. 证据：`ts/examples/tool-router/README.md`\n- **Vercel Example with Composio SDK**（documentation）：This example demonstrates how to use the Composio SDK with Vercel's AI SDK to create an AI-powered application that can interact with HackerNews data. 证据：`ts/examples/toolkits/README.md`\n- 其余 61 条证据见 `AI_CONTEXT_PACK.json` 或 `EVIDENCE_INDEX.json`。\n\n## 宿主 AI 必须遵守的规则\n\n- **把本资产当作开工前上下文，而不是运行环境。**：AI Context Pack 只包含证据化项目理解，不包含目标项目的可执行状态。 证据：`docs/CLAUDE.md`, `docs/README.md`, `docs/scripts/README.md`\n- **回答用户时区分可预览内容与必须安装后才能验证的内容。**：安装前体验的消费者价值来自降低误装和误判，而不是伪装成真实运行。 证据：`docs/CLAUDE.md`, `docs/README.md`, `docs/scripts/README.md`\n\n## 用户开工前应该回答的问题\n\n- 你准备在哪个宿主 AI 或本地环境中使用它？\n- 你只是想先体验工作流，还是准备真实安装？\n- 你最在意的是安装成本、输出质量、还是和现有规则的冲突？\n\n## 验收标准\n\n- 所有能力声明都能回指到 evidence_refs 中的文件路径。\n- AI_CONTEXT_PACK.md 没有把预览包装成真实运行。\n- 用户能在 3 分钟内看懂适合谁、能做什么、如何开始和风险边界。\n\n---\n\n## Doramagic Context Augmentation\n\n下面内容用于强化 Repomix/AI Context Pack 主体。Human Manual 只提供阅读骨架；踩坑日志会被转成宿主 AI 必须遵守的工作约束。\n\n## Human Manual 骨架\n\n使用规则：这里只是项目阅读路线和显著性信号，不是事实权威。具体事实仍必须回到 repo evidence / Claim Graph。\n\n宿主 AI 硬性规则：\n- 不得把页标题、章节顺序、摘要或 importance 当作项目事实证据。\n- 解释 Human Manual 骨架时，必须明确说它只是阅读路线/显著性信号。\n- 能力、安装、兼容性、运行状态和风险判断必须引用 repo evidence、source path 或 Claim Graph。\n\n- **项目介绍**：importance `high`\n  - source_paths: README.md, python/README.md, ts/README.md\n- **快速入门指南**：importance `high`\n  - source_paths: ts/examples/tool-router/src/index.ts, python/examples/tool_router/openai_agents.py, docs/content/docs/quickstart.mdx\n- **系统架构**：importance `high`\n  - source_paths: ts/packages/core/src/composio.ts, ts/packages/core/src/provider/ComposioProvider.ts, python/composio/sdk.py, ts/packages/core/src/models/ToolRouter.ts, python/composio/core/models/tool_router.py\n- **TypeScript SDK 详解**：importance `high`\n  - source_paths: ts/packages/core/src/index.ts, ts/packages/core/src/models/Tools.ts, ts/packages/core/src/models/Toolkits.ts, ts/packages/core/src/models/ToolRouterSession.ts, ts/packages/core/src/models/ConnectedAccounts.ts\n- **Python SDK 详解**：importance `high`\n  - source_paths: python/composio/__init__.py, python/composio/core/models/tools.py, python/composio/core/models/toolkits.py, python/composio/core/models/tool_router.py, python/composio/core/models/connected_accounts.py\n- **工具包系统**：importance `high`\n  - source_paths: ts/packages/core/src/models/Toolkits.ts, python/composio/core/models/toolkits.py, ts/packages/core/src/models/CustomTool.ts, python/composio/core/models/custom_tool.py, docs/content/docs/toolkits/custom-tools-and-toolkits.mdx\n- **自定义工具开发**：importance `medium`\n  - source_paths: ts/packages/core/src/models/CustomTools.ts, python/composio/core/models/custom_tools.py, ts/examples/custom-tools/src/simple.ts, python/examples/custom_tools.py, docs/content/docs/tools-direct/custom-tools.mdx\n- **AI 框架提供商集成**：importance `high`\n  - source_paths: ts/packages/providers/openai/src/index.ts, ts/packages/providers/anthropic/src/index.ts, ts/packages/providers/langchain/src/index.ts, python/providers/openai/composio_openai/provider.py, python/providers/anthropic/composio_anthropic/provider.py\n\n## Repo Inspection Evidence / 源码检查证据\n\n- repo_clone_verified: true\n- repo_inspection_verified: true\n- repo_commit: `2d52e7f7c0ec2b6dfc858435a1073db6e2b0dab9`\n- inspected_files: `pyproject.toml`, `pnpm-lock.yaml`, `Dockerfile`, `package.json`, `README.md`, `uv.lock`, `docs/vercel.json`, `docs/source.config.ts`, `docs/CLAUDE.md`, `docs/package.json`, `docs/proxy.ts`, `docs/README.md`, `docs/tsconfig.json`, `docs/components.json`, `docs/bunfig.toml`, `docs/scripts/generate-meta-tools.ts`, `docs/scripts/generate-toolkits.ts`, `docs/scripts/generate-api-index.ts`, `docs/scripts/preload.ts`, `docs/scripts/README.md`\n\n宿主 AI 硬性规则：\n- 没有 repo_clone_verified=true 时，不得声称已经读过源码。\n- 没有 repo_inspection_verified=true 时，不得把 README/docs/package 文件判断写成事实。\n- 没有 quick_start_verified=true 时，不得声称 Quick Start 已跑通。\n\n## Doramagic Pitfall Constraints / 踩坑约束\n\n这些规则来自 Doramagic 发现、验证或编译过程中的项目专属坑点。宿主 AI 必须把它们当作工作约束，而不是普通说明文字。\n\n### Constraint 1: 来源证据：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops\n\n- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops\n- Host AI rule: 来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- Why it matters: 可能增加新用户试用和生产接入成本。\n- Evidence: community_evidence:github | cevd_54d53b3e2a6e4cf4a3e4783f824ed87b | https://github.com/ComposioHQ/composio/issues/3269 | 来源讨论提到 node 相关条件，需在安装/试用前复核。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 2: 来源证据：[Bug]: SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK returns successful but file is never shared to channel (channels:[], shar…\n\n- Trigger: GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Bug]: SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK returns successful but file is never shared to channel (channels:[], shares:{})\n- Host AI rule: 来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- Why it matters: 可能影响升级、迁移或版本选择。\n- Evidence: community_evidence:github | cevd_1b88beb594aa433eb998eac3b16a20e0 | https://github.com/ComposioHQ/composio/issues/3422 | 来源讨论提到 node 相关条件，需在安装/试用前复核。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 3: 来源证据：[Feature] Custom auth configs shouldn't require a dev project to use\n\n- Trigger: GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Feature] Custom auth configs shouldn't require a dev project to use\n- Host AI rule: 来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- Why it matters: 可能影响授权、密钥配置或安全边界。\n- Evidence: community_evidence:github | cevd_1d62ba62e77b47ff88b50d2db41a8cf7 | https://github.com/ComposioHQ/composio/issues/3271 | 来源讨论提到 linux 相关条件，需在安装/试用前复核。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 4: 仓库名和安装名不一致\n\n- Trigger: 仓库名 `composio` 与安装入口 `@composio/core` 不完全一致。\n- Host AI rule: 在 npm/PyPI/GitHub 上确认包名映射和官方 README 说明。\n- Why it matters: 用户照着仓库名搜索包或照着包名找仓库时容易走错入口。\n- Evidence: identity.distribution | github_repo:762304524 | https://github.com/ComposioHQ/composio | repo=composio; install=@composio/core\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 5: 能力判断依赖假设\n\n- Trigger: README/documentation is current enough for a first validation pass.\n- Host AI rule: 将假设转成下游验证清单。\n- Why it matters: 假设不成立时，用户拿不到承诺的能力。\n- Evidence: capability.assumptions | github_repo:762304524 | https://github.com/ComposioHQ/composio | README/documentation is current enough for a first validation pass.\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 6: 维护活跃度未知\n\n- Trigger: 未记录 last_activity_observed。\n- Host AI rule: 补 GitHub 最近 commit、release、issue/PR 响应信号。\n- Why it matters: 新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- Evidence: evidence.maintainer_signals | github_repo:762304524 | https://github.com/ComposioHQ/composio | last_activity_observed missing\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 7: 下游验证发现风险项\n\n- Trigger: no_demo\n- Host AI rule: 进入安全/权限治理复核队列。\n- Why it matters: 下游已经要求复核，不能在页面中弱化。\n- Evidence: downstream_validation.risk_items | github_repo:762304524 | https://github.com/ComposioHQ/composio | no_demo; severity=medium\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 8: 存在安全注意事项\n\n- Trigger: No sandbox install has been executed yet; downstream must verify before user use.\n- Host AI rule: 转成明确权限清单和安全审查提示。\n- Why it matters: 用户安装前需要知道权限边界和敏感操作。\n- Evidence: risks.safety_notes | github_repo:762304524 | https://github.com/ComposioHQ/composio | No sandbox install has been executed yet; downstream must verify before user use.\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 9: 存在评分风险\n\n- Trigger: no_demo\n- Host AI rule: 把风险写入边界卡，并确认是否需要人工复核。\n- Why it matters: 风险会影响是否适合普通用户安装。\n- Evidence: risks.scoring_risks | github_repo:762304524 | https://github.com/ComposioHQ/composio | no_demo; severity=medium\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 10: 来源证据：@composio/core@0.10.0\n\n- Trigger: GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：@composio/core@0.10.0\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能影响升级、迁移或版本选择。\n- Evidence: community_evidence:github | cevd_66f9d5fd557f41c7845ca5dd7d93ae6f | https://github.com/ComposioHQ/composio/releases/tag/%40composio/core%400.10.0 | 来源类型 github_release 暴露的待验证使用条件。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n",
      "summary": "给宿主 AI 的上下文和工作边界。",
      "title": "AI Context Pack / 带给我的 AI"
    },
    "boundary_risk_card": {
      "asset_id": "boundary_risk_card",
      "filename": "BOUNDARY_RISK_CARD.md",
      "markdown": "# Boundary & Risk Card / 安装前决策卡\n\n项目：ComposioHQ/composio\n\n## Doramagic 试用结论\n\n当前结论：可以进入发布前推荐检查；首次使用仍应从最小权限、临时目录和可回滚配置开始。\n\n## 用户现在可以做\n\n- 可以先阅读 Human Manual，理解项目目的和主要工作流。\n- 可以复制 Prompt Preview 做安装前体验；这只验证交互感，不代表真实运行。\n- 可以把官方 Quick Start 命令放到隔离环境中验证，不要直接进主力环境。\n\n## 现在不要做\n\n- 不要把 Prompt Preview 当成项目实际运行结果。\n- 不要把 metadata-only validation 当成沙箱安装验证。\n- 不要把未验证能力写成“已支持、已跑通、可放心安装”。\n- 不要在首次试用时交出生产数据、私人文件、真实密钥或主力配置目录。\n\n## 安装前检查\n\n- 宿主 AI 是否匹配：local_cli\n- 官方安装入口状态：已发现官方入口\n- 是否在临时目录、临时宿主或容器中验证：必须是\n- 是否能回滚配置改动：必须能\n- 是否需要 API Key、网络访问、读写文件或修改宿主配置：未确认前按高风险处理\n- 是否记录了安装命令、实际输出和失败日志：必须记录\n\n## 当前阻塞项\n\n- 无阻塞项。\n\n## 项目专属踩坑\n\n- 来源证据：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops（high）：可能增加新用户试用和生产接入成本。 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 来源证据：[Bug]: SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK returns successful but file is never shared to channel (channels:[], shar…（high）：可能影响升级、迁移或版本选择。 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 来源证据：[Feature] Custom auth configs shouldn't require a dev project to use（high）：可能影响授权、密钥配置或安全边界。 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 仓库名和安装名不一致（medium）：用户照着仓库名搜索包或照着包名找仓库时容易走错入口。 建议检查：在 npm/PyPI/GitHub 上确认包名映射和官方 README 说明。\n- 能力判断依赖假设（medium）：假设不成立时，用户拿不到承诺的能力。 建议检查：将假设转成下游验证清单。\n\n## 风险与权限提示\n\n- no_demo: medium\n\n## 证据缺口\n\n- 暂未发现结构化证据缺口。\n",
      "summary": "安装、权限、验证和推荐前风险。",
      "title": "Boundary & Risk Card / 边界与风险卡"
    },
    "human_manual": {
      "asset_id": "human_manual",
      "filename": "HUMAN_MANUAL.md",
      "markdown": "# https://github.com/ComposioHQ/composio 项目说明书\n\n生成时间：2026-05-14 00:23:05 UTC\n\n## 目录\n\n- [项目介绍](#intro)\n- [快速入门指南](#quickstart)\n- [系统架构](#architecture)\n- [TypeScript SDK 详解](#ts-sdk)\n- [Python SDK 详解](#py-sdk)\n- [工具包系统](#toolkits)\n- [自定义工具开发](#custom-tools)\n- [AI 框架提供商集成](#providers)\n- [MCP 协议集成](#mcp)\n- [CLI 命令行工具](#cli)\n\n<a id='intro'></a>\n\n## 项目介绍\n\n### 相关页面\n\n相关主题：[快速入门指南](#quickstart), [系统架构](#architecture)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [README.md](https://github.com/ComposioHQ/composio/blob/main/README.md)\n- [ts/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/README.md)\n- [ts/packages/cli/src/commands/root-help.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/root-help.ts)\n- [ts/packages/providers/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/packages/providers/README.md)\n- [ts/packages/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli-local-tools/src/registry.ts)\n- [ts/packages/core/src/types/modifiers.types.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/types/modifiers.types.ts)\n- [ts/packages/cli/src/services/tool-permissions.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/tool-permissions.ts)\n</details>\n\n# 项目介绍\n\n## 1. 项目概述\n\nComposio 是一个强大的 AI Agent 工具集成平台，旨在为 AI Agent 提供可靠、可扩展的工具调用能力。该项目采用 TypeScript 与 Python 双语言架构，通过统一的接口设计实现了跨平台、跨框架的工具调用支持。\n\nComposio 的核心价值主张包括：\n\n- **工具抽象层**：统一的工具定义和调用机制，支持多种 AI Agent 框架\n- **本地工具支持**：提供本地 CLI 工具集成，可在本地环境中执行工具\n- **权限管理**：完整的工具权限审批流程，确保工具调用的安全性\n- **Provider 系统**：灵活的工具包装和修改器机制，支持自定义工具行为\n\n## 2. 仓库结构\n\nComposio 采用 Monorepo 结构组织代码，主要分为 TypeScript 包和 Python SDK 两大部分。\n\n```mermaid\ngraph TD\n    A[composio 仓库根目录] --> B[ts/ - TypeScript Monorepo]\n    A --> C[python/ - Python SDK]\n    \n    B --> D[packages/cli - CLI 核心]\n    B --> E[packages/cli-local-tools - 本地工具]\n    B --> F[packages/core - 核心类型定义]\n    B --> G[packages/providers - Provider 基类]\n    B --> H[examples/ - 示例代码]\n    \n    C --> I[composio/ - Python SDK 源码]\n    C --> J[scripts/ - 文档生成脚本]\n```\n\n### 2.1 TypeScript Monorepo 结构\n\nTypeScript 部分位于 `ts/` 目录，包含完整的 CLI 工具和应用开发支持：\n\n| 目录/包 | 说明 | 主要功能 |\n|---------|------|----------|\n| `packages/cli` | CLI 核心包 | 命令行接口、权限管理、会话控制 |\n| `packages/cli-local-tools` | 本地工具包 | 本地工具注册和执行 |\n| `packages/core` | 核心类型包 | 类型定义、修改器接口 |\n| `packages/providers` | Provider 基类 | 工具包装基类实现 |\n| `examples/` | 示例代码 | 各功能模块的使用示例 |\n\n资料来源：[ts/README.md:1-50]()\n\n### 2.2 Python SDK 结构\n\nPython 部分位于 `python/` 目录，提供 Python 语言的 SDK 支持：\n\n| 目录/文件 | 说明 |\n|-----------|------|\n| `composio/` | SDK 核心源码 |\n| `scripts/generate-docs.py` | 文档生成工具 |\n| `docs/` | 生成的文档输出目录 |\n\n资料来源：[python/README.md:1-20]()\n\n## 3. 核心系统架构\n\n### 3.1 工具系统\n\nComposio 的工具系统是其核心组成部分，支持工具的发现、注册、调用和权限管理。\n\n```mermaid\ngraph LR\n    A[工具声明] --> B[本地工具注册表]\n    A --> C[远程工具索引]\n    \n    B --> D[工具执行器]\n    C --> D\n    \n    D --> E[权限检查]\n    E --> F[执行结果]\n    \n    B -.-> G[toCustomTool 转换]\n    C -.-> H[createToolkitIndex 索引]\n```\n\n#### 工具声明结构\n\n工具通过声明式接口定义，包含以下关键属性：\n\n```typescript\ninterface LocalToolDeclaration {\n  slug: string;           // 工具唯一标识\n  name: string;            // 工具显示名称\n  description: string;    // 工具描述\n  inputParams: InputParams;  // 输入参数定义\n  outputParams?: OutputParams; // 输出参数定义\n  execution: ExecutionConfig;  // 执行配置\n  platforms: LocalCliPlatform[];  // 支持的平台\n}\n```\n\n资料来源：[ts/packages/cli-local-tools/src/registry.ts:1-100]()\n\n#### 工具注册与过滤\n\n系统支持按工具包（Toolkit）进行过滤和分组：\n\n```typescript\nconst toolkitMatchesFilter = (\n  toolkit: LocalToolkitDeclaration,\n  requestedToolkits?: ReadonlyArray<string>\n): boolean => {\n  if (!requestedToolkits || requestedToolkits.length === 0) return true;\n  const requested = new Set(requestedToolkits.map(slug => slug.toLowerCase()));\n  return requested.has(toolkit.slug.toLowerCase());\n};\n```\n\n### 3.2 CLI 命令系统\n\nCLI 系统采用 Effect 框架构建，提供模块化的命令定义和子命令支持。\n\n#### 根命令帮助\n\n根命令提供全局选项和帮助信息：\n\n| 标志 | 说明 |\n|------|------|\n| `-h, --help [mode]` | 显示命令帮助（simple, default, full） |\n| `--version` | 显示版本信息 |\n| `--install-skill` | 手动安装 composio skill |\n\n资料来源：[ts/packages/cli/src/commands/root-help.ts:1-50]()\n\n#### 子命令结构\n\nCLI 采用树形命令结构：\n\n```mermaid\ngraph TD\n    A[composio] --> B[dev]\n    A --> C[execute]\n    A --> D[search]\n    A --> E[tools]\n    A --> F[toolkits]\n    A --> G[triggers]\n    A --> H[orgs]\n    \n    B --> B1[init]\n    B --> B2[playground-execute]\n    B --> B3[logs]\n    \n    E --> E1[list]\n    E --> E2[info]\n    \n    F --> F1[List]\n    F --> F2[Info]\n    F --> F3[Search]\n    F --> F4[Version]\n```\n\n#### 常用命令示例\n\n| 命令 | 功能 |\n|------|------|\n| `composio search <query>` | 按用途搜索工具 |\n| `composio tools list <toolkit>` | 列出工具包中的工具 |\n| `composio tools info <slug>` | 查看工具详细信息 |\n| `composio execute <slug> -d '{}'` | 执行工具调用 |\n| `composio link <toolkit>` | 链接账户 |\n| `composio dev init` | 初始化开发环境 |\n\n资料来源：[ts/packages/cli/src/services/command-hints.ts:1-80]()\n\n### 3.3 权限管理系统\n\nComposio 实现了完整的工具权限审批流程，确保工具调用的安全可控。\n\n```mermaid\nsequenceDiagram\n    participant CLI as CLI 客户端\n    participant Server as 权限服务器\n    participant User as 用户\n    \n    CLI->>Server: 请求执行工具\n    Server->>User: 显示权限确认页面\n    User->>Server: 选择权限决策\n    Server->>CLI: 返回决策结果\n```\n\n#### 权限决策类型\n\n| 决策 | 说明 | 有效期 |\n|------|------|--------|\n| `Allow for this session` | 会话级别允许 | 当前会话 |\n| `Allow once` | 单次允许 | 一次性 |\n| `Deny` | 拒绝 | 永久拒绝 |\n\n资料来源：[ts/packages/cli/src/services/tool-permissions.ts:1-60]()\n\n#### 权限确认页面\n\n系统通过本地 HTTP 服务器展示权限确认页面：\n\n```html\n<h1>Allow ${toolSlug}?</h1>\n<p>Composio CLI is requesting permission to execute this tool${accountLabel ? ` for ${accountLabel}` : ''}.</p>\n```\n\n### 3.4 Provider 系统\n\nProvider 系统提供了工具包装和修改的扩展机制，允许开发者自定义工具的行为。\n\n```mermaid\ngraph TD\n    A[BaseComposioProvider] --> B[BaseNonAgenticProvider]\n    A --> C[BaseAgenticProvider]\n    \n    B --> D[wrapTool]\n    B --> E[getTools]\n    B --> F[getToolBySlug]\n    \n    C --> G[wrapTool (Agentic)]\n    C --> H[getTools (Agentic)]\n    C --> I[getToolBySlug (Agentic)]\n```\n\n#### Provider 类型\n\n| Provider 类型 | 用途 | 主要方法 |\n|---------------|------|----------|\n| `BaseNonAgenticProvider` | 非智能体 Provider | `wrapTool`, `getTools`, `getToolBySlug` |\n| `BaseAgenticProvider` | 智能体 Provider | `wrapTool`, `getTools`, `getToolBySlug` |\n\n资料来源：[ts/packages/providers/README.md:1-80]()\n\n#### 工具修改器\n\nProvider 使用修改器（Modifiers）来调整工具的 Schema 和行为：\n\n```typescript\ntype ProviderOptions<TProvider> =\n  TProvider extends BaseComposioProvider<infer TToolCollection, infer TTool, infer TMcpResponse>\n    ? TProvider extends BaseAgenticProvider<TToolCollection, TTool, TMcpResponse>\n      ? AgenticToolOptions\n      : ToolOptions\n    : never;\n```\n\n修改器支持的钩子函数：\n\n| 钩子函数 | 触发时机 | 用途 |\n|----------|----------|------|\n| `modifySchema` | Schema 生成时 | 修改输入输出结构 |\n| `beforeExecute` | 执行前 | 参数预处理 |\n| `afterExecute` | 执行后 | 结果后处理 |\n\n## 4. 核心组件详解\n\n### 4.1 终端 UI 服务\n\nTerminalUI 提供统一的命令行输出接口：\n\n```typescript\ninterface TerminalUI {\n  readonly output: (data: string, options?: { force?: boolean }) => Effect<void>;\n  readonly intro: (title: string) => Effect<void>;\n  readonly outro: (message: string) => Effect<void>;\n  readonly log: {\n    readonly info: (message: string) => Effect<void>;\n    readonly success: (message: string) => Effect<void>;\n    readonly warn: (message: string) => Effect<void>;\n    readonly error: (message: string) => Effect<void>;\n    readonly step: (message: string) => Effect<void>;\n  };\n  readonly note: (message: string, title?: string) => Effect<void>;\n  readonly withSpinner: <A, E, R>(message: string, effect: Effect<A, E, R>) => Effect<A>;\n}\n```\n\n资料来源：[ts/packages/cli/src/services/terminal-ui.ts:1-40]()\n\n### 4.2 错误处理机制\n\n系统使用 Effect 框架进行错误处理：\n\n```typescript\nexport const captureErrorsFrom = <E>(cause: Cause<E>): readonly PrettyError[] =>\n  reduceWithContext(cause, undefined, {\n    emptyCase: (): readonly PrettyError[] => [],\n    dieCase: (_, unknownError) => [parseError(unknownError)],\n    failCase: (_, error) => [parseError(error)],\n    interruptCase: () => [],\n    parallelCase: (_, l, r) => [...l, ...r],\n    sequentialCase: (_, l, r) => [...l, ...r],\n  });\n```\n\n资料来源：[ts/packages/cli/src/effect-errors/logic/errors/capture-errors-from-cause.ts:1-20]()\n\n### 4.3 配置加载系统\n\n系统支持从文件加载和解析配置：\n\n```mermaid\ngraph LR\n    A[配置文件] --> B[ConfigLoader]\n    B --> C[Path 解析]\n    C --> D[Primitive 解析]\n    D --> E[split 分割]\n    E --> F[Array<A>]\n```\n\n支持的分隔符解析功能，允许用户自定义分隔符来拆分配置值。\n\n资料来源：[ts/packages/cli/src/effects/from-lazy-json.ts:1-50]()\n\n### 4.4 工具包索引\n\n工具包索引系统提供工具的分组和类型化支持：\n\n```typescript\nexport type CreateToolkitIndexInput = Simplify<{\n  slug: string;\n  version?: string;\n  typeableTools:\n    | { withTypes: false; value: Record<`${ToolkitName}_${string}`, ToolAsEnum> }\n    | { withTypes: true; value: Record<`${ToolkitName}_${string}`, Tool> };\n  triggerTypes: Record<`${ToolkitName}_${string}`, TriggerType>;\n}>;\n\nexport type ToolkitIndex = Record<ToolkitName, ToolkitIndexData>;\n```\n\n资料来源：[ts/packages/cli/src/generation/create-toolkit-index.ts:1-30]()\n\n## 5. 开发指南\n\n### 5.1 环境准备\n\n```bash\n# 安装依赖\npnpm install\n\n# 安装 peer 依赖\npnpm check:peer-deps\n```\n\n资料来源：[ts/README.md:1-50]()\n\n### 5.2 创建新 Provider\n\n```bash\n# 创建非智能体 Provider\npnpm create:provider <provider-name>\n\n# 创建智能体 Provider\npnpm create:provider <provider-name> --agentic\n```\n\nProvider 创建后的结构：\n\n```\n<provider-name>/\n├── src/\n│   └── index.ts      # Provider 实现\n├── package.json      # 包配置\n├── tsconfig.json     # TypeScript 配置\n├── tsup.config.ts    # 构建配置\n└── README.md         # 文档\n```\n\n资料来源：[ts/README.md:50-80]()\n\n### 5.3 创建示例代码\n\n```bash\npnpm create:example <example-name>\n```\n\n### 5.4 本地工具配置\n\n本地工具支持灵活的配置文件管理：\n\n| 配置项 | 说明 |\n|--------|------|\n| `command` | 安装命令 |\n| `disabled` | 是否禁用 |\n| `authenticated` | 是否需要认证 |\n\n配置完成后可运行：\n\n```bash\ncomposio local-tools doctor --toolkits <toolkit-name>\n```\n\n资料来源：[ts/packages/cli/src/commands/local-tools/commands/local-tools.configure.cmd.ts:1-60]()\n\n## 6. Python SDK 文档生成\n\nComposio 使用 Griffe 工具从 Python 源码自动生成文档：\n\n```bash\ncd python\nuv run --with griffe python scripts/generate-docs.py\n```\n\n文档生成流程：\n\n```mermaid\ngraph LR\n    A[Python 源码] -->|griffe 提取| B[结构化数据]\n    B -->|transform| C[MDX 文件]\n    C --> D[docs/content/reference/sdk-reference/python/]\n```\n\n资料来源：[python/scripts/README.md:1-30]()\n\n## 7. 项目技术栈\n\n### 7.1 TypeScript 技术栈\n\n| 技术 | 用途 |\n|------|------|\n| Effect | 函数式错误处理和 Effect 编程 |\n| Effect/Cli | CLI 命令行框架 |\n| TypeScript | 类型系统 |\n| tsup | 构建工具 |\n\n### 7.2 Python 技术栈\n\n| 技术 | 用途 |\n|------|------|\n| Griffe | Docstring 解析 |\n| MDX | 文档格式 |\n\n## 8. 总结\n\nComposio 是一个设计精良的 AI Agent 工具集成平台，其架构特点包括：\n\n1. **模块化设计**：通过 Monorepo 结构实现代码的高内聚低耦合\n2. **类型安全**：全面使用 TypeScript 提供类型保障\n3. **函数式编程**：采用 Effect 框架实现纯函数式错误处理\n4. **扩展性强**：Provider 系统支持自定义工具包装行为\n5. **双语言支持**：同时提供 TypeScript 和 Python SDK\n\n通过本项目，开发者可以快速构建基于 AI Agent 的应用，享受统一工具调用接口带来的便利。\n\n---\n\n<a id='quickstart'></a>\n\n## 快速入门指南\n\n### 相关页面\n\n相关主题：[TypeScript SDK 详解](#ts-sdk), [Python SDK 详解](#py-sdk), [AI 框架提供商集成](#providers)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/examples/tool-router/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/examples/tool-router/README.md)\n- [python/README.md](https://github.com/ComposioHQ/composio/blob/main/python/README.md)\n- [ts/packages/cli/src/commands/root-help.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/root-help.ts)\n- [ts/packages/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli-local-tools/src/registry.ts)\n- [ts/packages/providers/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/packages/providers/README.md)\n- [ts/packages/cli/src/commands/local-tools/commands/local-tools.configure.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/local-tools/commands/local-tools.configure.cmd.ts)\n- [ts/packages/cli/src/services/command-hints.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/command-hints.ts)\n</details>\n\n# 快速入门指南\n\nComposio 是一个强大的 AI 代理工具集成平台，支持多种主流 AI 框架（如 OpenAI、LangChain 等）。本指南将帮助您快速上手 Composio，掌握核心概念、安装配置、工具使用以及 CLI 命令行工具的基本操作。\n\n## 概述\n\nComposio 提供了统一的工具抽象层，使 AI 代理能够访问超过 250+ 的外部应用工具。通过 Composio SDK，开发者可以：\n\n- 快速集成 OpenAI、Anthropic、LangChain 等主流 AI 框架\n- 获取并管理可用的应用工具\n- 使用 schema 修饰器转换工具架构\n- 通过 CLI 工具进行本地开发和调试\n\n## 环境要求\n\n| 组件 | 最低版本要求 |\n|------|-------------|\n| Node.js | >= 18.0.0 |\n| Python | >= 3.10 |\n| pnpm | >= 8.0.0 |\n\n## 安装配置\n\n### TypeScript SDK 安装\n\nComposio 的 TypeScript SDK 提供两种安装方式：完整包安装和按需安装 资料来源：[ts/packages/cli/src/commands/root-help.ts:1-50]()\n\n```bash\n# 完整安装\npnpm add @composio/core @composio/cli\n\n# 仅安装核心包\npnpm add @composio/core\n```\n\n### Python SDK 安装\n\n```bash\npip install composio-core\n```\n\n### 环境变量配置\n\n创建 `.env` 文件并配置以下环境变量 资料来源：[ts/examples/tool-router/README.md:10-20]()\n\n```bash\n# 必需的环境变量\nCOMPOSIO_API_KEY=your_api_key_here\n\n# 可选配置\nOPENAI_API_KEY=your_openai_key       # OpenAI 集成必需\nOPENAI_MODEL=gpt-4o                  # 模型覆盖\nCOMPOSIO_BASE_URL=https://api.composio.dev  # 自定义 API 地址\nCOMPOSIO_LOG_LEVEL=info              # 日志级别\nCOMPOSIO_DISABLE_TELEMETRY=true      # 禁用遥测\n```\n\n### CLI 初始化\n\n使用 `composio init` 命令初始化项目 资料来源：[ts/packages/cli/src/commands/init.cmd.ts:1-30]()\n\n```bash\n# 交互式初始化\ncomposio init\n\n# 或指定项目目录\ncomposio init --cwd ./my-project\n```\n\n初始化过程会提示您选择组织、创建项目，并自动生成 `.env.local` 配置文件。\n\n## 核心概念\n\n### 工具与工具包\n\nComposio 中的工具（Tool）是执行特定操作的最小单元，工具包（Toolkit）是相关工具的集合。每个工具都有唯一的 slug 标识符，格式为 `{TOOLKIT}_{ACTION}`，例如 `GITHUB_CREATE_REPO`。\n\n### Provider 提供商\n\nProvider 是 Composio SDK 与不同 AI 框架之间的桥梁。目前支持的提供商包括 资料来源：[ts/packages/providers/README.md:1-40]()\n\n| Provider 类型 | 说明 |\n|--------------|------|\n| OpenAIProvider | OpenAI Agents SDK 集成 |\n| AnthropicProvider | Anthropic Claude 集成 |\n| LangChainProvider | LangChain 框架集成 |\n\n### 修饰器\n\nComposio 支持强大的修饰器（Modifiers）功能，用于转换工具 schema 和执行行为 资料来源：[python/README.md:60-100]()\n\n```python\nfrom composio import schema_modifier\n\n@schema_modifier(tools=[\"HACKERNEWS_GET_USER\"])\ndef modify_schema(tool: str, toolkit: str, schema: Tool) -> Tool:\n    schema[\"description\"] = \"增强版用户查询\"\n    return schema\n```\n\n## 快速开始示例\n\n### TypeScript 工具路由器\n\n以下示例展示如何使用 TypeScript SDK 进行工具路由 资料来源：[ts/examples/tool-router/src/index.ts:1-50]()\n\n```typescript\nimport { Composio } from \"@composio/core\";\n\nasync function main() {\n  // 初始化 SDK\n  const client = new Composio({\n    apiKey: process.env.COMPOSIO_API_KEY,\n  });\n\n  // 获取所有可用工具\n  const tools = await client.tools.list();\n\n  // 获取特定工具\n  const githubTool = await client.tools.get({\n    slug: \"GITHUB_CREATE_REPO\",\n    app: \"github\"\n  });\n\n  // 执行工具\n  const result = await client.execute(\"github_create_repo\", {\n    name: \"my-new-repo\",\n    description: \"Repository created via Composio\"\n  });\n}\n```\n\n### Python OpenAI Agents 集成\n\n```python\nfrom composio import Composio\nfrom openai import OpenAI\n\nclient = Composio(api_key=\"your_api_key\")\nopenai_client = OpenAI()\n\n# 获取工具\ntools = client.tools.get_tools(apps=[\"github\", \"slack\"])\n\n# 在 OpenAI Agents 中使用\nassistant = openai_client.beta.assistants.create(\n    model=\"gpt-4o\",\n    tools=tools\n)\n```\n\n## CLI 命令参考\n\n### 常用命令速查\n\n| 命令 | 功能 |\n|------|------|\n| `composio init` | 初始化新项目 |\n| `composio tools list` | 列出所有可用工具 |\n| `composio tools info <slug>` | 查看工具详情 |\n| `composio execute <slug>` | 执行指定工具 |\n| `composio link <toolkit>` | 连接第三方账户 |\n| `composio local-tools list` | 列出本地工具 |\n\n### 工具列表命令\n\n```bash\n# 列出所有工具\ncomposio tools list\n\n# 列出特定工具包的工具\ncomposio tools list --toolkit github\n\n# JSON 格式输出\ncomposio tools list --json\n```\n\n### 工具信息查询\n\n```bash\n# 查看工具详情\ncomposio tools info GITHUB_CREATE_REPO\n\n# 获取工具执行 schema\ncomposio execute GITHUB_CREATE_REPO --get-schema\n```\n\n### 执行工具\n\n```bash\n# 执行工具（交互式）\ncomposio execute GITHUB_CREATE_REPO\n\n# 执行工具（传入参数）\ncomposio execute GITHUB_CREATE_REPO -d '{\"name\": \"my-repo\", \"private\": true}'\n```\n\n### 账户连接\n\n```bash\n# 连接第三方账户\ncomposio link github\ncomposio link slack\n\n# 查看已连接账户\ncomposio accounts list\n```\n\n## 本地 CLI 工具\n\nComposio 支持本地 CLI 工具扩展，允许 Tool Router 搜索和执行本地工具 资料来源：[ts/packages/cli-local-tools/src/registry.ts:1-60]()\n\n### 本地工具命令\n\n| 命令 | 功能 |\n|------|------|\n| `composio local-tools list` | 列出已注册本地工具包 |\n| `composio local-tools doctor` | 检查本地工具就绪状态 |\n| `composio local-tools configure` | 配置本地工具 |\n\n### 配置本地工具\n\n```bash\n# 配置工具包\ncomposio local-tools configure <toolkit-slug> \\\n  --command /path/to/tool \\\n  --authenticated\n\n# 禁用工具\ncomposio local-tools configure <toolkit-slug> --disable\n\n# 启用工具\ncomposio local-tools configure <toolkit-slug> --enable\n```\n\n### 列出本地工具\n\n```bash\n# 基本列表\ncomposio local-tools list\n\n# 包含不支持当前平台的工具\ncomposio local-tools list --all-platforms\n\n# 过滤特定工具包\ncomposio local-tools list --toolkits mytoolkit\n\n# JSON 格式输出\ncomposio local-tools list --json\n```\n\n## 开发模式\n\nComposio 提供开发模式用于本地调试和测试 资料来源：[ts/packages/cli/src/commands/root-help.ts:40-80]()\n\n### 开发命令\n\n```bash\n# 初始化开发环境\ncomposio dev init\n\n# 在 Playgroun 中执行工具\ncomposio dev playground-execute <slug> \\\n  --user-id <user-id> \\\n  -d '{}'\n\n# 获取执行 schema\ncomposio dev playground-execute <slug> --get-schema\n\n# 查看工具执行日志\ncomposio dev logs tools <log_id>\n\n# 查看触发器日志\ncomposio dev logs triggers <log_id>\n```\n\n## 工具包管理\n\n### 发现工具包\n\n```bash\n# 列出所有工具包\ncomposio toolkits list\n\n# 搜索工具包\ncomposio toolkits search <keyword>\n\n# 查看工具包详情\ncomposio toolkits info <toolkit-name>\n```\n\n### 管理工具包版本\n\n```bash\n# 查看工具包版本\ncomposio toolkits version <toolkit-name>\n\n# 设置特定版本\nCOMPOSIO_TOOLKIT_VERSION_GITHUB=20250902_00\n```\n\n## 工作流程图\n\n### 基本集成流程\n\n```mermaid\ngraph TD\n    A[初始化 Composio SDK] --> B[配置 API Key]\n    B --> C[获取可用工具]\n    C --> D[选择工具包]\n    D --> E[执行工具操作]\n    E --> F{操作成功?}\n    F -->|是| G[返回结果]\n    F -->|否| H[错误处理]\n```\n\n### CLI 工具执行流程\n\n```mermaid\ngraph TD\n    A[composio 命令] --> B{子命令类型}\n    B -->|tools| C[工具操作]\n    B -->|execute| D[执行工具]\n    B -->|local-tools| E[本地工具]\n    B -->|dev| F[开发模式]\n    \n    C --> C1[list/信息查询]\n    D --> D1[权限检查]\n    D1 --> D2[执行工具]\n    E --> E1[配置/列表/诊断]\n    F --> F1[Playground/日志]\n```\n\n## 最佳实践\n\n### 1. 项目结构组织\n\n```\nmy-agent-project/\n├── .env.local          # 本地环境变量\n├── composio.config.ts  # SDK 配置\n├── src/\n│   ├── index.ts        # 入口文件\n│   └── tools/          # 工具封装\n└── package.json\n```\n\n### 2. 安全管理\n\n- 使用环境变量存储 API Key，避免硬编码\n- 使用 `.env.local` 存储项目级敏感信息\n- 通过 CLI 的权限确认功能控制工具执行\n\n### 3. 错误处理\n\n```typescript\nimport { ComposioSDKError } from \"@composio/core\";\n\ntry {\n  const result = await client.execute(\"tool_slug\", params);\n} catch (error) {\n  if (error instanceof ComposioSDKError) {\n    console.error(`SDK Error: ${error.message}`);\n  }\n}\n```\n\n### 4. 性能优化\n\n- 预加载常用工具到 `session.tools()`\n- 使用 `SessionPreset.DIRECT_TOOLS` 预加载所有允许的工具\n- 避免在循环中频繁调用工具获取接口\n\n## 常见问题\n\n### Q: 如何获取 API Key？\n\n访问 [Composio Dashboard](https://app.composio.dev) 注册账号并获取 API Key。\n\n### Q: 工具执行失败怎么办？\n\n1. 使用 `composio local-tools doctor` 检查本地环境\n2. 使用 `composio tools info <slug>` 确认工具参数正确\n3. 查看 `composio dev logs tools <log_id>` 获取详细错误信息\n\n### Q: 如何使用自定义 Provider？\n\n参考 [Provider 创建文档](ts/packages/providers/README.md)，使用 `pnpm run create-provider <name>` 创建自定义 Provider。\n\n## 下一步\n\n- 深入阅读 [工具包文档](ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts)\n- 了解 [Schema 修饰器](python/README.md)的高级用法\n- 探索 [OpenAI 集成示例](python/examples/tool_router/openai_agents.py)\n- 加入 [Discord 社区](https://discord.gg/composio) 获取帮助\n\n---\n\n<a id='architecture'></a>\n\n## 系统架构\n\n### 相关页面\n\n相关主题：[TypeScript SDK 详解](#ts-sdk), [Python SDK 详解](#py-sdk), [工具包系统](#toolkits)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/core/src/composio.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/composio.ts)\n- [ts/packages/core/src/provider/ComposioProvider.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/provider/ComposioProvider.ts)\n- [python/composio/sdk.py](https://github.com/ComposioHQ/composio/blob/main/python/composio/sdk.py)\n- [ts/packages/core/src/models/ToolRouter.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/ToolRouter.ts)\n- [python/composio/core/models/tool_router.py](https://github.com/ComposioHQ/composio/blob/main/python/composio/core/models/tool_router.py)\n- [ts/packages/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli-local-tools/src/registry.ts)\n- [ts/packages/providers/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/packages/providers/README.md)\n- [ts/packages/cli/src/effects/toolkit-version-overrides.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/effects/toolkit-version-overrides.ts)\n</details>\n\n# 系统架构\n\n## 概述\n\nComposio 是一个多语言 Agent 工具集成平台，支持通过统一的 SDK 接口调用外部工具和服务。系统架构采用分层设计，核心层负责工具路由和执行管理，Provider 层提供灵活的扩展机制，CLI 层提供命令行交互能力。本文档基于源码分析，阐述 Composio 的整体架构设计、各核心模块职责以及跨语言 SDK 的实现机制。\n\n## 架构分层\n\nComposio 系统采用四层架构设计，从上到下依次为：\n\n| 层级 | 名称 | 职责 | 主要实现 |\n|------|------|------|----------|\n| 1 | SDK 层 | 对外提供统一的工具调用接口 | `composio.ts`、`sdk.py` |\n| 2 | 核心层 | 工具路由、Schema 修饰、Provider 管理 | `ToolRouter.ts`、`tool_router.py` |\n| 3 | Provider 层 | 工具封装、Schema 转换、执行拦截 | `ComposioProvider.ts` |\n| 4 | CLI 层 | 命令行工具、本地工具注册 | `registry.ts` |\n\n```mermaid\ngraph TD\n    subgraph SDK层\n        TS_SDK[TypeScript SDK<br/>composio.ts]\n        PY_SDK[Python SDK<br/>sdk.py]\n    end\n\n    subgraph 核心层\n        TR_TypeScript[ToolRouter<br/>TypeScript]\n        TR_Python[ToolRouter<br/>Python]\n    end\n\n    subgraph Provider层\n        CP[ComposioProvider]\n        BaseProvider[BaseComposioProvider]\n        AgenticProvider[BaseAgenticProvider]\n    end\n\n    subgraph CLI层\n        CLI[Composio CLI]\n        LocalRegistry[本地工具注册表<br/>registry.ts]\n    end\n\n    subgraph 外部服务\n        API[Composio API]\n        MCP[MCP Server]\n    end\n\n    TS_SDK --> TR_TypeScript\n    PY_SDK --> TR_Python\n    TR_TypeScript --> CP\n    TR_Python --> CP\n    CP --> BaseProvider\n    CP --> AgenticProvider\n    CLI --> LocalRegistry\n    CP --> API\n    CP --> MCP\n```\n\n## 核心模块\n\n### SDK 入口\n\nComposio 提供 TypeScript 和 Python 两种 SDK 入口，两者在设计思想上保持一致，但实现细节根据语言特性有所差异。\n\n#### TypeScript SDK\n\nTypeScript SDK 的核心入口位于 `composio.ts`，该文件导出一个统一的 `Composio` 类。SDK 初始化时接受配置参数，包括 API 密钥、基础 URL、日志级别等。SDK 内部持有 `ComposioTool` 实例用于工具管理，并通过 `ComposioProvider` 与后端服务通信。\n\n主要配置选项：\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| `apiKey` | `string` | Composio API 密钥 |\n| `baseURL` | `string` | API 基础地址，默认为 Composio 官方服务 |\n| `toolkitVersionOverrides` | `Map<string, string>` | 工具包版本覆盖 |\n| `logLevel` | `LogLevel` | 日志级别：silent、error、warn、info、debug |\n| `disableTelemetry` | `boolean` | 是否禁用遥测数据 |\n\n#### Python SDK\n\nPython SDK 位于 `python/composio/sdk.py`，采用类式设计，提供 `Composio` 类作为主要入口。Python SDK 通过 `openai` 库实现与 OpenAI 生态的集成，同时支持自定义 LLM 客户端。\n\n### 工具路由器\n\n工具路由器（ToolRouter）是架构的核心组件，负责工具的注册、查询和路由。\n\n#### TypeScript ToolRouter\n\n`ToolRouter.ts` 实现了 TypeScript 端的工具路由逻辑。路由器维护一个工具索引（ToolkitIndex），将工具按照所属工具包（Toolkit）进行分组管理。\n\n关键数据结构：\n\n```typescript\nexport type ToolkitIndex = Record<ToolkitName, ToolkitIndexData>;\n\nexport type ToolkitIndexData = Simplify<{\n  slug: string;\n  version?: string;\n  typeableTools: \n    | { withTypes: false; value: Record<`${ToolkitName}_${string}`, ToolAsEnum> }\n    | { withTypes: true; value: Record<`${ToolkitName}_${string}`, Tool> };\n  triggerTypes: Record<`${ToolkitName}_${string}`, TriggerType>;\n}>;\n```\n\n路由器通过 `createToolkitIndex` 函数从输入数据构建索引，该函数接收版本映射（versionMap）用于工具包版本控制。\n\n#### Python ToolRouter\n\nPython 端在 `python/composio/core/models/tool_router.py` 中实现对应的路由器功能。Python 版本同样维护工具索引，但使用 Python 原生的字典和类结构。\n\n### Provider 体系\n\nProvider 是 Composio 架构中实现工具封装和执行拦截的关键组件。系统定义了两种 Provider 类型：\n\n#### BaseComposioProvider\n\n基础 Provider 实现了工具的包装和获取逻辑。所有非 Agentic Provider 都继承自此类：\n\n```typescript\nclass NonAgenticProvider extends BaseNonAgenticProvider {\n  async wrapTool(toolSlug: string, tool: Tool, modifiers?: SchemaModifiersParams): Promise<Tool>;\n  async getTools(modifiers?: SchemaModifiersParams): Promise<Tool[]>;\n  async getToolBySlug(slug: string, modifiers?: SchemaModifiersParams): Promise<Tool>;\n}\n```\n\n#### BaseAgenticProvider\n\nAgentic Provider 继承自基础 Provider，增加了对 Agentic 工具的支持。Agentic 工具具有更复杂的执行流程，能够在执行前后进行上下文干预：\n\n```typescript\nclass AgenticProvider extends BaseAgenticProvider {\n  async wrapTool(toolSlug: string, tool: Tool, modifiers?: ModifiersParams): Promise<Tool>;\n  async getTools(modifiers?: ModifiersParams): Promise<Tool[]>;\n}\n```\n\n#### ComposioProvider\n\n`ComposioProvider.ts` 是 SDK 与外部服务通信的主要入口，它组合了多个底层 Provider 的能力：\n\n```mermaid\ngraph LR\n    ComposioProvider -->|持有| BaseComposioProvider\n    ComposioProvider -->|持有| BaseAgenticProvider\n    ComposioProvider -->|调用| ComposioToolkitsRepository\n    ComposioProvider -->|调用| HTTPClient\n```\n\nProvider 的选择通过类型推断实现，SDK 根据传入的 Provider 类型自动选择合适的工具选项类型：\n\n```typescript\nexport type ProviderOptions<TProvider> =\n  TProvider extends BaseComposicProvider<infer TToolCollection, infer TTool, infer TMcpResponse>\n    ? TProvider extends BaseAgenticProvider<TToolCollection, TTool, TMcpResponse>\n      ? AgenticToolOptions\n      : ToolOptions\n    : never;\n```\n\n## 工具包版本管理\n\nComposio 支持通过环境变量对工具包版本进行精细化控制。每个工具包可以指定特定版本或使用最新版本。\n\n### 版本覆盖机制\n\n版本覆盖通过 `ToolkitVersionOverrides` 类型管理：\n\n```typescript\nexport type ToolkitVersionOverrides = Map<Lowercase<string>, string>;\n```\n\n### 版本分组与验证\n\n版本分组逻辑将具有相同版本的工具包聚合在一起，便于批量处理：\n\n```typescript\nexport const groupByVersion = (\n  specs: ReadonlyArray<ToolkitVersionSpec>\n): Map<string, Lowercase<string>[]> => {\n  const grouped = new Map<string, Lowercase<string>[]>();\n  for (const spec of specs) {\n    const existing = grouped.get(spec.toolkitVersion);\n    if (existing) {\n      existing.push(spec.toolkitSlug);\n    } else {\n      grouped.set(spec.toolkitVersion, [spec.toolkitSlug]);\n    }\n  }\n  return grouped;\n};\n```\n\n版本验证通过 `validateToolkitVersionOverrides` 函数执行，该函数会调用 API 验证版本有效性并在遇到错误时提供友好的错误信息。\n\n### 环境变量配置\n\n工具包版本可通过以下格式的环境变量配置：\n\n| 环境变量 | 说明 | 示例 |\n|----------|------|------|\n| `COMPOSIO_TOOLKIT_VERSION_<TOOLKIT_NAME>` | 指定工具包版本 | `COMPOSIO_TOOLKIT_VERSION_GITHUB=20250902_00` |\n\n版本值 `\"latest\"` 表示使用最新版本，不会被添加到版本映射中。\n\n## Schema 修饰器\n\nSchema 修饰器（Schema Modifiers）允许在工具执行的不同阶段对请求和响应进行处理。这是实现日志记录、参数转换、结果过滤等功能的基础机制。\n\n### 修饰器类型\n\n```typescript\ninterface SchemaModifiersParams {\n  modifySchema?: (context: SchemaModificationContext) => SchemaModificationResult;\n  beforeExecute?: (context: ExecutionContext) => ExecutionContext;\n  afterExecute?: (context: ExecutionContext) => ExecutionContext;\n}\n```\n\n### 执行流程\n\n```mermaid\ngraph TD\n    A[接收工具调用] --> B{有 modifySchema?}\n    B -->|是| C[应用 Schema 修饰]\n    B -->|否| D[使用原始 Schema]\n    C --> E{有 beforeExecute?}\n    D --> E\n    E -->|是| F[执行 beforeExecute]\n    E -->|否| G[调用工具]\n    F --> G\n    G --> H{有 afterExecute?}\n    H -->|是| I[执行 afterExecute]\n    H -->|否| J[返回结果]\n    I --> J\n```\n\n## 本地工具系统\n\nComposio CLI 提供本地工具注册和管理能力，允许用户定义和执行本地命令行工具。\n\n### 本地工具注册表\n\n本地工具注册表（`registry.ts`）负责管理所有本地工具的定义和元数据：\n\n```typescript\nexport const getAllLocalToolkitSlugs = (\n  options: { readonly declarations?: ReadonlyArray<LocalToolkitDeclaration> } = {}\n): ReadonlyArray<string> =>\n  declarationsFor(options.declarations).map(toolkit => toolkit.slug.toLowerCase());\n```\n\n### 工具匹配与过滤\n\n注册表提供多种匹配工具的方法：\n\n| 方法 | 用途 |\n|------|------|\n| `toolkitMatchesFilter` | 检查工具包是否匹配过滤器 |\n| `isLocalToolkitSlug` | 验证是否为本地工具包 |\n| `isLocalToolSlug` | 验证是否为本地工具 |\n| `resolveLocalTool` | 根据 slug 解析本地工具 |\n\n### 本地工具执行\n\n本地工具通过统一的执行函数处理：\n\n```typescript\nconst executeLocalTool = async (\n  execution: LocalToolExecution,\n  input: Record<string, unknown>,\n  options: ExecuteLocalToolOptions\n) => {\n  // 处理工具执行逻辑\n};\n```\n\n## 错误处理机制\n\nComposio 使用 Effect 库进行函数式错误处理，通过 `captureErrorsFrom` 函数将 Effect 的 Cause 转换为友好的错误信息：\n\n```typescript\nexport const captureErrorsFrom = <E>(cause: Cause<E>): readonly PrettyError[] =>\n  reduceWithContext(cause, undefined, {\n    emptyCase: (): readonly PrettyError[] => [],\n    dieCase: (_, unknownError) => [parseError(unknownError)],\n    failCase: (_, error) => [parseError(error)],\n    interruptCase: () => [],\n    parallelCase: (_, l, r) => [...l, ...r],\n    sequentialCase: (_, l, r) => [...l, ...r],\n  });\n```\n\n## CLI 命令架构\n\nComposio CLI 采用 Effect 框架构建命令系统，每个命令都是一个 Effect 子程序。命令通过模块化组织，核心命令包括：\n\n| 命令 | 功能 |\n|------|------|\n| `composio execute` | 执行指定工具 |\n| `composio tools list` | 列出工具包中的工具 |\n| `composio tools info` | 查看工具详情 |\n| `composio local-tools` | 管理本地工具 |\n| `composio dev init` | 初始化开发环境 |\n| `composio dev playground-execute` | 操场执行工具 |\n\n### TypeScript 生成命令\n\n`ts.generate.cmd.ts` 实现了 `composio generate ts` 命令，用于生成 TypeScript 类型定义文件：\n\n```mermaid\ngraph LR\n    A[generate ts 命令] --> B{指定 --output-dir?}\n    B -->|是| C[写入指定目录]\n    B -->|否| D[查找 @composio/core]\n    C --> E{指定 --transpiled?}\n    D --> E\n    E -->|是| F[生成 .ts + .js]\n    E -->|否| G[仅生成 .ts]\n    F --> H[完成]\n    G --> H\n```\n\n## Provider 扩展机制\n\nComposio 支持通过创建自定义 Provider 来扩展系统功能。创建新 Provider 的标准流程：\n\n1. 使用 `pnpm create:provider <name>` 创建 Provider 骨架\n2. 在 `src/index.ts` 中实现必要方法\n3. 注册 Provider 到 SDK\n\n```bash\n# 创建非 Agentic Provider\npnpm create:provider my-provider\n\n# 创建 Agentic Provider\npnpm create:provider my-provider --agentic\n```\n\n## 数据流总结\n\n```mermaid\ngraph TD\n    subgraph 用户代码\n        User[用户调用 SDK]\n    end\n\n    subgraph SDK 层\n        Composio_SDK[Composio SDK]\n    end\n\n    subgraph 核心层\n        ToolRouter[ToolRouter]\n        ToolkitIndex[ToolkitIndex]\n    end\n\n    subgraph Provider 层\n        Provider[ComposioProvider]\n        MCP_Client[MCP Client]\n    end\n\n    subgraph 外部\n        API[Composio API]\n        MCP_Server[MCP Server]\n    end\n\n    User --> Composio_SDK\n    Composio_SDK --> ToolRouter\n    ToolRouter --> ToolkitIndex\n    Composio_SDK --> Provider\n    Provider --> API\n    Provider --> MCP_Client\n    MCP_Client --> MCP_Server\n```\n\nComposio 的架构设计强调模块化、可扩展性和跨语言一致性。通过清晰的层次划分和标准化的 Provider 接口，系统能够灵活适应不同的使用场景和集成需求。\n\n---\n\n<a id='ts-sdk'></a>\n\n## TypeScript SDK 详解\n\n### 相关页面\n\n相关主题：[Python SDK 详解](#py-sdk), [AI 框架提供商集成](#providers), [工具包系统](#toolkits)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/core/src/index.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/index.ts)\n- [ts/packages/core/src/models/Tools.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/Tools.ts)\n- [ts/packages/core/src/models/Toolkits.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/Toolkits.ts)\n- [ts/packages/core/src/models/ToolRouterSession.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/ToolRouterSession.ts)\n- [ts/packages/core/src/models/ConnectedAccounts.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/ConnectedAccounts.ts)\n- [ts/docs/api/tools.md](https://github.com/ComposioHQ/composio/blob/main/ts/docs/api/tools.md)\n</details>\n\n# TypeScript SDK 详解\n\n## 概述\n\nComposio TypeScript SDK 是用于与 Composio 平台交互的核心开发工具包，为 AI Agent 提供工具调用、工具包管理、账户连接等功能。该 SDK 构建于 Effect 框架之上，采用函数式编程范式，支持类型安全的工具操作和灵活的扩展机制。 资料来源：[ts/README.md]()\n\n## 核心架构\n\n### 系统组件关系\n\n```mermaid\ngraph TD\n    A[ComposioClient] --> B[ToolRouter]\n    A --> C[ConnectedAccounts]\n    B --> D[Toolkits]\n    B --> E[Tools]\n    D --> E\n    F[Providers] --> E\n    G[CLI Tools] --> E\n```\n\n### 包结构概览\n\n| 包名称 | 路径 | 职责 |\n|--------|------|------|\n| `@composio/core` | `packages/core` | 核心 SDK，包含所有核心模型和服务 |\n| `@composio/cli` | `packages/cli` | 命令行工具，支持项目初始化和类型生成 |\n| `@composio/providers` | `packages/providers/*` | AI 框架集成（OpenAI、LangChain、Vercal 等） |\n| `@composio/ts-builders` | `packages/ts-builders` | TypeScript AST 构建工具，用于生成类型存根 |\n| `@composio/cli-local-tools` | `packages/cli-local-tools` | 本地 CLI 工具注册表 |\n\n资料来源：[ts/README.md](), [ts/packages/ts-builders/README.md]()\n\n## 核心模型\n\n### Tools（工具）\n\n`Tool` 模型代表单个可执行工具，是 SDK 的基本操作单元。每个工具包含以下属性：\n\n| 属性 | 类型 | 说明 |\n|------|------|------|\n| `slug` | `string` | 工具唯一标识符 |\n| `name` | `string` | 工具显示名称 |\n| `description` | `string` | 工具功能描述 |\n| `inputParams` | `InputParameter[]` | 输入参数定义 |\n| `outputParams` | `OutputParameter[]` | 输出参数定义 |\n| `toolkit` | `Toolkit` | 所属工具包 |\n| `triggers` | `Trigger[]` | 触发器配置 |\n\n资料来源：[ts/packages/core/src/models/Tools.ts](), [ts/packages/cli/src/generation/create-toolkit-index.ts]()\n\n### Toolkits（工具包）\n\n`Toolkit` 是工具的逻辑分组容器，提供组织和管理相关工具的能力：\n\n```typescript\nexport type ToolkitIndex = Record<ToolkitName, ToolkitIndexData>;\n```\n\n工具包数据包含版本管理和工具集合映射，支持按名称动态访问工具定义。 资料来源：[ts/packages/cli/src/generation/create-toolkit-index.ts]()\n\n### ToolRouterSession（会话路由）\n\n`ToolRouterSession` 负责管理工具调用的生命周期，包括参数验证、执行和结果处理：\n\n```mermaid\nsequenceDiagram\n    Agent->>ToolRouterSession: requestToolCall(toolSlug, params)\n    ToolRouterSession->>Tool: validateParams(params)\n    Tool-->>ToolRouterSession: validatedParams\n    ToolRouterSession->>Tool: execute(validatedParams)\n    Tool-->>ToolRouterSession: executionResult\n    ToolRouterSession->>Agent: formattedResponse\n```\n\n资料来源：[ts/packages/core/src/models/ToolRouterSession.ts]()\n\n### ConnectedAccounts（连接账户）\n\n`ConnectedAccounts` 管理用户与第三方服务的授权连接，是工具执行认证的基础：\n\n| 属性 | 说明 |\n|------|------|\n| `accountId` | 账户唯一标识 |\n| `integrationId` | 集成标识 |\n| `connectionStatus` | 连接状态 |\n| `credentials` | 加密凭证 |\n| `metadata` | 额外元数据 |\n\n资料来源：[ts/packages/core/src/models/ConnectedAccounts.ts]()\n\n## Provider 机制\n\n### Provider 类型\n\nSDK 支持两种 Provider 类型，分别适用于不同的 AI 框架集成场景：\n\n| Provider 类型 | 基类 | 用途 |\n|---------------|------|------|\n| 非 Agentic | `BaseNonAgenticProvider` | 基础工具包装和模式转换 |\n| Agentic | `BaseAgenticProvider` | 支持完整执行流程修饰符 |\n\n资料来源：[ts/packages/providers/README.md](), [ts/packages/core/src/types/modifiers.types.ts]()\n\n### Provider 方法\n\n#### 非 Agentic Provider\n\n```typescript\nclass NonAgenticProvider extends BaseNonAgenticProvider {\n  async wrapTool(\n    toolSlug: string, \n    tool: Tool, \n    modifiers?: SchemaModifiersParams\n  ): Promise<Tool>;\n\n  async getTools(modifiers?: SchemaModifiersParams): Promise<Tool[]>;\n\n  async getToolBySlug(\n    slug: string, \n    modifiers?: SchemaModifiersParams\n  ): Promise<Tool>;\n}\n```\n\n#### Agentic Provider\n\nAgentic Provider 在非 Agentic 基础上增加执行修饰符支持：\n\n```typescript\ntype beforeExecuteModifier = (\n  toolSlug: string,\n  params: Record<string, unknown>\n) => Record<string, unknown>;\n\ntype afterExecuteModifier = (\n  toolSlug: string,\n  response: ToolExecuteResponse\n) => ToolExecuteResponse;\n```\n\n资料来源：[ts/packages/providers/README.md](), [ts/packages/core/src/types/modifiers.types.ts]()\n\n### 内置 Providers\n\n| Provider | 包路径 | AI 框架 |\n|----------|--------|---------|\n| OpenAI Provider | `packages/providers/openai` | OpenAI |\n| LangChain Provider | `packages/providers/langchain` | LangChain |\n| Vercel Provider | `packages/providers/vercel` | Vercel AI SDK |\n| Claude Agent SDK Provider | `packages/providers/claude-agent-sdk` | Anthropic Claude Agent SDK |\n\n资料来源：[ts/packages/providers/openai/package.json](), [ts/packages/providers/langchain/package.json](), [ts/packages/providers/vercel/package.json](), [ts/packages/providers/claude-agent-sdk/package.json]()\n\n## 类型生成系统\n\n### TypeScript 类型存根\n\nCLI 提供 `composio generate ts` 命令用于生成 TypeScript 类型存根：\n\n```bash\ncomposio generate ts\ncomposio generate ts --type-tools\ncomposio generate ts --toolkits gmail slack\n```\n\n生成器支持以下选项：\n\n| 选项 | 说明 | 默认值 |\n|------|------|--------|\n| `--compact` | 生成单个模块文件 | `false` |\n| `--transpiled` | 同时生成转译后的 JavaScript | 写入 `node_modules` 时为 `true` |\n| `--output-dir` | 指定输出目录 | `@composio/core` 包路径 |\n| `--toolkits` | 仅包含指定工具包 | 全部工具包 |\n\n资料来源：[ts/packages/cli/src/commands/ts/commands/ts.generate.cmd.ts](), [ts/packages/cli/src/commands/generate/generate.cmd.ts]()\n\n### 文档生成\n\nSDK 使用 TypeDoc 从源代码提取 JSDoc 注释生成 MDX 文档：\n\n```mermaid\ngraph LR\n    A[src/models/*.ts] -->|TypeDoc| B[JSON AST]\n    B -->|generate-docs.ts| C[MDX 文件]\n    C --> D[docs/content/reference/sdk-reference/typescript/]\n```\n\n工作流程由 GitHub Actions 自动化触发：`.github/workflows/generate-sdk-docs.yml` 监听 `ts/packages/core/src/**` 变更并自动创建 PR。 资料来源：[ts/packages/core/scripts/README.md]()\n\n## 本地工具注册\n\n`@composio/cli-local-tools` 包提供本地 CLI 工具的注册和管理能力：\n\n```typescript\nexport const getAllLocalToolkitSlugs = (\n  options?: { declarations?: ReadonlyArray<LocalToolkitDeclaration> }\n): ReadonlyArray<string>;\n\nexport const getLocalCustomToolkits = (\n  options?: {\n    currentPlatform?: LocalCliPlatform;\n    toolkits?: ReadonlyArray<string>;\n    declarations?: ReadonlyArray<LocalToolkitDeclaration>;\n  }\n): ReadonlyArray<CustomToolkit>;\n```\n\n本地工具支持跨平台声明和动态平台检测。 资料来源：[ts/packages/cli-local-tools/src/registry.ts]()\n\n## 环境变量配置\n\n| 变量名 | 说明 | 必填 |\n|--------|------|------|\n| `COMPOSIO_API_KEY` | Composio API 密钥 | 是 |\n| `COMPOSIO_BASE_URL` | 自定义 API 基础 URL | 否 |\n| `COMPOSIO_LOG_LEVEL` | 日志级别（silent/error/warn/info/debug） | 否 |\n| `COMPOSIO_DISABLE_TELEMETRY` | 禁用遥测（设为 \"true\"） | 否 |\n| `COMPOSIO_TOOLKIT_VERSION_<TOOLKIT_NAME>` | 工具包版本覆盖 | 否 |\n| `DEVELOPMENT` | 开发模式标志 | 否 |\n| `CI` | CI 环境标志 | 否 |\n\n资料来源：[ts/README.md](), [ts/packages/cli/src/commands/init.cmd.ts]()\n\n## 工具包版本管理\n\nCLI 提供工具包版本覆盖验证机制：\n\n```typescript\nconst { validatedOverrides, warnings } = yield* client.validateToolkitVersions(\n  versionOverrides,\n  toolkitSlugsFilter\n);\n```\n\n验证器支持批量验证并在检测到无效版本时提供友好的错误提示。 资料来源：[ts/packages/cli/src/effects/validate-toolkit-versions.ts]()\n\n## 项目语言检测\n\nSDK 自动检测项目语言环境：\n\n```typescript\nconst envDetector = yield* ProjectEnvironmentDetector;\nconst env = yield* envDetector.detectProjectEnvironment(cwd);\n```\n\n检测逻辑按优先级检查：\n\n1. TypeScript 文件（`.ts`、`.tsx`、`.mts`、`.cts`）\n2. Python 文件（`.py`、`.pyw`、`.pyi`、`.pyx`）\n\n忽略目录包括：`node_modules`、`__pycache__`、`.venv`、`venv` 等。 资料来源：[ts/packages/cli/src/services/env-lang-detector.ts]()\n\n## 快速开始\n\n### 安装\n\n```bash\npnpm add @composio/core\n```\n\n### 初始化客户端\n\n```typescript\nimport { Composio } from \"@composio/core\";\n\nconst client = new Composio();\n```\n\n### 获取工具\n\n```typescript\nconst tools = await client.getTools({ \n  toolkits: [\"github\"] \n});\n```\n\n### 执行工具\n\n```typescript\nconst result = await client.execute({\n  tool: \"github_create_repository\",\n  params: {\n    name: \"my-repo\",\n    description: \"Repository description\"\n  }\n});\n```\n\n## 最佳实践\n\n1. **类型安全**：始终使用 TypeScript 并确保所有方法和参数的类型定义完整\n2. **错误处理**：为 API 调用和工具执行实现适当的错误处理机制\n3. **Provider 选择**：根据 AI 框架选择合适的 Provider 以获得最佳集成体验\n4. **版本管理**：使用环境变量指定具体工具包版本以便复现性\n5. **本地工具**：利用 `@composio/cli-local-tools` 扩展 CLI 功能\n\n资料来源：[ts/packages/providers/README.md]()\n\n---\n\n<a id='py-sdk'></a>\n\n## Python SDK 详解\n\n### 相关页面\n\n相关主题：[TypeScript SDK 详解](#ts-sdk), [AI 框架提供商集成](#providers), [工具包系统](#toolkits)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [python/README.md](https://github.com/ComposioHQ/composio/blob/main/python/README.md)\n- [python/scripts/README.md](https://github.com/ComposioHQ/composio/blob/main/python/scripts/README.md)\n- [python/providers/claude_agent_sdk/README.md](https://github.com/ComposioHQ/composio/blob/main/python/providers/claude_agent_sdk/README.md)\n- [python/providers/google/README.md](https://github.com/ComposioHQ/composio/blob/main/python/providers/google/README.md)\n- [ts/packages/core/src/types/modifiers.types.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/types/modifiers.types.ts)\n- [ts/packages/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli-local-tools/src/registry.ts)\n- [ts/packages/providers/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/packages/providers/README.md)\n</details>\n\n# Python SDK 详解\n\n## 概述\n\nComposio Python SDK 是一个强大的工具集成框架，为开发者提供了与外部服务（如 GitHub、Gmail、Google 等）交互的统一接口。该 SDK 允许 AI 代理通过标准化的工具调用方式访问数百种第三方服务，同时支持自定义提供者、本地工具和复杂的认证配置。资料来源：[python/README.md]()\n\n## 核心架构\n\n### SDK 初始化\n\nComposio SDK 的初始化是整个集成的起点，支持多种配置选项：\n\n```python\nfrom composio import Composio\nfrom composio.providers.openai import OpenAIProvider\n\ncomposio = Composio(\n    api_key=\"your-api-key\",  # Composio API 密钥\n    base_url=\"https://api.composio.dev\",  # 自定义 API 基础 URL\n    timeout=60,  # 请求超时时间（秒）\n    max_retries=3,  # 最大重试次数\n    allow_tracking=True,  # 启用/禁用遥测\n    file_download_dir=\"./downloads\",  # 文件下载目录\n    provider=OpenAIProvider(),  # 自定义提供者\n    toolkit_versions={\"github\": \"12202025_01\"}  # 工具包版本\n)\n```\n\n资料来源：[python/README.md]()\n\n### 架构流程图\n\n```mermaid\ngraph TD\n    A[用户代码] --> B[Composio SDK]\n    B --> C[工具获取层]\n    C --> D[提供者层]\n    D --> E{提供者类型}\n    E -->|OpenAI| F[OpenAIProvider]\n    E -->|Claude| G[ClaudeAgentSDKProvider]\n    E -->|Google| H[GoogleProvider]\n    F --> I[MCP 服务器]\n    G --> I\n    H --> I\n    I --> J[AI 代理]\n    J --> K[工具执行]\n    K --> L[外部服务 API]\n```\n\n## 工具与工具包系统\n\n### 工具获取\n\nComposio 提供了灵活的工具获取机制，支持按工具包、工具名称或用户 ID 进行筛选：\n\n```python\n# 获取特定工具包中的所有工具\ntools = composio.tools.get(\n    user_id=\"default\",\n    toolkits=[\"gmail\", \"github\"]\n)\n\n# 获取单个工具\ntool = composio.tools.get(\n    user_id=\"default\",\n    slug=\"HACKERNEWS_GET_USER\"\n)\n```\n\n资料来源：[python/providers/claude_agent_sdk/README.md]()\n\n### 工具分类\n\n| 分类方式 | 说明 | 示例 |\n|---------|------|------|\n| 按工具包 | 同一服务的一组工具 | `gmail` 包含 `SEND_EMAIL`, `FETCH_EMAILS` 等 |\n| 按工具名称 | 单个具体工具 | `GITHUB_STAR_REPOSITORY` |\n| 按用户 | 按用户隔离的工具实例 | `user_id` 参数控制 |\n| 本地工具 | CLI 本地执行工具 | `LOCAL_TOOL_*` 前缀 |\n\n资料来源：[ts/packages/cli-local-tools/src/registry.ts]()\n\n## 修饰器系统\n\nComposio SDK 支持强大的修饰器系统，允许在工具模式转换和执行过程中进行干预。\n\n### 模式修饰器\n\n模式修饰器（Schema Modifiers）允许在工具模式被使用前进行转换：\n\n```python\nfrom composio import schema_modifier\nfrom composio.types import Tool\n\n@schema_modifier(tools=[\"HACKERNEWS_GET_USER\"])\ndef modify_schema(tool: str, toolkit: str, schema: Tool) -> Tool:\n    schema[\"description\"] = \"Enhanced HackerNews user lookup\"\n    schema[\"parameters\"][\"properties\"][\"include_karma\"] = {\n        \"type\": \"boolean\",\n        \"description\": \"Include user karma in response\",\n        \"default\": True\n    }\n    return schema\n\n# 使用修饰器获取工具\ntools = composio.tools.get(\n    user_id=\"default\",\n    slug=\"HACKERNEWS_GET_USER\",\n    modifiers=[modify_schema]\n)\n```\n\n资料来源：[python/README.md]()\n\n### 执行修饰器\n\n执行修饰器允许在工具执行前和执行后进行拦截处理：\n\n```python\nfrom composio import before_execute, after_execute\n\n@before_execute(tools=[\"GITHUB_CREATE_ISSUE\"])\ndef validate_issue_params(context):\n    # 执行前验证参数\n    return context.params\n\n@after_execute(tools=[\"GITHUB_CREATE_ISSUE\"])\ndef process_issue_result(context):\n    # 执行后处理结果\n    return context.result\n```\n\n资料来源：[python/README.md]()\n\n### 修饰器类型系统\n\n```typescript\nexport type ProviderOptions<TProvider> =\n  TProvider extends BaseComposioProvider<infer TToolCollection, infer TTool, infer TMcpResponse>\n    ? TProvider extends BaseAgenticProvider<TToolCollection, TTool, TMcpResponse>\n      ? AgenticToolOptions\n      : ToolOptions\n    : never;\n```\n\n资料来源：[ts/packages/core/src/types/modifiers.types.ts]()\n\n## 提供者系统\n\n### 提供者架构\n\nComposio SDK 使用提供者模式来适配不同的 AI 框架：\n\n```mermaid\nclassDiagram\n    class BaseComposioProvider {\n        <<abstract>>\n        +wrapTool()\n        +getTools()\n        +getToolBySlug()\n    }\n    class BaseNonAgenticProvider {\n        +wrapTool(toolSlug, tool, modifiers?)\n    }\n    class BaseAgenticProvider {\n        +wrapTool(toolSlug, tool, modifiers?)\n        +create_mcp_server()\n    }\n    class OpenAIProvider {\n        +wrapTool()\n    }\n    class ClaudeAgentSDKProvider {\n        +wrapTool()\n        +create_mcp_server()\n    }\n    class GoogleProvider {\n        +wrapTool()\n    }\n    \n    BaseComposioProvider <|-- BaseNonAgenticProvider\n    BaseComposioProvider <|-- BaseAgenticProvider\n    BaseNonAgenticProvider <|-- OpenAIProvider\n    BaseAgenticProvider <|-- ClaudeAgentSDKProvider\n    BaseAgenticProvider <|-- GoogleProvider\n```\n\n### OpenAI Provider\n\n标准的 OpenAI 提供者实现：\n\n```python\nfrom composio import Composio\nfrom composio.providers.openai import OpenAIProvider\n\ncomposio = Composio(provider=OpenAIProvider())\ntools = composio.tools.get(user_id=\"default\", toolkits=[\"github\"])\n```\n\n资料来源：[python/README.md]()\n\n### Claude Agent SDK Provider\n\n与 Claude Code Agents SDK 的集成：\n\n```python\nimport asyncio\nfrom composio import Composio\nfrom composio_claude_agent_sdk import ClaudeAgentSDKProvider\nfrom claude_agent_sdk import query, ClaudeAgentOptions\n\ncomposio = Composio(provider=ClaudeAgentSDKProvider())\n\nasync def main():\n    tools = composio.tools.get(\n        user_id=\"default\",\n        toolkits=[\"gmail\"],\n    )\n    mcp_server = composio.provider.create_mcp_server(tools)\n    \n    async for message in query(\n        prompt=\"Fetch my latest email from Gmail\",\n        options=ClaudeAgentOptions(\n            mcp_servers={\"composio\": mcp_server}\n        )\n    ):\n        print(message)\n```\n\n资料来源：[python/providers/claude_agent_sdk/README.md]()\n\n### Google Provider\n\n与 Google AI 的集成示例：\n\n```python\nfrom composio import ComposioToolset\nfrom composio.google import App\n\ntoolset = ComposioToolset()\nactions = toolset.get_tools(apps=[App.GITHUB])\n\ntask = \"Star a repo composiohq/composio on GitHub\"\nresponse = chat.send_message(task)\nresult = toolset.handle_response(response)\n```\n\n资料来源：[python/providers/google/README.md]()\n\n### 创建自定义提供者\n\n```typescript\n// 非代理类型提供者\nclass NonAgenticProvider extends BaseNonAgenticProvider {\n  async wrapTool(toolSlug: string, tool: Tool, modifiers?: SchemaModifiersParams): Promise<Tool>;\n  async getTools(modifiers?: SchemaModifiersParams): Promise<Tool[]>;\n  async getToolBySlug(slug: string, modifiers?: SchemaModifiersParams): Promise<Tool>;\n}\n\n// 代理类型提供者\nclass AgenticProvider extends BaseAgenticProvider {\n  async wrapTool(toolSlug: string, tool: Tool, modifiers?: ModifiersParams): Promise<Tool>;\n  async getTools(modifiers?: ModifiersParams): Promise<Tool[]>;\n  async create_mcp_server(tools: Tool[]): Promise<any>;\n}\n```\n\n资料来源：[ts/packages/providers/README.md]()\n\n## 本地工具系统\n\n### 本地工具注册表\n\nComposio CLI 本地工具系统使用注册表模式管理本地可执行工具：\n\n```typescript\nexport const getAllLocalToolkitSlugs = (\n  options: { readonly declarations?: ReadonlyArray<LocalToolkitDeclaration> } = {}\n): ReadonlyArray<string> =>\n  declarationsFor(options.declarations).map(toolkit => toolkit.slug.toLowerCase());\n```\n\n### 本地工具标识\n\n本地工具使用特殊前缀进行标识：\n\n```typescript\nconst LOCAL_TOOL_PREFIX = \"LOCAL_TOOL_\";\n\nconst normalizeLocalToolSlug = (\n  toolSlug: string,\n  toolkitSlug?: string\n): string =>\n  toolkitSlug\n    ? `${LOCAL_TOOL_PREFIX}${normalizeSegment(toolkitSlug)}_${normalizeSegment(toolSlug)}`\n    : `${LOCAL_TOOL_PREFIX}${normalizeSegment(toolSlug)}`;\n```\n\n### 本地工具过滤\n\n```typescript\nconst toolkitMatchesFilter = (\n  toolkit: LocalToolkitDeclaration,\n  requestedToolkits?: ReadonlyArray<string>\n): boolean => {\n  if (!requestedToolkits || requestedToolkits.length === 0) return true;\n  const requested = new Set(requestedToolkits.map(slug => slug.toLowerCase()));\n  return requested.has(toolkit.slug.toLowerCase());\n};\n```\n\n资料来源：[ts/packages/cli-local-tools/src/registry.ts]()\n\n## 工具包管理\n\n### 工具包发现命令\n\nCLI 提供了完整的工具包管理命令：\n\n```bash\n# 列出所有可用工具包\ncomposio toolkits list\n\n# 查看工具包详情\ncomposio toolkits info <toolkit-name>\n\n# 搜索工具包\ncomposio toolkits search <query>\n\n# 查看工具包版本\ncomposio toolkits version <toolkit-name>\n```\n\n资料来源：[ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts]()\n\n### 工具包索引创建\n\n```mermaid\ngraph LR\n    A[工具数据] --> B[groupByToolkits]\n    B --> C[Record.fromEntries]\n    C --> D[Record.mapEntries]\n    D --> E[ToolkitIndex]\n    \n    F[版本映射] --> D\n```\n\n工具包索引数据结构：\n\n```typescript\nexport type ToolkitIndexData = Simplify<{\n  slug: string;\n  version?: string;\n  typeableTools:\n    | { withTypes: false; value: Record<`${ToolkitName}_${string}`, ToolAsEnum> }\n    | { withTypes: true; value: Record<`${ToolkitName}_${string}`, Tool> };\n  triggerTypes: Record<`${ToolkitName}_${string}`, TriggerType>;\n}>;\n\nexport type ToolkitIndex = Record<ToolkitName, ToolkitIndexData>;\n```\n\n资料来源：[ts/packages/cli/src/generation/create-toolkit-index.ts]()\n\n## 认证与账户管理\n\n### 工具权限请求\n\n当执行需要认证的工具时，系统会启动权限请求流程：\n\n```typescript\nconst requestPermissionInBrowser = (params: {\n  readonly toolSlug: string;\n  readonly accountLabel?: string;\n}): Promise<PermissionDecision> =>\n  new Promise((resolve, reject) => {\n    const token = crypto.randomUUID();\n    // 启动 HTTP 服务器等待用户响应\n  });\n```\n\n权限选项包括：\n\n| 选项 | 说明 |\n|------|------|\n| Allow for this session | 本次会话内允许所有调用 |\n| Allow once | 仅允许本次调用 |\n| Deny | 拒绝本次调用 |\n\n资料来源：[ts/packages/cli/src/services/tool-permissions.ts]()\n\n### 账户链接\n\n```bash\n# 链接工具包账户\ncomposio link <toolkit>\n```\n\n## 项目初始化\n\n### 初始化流程\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant CLI\n    participant API\n    participant FileSystem\n    \n    User->>CLI: composio init\n    CLI->>API: 获取会话信息\n    API-->>CLI: 返回 API 密钥\n    CLI->>FileSystem: 创建 .env.local\n    FileSystem-->>CLI: 确认文件创建\n    CLI->>User: 显示成功消息\n```\n\n初始化过程会自动：\n\n1. 检测项目环境（TypeScript/Python）\n2. 创建本地环境文件 `.env.local`\n3. 配置项目 API 密钥\n4. 设置测试用户 ID\n\n```bash\ncomposio dev init\n```\n\n资料来源：[ts/packages/cli/src/commands/init.cmd.ts]()\n\n## SDK 文档生成\n\n### Python 文档生成器\n\n使用 Griffe 从 Python 源码提取文档：\n\n```bash\ncd python\nuv run --with griffe python scripts/generate-docs.py\n```\n\n生成流程：\n\n```mermaid\ngraph LR\n    A[composio/**/*.py] -->|griffe| B[结构化数据]\n    B -->|generate-docs.py| C[MDX 文件]\n    C --> D[docs/content/reference/sdk-reference/python/]\n```\n\n### 配置选项\n\n| 配置项 | 说明 |\n|--------|------|\n| `EXPECTED_CLASSES` | 类名到 Composio 属性的映射 |\n| `CLASS_MODULES` | 要搜索的模块列表 |\n| `DECORATORS_TO_DOCUMENT` | 要记录的装饰器列表 |\n\n资料来源：[python/scripts/README.md]()\n\n## 常见使用模式\n\n### 基础工具调用\n\n```python\nfrom composio import Composio\n\ncomposio = Composio()\n\n# 获取工具\ntools = composio.tools.get(\n    user_id=\"user123\",\n    toolkits=[\"github\"]\n)\n\n# 执行工具\nresult = composio.tools.execute(\n    tool_name=\"GITHUB_STAR_REPOSITORY\",\n    params={\n        \"owner\": \"composiohq\",\n        \"repo\": \"composio\"\n    }\n)\n```\n\n### 触发器使用\n\n```bash\n# 列出触发器\ncomposio triggers list <toolkit>\n\n# 查看触发器详情\ncomposio triggers info <trigger-slug>\n```\n\n### 开发调试\n\n```bash\n# 在 Playground 中执行\ncomposio dev playground-execute \"<slug>\" --user-id \"<user-id>\"\n\n# 查看工具日志\ncomposio dev logs tools <log_id>\n\n# 查看触发器日志\ncomposio dev logs triggers <log_id>\n```\n\n## 配置参考\n\n### 初始化参数\n\n| 参数 | 类型 | 默认值 | 说明 |\n|------|------|--------|------|\n| `api_key` | string | 必需 | Composio API 密钥 |\n| `base_url` | string | `https://api.composio.dev` | API 基础 URL |\n| `timeout` | int | 60 | 请求超时（秒） |\n| `max_retries` | int | 3 | 最大重试次数 |\n| `allow_tracking` | bool | True | 启用遥测 |\n| `file_download_dir` | string | `./downloads` | 下载目录 |\n| `provider` | Provider | OpenAIProvider | AI 提供者 |\n| `toolkit_versions` | dict | {} | 工具包版本映射 |\n\n### 环境变量\n\n| 变量名 | 说明 |\n|--------|------|\n| `COMPOSIO_API_KEY` | Composio API 密钥 |\n| `COMPOSIO_TEST_USER_ID` | 测试用户 ID |\n| `ANTHROPIC_API_KEY` | Claude API 密钥（使用 Claude Provider 时） |\n\n## 相关资源\n\n- [官方文档](https://docs.composio.dev)\n- [Discord 社区](https://discord.gg/composio)\n- [GitHub Issues](https://github.com/composio/composio/issues)\n\n---\n\n<a id='toolkits'></a>\n\n## 工具包系统\n\n### 相关页面\n\n相关主题：[自定义工具开发](#custom-tools), [TypeScript SDK 详解](#ts-sdk), [Python SDK 详解](#py-sdk)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/cli/src/services/command-hints.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/command-hints.ts)\n- [ts/packages/cli/src/generation/create-toolkit-index.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/generation/create-toolkit-index.ts)\n- [ts/packages/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli-local-tools/src/registry.ts)\n- [ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts)\n- [ts/packages/cli/src/effects/toolkit-version-overrides.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/effects/toolkit-version-overrides.ts)\n- [ts/packages/providers/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/packages/providers/README.md)\n</details>\n\n# 工具包系统\n\n## 概述\n\n工具包系统（Toolkit System）是 Composio 框架的核心组件之一，负责组织和封装一组相关的工具（Tools），供 AI Agent 在执行任务时调用。每个工具包代表一个功能领域，如 Gmail、Slack、GitHub 等，为 Agent 提供与外部服务交互的能力。\n\n工具包系统的主要职责包括：\n\n- **工具组织**：将相关工具归类到同一个工具包中，便于管理和发现\n- **版本管理**：支持同一工具包的多个版本，允许开发者使用特定版本或最新版本\n- **本地工具支持**：提供本地 CLI 工具包扩展，允许在本地环境中执行自定义工具\n- **权限管理**：为每个工具包的执行提供权限控制和确认机制\n\n## 架构设计\n\n### 核心组件关系\n\n```mermaid\ngraph TD\n    subgraph \"工具包系统架构\"\n        A[ToolkitIndex] --> B[ToolkitName]\n        A --> C[ToolIndex]\n        D[Tool] --> E[Action]\n        F[TriggerType] --> G[Trigger]\n        H[LocalToolkitDeclaration] --> I[LocalTool]\n    end\n    \n    subgraph \"提供者层\"\n        J[BaseComposioProvider] --> K[BaseAgenticProvider]\n        J --> L[NonAgenticProvider]\n        K --> M[SchemaModifiersParams]\n        L --> N[ToolOptions]\n    end\n```\n\n### 工具包索引结构\n\n工具包索引（ToolkitIndex）是一个 TypeScript 类型别名，定义为：\n\n```typescript\nexport type ToolkitIndex = Record<ToolkitName, ToolkitIndexData>;\n```\n\n`ToolkitIndexData` 包含以下字段：\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| `slug` | `string` | 工具包唯一标识符 |\n| `version` | `string \\| undefined` | 版本覆盖（仅当非 'latest' 时存在） |\n| `typeableTools` | `Record<${ToolkitName}_${string}, Tool>` | 工具集合（带类型或不带类型） |\n| `triggerTypes` | `Record<${ToolkitName}_${string}, TriggerType>` | 触发器类型集合 |\n\n资料来源：[ts/packages/cli/src/generation/create-toolkit-index.ts:1-18]()\n\n### 工具包索引创建流程\n\n```mermaid\nsequenceDiagram\n    participant Input as CreateToolkitIndexInput\n    participant Group as groupByToolkits\n    participant Map as Record.mapEntries\n    participant Output as ToolkitIndex\n    \n    Input->>Group: 原始工具数据\n    Group->>Group: 按工具包名称分组\n    Group->>Map: 分组后的数据\n    Map->>Map: 提取版本覆盖\n    Map->>Map: 处理类型化工具\n    Map->>Output: 最终索引结构\n```\n\n## 工具包类型\n\n### 远程工具包\n\n远程工具包（Remote Toolkits）是由 Composio 服务器托管的工具包，通过 API 获取工具定义和执行能力。\n\n**特性**：\n- 集中管理和更新\n- 支持版本控制\n- 可通过 CLI 命令查询和操作\n\n### 本地工具包\n\n本地工具包（Local Toolkits）是在本地环境中运行的工具包，允许开发者定义自定义工具直接在本地执行。\n\n**核心数据结构**：\n\n```typescript\ninterface LocalToolkitDeclaration {\n  slug: string;\n  name: string;\n  description: string;\n  platforms: ReadonlyArray<LocalCliPlatform>;\n  tools: ReadonlyArray<LocalToolDeclaration>;\n  setup?: LocalToolkitSetup;\n  source?: ToolkitSource;\n}\n```\n\n资料来源：[ts/packages/cli-local-tools/src/registry.ts:1-50]()\n\n**本地工具注册流程**：\n\n```mermaid\ngraph TD\n    A[LocalToolkitDeclaration] --> B{requestedToolkits存在?}\n    B -->|是| C[转为小写Set]\n    B -->|否| D[返回true]\n    C --> E{slug小写化}\n    E --> F{包含在requested中?}\n    F -->|是| D\n    F -->|否| G[返回false]\n```\n\n## 版本管理\n\n### 版本覆盖机制\n\n工具包版本覆盖允许开发者在配置中指定特定工具包的版本，而不是使用默认的最新版本。\n\n**配置格式**：\n\n```typescript\ntype ToolkitVersionOverrides = Map<Lowercase<string>, string>;\n```\n\n**版本分组逻辑**：\n\n```mermaid\ngraph LR\n    A[ToolkitVersionSpec] --> B{版本为latest?}\n    B -->|是| C[跳过]\n    B -->|否| D[添加到versionMap]\n    A --> E[groupByVersion]\n    E --> F[Map: version -> slugs[]]\n```\n\n**核心函数**：\n\n```typescript\nexport const buildVersionMapFromSpecs = (\n  specs: ReadonlyArray<ToolkitVersionSpec>\n): ToolkitVersionOverrides => {\n  const versionMap = new Map<Lowercase<string>, string>();\n  for (const spec of specs) {\n    if (spec.toolkitVersion !== 'latest') {\n      versionMap.set(spec.toolkitSlug, spec.toolkitVersion);\n    }\n  }\n  return versionMap;\n};\n```\n\n资料来源：[ts/packages/cli/src/effects/toolkit-version-overrides.ts:1-40]()\n\n### 版本验证\n\nComposio 提供了版本验证机制，确保指定的版本覆盖有效：\n\n- 验证工具包标识符是否正确\n- 检查指定版本是否存在\n- 对无效版本提供友好的错误提示\n\n## CLI 命令\n\n### 工具包发现命令\n\n`composio toolkits` 是工具包发现命令的入口点，支持以下子命令：\n\n| 命令 | 说明 |\n|------|------|\n| `toolkits list` | 列出所有可用的工具包 |\n| `toolkits info` | 显示特定工具包的详细信息 |\n| `toolkits search` | 搜索工具包 |\n| `toolkits version` | 管理工具包版本 |\n\n资料来源：[ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts:1-25]()\n\n### 命令示例\n\n```bash\n# 列出所有工具包\ncomposio tools list\n\n# 查看特定工具包信息\ncomposio tools info \"<slug>\"\n\n# 执行工具包中的工具\ncomposio execute \"<slug>\" -d '{}'\n\n# 获取工具执行模式\ncomposio execute \"<slug>\" --get-schema\n\n# 链接账户\ncomposio link <toolkit>\n```\n\n资料来源：[ts/packages/cli/src/services/command-hints.ts:1-50]()\n\n## 提供者集成\n\n### 提供者类型层次\n\n```mermaid\nclassDiagram\n    class BaseComposioProvider~TToolCollection, TTool, TMcpResponse~ {\n        <<abstract>>\n    }\n    class BaseAgenticProvider~TToolCollection, TTool, TMcpResponse~ {\n        <<abstract>>\n    }\n    class NonAgenticProvider {\n        ToolOptions\n    }\n    class AgenticProvider {\n        AgenticToolOptions\n    }\n    \n    BaseComposioProvider <|-- BaseAgenticProvider\n    BaseComposioProvider <|-- NonAgenticProvider\n    BaseAgenticProvider <|-- AgenticProvider\n```\n\n### 提供者选项类型\n\n```typescript\nexport type ProviderOptions<TProvider> =\n  TProvider extends BaseComposioProvider<infer TToolCollection, infer TTool, infer TMcpResponse>\n    ? TProvider extends BaseAgenticProvider<TToolCollection, TTool, TMcpResponse>\n      ? AgenticToolOptions\n      : ToolOptions\n    : never;\n```\n\n资料来源：[ts/packages/core/src/types/modifiers.types.ts:1-20]()\n\n### 创建自定义提供者\n\n开发者可以通过以下命令创建新的提供者：\n\n```bash\n# 创建非代理提供者\npnpm create:provider <provider-name>\n\n# 创建代理提供者\npnpm create:provider <provider-name> --agentic\n```\n\n**生成的文件结构**：\n\n```\n<provider-name>/\n├── src/\n│   └── index.ts      # 提供者实现\n├── package.json      # 包配置\n├── tsconfig.json     # TypeScript 配置\n├── tsup.config.ts    # 构建配置\n└── README.md         # 文档\n```\n\n**必需方法（非代理提供者）**：\n\n```typescript\nclass NonAgenticProvider extends BaseNonAgenticProvider {\n  async wrapTool(\n    toolSlug: string, \n    tool: Tool, \n    modifiers?: SchemaModifiersParams\n  ): Promise<Tool>;\n\n  async getTools(modifiers?: SchemaModifiersParams): Promise<Tool[]>;\n\n  async getToolBySlug(\n    slug: string, \n    modifiers?: SchemaModifiersParams\n  ): Promise<Tool>;\n}\n```\n\n**必需方法（代理提供者）**：\n\n```typescript\nclass AgenticProvider extends BaseAgenticProvider {\n  async wrapTool(\n    toolSlug: string, \n    tool: Tool, \n    modifiers?: ModifiersParams\n  ): Promise<Tool>;\n\n  async getTools(modifiers?: ModifiersParams): Promise<Tool[]>;\n}\n```\n\n资料来源：[ts/packages/providers/README.md:1-80]()\n\n## 本地工具配置\n\n### 本地工具元数据管理\n\n本地工具支持通过 `local_tools.json` 文件进行配置：\n\n```json\n{\n  \"toolkits\": {\n    \"<toolkit-slug>\": {\n      \"disabled\": false,\n      \"installation\": {\n        \"command\": \"npm install my-toolkit\"\n      }\n    }\n  },\n  \"tools\": {\n    \"<tool-slug>\": {\n      \"disabled\": false,\n      \"authenticated\": true,\n      \"installation\": {\n        \"command\": \"pip install my-tool\"\n      }\n    }\n  }\n}\n```\n\n### 工具包就绪状态检查\n\n```mermaid\ngraph TD\n    A[开始就绪检查] --> B{平台支持?}\n    B -->|否| C[status: unsupported]\n    B -->|是| D{工具包禁用?}\n    D -->|是| E[status: disabled]\n    D -->|否| F[检查工具状态]\n    F --> G{所有工具就绪?}\n    G -->|是| H[status: ready]\n    G -->|否| I[status: needs_setup]\n```\n\n**就绪状态类型**：\n\n| 状态 | 说明 | 可能原因 |\n|------|------|----------|\n| `ready` | 可用 | 所有依赖已安装 |\n| `disabled` | 已禁用 | 在配置中被禁用 |\n| `unsupported` | 不支持 | 当前平台不兼容 |\n| `needs_setup` | 需设置 | 部分工具未配置 |\n\n## 权限管理\n\n### 权限确认流程\n\n```mermaid\nsequenceDiagram\n    participant Agent as AI Agent\n    participant CLI as Composio CLI\n    participant Server as Permission Server\n    participant User as User\n    \n    Agent->>CLI: 请求执行工具\n    CLI->>Server: 发起权限请求\n    Server->>User: 显示确认页面\n    User->>Server: 选择操作\n    Server-->>CLI: 返回决策\n    CLI->>CLI: 执行或拒绝\n```\n\n### 权限决策选项\n\n| 选项 | 说明 | 有效期 |\n|------|------|--------|\n| Allow for this session | 允许 | 当前会话 |\n| Allow once | 允许一次 | 单次执行 |\n| Deny | 拒绝 | 单次执行 |\n\n资料来源：[ts/packages/cli/src/services/tool-permissions.ts:1-80]()\n\n## 数据模型\n\n### 工具包模型（Python）\n\n```python\nclass Toolkit(BaseModel, Generic[Tool]):\n    id: str\n    name: str\n    description: str\n    slug: str\n    logo: Optional[str]\n    version: str\n    categories: List[str]\n    tools: List[Tool]\n    enabled: bool = True\n    \n    def get_action(self, action_slug: str) -> Tool: ...\n    def filter_tools(self, actions: List[str]) -> \"Toolkit[Tool]\": ...\n```\n\n### 自定义工具模型\n\n```typescript\nexport interface CustomTool {\n  slug: string;\n  name: string;\n  description: string;\n  inputParams: Param[];\n  outputParams?: Param[];\n  execute: (input: Record<string, unknown>) => Promise<unknown>;\n}\n```\n\n## 工作流程\n\n### 工具包发现与执行流程\n\n```mermaid\ngraph TD\n    A[开发者请求工具包] --> B{本地工具包?}\n    B -->|是| C[查询本地注册表]\n    B -->|否| D[调用 API 获取]\n    C --> E{工具包存在?}\n    D --> F{工具包存在?}\n    E -->|否| G[返回错误]\n    F -->|否| G\n    E -->|是| H[验证版本]\n    F -->|是| H\n    H --> I{版本有效?}\n    I -->|否| J[返回警告]\n    I -->|是| K[加载工具定义]\n    K --> L[检查权限]\n    L --> M{权限已授权?}\n    M -->|否| N[请求确认]\n    M -->|是| O[执行工具]\n    N --> P[用户确认]\n    P -->|允许| O\n    P -->|拒绝| Q[终止]\n```\n\n## 配置参考\n\n### 环境变量配置\n\n| 变量 | 说明 | 示例 |\n|------|------|------|\n| `COMPOSIO_API_KEY` | API 密钥 | `sk-xxx` |\n| `COMPOSIO_TOOLKIT_VERSION_*` | 工具包版本覆盖 | `COMPOSIO_TOOLKIT_VERSION_GMAIL=20250901_00` |\n\n### CLI 配置选项\n\n| 选项 | 说明 | 默认值 |\n|------|------|--------|\n| `--compact` | 生成单模块文件 | false |\n| `--transpiled` | 生成转译后的 JS | 依赖输出目录 |\n| `--output-dir` | 输出目录 | node_modules/@composio/core |\n| `--toolkits` | 过滤工具包 | 全部 |\n\n## 最佳实践\n\n### 工具包开发\n\n1. **遵循命名约定**：工具包 slug 应使用小写字母和连字符\n2. **版本控制**：在 `package.json` 中指定版本范围\n3. **平台支持**：明确声明支持的平台列表\n4. **错误处理**：提供有意义的错误消息和恢复建议\n\n### 性能优化\n\n1. **按需加载**：使用工具包过滤避免加载全部工具\n2. **版本锁定**：在生产环境中使用固定版本而非 'latest'\n3. **本地缓存**：利用本地工具包减少网络请求\n\n## 相关资源\n\n- [自定义工具和工具包文档](https://github.com/ComposioHQ/composio/blob/main/docs/content/docs/toolkits/custom-tools-and-toolkits.mdx)\n- [工具包索引文档](https://github.com/ComposioHQ/composio/blob/main/docs/content/toolkits/index.mdx)\n- [CLI 工具命令参考](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts)\n- [版本覆盖机制](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/effects/toolkit-version-overrides.ts)\n\n---\n\n<a id='custom-tools'></a>\n\n## 自定义工具开发\n\n### 相关页面\n\n相关主题：[工具包系统](#toolkits), [MCP 协议集成](#mcp)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/core/src/models/CustomTools.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/CustomTools.ts)\n- [python/composio/core/models/custom_tools.py](https://github.com/ComposioHQ/composio/blob/main/python/composio/core/models/custom_tools.py)\n- [ts/examples/custom-tools/src/simple.ts](https://github.com/ComposioHQ/composio/blob/main/ts/examples/custom-tools/src/simple.ts)\n- [python/examples/custom_tools.py](https://github.com/ComposioHQ/composio/blob/main/python/examples/custom_tools.py)\n- [docs/content/docs/tools-direct/custom-tools.mdx](https://github.com/ComposioHQ/composio/blob/main/docs/content/docs/tools-direct/custom-tools.mdx)\n</details>\n\n# 自定义工具开发\n\n## 概述\n\n自定义工具（Custom Tools）允许开发者扩展 Composio 的工具生态系统，创建符合特定业务需求的专用工具。通过自定义工具接口，开发者可以定义工具的名称、描述、输入输出参数以及具体的执行逻辑，从而实现与外部系统或内部服务的集成。\n\nComposio 支持多种工具创建方式，包括基于函数的自定义工具、工具包（Toolkit）组合以及本地 CLI 工具集成。这种灵活性使得开发者能够根据不同的使用场景选择最合适的工具定义方式。\n\n## 核心概念\n\n### 自定义工具的数据结构\n\n自定义工具的核心模型包含以下关键属性：\n\n| 属性名 | 类型 | 描述 |\n|--------|------|------|\n| `name` | string | 工具的显示名称 |\n| `description` | string | 工具功能的详细描述 |\n| `slug` | string | 工具的唯一标识符 |\n| `inputParams` | InputParams | 工具的输入参数定义 |\n| `outputParams` | OutputParams | 工具的输出参数定义（可选） |\n| `execute` | ExecuteFunction | 工具的执行逻辑 |\n\n### 工具包（Toolkit）\n\n工具包是多个相关工具的集合，用于组织和管理具有相似功能或服务于同一目标的自定义工具。工具包提供了更高层次的抽象，便于批量处理和分类管理。\n\n## 架构设计\n\n### 工具执行流程\n\n```mermaid\ngraph TD\n    A[用户请求执行工具] --> B[验证输入参数]\n    B --> C{参数校验}\n    C -->|通过| D[权限检查]\n    C -->|失败| E[返回错误]\n    D --> F{权限状态}\n    F -->|已授权| G[执行工具逻辑]\n    F -->|需授权| H[请求权限]\n    H --> I{用户授权}\n    I -->|允许| G\n    I -->|拒绝| J[返回拒绝错误]\n    G --> K[返回执行结果]\n    K --> L[记录执行日志]\n```\n\n### 工具创建流程\n\n```mermaid\ngraph TD\n    A[定义工具元数据] --> B[创建工具实例]\n    B --> C[配置执行函数]\n    C --> D[注册到工具系统]\n    D --> E[可用性验证]\n    E --> F[工具已就绪]\n```\n\n## TypeScript 实现\n\n### 创建自定义工具\n\n在 TypeScript 中，使用 `createCustomTool` 函数创建自定义工具。该函数接受工具的唯一标识符（slug）和一个配置对象。\n\n```typescript\nimport { createCustomTool } from '@composio/core';\n\nconst myTool = createCustomTool({\n  slug: 'my-custom-tool',\n  name: 'My Custom Tool',\n  description: 'Executes custom logic based on provided parameters',\n  inputParams: {\n    param1: {\n      type: 'string',\n      description: 'First parameter',\n      required: true,\n    },\n    param2: {\n      type: 'number',\n      description: 'Second parameter',\n      required: false,\n      default: 42,\n    },\n  },\n  execute: async (params) => {\n    // 自定义执行逻辑\n    const result = await performOperation(params.param1, params.param2);\n    return result;\n  },\n});\n```\n\n### 创建自定义工具包\n\n使用 `createCustomToolkit` 函数将多个相关工具组合成一个工具包：\n\n```typescript\nimport { createCustomToolkit } from '@composio/core';\n\nconst myToolkit = createCustomToolkit('my-toolkit', {\n  name: 'My Custom Toolkit',\n  description: 'A collection of custom tools for my use case',\n  tools: [myTool, anotherTool, thirdTool],\n});\n```\n\n### 本地 CLI 工具\n\n对于需要本地执行的工具，Composio 提供了本地工具声明机制：\n\n```typescript\nimport { \n  LocalToolDeclaration,\n  LocalToolkitDeclaration,\n  executeLocalTool \n} from '@composio/cli-local-tools';\n\nconst localTool: LocalToolDeclaration = {\n  slug: 'local-command',\n  name: 'Local Command Tool',\n  description: 'Executes a local shell command',\n  inputParams: {\n    command: {\n      type: 'string',\n      description: 'The command to execute',\n      required: true,\n    },\n  },\n  execution: {\n    type: 'command',\n    command: async (params) => {\n      const { exec } = await import('child_process');\n      return new Promise((resolve, reject) => {\n        exec(params.command, (error, stdout, stderr) => {\n          if (error) reject(error);\n          else resolve({ stdout, stderr });\n        });\n      });\n    },\n  },\n};\n```\n\n本地工具支持多种执行类型，包括命令执行、脚本执行和函数执行。平台支持情况通过 `platforms` 属性进行配置。\n\n## Python 实现\n\n### 创建自定义工具\n\n在 Python 中，使用 `CustomTool` 类创建自定义工具：\n\n```python\nfrom composio import CustomTool, InputParam\n\nmy_tool = CustomTool(\n    name=\"my_custom_tool\",\n    description=\"Executes custom logic based on provided parameters\",\n    parameters={\n        \"param1\": InputParam(\n            type=\"string\",\n            description=\"First parameter\",\n            required=True\n        ),\n        \"param2\": InputParam(\n            type=\"number\",\n            description=\"Second parameter\",\n            required=False,\n            default=42\n        )\n    },\n    action=lambda params: perform_operation(\n        params[\"param1\"], \n        params.get(\"param2\", 42)\n    )\n)\n```\n\n### 创建自定义工具包\n\n使用 `CustomToolkit` 类组合多个工具：\n\n```python\nfrom composio import CustomToolkit\n\nmy_toolkit = CustomToolkit(\n    name=\"my_custom_toolkit\",\n    description=\"A collection of custom tools\",\n    tools=[my_tool, another_tool]\n)\n```\n\n### 异步执行支持\n\nPython 版本支持异步工具定义：\n\n```python\nimport asyncio\nfrom composio import CustomTool\n\nasync_tool = CustomTool(\n    name=\"async_tool\",\n    description=\"An asynchronous tool\",\n    parameters={\n        \"url\": InputParam(type=\"string\", description=\"URL to fetch\")\n    },\n    action=lambda params: asyncio.to_thread(fetch_data, params[\"url\"])\n)\n```\n\n## 输入参数配置\n\n### 参数类型\n\n| 类型 | 描述 | 适用场景 |\n|------|------|----------|\n| `string` | 字符串类型参数 | 文本输入、URL、标识符 |\n| `number` | 数值类型参数 | 数量、索引、阈值 |\n| `boolean` | 布尔类型参数 | 开关选项、标志位 |\n| `object` | 对象类型参数 | 复杂配置、嵌套数据 |\n| `array` | 数组类型参数 | 列表输入、多选项 |\n\n### 参数属性\n\n| 属性 | 类型 | 描述 |\n|------|------|------|\n| `type` | string | 参数的数据类型 |\n| `description` | string | 参数用途说明 |\n| `required` | boolean | 是否必填，默认 false |\n| `default` | any | 默认值 |\n| `enum` | array | 枚举可选值 |\n\n## 工具权限管理\n\nComposio 提供了工具权限验证机制，确保工具执行的安全性：\n\n```mermaid\nsequenceDiagram\n    participant Client\n    participant Composio\n    participant Tool\n    participant User\n    \n    Client->>Composio: 请求执行工具\n    Composio->>Tool: 验证权限\n    Tool-->>Composio: 需要授权\n    Composio->>User: 展示权限请求\n    User-->>Composio: 授权决策\n    alt 已授权\n        Composio->>Tool: 执行工具\n        Tool-->>Client: 返回结果\n    else 未授权\n        Composio-->>Client: 返回权限错误\n    end\n```\n\n权限请求支持三种模式：\n\n| 模式 | 描述 |\n|------|------|\n| 会话级授权 | 允许在当前会话中重复执行 |\n| 单次授权 | 仅允许本次执行 |\n| 拒绝 | 阻止本次执行 |\n\n## 工具发现与注册\n\n### 注册表机制\n\nComposio 维护一个工具注册表，用于管理所有可用的工具和工具包：\n\n| 函数 | 用途 |\n|------|------|\n| `getLocalToolkitDeclarations` | 获取本地工具包声明列表 |\n| `getLocalCustomToolkits` | 获取本地自定义工具包 |\n| `isLocalToolkitSlug` | 验证工具包标识符是否有效 |\n| `isLocalToolSlug` | 验证工具标识符是否有效 |\n\n### 工具过滤\n\n支持按工具包名称过滤工具：\n\n```typescript\nconst declarations = getLocalToolkitDeclarations({\n  toolkits: ['gmail', 'slack'],\n  currentPlatform: 'linux',\n});\n```\n\n## 最佳实践\n\n### 工具设计原则\n\n1. **单一职责**：每个工具应专注于完成一个特定任务\n2. **清晰的描述**：提供详尽的工具和参数描述，便于 AI 理解\n3. **适当的参数**：避免过多必填参数，提供合理的默认值\n4. **错误处理**：在执行函数中妥善处理异常情况\n5. **类型安全**：使用正确的参数类型并提供验证\n\n### 命名规范\n\n| 元素 | 规范 | 示例 |\n|------|------|------|\n| 工具名称 | 小写下划线分隔 | `fetch_user_data` |\n| 工具包名称 | 小写下划线分隔 | `user_management` |\n| 参数名称 | 小写下划线分隔 | `user_id` |\n| 枚举值 | 小写下划线分隔 | `status_active` |\n\n### 安全性考虑\n\n- 避免在工具描述中包含敏感信息\n- 对外部输入进行严格验证\n- 使用环境变量存储凭据而非硬编码\n- 实现最小权限原则\n\n## 示例项目\n\n### TypeScript 完整示例\n\n```typescript\nimport { createCustomTool, createCustomToolkit } from '@composio/core';\n\n// 定义数据获取工具\nconst fetchData = createCustomTool('fetch_data', {\n  name: 'Fetch Data',\n  description: '从指定源获取数据',\n  inputParams: {\n    source: {\n      type: 'string',\n      description: '数据源标识',\n      required: true,\n    },\n    format: {\n      type: 'string',\n      description: '返回格式 (json/xml)',\n      required: false,\n      default: 'json',\n    },\n  },\n  execute: async (params) => {\n    const response = await fetch(`${params.source}?format=${params.format}`);\n    return response.json();\n  },\n});\n\n// 定义数据处理工具\nconst processData = createCustomTool('process_data', {\n  name: 'Process Data',\n  description: '处理和分析数据',\n  inputParams: {\n    data: {\n      type: 'object',\n      description: '待处理的数据对象',\n      required: true,\n    },\n    operation: {\n      type: 'string',\n      description: '操作类型 (transform/filter/aggregate)',\n      required: true,\n    },\n  },\n  execute: async (params) => {\n    return applyOperation(params.data, params.operation);\n  },\n});\n\n// 创建工具包\nconst dataToolkit = createCustomToolkit('data_processing', {\n  name: 'Data Processing Toolkit',\n  description: '数据获取和处理工具集',\n  tools: [fetchData, processData],\n});\n```\n\n### Python 完整示例\n\n```python\nfrom composio import CustomTool, CustomToolkit, InputParam\n\n# 定义文件操作工具\nfile_tool = CustomTool(\n    name=\"file_operations\",\n    description=\"文件系统操作工具\",\n    parameters={\n        \"operation\": InputParam(\n            type=\"string\",\n            description=\"操作类型 (read/write/delete)\",\n            required=True,\n            enum=[\"read\", \"write\", \"delete\"]\n        ),\n        \"path\": InputParam(\n            type=\"string\",\n            description=\"文件路径\",\n            required=True\n        ),\n        \"content\": InputParam(\n            type=\"string\",\n            description=\"文件内容 (write操作时需要)\",\n            required=False\n        )\n    },\n    action=lambda params: execute_file_operation(\n        params[\"operation\"],\n        params[\"path\"],\n        params.get(\"content\")\n    )\n)\n\n# 创建工具包\nfile_toolkit = CustomToolkit(\n    name=\"file_operations_kit\",\n    description=\"文件系统操作工具集\",\n    tools=[file_tool]\n)\n```\n\n## 调试与测试\n\n### 本地工具诊断\n\nComposio CLI 提供了工具诊断命令：\n\n```bash\n# 检查工具就绪状态\ncomposio local-tools doctor --toolkits <toolkit-name>\n\n# 列出所有本地工具\ncomposio local-tools list --all-platforms\n```\n\n### 日志查看\n\n查看工具执行日志：\n\n```bash\n# 查看工具执行日志\ncomposio dev logs tools <log_id>\n\n# 查看触发器执行日志\ncomposio dev logs triggers <log_id>\n```\n\n## 集成与使用\n\n### 在代理中使用自定义工具\n\n```typescript\nimport { Composio } from '@composio/core';\n\nconst client = Composio();\n\n// 注册自定义工具包\nclient.register(myToolkit);\n\n// 获取配置好的代理\nconst agent = client.getAgent({\n  instruction: '使用我的自定义工具完成数据处理任务',\n});\n```\n\n### 配置本地工具元数据\n\n通过 `~/composio/local_tools.json` 配置文件自定义工具行为：\n\n```json\n{\n  \"toolkits\": {\n    \"my-toolkit\": {\n      \"disabled\": false,\n      \"installation\": {\n        \"command\": \"pip install my-toolkit-dependency\"\n      }\n    }\n  }\n}\n```\n\n## 相关资源\n\n- 官方文档：[Custom Tools Guide](https://docs.composio.dev/tools-direct/custom-tools)\n- TypeScript 示例：[ts/examples/custom-tools](https://github.com/ComposioHQ/composio/tree/main/ts/examples/custom-tools)\n- Python 示例：[python/examples/custom_tools.py](https://github.com/ComposioHQ/composio/blob/main/python/examples/custom_tools.py)\n- API 参考：[CustomTools.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/CustomTools.ts)\n\n---\n\n<a id='providers'></a>\n\n## AI 框架提供商集成\n\n### 相关页面\n\n相关主题：[TypeScript SDK 详解](#ts-sdk), [Python SDK 详解](#py-sdk), [MCP 协议集成](#mcp)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/providers/README.md](https://github.com/ComposioHQ/composio/blob/main/ts/packages/providers/README.md)\n- [ts/packages/core/src/types/modifiers.types.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/types/modifiers.types.ts)\n- [ts/packages/cli/src/services/command-hints.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/command-hints.ts)\n- [ts/packages/cli/src/services/tool-permissions.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/tool-permissions.ts)\n- [ts/packages/cli/src/services/terminal-ui.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/terminal-ui.ts)\n- [ts/packages/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli-local-tools/src/registry.ts)\n</details>\n\n# AI 框架提供商集成\n\n## 概述\n\nAI 框架提供商（Provider）是 Composio 架构中的核心抽象层，负责将 Composio 的工具和功能与各类 AI 框架（如 OpenAI、Anthropic、LangChain 等）进行集成。提供商层作为中间件，封装了工具的获取、包装和执行逻辑，使开发者能够以统一的方式在不同的 AI 框架中使用 Composio 的工具集合。\n\nComposio 的提供商系统设计为可扩展的架构，支持两种类型的提供商：\n\n- **非代理型提供商（Non-Agentic Provider）**：适用于直接将工具集成到 AI 框架的场景\n- **代理型提供商（Agentic Provider）**：适用于需要更复杂代理行为和上下文管理的场景\n\n资料来源：[ts/packages/providers/README.md:1-30]()\n\n## 架构设计\n\n### 整体架构图\n\n```mermaid\ngraph TD\n    subgraph \"客户端层\"\n        User[用户应用]\n        CLI[Composio CLI]\n    end\n    \n    subgraph \"提供商层\"\n        OpenAIProv[OpenAI Provider]\n        AnthropicProv[Anthropic Provider]\n        LangChainProv[LangChain Provider]\n        CustomProv[自定义 Provider]\n    end\n    \n    subgraph \"核心层\"\n        BaseNonAgentic[BaseNonAgenticProvider]\n        BaseAgentic[BaseAgenticProvider]\n        BaseComposio[BaseComposioProvider]\n    end\n    \n    subgraph \"工具层\"\n        Tools[Composio 工具集]\n        Toolkits[工具包]\n        Triggers[触发器]\n    end\n    \n    User --> OpenAIProv\n    User --> AnthropicProv\n    User --> LangChainProv\n    CLI --> BaseAgentic\n    \n    OpenAIProv --> BaseNonAgentic\n    AnthropicProv --> BaseNonAgentic\n    LangChainProv --> BaseAgentic\n    CustomProv --> BaseComposio\n    \n    BaseNonAgentic --> Tools\n    BaseAgentic --> Tools\n    BaseComposio --> Tools\n```\n\n### 提供商继承体系\n\n```mermaid\ngraph LR\n    A[BaseComposioProvider] --> B[BaseAgenticProvider]\n    A --> C[BaseNonAgenticProvider]\n    B --> D[Agentic Provider 实现]\n    C --> E[Non-Agentic Provider 实现]\n```\n\n## 提供商类型系统\n\n### 类型层次结构\n\nComposio 使用 TypeScript 的条件类型系统来定义提供商的选项类型，确保类型安全性和正确的继承关系。\n\n```typescript\nexport type ProviderOptions<TProvider> =\n  TProvider extends BaseComposioProvider<infer TToolCollection, infer TTool, infer TMcpResponse>\n    ? TProvider extends BaseAgenticProvider<TToolCollection, TTool, TMcpResponse>\n      ? AgenticToolOptions\n      : ToolOptions\n    : never;\n```\n\n资料来源：[ts/packages/core/src/types/modifiers.types.ts:1-50]()\n\n### Schema 修饰器\n\n提供商支持通过 Schema 修饰器来修改工具的输入输出格式：\n\n```typescript\n_GET_REPOS', {\n  modifySchema: (context) => context.schema,\n  beforeExecute: (context) => context.params,\n  afterExecute: (context) => context.result\n});\n```\n\n## 非代理型提供商\n\n### 必需方法\n\n非代理型提供商必须实现以下接口：\n\n```typescript\nclass NonAgenticProvider extends BaseNonAgenticProvider {\n  // 使用 Schema 修饰器包装工具\n  async wrapTool(\n    toolSlug: string, \n    tool: Tool, \n    modifiers?: SchemaModifiersParams\n  ): Promise<Tool>;\n\n  // 获取所有可用工具\n  async getTools(modifiers?: SchemaModifiersParams): Promise<Tool[]>;\n\n  // 根据 slug 获取特定工具\n  async getToolBySlug(\n    slug: string, \n    modifiers?: SchemaModifiersParams\n  ): Promise<Tool>;\n}\n```\n\n### 使用场景\n\n非代理型提供商适用于以下场景：\n\n| 场景 | 描述 | 示例 |\n|------|------|------|\n| 简单工具调用 | 直接调用单个工具 | `provider.getToolBySlug('gmail_send_email')` |\n| 批量工具获取 | 获取多个工具进行处理 | `provider.getTools()` |\n| Schema 定制 | 修改工具的输入输出结构 | 使用 `modifiers` 参数 |\n\n资料来源：[ts/packages/providers/README.md:30-50]()\n\n## 代理型提供商\n\n### 必需方法\n\n代理型提供商需要实现更复杂的方法集：\n\n```typescript\nclass AgenticProvider extends BaseAgenticProvider {\n  // 使用修饰器包装工具\n  async wrapTool(\n    toolSlug: string, \n    tool: Tool, \n    modifiers?: ModifiersParams\n  ): Promise<Tool>;\n\n  // 获取所有可用工具\n  async getTools(modifiers?: ModifiersParams): Promise<Tool[]>;\n}\n```\n\n### 代理型特性\n\n代理型提供商相比非代理型增加了以下能力：\n\n- **上下文管理**：自动维护执行上下文和状态\n- **触发器支持**：集成 Composio 的触发器系统\n- **增强的错误处理**：基于 Effect 的错误处理机制\n\n资料来源：[ts/packages/providers/README.md:50-70]()\n\n## 创建新的提供商\n\n### 目录结构\n\n使用提供的脚本可以快速创建新的提供商：\n\n```bash\n# 创建非代理型提供商\npnpm run create-provider <your-provider-name>\n\n# 创建代理型提供商\npnpm run create-provider <your-provider-name> --agentic\n```\n\n脚本将创建以下目录结构：\n\n```\n<provider-name>/\n├── src/\n│   └── index.ts      # 提供商实现\n├── package.json      # 包配置\n├── tsconfig.json     # TypeScript 配置\n├── tsup.config.ts    # 构建配置\n└── README.md         # 提供商文档\n```\n\n### 文件模板\n\n**package.json 配置**\n\n```json\n{\n  \"name\": \"@composio/<provider-name>\",\n  \"version\": \"0.0.1\",\n  \"main\": \"./dist/index.js\",\n  \"types\": \"./dist/index.d.ts\"\n}\n```\n\n资料来源：[ts/packages/providers/README.md:10-30]()\n\n## 工具包装机制\n\n### 包装流程\n\n```mermaid\nsequenceDiagram\n    participant User as 用户\n    participant Provider as Provider\n    participant Modifiers as Schema修饰器\n    participant Tool as Composio Tool\n    \n    User->>Provider: wrapTool(toolSlug, tool, modifiers)\n    Provider->>Tool: 加载工具定义\n    Provider->>Modifiers: 应用 Schema 修改\n    Modifiers-->>Provider: 修改后的 Schema\n    Provider->>Tool: 应用 beforeExecute 修改\n    Provider-->>User: 包装后的工具\n```\n\n### 修饰器参数\n\n| 参数 | 类型 | 描述 |\n|------|------|------|\n| `modifySchema` | `Function` | 修改工具的输入输出 Schema |\n| `beforeExecute` | `Function` | 工具执行前的参数处理 |\n| `afterExecute` | `Function` | 工具执行后的结果处理 |\n\n## 与 CLI 的集成\n\n### 命令行接口\n\nComposio CLI 提供了完整的工具执行和查看命令：\n\n| 命令 | 描述 | 示例 |\n|------|------|------|\n| `composio execute` | 执行指定工具 | `composio execute \"gmail_send_email\" -d '{}'` |\n| `composio tools list` | 列出工具包中的工具 | `composio tools list \"gmail\"` |\n| `composio tools info` | 查看工具详细信息 | `composio tools info \"<slug>\"` |\n| `composio execute --get-schema` | 获取工具 Schema | `composio execute \"slack_send\" --get-schema` |\n\n资料来源：[ts/packages/cli/src/services/command-hints.ts:1-60]()\n\n### 工具权限系统\n\nCLI 提供了交互式权限确认机制：\n\n```mermaid\ngraph TD\n    A[执行工具请求] --> B{权限检查}\n    B -->|已授权| D[执行工具]\n    B -->|未授权| C[浏览器授权页面]\n    C --> E[用户决策]\n    E -->|Allow| F[允许本次会话]\n    E -->|Allow Once| G[仅本次允许]\n    E -->|Deny| H[拒绝执行]\n```\n\n权限页面提供了三个选项：\n\n- **Allow for this session**：当前会话内允许所有调用\n- **Allow once**：仅允许本次调用\n- **Deny**：拒绝本次调用\n\n资料来源：[ts/packages/cli/src/services/tool-permissions.ts:1-50]()\n\n## 本地工具集成\n\n### 注册表架构\n\n本地工具通过注册表系统进行管理，与提供商架构协同工作：\n\n```mermaid\ngraph TD\n    subgraph \"本地工具注册表\"\n        Decl[工具声明]\n        Toolkit[工具包声明]\n        Platform[平台标识]\n    end\n    \n    Decl --> Toolkit\n    Toolkit --> Platform\n```\n\n### 工具匹配逻辑\n\n```typescript\nconst toolkitMatchesFilter = (\n  toolkit: LocalToolkitDeclaration,\n  requestedToolkits?: ReadonlyArray<string>\n): boolean => {\n  if (!requestedToolkits || requestedToolkits.length === 0) return true;\n  const requested = new Set(requestedToolkits.map(slug => slug.toLowerCase()));\n  return requested.has(toolkit.slug.toLowerCase());\n};\n```\n\n本地工具 slug 格式为：`LOCAL_TOOL_PREFIX + toolkitSlug + _ + toolSlug`\n\n资料来源：[ts/packages/cli-local-tools/src/registry.ts:1-80]()\n\n### 平台支持\n\n工具可以指定支持的平台集合：\n\n```typescript\nconst descriptionWithPlatform = (\n  description: string,\n  platforms: ReadonlyArray<LocalCliPlatform>\n): string => `${description}\\n\\nLocal CLI platforms: ${formatSupportedPlatforms(platforms)}.`;\n```\n\n## 工具包版本管理\n\n### 版本覆盖机制\n\nComposio 支持对工具包进行版本控制：\n\n```typescript\nexport const groupByVersion = (\n  specs: ReadonlyArray<ToolkitVersionSpec>\n): Map<string, Lowercase<string>[]> => {\n  const grouped = new Map<string, Lowercase<string>[]>();\n  for (const spec of specs) {\n    const existing = grouped.get(spec.toolkitVersion);\n    if (existing) {\n      existing.push(spec.toolkitSlug);\n    } else {\n      grouped.set(spec.toolkitVersion, [spec.toolkitSlug]);\n    }\n  }\n  return grouped;\n};\n```\n\n### 版本规范处理\n\n| 场景 | 行为 |\n|------|------|\n| 指定版本号 | 如 `20250901_00` |\n| latest | 使用最新版本 |\n| 混合规范 | 按版本分组处理 |\n\n版本映射仅包含非 `latest` 的版本规范作为覆盖项。\n\n资料来源：[ts/packages/core/src/types/modifiers.types.ts:1-50]()\n\n## 终端 UI 服务\n\n### 日志级别\n\nCLI 提供结构化的日志输出：\n\n| 方法 | 用途 | 输出符号 |\n|------|------|----------|\n| `ui.log.info` | 信息日志 | 蓝色标记 |\n| `ui.log.success` | 成功日志 | 绿色标记 |\n| `ui.log.warn` | 警告日志 | 黄色标记 |\n| `ui.log.error` | 错误日志 | 红色标记 |\n| `ui.log.step` | 步骤日志 | 绿色步骤标记 |\n\n```typescript\nreadonly log: {\n  readonly info: (message: string) => Effect.Effect<void>;\n  readonly success: (message: string) => Effect.Effect<void>;\n  readonly warn: (message: string) => Effect.Effect<void>;\n  readonly error: (message: string) => Effect.Effect<void>;\n  readonly step: (message: string) => Effect.Effect<void>;\n};\n```\n\n### 交互式选择\n\n```typescript\nselect: (\n  message: string,\n  options: ReadonlyArray<{ value: unknown; label: string; hint?: string }>\n) => Effect.Effect<unknown>\n```\n\n支持用户从列表中选择选项，并在非交互模式下返回默认值。\n\n资料来源：[ts/packages/cli/src/services/terminal-ui.ts:1-80]()\n\n## 错误处理机制\n\n### 错误捕获流程\n\n```mermaid\ngraph TD\n    A[Effect 执行] --> B{Cause 分析}\n    B -->|emptyCase| D[返回空错误数组]\n    B -->|dieCase| E[解析未知错误]\n    B -->|failCase| F[解析 Effect 错误]\n    B -->|interruptCase| G[忽略中断]\n    B -->|parallelCase| H[合并并行错误]\n    B -->|sequentialCase| I[合并顺序错误]\n```\n\n### 错误解析\n\n```typescript\nexport const captureErrorsFrom = <E>(cause: Cause<E>): readonly PrettyError[] =>\n  reduceWithContext(cause, undefined, {\n    emptyCase: (): readonly PrettyError[] => [],\n    dieCase: (_, unknownError) => [parseError(unknownError)],\n    failCase: (_, error) => [parseError(error)],\n    interruptCase: () => [],\n    parallelCase: (_, l, r) => [...l, ...r],\n    sequentialCase: (_, l, r) => [...l, ...r],\n  });\n```\n\n## 最佳实践\n\n### 1. 扩展 BaseProvider\n\n始终从对应的基类继承以确保类型安全性和功能完整性。\n\n### 2. 实现必需方法\n\n确保所有必需方法都正确实现，包括参数验证和错误处理。\n\n### 3. 使用 Schema 修饰器\n\n通过 `modifySchema`、`beforeExecute`、`afterExecute` 实现工具的自定义行为。\n\n### 4. 类型脚本生成\n\n对于需要类型提示的场景，使用 `composio generate ts` 命令生成完整的 TypeScript 类型定义。\n\n### 5. 权限管理\n\n集成时注意工具权限系统，确保用户能够正确授权工具执行。\n\n## 总结\n\nAI 框架提供商集成是 Composio 连接各类 AI 框架的桥梁，通过统一的抽象层，开发者可以轻松地将 Composio 的工具能力集成到 OpenAI、Anthropic、LangChain 等主流 AI 框架中。提供商系统的可扩展设计允许开发者创建自定义提供商以满足特定需求，同时保持与现有系统的高度兼容性。\n\n---\n\n<a id='mcp'></a>\n\n## MCP 协议集成\n\n### 相关页面\n\n相关主题：[AI 框架提供商集成](#providers), [工具包系统](#toolkits)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/core/src/models/MCP.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/core/src/models/MCP.ts)\n- [python/composio/core/models/mcp.py](https://github.com/ComposioHQ/composio/blob/main/python/composio/core/models/mcp.py)\n- [ts/examples/mcp/src/index.ts](https://github.com/ComposioHQ/composio/blob/main/ts/examples/mcp/src/index.ts)\n- [python/examples/mcp.py](https://github.com/ComposioHQ/composio/blob/main/python/examples/mcp.py)\n- [docs/content/docs/single-toolkit-mcp.mdx](https://github.com/ComposioHQ/composio/blob/main/docs/content/docs/single-toolkit-mcp.mdx)\n- [docs/content/reference/api-reference/mcp/index.mdx](https://github.com/ComposioHQ/composio/blob/main/docs/content/reference/api-reference/mcp/index.mdx)\n</details>\n\n# MCP 协议集成\n\nMCP（Model Context Protocol）协议集成是 Composio 框架的核心功能之一，它为 AI 模型提供了标准化的工具调用和上下文管理能力。通过 MCP 协议，Composio 能够将各种第三方工具和服务桥接到 AI 代理的运行环境中，实现跨平台、跨服务的统一工具调用体验。\n\n## 核心概念\n\n### 什么是 MCP 协议\n\nMCP 是一种专为 AI 模型设计的通信协议，它定义了 AI 模型与外部工具之间交互的标准方式。该协议允许 AI 模型通过统一的接口发现、调用和管理各种工具，同时保持类型安全和参数验证能力。\n\nComposio 的 MCP 集成层负责将框架内的工具系统转换为 MCP 兼容的格式，使任何支持 MCP 协议的 AI 客户端都能直接使用 Composio 提供的全部工具能力。\n\n### 架构定位\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                        AI 客户端                             │\n│              (Claude Desktop, Cursor, etc.)                  │\n└─────────────────────┬───────────────────────────────────────┘\n                      │ MCP 协议\n                      ▼\n┌─────────────────────────────────────────────────────────────┐\n│                    Composio MCP 服务器                       │\n│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │\n│  │  工具发现    │  │  参数验证    │  │   执行引擎          │  │\n│  └─────────────┘  └─────────────┘  └─────────────────────┘  │\n└─────────────────────┬───────────────────────────────────────┘\n                      │ 内部 API\n                      ▼\n┌─────────────────────────────────────────────────────────────┐\n│                    Composio 工具生态                         │\n│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────────┐   │\n│  │ Gmail   │ │ Slack   │ │ Notion  │ │  300+ 更多工具   │   │\n│  └─────────┘ └─────────┘ └─────────┘ └─────────────────┘   │\n└─────────────────────────────────────────────────────────────┘\n```\n\n## 数据模型\n\n### TypeScript 实现\n\nComposio 的 TypeScript MCP 模型定义在 `ts/packages/core/src/models/MCP.ts` 中，提供了完整的类型定义和接口规范。\n\n| 类/接口 | 用途 | 关键属性 |\n|---------|------|----------|\n| `MCPClient` | MCP 协议客户端封装 | `connection`, `tools`, `requests` |\n| `MCPServer` | MCP 协议服务端实现 | `port`, `host`, `handlers` |\n| `MCPTool` | MCP 工具表示 | `name`, `description`, `inputSchema`, `outputSchema` |\n| `MCPRequest` | 工具调用请求 | `id`, `tool`, `params`, `timestamp` |\n| `MCPResponse` | 工具调用响应 | `id`, `result`, `error`, `duration` |\n\n### Python 实现\n\nPython 端的 MCP 模型位于 `python/composio/core/models/mcp.py`，采用 dataclass 风格的类型定义，与 TypeScript 版本保持功能对齐。\n\n| 类/接口 | 用途 | 关键属性 |\n|---------|------|----------|\n| `MCPClient` | Python MCP 客户端 | `connection`, `tools`, `callbacks` |\n| `MCPServer` | Python MCP 服务器 | `host`, `port`, `routes` |\n| `MCPTool` | Python 工具定义 | `name`, `description`, `input_schema`, `output_schema` |\n| `MCPRequest` | Python 请求对象 | `id`, `method`, `params`, `jsonrpc_version` |\n\n## 工作流程\n\n### 工具发现流程\n\n当 AI 客户端连接到 Composio MCP 服务器时，系统按以下流程完成工具发现：\n\n```mermaid\nsequenceDiagram\n    participant Client as AI 客户端\n    participant Server as MCP 服务器\n    participant Registry as 工具注册表\n    participant Toolkit as 工具包\n\n    Client->>Server: 建立 MCP 连接\n    Server->>Registry: 查询可用工具\n    Registry->>Toolkit: 加载工具包\n    Toolkit-->>Registry: 返回工具列表\n    Registry-->>Server: 返回合并的工具清单\n    Server-->>Client: 发送 tools/list 响应\n    Client->>Server: 发起工具调用请求\n    Server->>Toolkit: 调用目标工具\n    Toolkit-->>Server: 返回执行结果\n    Server-->>Client: 发送工具响应\n```\n\n### 工具执行流程\n\n```mermaid\ngraph TD\n    A[接收 MCP 请求] --> B{验证请求格式}\n    B -->|格式错误| C[返回 JSON-RPC 错误]\n    B -->|格式正确| D{验证工具存在}\n    D -->|工具不存在| E[返回 -32601 错误]\n    D -->|工具存在| F{验证参数}\n    F -->|参数无效| G[返回参数验证错误]\n    F -->|参数有效| H[执行工具逻辑]\n    H --> I[捕获执行异常]\n    I -->|有异常| J[返回错误响应]\n    I -->|正常执行| K[返回成功结果]\n```\n\n## 使用方式\n\n### TypeScript 示例\n\n在 `ts/examples/mcp/src/index.ts` 中提供了完整的使用示例：\n\n```typescript\nimport { Composio } from \"@composio/core\";\nimport { MCPServer } from \"@composio/core/mcp\";\n\nasync function main() {\n  const client = new Composio();\n  \n  // 创建 MCP 服务器\n  const server = new MCPServer({\n    port: 3000,\n    host: \"localhost\"\n  });\n\n  // 注册工具\n  await server.registerTools(await client.getTools());\n\n  // 启动服务器\n  await server.start();\n  console.log(\"MCP 服务器运行在 http://localhost:3000\");\n}\n\nmain();\n```\n\n### Python 示例\n\n`python/examples/mcp.py` 展示了 Python 环境下的使用方式：\n\n```python\nfrom composio import Composio\nfrom composio.mcp import MCPServer\n\ndef main():\n    client = Composio()\n    \n    # 创建 MCP 服务器实例\n    server = MCPServer(\n        host=\"localhost\",\n        port=3000\n    )\n    \n    # 注册可用工具\n    server.register_tools(client.get_tools())\n    \n    # 启动服务\n    server.start()\n    print(\"MCP 服务器已启动\")\n\nif __name__ == \"__main__\":\n    main()\n```\n\n## 单工具包 MCP 模式\n\nComposio 支持将单个工具包暴露为独立的 MCP 服务，这种模式称为 `single-toolkit-mcp`。适用于需要隔离权限或简化配置的部署场景。\n\n```mermaid\ngraph LR\n    A[AI 客户端] -->|MCP| B[单一工具包 MCP 服务器]\n    B --> C[指定工具包]\n    C --> D[该工具包下的所有工具]\n```\n\n配置示例：\n\n```yaml\n# 单工具包 MCP 配置\nmcp:\n  mode: single-toolkit\n  toolkit: gmail\n  tools:\n    - send_email\n    - read_emails\n```\n\n## API 参考\n\n### 核心类\n\n#### MCPServer\n\n| 参数 | 类型 | 必需 | 默认值 | 说明 |\n|------|------|------|--------|------|\n| `host` | `string` | 是 | - | 服务器监听地址 |\n| `port` | `number` | 是 | - | 服务器监听端口 |\n| `tools` | `MCPTool[]` | 否 | `[]` | 初始加载的工具列表 |\n| `auth` | `AuthConfig` | 否 | - | 认证配置 |\n\n#### MCPTool\n\n| 参数 | 类型 | 必需 | 说明 |\n|------|------|------|------|\n| `name` | `string` | 是 | 工具唯一标识 |\n| `description` | `string` | 是 | 工具功能描述 |\n| `inputSchema` | `JSONSchema` | 是 | 输入参数模式 |\n| `outputSchema` | `JSONSchema` | 否 | 输出结果模式 |\n| `handler` | `Function` | 是 | 工具执行函数 |\n\n### JSON-RPC 接口\n\nMCP 协议基于 JSON-RPC 2.0 规范实现，支持以下标准方法：\n\n| 方法名 | 用途 | 请求参数 | 响应类型 |\n|--------|------|----------|----------|\n| `tools/list` | 列出所有可用工具 | `{}` | `ToolListResponse` |\n| `tools/call` | 调用指定工具 | `ToolCallRequest` | `ToolCallResponse` |\n| `tools/schema` | 获取工具参数模式 | `{ name: string }` | `SchemaResponse` |\n\n## 配置选项\n\n### 服务端配置\n\n| 配置项 | 类型 | 说明 | 可选值 |\n|--------|------|------|--------|\n| `strict_mode` | `boolean` | 启用严格参数验证 | `true` / `false` |\n| `timeout` | `number` | 工具调用超时时间(毫秒) | 默认 `30000` |\n| `rate_limit` | `RateLimitConfig` | 请求速率限制 | - |\n| `cors` | `CORSConfig` | 跨域资源共享配置 | - |\n\n### 客户端配置\n\n| 配置项 | 类型 | 说明 |\n|--------|------|------|\n| `server_url` | `string` | MCP 服务器地址 |\n| `api_key` | `string` | API 认证密钥 |\n| `timeout` | `number` | 请求超时时间 |\n| `retries` | `number` | 失败重试次数 |\n\n## 错误处理\n\nMCP 协议定义了标准化的错误码体系：\n\n| 错误码 | 名称 | 说明 |\n|--------|------|------|\n| `-32700` | Parse Error | JSON 解析失败 |\n| `-32600` | Invalid Request | 无效的请求格式 |\n| `-32601` | Method Not Found | 方法不存在 |\n| `-32602` | Invalid Params | 参数无效 |\n| `-32603` | Internal Error | 服务器内部错误 |\n| `-32000` | Tool Execution Error | 工具执行失败 |\n\n## 与主流 AI 客户端集成\n\n### Claude Desktop\n\n在 `~/.config/claude-desktop/claude_desktop_config.json` 中添加配置：\n\n```json\n{\n  \"mcpServers\": {\n    \"composio\": {\n      \"command\": \"npx\",\n      \"args\": [\"@composio/core\", \"mcp\", \"--port\", \"8080\"]\n    }\n  }\n}\n```\n\n### Cursor IDE\n\n在 Cursor 设置中配置 MCP 服务器地址为 `http://localhost:8080` 即可。\n\n## 最佳实践\n\n### 性能优化\n\n1. **工具分页加载**：大型工具集建议使用分页加载，避免首次连接超时\n2. **结果缓存**：对频繁调用的工具启用结果缓存，减少重复执行\n3. **连接复用**：保持长连接以减少握手开销\n\n### 安全建议\n\n1. **参数验证**：始终启用 `strict_mode` 进行参数校验\n2. **密钥管理**：通过环境变量而非硬编码方式配置 API 密钥\n3. **权限隔离**：生产环境建议使用单工具包模式限制暴露范围\n\n## 相关文档\n\n- [单一工具包 MCP 文档](docs/content/docs/single-toolkit-mcp.mdx)\n- [MCP API 参考](docs/content/reference/api-reference/mcp/index.mdx)\n- [Composio 核心概念](../getting-started/concepts.md)\n\n---\n\n<a id='cli'></a>\n\n## CLI 命令行工具\n\n### 相关页面\n\n相关主题：[工具包系统](#toolkits)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [ts/packages/cli/src/commands/root-help.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/root-help.ts)\n- [ts/packages/cli/src/services/tool-permissions.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/tool-permissions.ts)\n- [ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts)\n- [ts/packages/cli/src/commands/init.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/init.cmd.ts)\n- [ts/packages/cli/src/cli-local-tools/src/registry.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/cli-local-tools/src/registry.ts)\n- [ts/packages/cli/src/commands/local-tools/commands/local-tools.configure.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/local-tools/commands/local-tools.configure.cmd.ts)\n- [ts/packages/cli/src/commands/tools/tools.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/tools/tools.cmd.ts)\n- [ts/packages/cli/src/commands/logs-cmd/logs.cmd.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/commands/logs-cmd/logs.cmd.ts)\n- [ts/packages/cli/src/services/command-hints.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/services/command-hints.ts)\n- [ts/packages/cli/src/generation/create-toolkit-index.ts](https://github.com/ComposioHQ/composio/blob/main/ts/packages/cli/src/generation/create-toolkit-index.ts)\n</details>\n\n# CLI 命令行工具\n\nComposio CLI 是 Composio 平台提供的命令行界面工具，为开发者提供了一套完整的命令行接口，用于工具发现、执行、日志查看、项目初始化等操作。CLI 基于 TypeScript/Effect 框架开发，提供了丰富的交互式体验和灵活的扩展机制。\n\n## 架构概览\n\nComposio CLI 采用模块化架构设计，核心组件包括命令解析层、服务层和数据层。整个系统以 Effect 函数式编程库为基础，实现了声明式的命令定义和错误处理。\n\n```mermaid\ngraph TD\n    A[CLI 入口] --> B[命令路由层]\n    B --> C[toolkits 命令组]\n    B --> D[tools 命令组]\n    B --> E[triggers 命令组]\n    B --> F[logs 命令组]\n    B --> G[local-tools 命令组]\n    B --> H[init 命令]\n    \n    C --> I[list - 列出工具包]\n    C --> J[info - 工具包详情]\n    C --> K[search - 搜索工具包]\n    C --> L[version - 版本信息]\n    \n    G --> M[list - 列出本地工具]\n    G --> N[configure - 配置本地工具]\n    G --> O[doctor - 诊断检查]\n```\n\n## 核心命令结构\n\n### 命令组织方式\n\nCLI 使用 Effect 框架的 Command 模块进行命令定义，每个命令都是一个独立的 Effect 对象，通过组合子命令形成树状结构。\n\n```typescript\nexport const toolkitsCmd = Command.make('toolkits').pipe(\n  Command.withDescription('Discover and inspect Composio toolkits.'),\n  Command.withSubcommands([\n    toolkitsCmd$List,\n    toolkitsCmd$Info,\n    toolkitsCmd$Search,\n    toolkitsCmd$Version,\n  ])\n);\n```\n\n资料来源：[ts/packages/cli/src/commands/toolkits/toolkits.cmd.ts:14-23]()\n\n### 根命令层级\n\n| 命令组 | 功能描述 | 子命令 |\n|--------|----------|--------|\n| `toolkits` | 发现和检查 Composio 工具包 | list, info, search, version |\n| `tools` | 工具浏览和详情查看 | list, info |\n| `triggers` | 触发器相关操作 | list, info |\n| `connected-accounts` | 账户连接管理 | link, list, remove |\n| `logs` | 日志查看 | tools, triggers |\n| `local-tools` | 本地工具管理 | list, configure, doctor |\n| `dev` | 开发调试命令 | init, playground-execute |\n| `execute` | 执行工具 | - |\n\n资料来源：[ts/packages/cli/src/commands/tools/tools.cmd.ts:3-10]()\n\n## 全局选项与帮助系统\n\n### 全局 Flags\n\nCLI 提供了一系列全局选项，用于控制命令行为：\n\n| Flag | 说明 | 可用模式 |\n|------|------|----------|\n| `-h, --help [mode]` | 显示帮助信息 | simple, default, full |\n| `--version` | 显示 CLI 版本 | - |\n| `--install-skill [skill-name]` | 手动安装 composio skill | claude, codex, openclaw |\n\n资料来源：[ts/packages/cli/src/commands/root-help.ts:1-15]()\n\n### 帮助级别解析\n\n帮助系统支持三种显示模式，通过 `parseHelpLevel` 函数进行解析：\n\n```typescript\nconst parseHelpLevel = (token?: string): HelpLevel | undefined => {\n  if (!token) return undefined;\n  if (token === 'simple') return 'simple';\n  if (token === 'default') return 'default';\n  if (token === 'verbose') return 'full';\n  return HELP_LEVELS.find(level => level === token);\n};\n```\n\n帮助信息支持尾随参数传递，例如 `composio command --help simple` 会被正确解析为显示简化帮助。\n\n资料来源：[ts/packages/cli/src/commands/root-help.ts:1-100]()\n\n## 工具权限管理\n\n### 权限请求流程\n\n当 CLI 执行需要授权的工具时，会启动一个本地 HTTP 服务器，显示浏览器内嵌的权限请求页面。\n\n```mermaid\nsequenceDiagram\n    用户执行工具 --> CLI: 请求权限\n    CLI --> HTTP服务器: 启动本地服务\n    HTTP服务器 --> 用户浏览器: 显示权限页面\n    用户 --> 浏览器: 选择 Allow/Deny\n    浏览器 --> HTTP服务器: 发送决策\n    HTTP服务器 --> CLI: 返回权限决策\n    CLI --> 工具执行: 执行或拒绝\n```\n\n### 权限选项\n\n权限页面提供三个选项：\n\n- **Allow for this session** - 在当前会话中允许\n- **Allow once** - 仅允许本次执行\n- **Deny** - 拒绝执行\n\n资料来源：[ts/packages/cli/src/services/tool-permissions.ts:1-50]()\n\n## 本地工具注册表\n\n### 本地工具解析机制\n\n本地工具使用特殊前缀 `LOCAL_TOOL_PREFIX` 进行标识，注册表提供了完整的解析和过滤功能。\n\n```typescript\nexport const isLocalToolSlug = (\n  toolSlug: string,\n  options: { readonly declarations?: ReadonlyArray<LocalToolkitDeclaration> } = {}\n): boolean => {\n  const upper = toolSlug.toUpperCase();\n  if (!upper.startsWith(LOCAL_TOOL_PREFIX)) return false;\n  return (\n    resolveLocalTool(toolSlug, { includeUnsupported: true, declarations: options.declarations }) !==\n    null\n  );\n};\n```\n\n### 工具包过滤\n\n注册表支持按名称过滤工具包，并自动检测当前平台支持情况：\n\n```typescript\nexport const getLocalToolkitDeclarations = (\n  options: {\n    readonly currentPlatform?: LocalCliPlatform;\n    readonly toolkits?: ReadonlyArray<string>;\n    readonly declarations?: ReadonlyArray<LocalToolkitDeclaration>;\n  } = {}\n): ReadonlyArray<LocalToolkitDeclaration> => {\n  const currentPlatform = options.currentPlatform ?? detectCliPlatform();\n  return declarationsFor(options.declarations)\n    .filter(toolkit => toolkitMatchesFilter(toolkit, options.toolkits))\n    .filter(toolkit => supportsCliPlatform(toolkit.platforms, currentPlatform))\n    .map(toolkit => ({\n      ...toolkit,\n      tools: toolkit.tools.filter(tool => supportsCliPlatform(tool.platforms, currentPlatform)),\n    }))\n    .filter(toolkit => toolkit.tools.length > 0);\n};\n```\n\n### 工具 Slug 规范化\n\n本地工具使用规范化格式：`LOCAL_TOOL_PREFIX + toolkit_slug + _ + tool_slug`\n\n资料来源：[ts/packages/cli/src/cli-local-tools/src/registry.ts:1-150]()\n\n## 项目初始化\n\n### 初始化流程\n\n`init` 命令负责项目配置，包括环境变量设置和 API key 管理。\n\n```mermaid\nflowchart LR\n    A[运行 init] --> B{检查 .env.local}\n    B -->|不存在| C[创建 .env.local]\n    B -->|存在| D[检查现有配置]\n    C --> E[获取全局 API Key]\n    D --> E\n    E --> F{有 API Key?}\n    F -->|否| G[跳过配置]\n    F -->|是| H[获取会话信息]\n    H --> I[创建项目 API Key]\n    I --> J[写入环境变量]\n```\n\n### 环境变量管理\n\n初始化命令会检查并设置以下环境变量：\n\n- `COMPOSIO_API_KEY` - 项目 API key\n- `COMPOSIO_TEST_USER_ID` - 测试用户 ID\n\n```typescript\nconst hasProjectApiKey = /^COMPOSIO_API_KEY=.*/m.test(existingEnvContent);\nconst hasTestUserId = /^COMPOSIO_TEST_USER_ID=.*/m.test(existingEnvContent);\n```\n\n资料来源：[ts/packages/cli/src/commands/init.cmd.ts:1-100]()\n\n## 工具包索引生成\n\n### 索引数据结构\n\n工具包索引将所有工具和触发器按工具包名称分组存储：\n\n```typescript\nexport type ToolkitIndex = Record<ToolkitName, ToolkitIndexData>;\n\nexport type ToolkitIndexData = Simplify<{\n  slug: string;\n  version?: string;\n  typeableTools:\n    | { withTypes: false; value: Record<`${ToolkitName}_${string}`, ToolAsEnum> }\n    | { withTypes: true; value: Record<`${ToolkitName}_${string}`, Tool> };\n  triggerTypes: Record<`${ToolkitName}_${string}`, TriggerType>;\n}>;\n```\n\n### 索引创建流程\n\n索引创建通过 `createToolkitIndex` 函数实现，自动从工具前缀提取工具包名称：\n\n```typescript\nexport function createToolkitIndex(input: CreateToolkitIndexInput): Simplify<ToolkitIndex> {\n  const { versionMap } = input;\n\n  return pipe(\n    input,\n    groupByToolkits,\n    Record.fromEntries,\n    Record.mapEntries((value, key) => {\n      const stripPrefix = String.slice(key.length + 1);\n      const { slug } = value.toolkit;\n      const version = versionMap?.get(String.toLowerCase(slug));\n      // ...\n    })\n  );\n}\n```\n\n资料来源：[ts/packages/cli/src/generation/create-toolkit-index.ts:1-80]()\n\n## 命令提示系统\n\n### 提示数据结构\n\n命令提示系统为每个命令提供示例用法和相关链接：\n\n```typescript\ntype CommandHint = {\n  example: (params: Record<string, string>) => string;\n  links: ReadonlyArray<string>;\n};\n```\n\n### 常用命令示例\n\n| 命令 | 示例 |\n|------|------|\n| 搜索工具 | `composio search \"<query>\"` |\n| 执行工具 | `composio execute \"<slug>\" -d '{}'` |\n| 获取 Schema | `composio execute \"<slug>\" --get-schema` |\n| 初始化项目 | `composio dev init` |\n| 查看日志 | `composio dev logs tools \"<log_id>\"` |\n\n资料来源：[ts/packages/cli/src/services/command-hints.ts:1-80]()\n\n## 日志系统\n\n### 日志命令组\n\n日志命令提供对工具和触发器执行历史的访问：\n\n```typescript\nexport const logsCmd = Command.make('logs').pipe(\n  Command.withDescription('Inspect trigger and tool execution logs.'),\n  Command.withSubcommands([logsCmd$Triggers, logsCmd$Tools])\n);\n```\n\n| 子命令 | 功能 |\n|--------|------|\n| `logs tools` | 查看工具执行日志 |\n| `logs triggers` | 查看触发器执行日志 |\n\n资料来源：[ts/packages/cli/src/commands/logs-cmd/logs.cmd.ts:1-20]()\n\n## TypeScript 类型生成\n\n### 生成命令选项\n\n`composio generate ts` 命令支持多种配置选项：\n\n| 选项 | 说明 | 默认值 |\n|------|------|--------|\n| `--compact` | 输出单模块文件 | false |\n| `--transpiled` | 同时输出转译后的 JS | true (无 output-dir 时) |\n| `--output-dir` | 指定输出目录 | node_modules/@composio/core |\n| `--toolkits` | 过滤特定工具包 | 全部 |\n\n### 约束条件\n\n- 输出目录不能指向 `node_modules` 内部\n- 未指定 `--output-dir` 时自动使用 `@composio/core` 包目录\n- 如启用 `--transpiled`，会同时生成 ESM 格式的 JavaScript 文件\n\n资料来源：[ts/packages/cli/src/commands/ts/commands/ts.generate.cmd.ts:1-30]()\n\n## 本地工具配置\n\n### 配置命令\n\n`local-tools configure` 命令允许修改工具元数据：\n\n```typescript\nexport const localToolsCmd$Configure = Command.make(\n  'configure',\n  { selector, command, disable, enable, authenticated, unauthenticated, json },\n  ({ selector, command, disable, enable, authenticated, unauthenticated, json }) =>\n    Effect.gen(function* () {\n      const target = resolveTarget(selector);\n      // ...\n    })\n);\n```\n\n### 可配置项\n\n| 配置项 | 说明 |\n|--------|------|\n| `command` | 设置安装命令 |\n| `disable` / `enable` | 启用/禁用工具 |\n| `authenticated` / `unauthenticated` | 设置认证状态 |\n\n配置后可通过 `composio local-tools doctor` 进行诊断验证。\n\n资料来源：[ts/packages/cli/src/commands/local-tools/commands/local-tools.configure.cmd.ts:1-80]()\n\n## 错误处理\n\n### Effect 错误捕获\n\nCLI 使用 Effect 框架的错误处理机制，通过 `captureErrorsFrom` 函数收集错误信息：\n\n```typescript\nexport const captureErrorsFrom = <E>(cause: Cause<E>): readonly PrettyError[] =>\n  reduceWithContext(cause, undefined, {\n    emptyCase: (): readonly PrettyError[] => [],\n    dieCase: (_, unknownError) => [parseError(unknownError)],\n    failCase: (_, error) => [parseError(error)],\n    interruptCase: () => [],\n    parallelCase: (_, l, r) => [...l, ...r],\n    sequentialCase: (_, l, r) => [...l, ...r],\n  });\n```\n\n资料来源：[ts/packages/cli/src/effect-errors/logic/errors/capture-errors-from-cause.ts:1-25]()\n\n## 快速参考\n\n### 常用命令速查\n\n```bash\n# 搜索工具\ncomposio search \"send email\"\n\n# 列出工具包\ncomposio toolkits list\n\n# 查看工具详情\ncomposio tools info <tool-slug>\n\n# 执行工具\ncomposio execute <tool-slug> -d '{\"param\": \"value\"}'\n\n# 获取工具 schema\ncomposio execute <tool-slug> --get-schema\n\n# 初始化项目\ncomposio dev init\n\n# 诊断本地工具\ncomposio local-tools doctor\n\n# 查看执行日志\ncomposio dev logs tools <log-id>\n\n# 生成 TypeScript 类型\ncomposio generate ts --toolkits gmail --toolkits slack\n\n---\n\n---\n\n## Doramagic 踩坑日志\n\n项目：ComposioHQ/composio\n\n摘要：发现 12 个潜在踩坑项，其中 3 个为 high/blocking；最高优先级：安装坑 - 来源证据：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops。\n\n## 1. 安装坑 · 来源证据：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_54d53b3e2a6e4cf4a3e4783f824ed87b | https://github.com/ComposioHQ/composio/issues/3269 | 来源讨论提到 node 相关条件，需在安装/试用前复核。\n\n## 2. 安全/权限坑 · 来源证据：[Bug]: SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK returns successful but file is never shared to channel (channels:[], shar…\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Bug]: SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK returns successful but file is never shared to channel (channels:[], shares:{})\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_1b88beb594aa433eb998eac3b16a20e0 | https://github.com/ComposioHQ/composio/issues/3422 | 来源讨论提到 node 相关条件，需在安装/试用前复核。\n\n## 3. 安全/权限坑 · 来源证据：[Feature] Custom auth configs shouldn't require a dev project to use\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Feature] Custom auth configs shouldn't require a dev project to use\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_1d62ba62e77b47ff88b50d2db41a8cf7 | https://github.com/ComposioHQ/composio/issues/3271 | 来源讨论提到 linux 相关条件，需在安装/试用前复核。\n\n## 4. 身份坑 · 仓库名和安装名不一致\n\n- 严重度：medium\n- 证据强度：runtime_trace\n- 发现：仓库名 `composio` 与安装入口 `@composio/core` 不完全一致。\n- 对用户的影响：用户照着仓库名搜索包或照着包名找仓库时容易走错入口。\n- 建议检查：在 npm/PyPI/GitHub 上确认包名映射和官方 README 说明。\n- 复现命令：`npm install @composio/core`\n- 防护动作：页面必须同时展示 repo 名和真实安装入口，避免用户搜索错包。\n- 证据：identity.distribution | github_repo:762304524 | https://github.com/ComposioHQ/composio | repo=composio; install=@composio/core\n\n## 5. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | github_repo:762304524 | https://github.com/ComposioHQ/composio | README/documentation is current enough for a first validation pass.\n\n## 6. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | github_repo:762304524 | https://github.com/ComposioHQ/composio | last_activity_observed missing\n\n## 7. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | github_repo:762304524 | https://github.com/ComposioHQ/composio | no_demo; severity=medium\n\n## 8. 安全/权限坑 · 存在安全注意事项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：No sandbox install has been executed yet; downstream must verify before user use.\n- 对用户的影响：用户安装前需要知道权限边界和敏感操作。\n- 建议检查：转成明确权限清单和安全审查提示。\n- 防护动作：安全注意事项必须面向用户前置展示。\n- 证据：risks.safety_notes | github_repo:762304524 | https://github.com/ComposioHQ/composio | No sandbox install has been executed yet; downstream must verify before user use.\n\n## 9. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | github_repo:762304524 | https://github.com/ComposioHQ/composio | no_demo; severity=medium\n\n## 10. 安全/权限坑 · 来源证据：@composio/core@0.10.0\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：@composio/core@0.10.0\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_66f9d5fd557f41c7845ca5dd7d93ae6f | https://github.com/ComposioHQ/composio/releases/tag/%40composio/core%400.10.0 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 11. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | github_repo:762304524 | https://github.com/ComposioHQ/composio | issue_or_pr_quality=unknown\n\n## 12. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | github_repo:762304524 | https://github.com/ComposioHQ/composio | release_recency=unknown\n\n<!-- canonical_name: ComposioHQ/composio; human_manual_source: deepwiki_human_wiki -->\n",
      "summary": "DeepWiki/Human Wiki 完整输出，末尾追加 Discovery Agent 踩坑日志。",
      "title": "Human Manual / 人类版说明书"
    },
    "pitfall_log": {
      "asset_id": "pitfall_log",
      "filename": "PITFALL_LOG.md",
      "markdown": "# Pitfall Log / 踩坑日志\n\n项目：ComposioHQ/composio\n\n摘要：发现 12 个潜在踩坑项，其中 3 个为 high/blocking；最高优先级：安装坑 - 来源证据：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops。\n\n## 1. 安装坑 · 来源证据：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug]: CLI - v0.2.25 release missing binary assets — upgrade command silently no-ops\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_54d53b3e2a6e4cf4a3e4783f824ed87b | https://github.com/ComposioHQ/composio/issues/3269 | 来源讨论提到 node 相关条件，需在安装/试用前复核。\n\n## 2. 安全/权限坑 · 来源证据：[Bug]: SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK returns successful but file is never shared to channel (channels:[], shar…\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Bug]: SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK returns successful but file is never shared to channel (channels:[], shares:{})\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_1b88beb594aa433eb998eac3b16a20e0 | https://github.com/ComposioHQ/composio/issues/3422 | 来源讨论提到 node 相关条件，需在安装/试用前复核。\n\n## 3. 安全/权限坑 · 来源证据：[Feature] Custom auth configs shouldn't require a dev project to use\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Feature] Custom auth configs shouldn't require a dev project to use\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_1d62ba62e77b47ff88b50d2db41a8cf7 | https://github.com/ComposioHQ/composio/issues/3271 | 来源讨论提到 linux 相关条件，需在安装/试用前复核。\n\n## 4. 身份坑 · 仓库名和安装名不一致\n\n- 严重度：medium\n- 证据强度：runtime_trace\n- 发现：仓库名 `composio` 与安装入口 `@composio/core` 不完全一致。\n- 对用户的影响：用户照着仓库名搜索包或照着包名找仓库时容易走错入口。\n- 建议检查：在 npm/PyPI/GitHub 上确认包名映射和官方 README 说明。\n- 复现命令：`npm install @composio/core`\n- 防护动作：页面必须同时展示 repo 名和真实安装入口，避免用户搜索错包。\n- 证据：identity.distribution | github_repo:762304524 | https://github.com/ComposioHQ/composio | repo=composio; install=@composio/core\n\n## 5. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | github_repo:762304524 | https://github.com/ComposioHQ/composio | README/documentation is current enough for a first validation pass.\n\n## 6. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | github_repo:762304524 | https://github.com/ComposioHQ/composio | last_activity_observed missing\n\n## 7. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | github_repo:762304524 | https://github.com/ComposioHQ/composio | no_demo; severity=medium\n\n## 8. 安全/权限坑 · 存在安全注意事项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：No sandbox install has been executed yet; downstream must verify before user use.\n- 对用户的影响：用户安装前需要知道权限边界和敏感操作。\n- 建议检查：转成明确权限清单和安全审查提示。\n- 防护动作：安全注意事项必须面向用户前置展示。\n- 证据：risks.safety_notes | github_repo:762304524 | https://github.com/ComposioHQ/composio | No sandbox install has been executed yet; downstream must verify before user use.\n\n## 9. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | github_repo:762304524 | https://github.com/ComposioHQ/composio | no_demo; severity=medium\n\n## 10. 安全/权限坑 · 来源证据：@composio/core@0.10.0\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：@composio/core@0.10.0\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_66f9d5fd557f41c7845ca5dd7d93ae6f | https://github.com/ComposioHQ/composio/releases/tag/%40composio/core%400.10.0 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 11. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | github_repo:762304524 | https://github.com/ComposioHQ/composio | issue_or_pr_quality=unknown\n\n## 12. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | github_repo:762304524 | https://github.com/ComposioHQ/composio | release_recency=unknown\n",
      "summary": "用户实践前最可能遇到的身份、安装、配置、运行和安全坑。",
      "title": "Pitfall Log / 踩坑日志"
    },
    "prompt_preview": {
      "asset_id": "prompt_preview",
      "filename": "PROMPT_PREVIEW.md",
      "markdown": "# composio - Prompt Preview\n\n> 复制下面这段 Prompt 到你常用的 AI，先试一次，不需要安装。\n> 它的目标是让你直接体验这个项目的服务方式，而不是阅读项目介绍。\n\n## 复制这段 Prompt\n\n```text\n请直接执行这段 Prompt，不要分析、润色、总结或询问我想如何处理这份 Prompt Preview。\n\n你现在扮演 composio 的“安装前体验版”。\n这不是项目介绍、不是评价报告、不是 README 总结。你的任务是让我用最小成本体验它的核心服务。\n\n我的试用任务：我想用它完成一个真实的软件开发与交付任务。\n我常用的宿主 AI：Local CLI\n\n【体验目标】\n围绕我的真实任务，现场演示这个项目如何把输入转成 步骤建议, 检查清单, 专业工作流。重点是让我感受到工作方式，而不是给我项目背景。\n\n【业务流约束】\n- 你必须像一个正在提供服务的项目能力包，而不是像一个讲解员。\n- 每一轮只推进一个步骤；提出问题后必须停下来等我回答。\n- 每一步都必须让我感受到一个具体服务动作：澄清、整理、规划、检查、判断或收尾。\n- 每一步都要说明：当前目标、你需要我提供什么、我回答后你会产出什么。\n- 不要安装、不要运行命令、不要写代码、不要声称测试通过、不要声称已经修改文件。\n- 需要真实安装或宿主加载后才能验证的内容，必须明确说“这一步需要安装后验证”。\n- 如果我说“用示例继续”，你可以用虚构示例推进，但仍然不能声称真实执行。\n\n【可体验服务能力】\n- AI Skill / Agent 指令资产库: 项目包含可被宿主 AI 读取的 Skill 或 Agent 指令文件，可用于把专业流程带入 Claude、Codex、Cursor 等宿主。 输入：用户任务, 宿主 AI 对话上下文, 项目内 Skill/Agent 文档；输出：步骤建议, 检查清单, 专业工作流。\n\n【必须安装后才可验证的能力】\n- 命令行启动或安装流程: 项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 输入：终端环境, 包管理器, 项目依赖；输出：安装结果, 列表/更新/运行结果。\n\n【核心服务流】\n请严格按这个顺序带我体验。不要一次性输出完整流程：\n1. intro：项目介绍。围绕“项目介绍”模拟一次用户任务，不展示安装或运行结果。\n2. quickstart：快速入门指南。围绕“快速入门指南”模拟一次用户任务，不展示安装或运行结果。\n3. architecture：系统架构。围绕“系统架构”模拟一次用户任务，不展示安装或运行结果。\n4. ts-sdk：TypeScript SDK 详解。围绕“TypeScript SDK 详解”模拟一次用户任务，不展示安装或运行结果。\n5. py-sdk：Python SDK 详解。围绕“Python SDK 详解”模拟一次用户任务，不展示安装或运行结果。\n\n【核心能力体验剧本】\n每一步都必须按“输入 -> 服务动作 -> 中间产物”执行。不要只说流程名：\n1. intro\n输入：用户提供的“项目介绍”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n2. quickstart\n输入：用户提供的“快速入门指南”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n3. architecture\n输入：用户提供的“系统架构”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n4. ts-sdk\n输入：用户提供的“TypeScript SDK 详解”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n5. py-sdk\n输入：用户提供的“Python SDK 详解”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n【项目服务规则】\n这些规则决定你如何服务用户。不要解释规则本身，而要在每一步执行时遵守：\n- 先确认用户任务、输入材料和成功标准，再模拟项目能力。\n- 每一步都必须形成可检查的小产物，并等待用户确认后再继续。\n- 凡是需要安装、调用工具或访问外部服务的能力，都必须标记为安装后验证。\n\n【每一步的服务约束】\n- Step 1 / intro：Step 1 必须围绕“项目介绍”形成一个小中间产物，并等待用户确认。\n- Step 2 / quickstart：Step 2 必须围绕“快速入门指南”形成一个小中间产物，并等待用户确认。\n- Step 3 / architecture：Step 3 必须围绕“系统架构”形成一个小中间产物，并等待用户确认。\n- Step 4 / ts-sdk：Step 4 必须围绕“TypeScript SDK 详解”形成一个小中间产物，并等待用户确认。\n- Step 5 / py-sdk：Step 5 必须围绕“Python SDK 详解”形成一个小中间产物，并等待用户确认。\n\n【边界与风险】\n- 不要声称已经安装、运行、调用 API、读写本地文件或完成真实任务。\n- 安装前预览只能展示工作方式，不能证明兼容性、性能或输出质量。\n- 涉及安装、插件加载、工具调用或外部服务的能力必须安装后验证。\n\n【可追溯依据】\n这些路径只用于你内部校验或在我追问“依据是什么”时简要引用。不要在首次回复主动展开：\n- https://github.com/ComposioHQ/composio\n- https://github.com/ComposioHQ/composio#readme\n- .agents/skills/bug-fixing-guide/SKILL.md\n- .agents/skills/building-agents/SKILL.md\n- .agents/skills/building-agents-using-anthropic/SKILL.md\n- .agents/skills/building-agents-using-autogen/SKILL.md\n- .agents/skills/building-agents-using-cloudflare/SKILL.md\n- .agents/skills/building-agents-using-crewai/SKILL.md\n- .agents/skills/building-agents-using-google/SKILL.md\n- .agents/skills/building-agents-using-langchain/SKILL.md\n- .agents/skills/building-agents-using-langgraph/SKILL.md\n- .agents/skills/building-agents-using-llamaindex/SKILL.md\n\n【首次问题规则】\n- 首次三问必须先确认用户目标、成功标准和边界，不要提前进入工具、安装或实现细节。\n- 如果后续需要技术条件、文件路径或运行环境，必须等用户确认目标后再追问。\n\n首次回复必须只输出下面 4 个部分：\n1. 体验开始：用 1 句话说明你将带我体验 composio 的核心服务。\n2. 当前步骤：明确进入 Step 1，并说明这一步要解决什么。\n3. 你会如何服务我：说明你会先改变我完成任务的哪个动作。\n4. 只问我 3 个问题，然后停下等待回答。\n\n首次回复禁止输出：后续完整流程、证据清单、安装命令、项目评价、营销文案、已经安装或运行的说法。\n\nStep 1 / brainstorming 的二轮协议：\n- 我回答首次三问后，你仍然停留在 Step 1 / brainstorming，不要进入 Step 2。\n- 第二次回复必须产出 6 个部分：澄清后的任务定义、成功标准、边界条件、\n  2-3 个可选方案、每个方案的权衡、推荐方案。\n- 第二次回复最后必须问我是否确认推荐方案；只有我明确确认后，才能进入下一步。\n- 第二次回复禁止输出 git worktree、代码计划、测试文件、命令或真实执行结果。\n\n后续对话规则：\n- 我回答后，你先完成当前步骤的中间产物并等待确认；只有我确认后，才能进入下一步。\n- 每一步都要生成一个小的中间产物，例如澄清后的目标、计划草案、测试意图、验证清单或继续/停止判断。\n- 所有演示都写成“我会建议/我会引导/这一步会形成”，不要写成已经真实执行。\n- 不要声称已经测试通过、文件已修改、命令已运行或结果已产生。\n- 如果某个能力必须安装后验证，请直接说“这一步需要安装后验证”。\n- 如果证据不足，请明确说“证据不足”，不要补事实。\n```\n",
      "summary": "不安装项目也能感受能力节奏的安全试用 Prompt。",
      "title": "Prompt Preview / 安装前试用 Prompt"
    },
    "quick_start": {
      "asset_id": "quick_start",
      "filename": "QUICK_START.md",
      "markdown": "# Quick Start / 官方入口\n\n项目：ComposioHQ/composio\n\n## 官方安装入口\n\n### Node.js / npm · 官方安装入口\n\n```bash\nnpm install @composio/core\n```\n\n来源：https://github.com/ComposioHQ/composio#readme\n\n## 来源\n\n- repo: https://github.com/ComposioHQ/composio\n- docs: https://github.com/ComposioHQ/composio#readme\n",
      "summary": "从项目官方 README 或安装文档提取的开工入口。",
      "title": "Quick Start / 官方入口"
    }
  },
  "validation_id": "dval_2338278d08fa4b36b2924d1ece43ba6f"
}
