連接你的程式碼(/projects/connect/code)可將 aiKit 專案連結到你已有的 Git 儲存庫(例如 GitHub 上的 Laravel 應用程式),以及它的執行位置:你自己的伺服器,或 aiKit 代管。之後你只要用白話文在專案的代管頁籤中提出變更需求。aiKit 的 AI 會編輯程式碼的副本、執行專案的檢查、向你顯示差異和預覽,並且只有在團隊中有人核准後才會部署。每次部署都是一個有編號的版本,你可以一鍵復原。你的儲存庫仍是唯一的正本,你的伺服器也會照原本的方式部署。
連接你的程式碼 →為專案命名,然後貼上儲存庫的網址(從 GitHub 綠色的 Code 按鈕複製)以及網站執行所用的分支,通常是 main。選擇 aiKit 存取儲存庫的方式。GitHub 權杖:你在 GitHub 上為此單一儲存庫建立的細粒度權杖,並將 Contents 設為 Read and write;它搭配 https:// 網址使用。部署金鑰:僅為此儲存庫建立的金鑰對,將公開金鑰加入儲存庫的 Settings、Deploy keys,並勾選 Allow write access;它搭配 git@ 網址使用。公開儲存庫:只能讀取,因此核准的變更無處可儲存;僅用於瀏覽。
權杖或金鑰由你自己貼上。它會加密儲存在 aiKit 的引擎上,且之後不會再顯示給任何人。頁面只會顯示指紋。連接儲存庫會將程式碼複製到引擎,並判斷專案類型(Laravel、JavaScript 或靜態檔案)。儲存庫本身不會有任何變更。
你已有的專案也可以連接:在其代管頁籤上,擁有者會看到「連接你的程式碼」。
你自己的伺服器:網站維持在原本的位置。請輸入伺服器位址、SSH 連接埠(通常是 22)、aiKit 使用的登入帳號(設定步驟會建立一個名為 aikit 的帳號)、網站資料夾(若是 Laravel Forge 網站,為 /home/forge/your-site.com)、網站目前使用的部署指令(通常是 bash scripts/deploy.sh),以及每次部署後必須回應的頁面,每行一個完整網址。貼上伺服器登入的私密金鑰(在設定步驟 1 建立)。儲存並檢查連線。
aiKit 第一次連上伺服器時,會顯示伺服器的指紋並詢問「這是你的伺服器嗎?」請將它與伺服器在設定步驟 6 印出的內容比對。只有在兩者完全相同時,才按下「相符」並連接。之後,該位址上若出現不同的伺服器,將會被拒絕。檢查通過後,頁面會顯示伺服器目前執行的版本。
aiKit 代管:aiKit 自行建置並提供程式碼服務,起始網址免費。最適合網站和前端。
在「伺服器設定」下,頁面會列出八個可複製貼上的步驟,並已填入你的數值;每一步都有「複製」按鈕。步驟 1 和 8 在你的電腦上執行,步驟 2 到 7 則以具有 sudo 權限的使用者身分在伺服器上執行。
它們建立的內容:一個沒有密碼也沒有 shell 的登入帳號(步驟 2)。其唯一金鑰被鎖定在一個小型閘道腳本(步驟 3 和 5),該腳本只接受兩個指令:status(顯示正在執行的版本,以及網站是否處於維護模式)和 deploy,用於部署某個確切的 commit。Deploy 會透過一條 sudo 規則,以網站本身的使用者身分執行,檢查 GitHub 上的分支確實指向該 commit,然後原封不動地執行你現有的部署腳本。步驟 4 設定資料夾權限,使該登入帳號只能存取網站資料夾:不能存取同一主目錄中的其他網站,也絕對不能存取 .env。步驟 7 會測試所有項目,並說明每一行應該看到什麼結果;步驟 8 則在你將金鑰貼到 aiKit 之前,先從你的電腦測試該登入帳號。
如果一台伺服器也代管其他企業的網站,這正是重點所在:aiKit 的登入帳號只能部署這一個網站,無法部署其他網站。網站的程式碼仍以網站本身的使用者身分執行,與你自己從 GitHub 部署時完全相同,這也是為何每項變更都會經過審查,且高風險檔案會受到保護。
頁面頂端有四個方塊。儲存庫:儲存庫、分支、最新的 commit 以及專案類型。執行位置:你自己的伺服器(含登入帳號及上次回應時間)或 aiKit 代管。目前上線版本:網站正在執行的版本、建立者及建立時間。頁面:在上次檢查時,必須回應的頁面中有多少個已回應;「立即檢查」會再次造訪這些頁面,未回應的頁面會列在下方,並顯示其回傳內容。
方塊下方有:提出變更(或目前進行中的變更)、版本、變更記錄、受保護檔案,以及擁有者專用的「連線」。
輸入要變更的內容,並註明頁面及你希望看到的結果,然後按下「進行變更」。卡片會變成「變更 #1」,並即時顯示進度:取得最新程式碼、AI 讀取和編輯的檔案,然後是每項檢查。AI 只編輯檔案,不執行任何指令。每個專案一次只能有一項進行中的變更,且每項請求都會計入專案的 AI 使用上限。
完成後,你會看到:請求內容及提出者;AI 表示其所做的事;各項檢查,每項都有勾或叉及其輸出;已檢查頁面的「預覽」按鈕;標示為「已新增」、「已變更」或「已移除」的檔案,並在適用處顯示「受保護」標記;以及逐檔顯示的差異,新增的行為綠色,移除的行為紅色。這份差異正是將被提交與部署的內容。
核准並部署(擁有者與建置者)會將變更提交到分支,提交訊息會註明誰提出要求、誰核准,並推送(絕不強制推送:如果期間有人推送過,變更會標記為已過期,且不會部署),然後部署並檢查頁面。捨棄會在確認後丟棄變更;不會部署任何內容。審閱者可以查看所有內容,但兩個按鈕都無法按。
通過檢查後的動作是「連線」、「檢查與審閱」下的一項設定。預設為「等待核准」。只有在所有檢查都通過且沒有受保護檔案被變更時,「自動部署」才會自行部署變更;其他情況仍需等待。
對於 Laravel 專案,檢查項目包括:每個變更的 PHP 檔案都能正確解析(php -l);每個 Blade 視圖都能編譯(php artisan view:cache);前端能成功建置(npm run build);應用程式會在測試執行中啟動,使用一次性的 SQLite 資料庫,並從儲存庫執行遷移與填入資料,而「頁面」中列出的每個測試頁面都必須回應 200。這些檢查在 aiKit 的引擎上執行,絕不會在您的伺服器上執行,也絕不會針對您的正式資料庫執行。專案的 .env 檔案絕不會被複製或讀取;測試執行只會使用一次性的設定。
檢查失敗會阻擋「核准」。只有擁有者可以勾選「部署」,即使檢查失敗,前提是該檢查失敗的原因不影響正式網站。
「預覽」會在新分頁中開啟測試執行中的變更應用程式,並關閉測試資料與表單。它會在最後一次使用後 15 分鐘停止,並在變更被核准或捨棄時結束。
AI 不會變動受保護的檔案。清單預設包含:已在正式網站執行過的遷移(正式版本中的每個遷移,因為每次部署都會執行它們)、新的遷移(它們會在下次部署時變更正式資料庫)、部署腳本,以及相依性檔案(composer.json、composer.lock、package.json、package-lock.json)。每個項目都會說明原因。擁有者可以新增檔案或資料夾(例如 config/** 代表 config 下的所有內容)並附上原因、刪除項目,然後按下「儲存受保護的檔案」。
若要刻意變更受保護的檔案,擁有者需勾選此要求的「允許變更受保護的檔案」。變更隨後會顯示它碰觸了哪些受保護檔案,而且只有擁有者可以核准,並需勾選「是,部署受保護檔案的變更」。若建置者未勾選任何項目,則無法取得受保護檔案的存取權。
.env 檔案、私密金鑰和 auth.json 屬於更嚴格的層級:絕不讀取、絕不變更、絕不納入差異比對,且任何人都無法關閉此保護。
aiKit 第一次連上您的伺服器時,會將伺服器目前執行的內容記錄為版本 1「Before aiKit」,因此即使是 aiKit 的第一次部署也能回復。之後每次部署都會是有編號的版本:變更(已核准的變更;點擊名稱可開啟該變更)、重新部署或回復,並附上其提交內容、執行者、狀態(上線中、較早版本、上線但頁面失敗、部署失敗)、有多少頁面有回應,以及部署記錄。aiKit 會保留最近 5 個版本。
「部署最新程式碼」會在確認後部署分支上目前最新的內容,例如有人直接推送修正時。
「回復到此版本」(針對較早的版本)會建立一個新的提交,其檔案與該版本完全相同,推送後以一般方式部署,然後檢查頁面。歷史紀錄絕不會被改寫,因此回復本身也可以被回復。
每個要求都會顯示其編號、要求內容、提出者、核准或捨棄的人、時間,以及目前狀態。點擊任一列即可開啟該變更,查看其檢查與差異;網址會加上 ?change=<id>,因此您可以與團隊分享連結。
想快速找到特定問題的答案?查看常見問題。