專案資源
為專案關聯 GitHub 倉庫或本地目錄,讓後續執行獲得穩定的工作上下文。
專案資源告訴 AI 代理這組工作會用到哪些程式碼,以及在哪裡執行。資源會持續關聯在專案上,不必在每條任務中重複貼上倉庫地址或本地路徑。
目前支援兩種資源:
| 資源 | 適用場景 | 執行位置 |
|---|---|---|
| GitHub 倉庫 | 團隊共享的程式碼庫,希望由執行時管理 checkout | 執行時管理的工作目錄 |
| 本地目錄 | 已經存在的 checkout、很大的倉庫,或需要直接檢視本地改動 | 指定電腦上的原目錄 |
資源進入執行的方式
當 AI 代理處理專案內的任務時,Multica 會把專案名稱、專案描述和資源列表加入執行上下文,並在工作目錄中寫入 .multica/project/resources.json。
工作區關聯的倉庫列表始終包含在執行上下文中。專案關聯的倉庫在此基礎上指明這組工作使用的程式碼和預設 ref。
本地目錄只對繫結它的守護程序有效。本次執行所在的守護程序有匹配的本地目錄時,AI 代理直接進入該目錄工作;其他電腦仍使用專案中的 GitHub 倉庫或工作區倉庫。
新增 GitHub 倉庫
開啟專案,在 資源 中選擇"新增資源"。可以選擇已關聯到工作區的倉庫,也可以貼上 Git URL。工作區倉庫在 設定 → 程式碼 中維護;連線 GitHub 後,可在同一頁面透過 從 GitHub 選擇 匯入 App 已授權的倉庫。
倉庫不限於 GitHub:任何執行時能訪問的 Git URL 都可以作為倉庫資源。自部署的 Multica 還可以在 設定 → 程式碼 連線自託管的 Forgejo、Gitea 或 GitLab,見自託管 Git 程式碼託管。
建立專案時,也可以直接在 Repos 中選擇倉庫。一個專案可以關聯多個 GitHub 倉庫。
資源中的 ref 可以指定後續 checkout 預設使用的分支、tag 或 commit。default_branch_hint 只向 AI 代理提供預設分支提示,不會強制切換分支。
新增本地目錄
新增本地目錄的介面只在 Desktop 中提供,因為瀏覽器不能選擇電腦上的資料夾。
這是特殊情況下的選項,不要因為方便就選它。 local_directory 是給那些"不得不這麼開發"的人準備的,典型是一個 checkout 就幾十 GB 的遊戲專案,不可能每來一次執行就重新 clone 一份。
如果你的目錄只是一個能正常 clone 的普通 git 倉庫,請用 github_repo:它預設走 worktree 模式,同一個倉庫上的執行可以同時進行,數量不受限制。local_directory 預設同一時間只進行一次執行;如果這個目錄本身是 git 倉庫,可以主動開啟 worktree 模式恢復併發(見執行如何共享這個目錄)。拿不準時,先對照頁首的兩種資源。
確認 Desktop 的本地守護程序線上。
開啟專案的 資源,或者建立專案對話方塊裡的 本地目錄 標籤頁。專案還沒建出來時,也能在這裡做同樣的選擇。
選擇"新增本地目錄",再選擇要使用的資料夾。
選擇執行如何使用它:原地 還是 並行,區別見執行如何共享這個目錄。如果這個資料夾是 git 倉庫、並且那臺機器上的執行時能做隔離,Desktop 會預選 並行,否則預選 原地。當場可以改,之後也可以在 資源 裡點目錄旁邊的鉛筆圖示改。
預選只作用於你此刻正在關聯的目錄。之前關聯好的目錄仍然保持儲存時的模式,已有配置不會在你不知情時被切換。
目錄必須是絕對路徑,已經存在,並且當前守護程序可以讀取和寫入。以下路徑會被拒絕:系統根目錄和磁碟機代號根(/、C:\)、使用者主目錄本身及各主目錄的上級(如 /Users、/home、/root),以及 /etc、/var、/tmp、/usr、/opt 等系統目錄。如果所選路徑是符號連結,會先解析為真實路徑再按同樣的規則校驗一次,序列鎖也按真實路徑生效。
每個專案在同一臺守護程序上最多關聯一個本地目錄。團隊中的不同電腦可以分別為同一個專案關聯各自的目錄。
在預設的 in_place 模式下,本地目錄不是隔離環境:AI 代理會直接看到並修改當前分支和未提交的檔案,Multica 也不會自動切換分支、stash、commit、push 或建立 PR。worktree 模式不一樣,見下面的執行如何共享這個目錄。
執行如何共享這個目錄
本地目錄有兩種執行模式,按資源逐個設定。在資源面板裡可以直接切換,CLI 用 --execution-mode。Desktop 裡這兩種模式顯示為 原地 和 並行;API、CLI 和本頁其餘部分都使用識別符號。
AI 代理直接在你的目錄裡工作,同一時間只進行一次執行。兩次執行使用同一個真實目錄時,後到的執行進入 waiting_local_directory,等前一次釋放目錄後繼續。兩個路徑經不同符號連結指向同一目錄時,同樣序列。
等待不會修改目錄。等待中的執行可以取消,否則會一直等到目錄可用。
普通的非 git 目錄只能用這種模式:worktree 模式只面向 git 倉庫。
執行期間寫入的內容
除了 AI 代理產生的程式碼改動,執行時還可能在目錄中寫入當前 AI 程式設計工具所需的說明檔案,以及 .multica/project/resources.json。不希望它們進入版本控制時,加入 .gitignore 即可。
Multica 清理執行環境時不會刪除關聯的本地目錄。AI 代理對該目錄的改動,與你在終端中直接執行 AI 程式設計工具的改動性質相同,需要同樣的審查。
使用 CLI 管理資源
# 建立專案時關聯倉庫
multica project create \
--title "Agent UX" \
--repo https://github.com/multica-ai/multica
# 檢視和新增資源
multica project resource list <project-id>
multica project resource add <project-id> \
--type github_repo \
--url https://github.com/multica-ai/multica \
--ref main
# 關聯指定守護程序上的本地目錄
multica project resource add <project-id> \
--type local_directory \
--local-path /absolute/path/to/repo \
--daemon-id <daemon-id>
# 關聯一個本地 git 倉庫,並讓每次執行在各自的 worktree 中併發執行
multica project resource add <project-id> \
--type local_directory \
--local-path /absolute/path/to/repo \
--daemon-id <daemon-id> \
--execution-mode worktree
# 為已有的本地目錄切換模式
multica project resource update <project-id> <resource-id> --execution-mode worktree
multica project resource update <project-id> <resource-id> --execution-mode in_place
# 移除資源
multica project resource remove <project-id> <resource-id>資源變更會影響之後建立的執行,不會改寫已經結束的執行記錄。