Loading...
    • 开发者指南
    • API 参考
    • MCP
    • 资源
    • 发布说明
    Search...
    ⌘K
    快速开始
    Claude 简介快速入门
    模型与定价
    模型概览选择模型Claude 4.5 新功能迁移到 Claude 4.5模型弃用定价
    使用 Claude 构建
    功能概览使用 Messages API上下文窗口提示词最佳实践
    能力
    提示词缓存上下文编辑扩展思考工作量流式消息批量处理引用多语言支持Token 计数嵌入视觉PDF 支持Files API搜索结果结构化输出
    工具
    概览如何实现工具使用细粒度工具流式传输Bash 工具代码执行工具程序化工具调用计算机使用工具文本编辑器工具Web 获取工具Web 搜索工具内存工具工具搜索工具
    Agent Skills
    概览快速入门最佳实践在 API 中使用 Skills
    Agent SDK
    概览快速入门TypeScript SDKTypeScript V2(预览版)Python SDK迁移指南
    流式输入处理权限使用钩子控制执行会话管理文件检查点SDK 中的结构化输出托管 Agent SDK安全部署 AI 代理修改系统提示词SDK 中的 MCP自定义工具SDK 中的子代理SDK 中的斜杠命令SDK 中的 Agent Skills跟踪成本和使用情况待办事项列表SDK 中的插件
    API 中的 MCP
    MCP 连接器远程 MCP 服务器
    第三方平台上的 Claude
    Amazon BedrockMicrosoft FoundryVertex AI
    提示词工程
    概览提示词生成器使用提示词模板提示词改进器清晰直接使用示例(多轮提示)让 Claude 思考(CoT)使用 XML 标签给 Claude 一个角色(系统提示词)预填充 Claude 的响应链接复杂提示词长上下文提示扩展思考提示
    测试与评估
    定义成功标准开发测试用例使用评估工具降低延迟
    加强防护栏
    减少幻觉提高输出一致性缓解越狱流式拒绝减少提示词泄露保持 Claude 的角色
    管理和监控
    Admin API 概览使用和成本 APIClaude Code Analytics API
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    指南

    SDK 中的插件

    通过 Agent SDK 加载自定义插件,使用命令、代理、技能和钩子来扩展 Claude Code

    插件允许您使用可在项目间共享的自定义功能来扩展 Claude Code。通过 Agent SDK,您可以以编程方式从本地目录加载插件,以便向代理会话添加自定义斜杠命令、代理、技能、钩子和 MCP 服务器。

    什么是插件?

    插件是 Claude Code 扩展的包,可以包括:

    • 命令:自定义斜杠命令
    • 代理:用于特定任务的专门子代理
    • 技能:Claude 自主使用的模型调用功能
    • 钩子:响应工具使用和其他事件的事件处理程序
    • MCP 服务器:通过模型上下文协议的外部工具集成

    有关插件结构和如何创建插件的完整信息,请参阅插件。

    加载插件

    通过在选项配置中提供本地文件系统路径来加载插件。SDK 支持从不同位置加载多个插件。

    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    for await (const message of query({
      prompt: "Hello",
      options: {
        plugins: [
          { type: "local", path: "./my-plugin" },
          { type: "local", path: "/absolute/path/to/another-plugin" }
        ]
      }
    })) {
      // Plugin commands, agents, and other features are now available
    }

    路径规范

    插件路径可以是:

    • 相对路径:相对于您当前工作目录解析(例如,"./plugins/my-plugin")
    • 绝对路径:完整文件系统路径(例如,"/home/user/plugins/my-plugin")

    路径应指向插件的根目录(包含 .claude-plugin/plugin.json 的目录)。

    验证插件安装

    当插件成功加载时,它们会出现在系统初始化消息中。您可以验证您的插件是否可用:

    使用插件命令

    来自插件的命令会自动使用插件名称进行命名空间处理,以避免冲突。格式为 plugin-name:command-name。

    如果您通过 CLI 安装了插件(例如,/plugin install my-plugin@marketplace),您仍然可以通过提供其安装路径在 SDK 中使用它。检查 ~/.claude/plugins/ 以查找 CLI 安装的插件。

    完整示例

    以下是演示插件加载和使用的完整示例:

    插件结构参考

    插件目录必须包含 .claude-plugin/plugin.json 清单文件。它可以选择性地包括:

    my-plugin/
    ├── .claude-plugin/
    │   └── plugin.json          # Required: plugin manifest
    ├── commands/                 # Custom slash commands
    │   └── custom-cmd.md
    ├── agents/                   # Custom agents
    │   └── specialist.md
    ├── skills/                   # Agent Skills
    │   └── my-skill/
    │       └── SKILL.md
    ├── hooks/                    # Event handlers
    │   └── hooks.json
    └── .mcp.json                # MCP server definitions

    有关创建插件的详细信息,请参阅:

    • 插件 - 完整的插件开发指南
    • 插件参考 - 技术规范和架构

    常见用例

    开发和测试

    在开发期间加载插件,无需全局安装:

    plugins: [
      { type: "local", path: "./dev-plugins/my-plugin" }
    ]

    项目特定的扩展

    在您的项目存储库中包含插件以实现团队范围的一致性:

    plugins: [
      { type: "local", path: "./project-plugins/team-workflows" }
    ]

    多个插件源

    组合来自不同位置的插件:

    plugins: [
      { type: "local", path: "./local-plugin" },
      { type: "local", path: "~/.claude/custom-plugins/shared-plugin" }
    ]

    故障排除

    插件未加载

    如果您的插件未出现在初始化消息中:

    1. 检查路径:确保路径指向插件根目录(包含 .claude-plugin/)
    2. 验证 plugin.json:确保您的清单文件具有有效的 JSON 语法
    3. 检查文件权限:确保插件目录可读

    命令不可用

    如果插件命令不起作用:

    1. 使用命名空间:插件命令需要 plugin-name:command-name 格式
    2. 检查初始化消息:验证命令是否以正确的命名空间出现在 slash_commands 中
    3. 验证命令文件:确保命令 markdown 文件位于 commands/ 目录中

    路径解析问题

    如果相对路径不起作用:

    1. 检查工作目录:相对路径从您当前的工作目录解析
    2. 使用绝对路径:为了可靠性,请考虑使用绝对路径
    3. 规范化路径:使用路径实用程序正确构造路径

    另请参阅

    • 插件 - 完整的插件开发指南
    • 插件参考 - 技术规范
    • 斜杠命令 - 在 SDK 中使用斜杠命令
    • 子代理 - 使用专门的代理
    • 技能 - 使用 Agent Skills
    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    for await (const message of query({
      prompt: "Hello",
      options: {
        plugins: [{ type: "local", path: "./my-plugin" }]
      }
    })) {
      if (message.type === "system" && message.subtype === "init") {
        // Check loaded plugins
        console.log("Plugins:", message.plugins);
        // Example: [{ name: "my-plugin", path: "./my-plugin" }]
    
        // Check available commands from plugins
        console.log("Commands:", message.slash_commands);
        // Example: ["/help", "/compact", "my-plugin:custom-command"]
      }
    }
    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    // Load a plugin with a custom /greet command
    for await (const message of query({
      prompt: "/my-plugin:greet",  // Use plugin command with namespace
      options: {
        plugins: [{ type: "local", path: "./my-plugin" }]
      }
    })) {
      // Claude executes the custom greeting command from the plugin
      if (message.type === "assistant") {
        console.log(message.content);
      }
    }
    import { query } from "@anthropic-ai/claude-agent-sdk";
    import * as path from "path";
    
    async function runWithPlugin() {
      const pluginPath = path.join(__dirname, "plugins", "my-plugin");
    
      console.log("Loading plugin from:", pluginPath);
    
      for await (const message of query({
        prompt: "What custom commands do you have available?",
        options: {
          plugins: [
            { type: "local", path: pluginPath }
          ],
          maxTurns: 3
        }
      })) {
        if (message.type === "system" && message.subtype === "init") {
          console.log("Loaded plugins:", message.plugins);
          console.log("Available commands:", message.slash_commands);
        }
    
        if (message.type === "assistant") {
          console.log("Assistant:", message.content);
        }
      }
    }
    
    runWithPlugin().catch(console.error);