Skip to main content

Plugin Directories

Plugin Directory 是一種機制,可將 Skills、Hooks、MCP 伺服器、Custom Agents、LSP 設定等整合到單一目錄中一次載入。適合用於將可重用的功能組合封裝並隨應用程式或儲存庫發佈。 在 Laravel 版中,可透過 SessionConfigResumeSessionConfigpluginDirectories 指定。

使用場景

  • 將多個擴充功能作為單一能力包發佈
  • 將 plugin 隨儲存庫一併發佈,讓所有成員使用相同設定
  • 在上架 Marketplace 之前,於本機開發與驗證 plugin
  • 使用本機 checkout 暫時覆寫已安裝的 plugin
若只需要 1 個 MCP 伺服器、1 個 Hook 或 1 個 Custom Agent,直接指定到 mcpServershookscustomAgents 反而更為簡單。Plugin Directory 適合用於一次發佈多個相關功能。

目錄結構

Copilot CLI 會從每個 plugin 目錄中尋找 plugin.json 或位於根目錄下的 SKILL.md
plugin.json 也可以放在 .github/plugin.json.github/plugin/plugin.json。Skills、Hooks、MCP、Agents 等各自擁有獨立的 loader,只需包含需要的項目即可。

從 Laravel 載入

也可以使用陣列形式指定。

cli_args 的差異

在官方 SDK 中,有時會將其說明為 runtime 啟動時的 --plugin-dir 參數。Laravel 版基本上使用 Session 設定的 pluginDirectories 另一方面,若要對 CLI 程序啟動本身傳入參數,可使用 config/copilot.phpcli_argsCopilot::useStdio()cli_args。但 cli_args 僅在 SDK 透過 stdio 啟動 CLI 時有效,連線至外部 runtime(例如 useTcp())時會被忽略。
通常請優先使用 pluginDirectories。它可以在 Session 層級明確指定,並與其他 SessionConfig 設定集中管理。

為了可重現性

  • 相較於相對路徑,建議使用 base_path() 等轉為絕對路徑
  • 隨儲存庫發佈的 plugin 應納入版本控管
  • 使用 Marketplace 或外部發佈的 plugin 時,請將使用版本記錄於文件中
  • 在正式環境中,請勿允許使用者輸入直接指定任意的 plugin 路徑

參考

最新資訊請參閱 GitHub 儲存庫
最後修改於 2026年8月2日