Plugin Directories
Plugin Directory 是一種機制,可將 Skills、Hooks、MCP 伺服器、Custom Agents、LSP 設定等整合到單一目錄中一次載入。適合用於將可重用的功能組合封裝並隨應用程式或儲存庫發佈。 在 Laravel 版中,可透過SessionConfig 或 ResumeSessionConfig 的 pluginDirectories 指定。
使用場景
- 將多個擴充功能作為單一能力包發佈
- 將 plugin 隨儲存庫一併發佈,讓所有成員使用相同設定
- 在上架 Marketplace 之前,於本機開發與驗證 plugin
- 使用本機 checkout 暫時覆寫已安裝的 plugin
mcpServers、hooks、customAgents 反而更為簡單。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.php 的 cli_args 或 Copilot::useStdio() 的 cli_args。但 cli_args 僅在 SDK 透過 stdio 啟動 CLI 時有效,連線至外部 runtime(例如 useTcp())時會被忽略。
pluginDirectories。它可以在 Session 層級明確指定,並與其他 SessionConfig 設定集中管理。
為了可重現性
- 相較於相對路徑,建議使用
base_path()等轉為絕對路徑 - 隨儲存庫發佈的 plugin 應納入版本控管
- 使用 Marketplace 或外部發佈的 plugin 時,請將使用版本記錄於文件中
- 在正式環境中,請勿允許使用者輸入直接指定任意的 plugin 路徑
參考
最新資訊請參閱 GitHub 儲存庫。