在聊天中不必貼上金鑰的機密與環境變數
大多數真實的 App 至少需要一個機密:付款服務商的金鑰、電子郵件服務的金鑰,或 AI API 的金鑰。在 Mythex 中,你不需要把這些貼進提示詞裡。當代理人需要其中一個時,它會在聊天中顯示一張 機密請求卡片,你直接在卡片中輸入數值,它就會被儲存為專案機密,讓你的 App 可以讀取——金鑰不會出現在對話內容裡。
功能說明
每個 Mythex 專案都可以儲存 環境變數:具名的數值,例如 STRIPE_SECRET_KEY,你的 App 在執行時會讀取它們,而不是把值寫進程式碼。機密就是那些必須保持私密的環境變數。
同樣的數值可以在兩個地方使用:
- 沙盒環境:你工作時,代理人在這裡建置並執行你的 App。
- 已發佈的部署:訪客使用你的 App 的地方。
新增它們的方式有三種:
- 機密請求卡片:代理人需要金鑰才能完成某件事時,會在聊天中顯示。
- 專案設定 → 機密:你隨時可以在這裡新增或編輯數值。
- 聊天中的
/secrets:依你的要求新增或更新機密。
為什麼這樣比較好
把金鑰交給 AI 代理人最直覺的方式,就是把它貼進你的訊息。這樣做可行,但金鑰會變成聊天紀錄的一部分,以純文字的形式和你說過的其他內容放在一起。
機密卡片可以讓數值不進入對話紀錄。你是在卡片的欄位中輸入,而不是在訊息框中,數值會被儲存為專案機密。代理人接著就能在沙盒中使用這個金鑰繼續工作。
把金鑰放在專案設定中,而不是寫進程式碼,還有其他好處:
- 金鑰不會進入原始碼版本控制。 你的程式碼只用名稱來指稱金鑰,數值存放在專案設定中。
- 代理人與正在執行的 App 看到的是同一份設定。 不會出現過期的副本。
- 更換金鑰不必改寫程式碼。 在設定中更改數值即可,程式碼仍然依名稱讀取。
如果你對環境變數還不熟悉,我們的指南 什麼是環境變數與機密 會從頭解釋這個概念。
如何使用機密卡片
- 提出需求,例如「使用者註冊時寄出歡迎信」。
- 代理人需要金鑰時,聊天中會出現一張機密請求卡片,列出它需要的數值。
- 在卡片的欄位中輸入數值,而不是在訊息框中輸入。
- 確認。 數值會被儲存為專案機密。
- 代理人繼續工作,金鑰已在沙盒中可用。
如何自行新增機密
- 開啟 專案設定,然後進入 Secrets(機密)。
- 新增像
STRIPE_SECRET_KEY、OPENAI_API_KEY這樣的金鑰,或你自己服務的憑證。 - 請代理人依你所用框架的標準方式讀取它們,例如在 Node App 中從
process.env讀取。 - 如果已發佈的 App 需要新數值,請 重新發佈。
你也可以在聊天中輸入 /secrets,直接在那裡新增或更新機密。
變更已發佈 App 的機密
已發佈的 App 會在發佈時載入機密。新增或變更機密後,請 再次發佈,讓正式部署取得新數值。在那之前,訪客仍然是用舊設定在使用 App。
安全建議
- 不要把機密提交到儲存庫。 把它們保存在專案設定中。
- 需要執行特權操作時,優先使用僅限伺服器端的金鑰。 能扣款或寄送郵件的金鑰,應該放在伺服器端執行的程式碼中,而不是訪客瀏覽器會下載的任何內容裡。
- 如果金鑰曾出現在聊天紀錄中,請更換它。 在服務商後台建立新金鑰、撤銷舊金鑰,然後在專案設定中更新數值。任何曾貼進聊天的金鑰,都應視為已外洩。
限制
- 卡片只有在你使用時才有幫助。 如果你仍然把金鑰貼進訊息框,它就會留在紀錄中。請在服務商後台更換它,並更新已儲存的數值。
- 已發佈的 App 需要重新發佈,才能取得新增或變更的機密。
- 安全地儲存金鑰,並不代表每種用法都安全。 金鑰在哪裡被使用仍然很重要——特權金鑰請保留在 App 的伺服器端。
如果想進一步了解發佈前如何讓 App 更安全,請參考我們的 AI 建置 App 安全檢查清單。