MINARA
參考環境變量

x402 付費牆預授權

x402 付費牆預授權 (PR-X)

這些變量約束 "會話級預授權" 特性, 它讓運營方對給定 scope 一次性授權 x402 付費牆付款, 然後自動付款(無需每次調用確認)直到 過期 / 預算耗盡 / 顯式撤銷。 授權調用本身始終經過統一確認 門。它落下一個 session 行後,匹配該 session scope 的 窗口內 x402 付款會跳過每次調用的用戶提示,並 經 transfer_token 直接執行。每筆自動支出都寫入 審計元數據(session id + 剩餘預算),因此用戶可以 追蹤每筆扣費。 接入於: - src/minara/x402-preauth-store.ts(SQLite store + 上限計算) - src/minara/x402-preauth-config.ts(env loader + 上限 helper) - src/tools/_shared/confirm.ts(shouldAutoExecuteX402) - src/tools/trade.ts(transfer_token 先諮詢自動執行路徑; 未匹配的付款仍走統一確認門) - src/tools/x402-preauth.ts(LLM 可調用的 grant / list / revoke) - src/gateway/repl-commands.ts(/x402 preauth CLI 面)

X402_PREAUTH_DEFAULT_TTL_HOURS

當用戶/LLM 未指定時的默認會話過期 時間。

  • 作用: 調用 x402_preauth_grant 時未帶 ttl_hours 所應用的 TTL。
  • 消費方: src/minara/x402-preauth-config.ts.
  • 何時設置: 調短可讓授權保持短時有效(例如 4 = 4h);調高可為長時間運行的批處理任務留出更多空間。
  • 未設置時: 24 小時。
  • 格式: 正整數(小時)。
  • 設置歸屬: 非用戶設置項

X402_PREAUTH_MAX_TTL_HOURS

非 forever 會話 TTL 的硬上限。

  • 作用: ttl_hours > 此值 的授權請求會以 field: "ttlMs" 被拒絕。該上限輔助函數在 LLM 工具、REPL 命令與直接訪問 store 三處統一執行。
  • 何時設置: 調短可強制更短的運維信任窗口;僅當長時會話是部署要求時才調高。
  • 未設置時: 168(7 天)。
  • 格式: 正整數(小時)。
  • 設置歸屬: 非用戶設置項

X402_PREAUTH_ALLOW_FOREVER

是否允許 ttl_hours: "forever" (無基於時間的過期)授權。

  • 作用: 當為 0 時,LLM 工具 + REPL + store 會以 field: "forever" 拒絕 forever 授權請求。forever 預算上限仍會被讀取以供文檔說明,但永遠不會觸及。對於希望每筆授權都有硬性過期邊界的環境(審計/合規),設為 0
  • 未設置時: 1(允許 forever 授權,需在 REPL 中經用戶顯式二次確認把關,且 LLM 絕不自動提議 forever)。
  • 格式: 1/true/yes/on(允許)或 0/false/no/off
  • 設置歸屬: 非用戶設置項

X402_PREAUTH_MAX_PER_CALL_USDC

單筆自動支付 x402 付款的硬上限 (USDC)。

  • 作用: (a) LLM 工具 + REPL 拒絕 per_call_cap_usdc > 此值 的授權;(b) 對於任何超過此金額的單筆付款,shouldAutoExecuteX402 會以 amount_over_cap 短路,回退到常規的兩步確認。這是最重要的一條安全邊界——即便用戶在已有會話中授予了更高的上限,它也能限制單個惡意付費牆最多能榨取多少。
  • 何時設置: 在共享基礎設施上調低以限制單筆的影響範圍。僅當付費牆的正當成本更高時才調高。
  • 未設置時: 0.5(USDC)。
  • 格式: 正數(USDC)。
  • 設置歸屬: 非用戶設置項

X402_PREAUTH_MAX_BUDGET_USDC

非 forever 會話總預算的硬上限 (USDC)。

  • 作用: 同時滿足 total_budget_usdc > 此值ttl_hours 非 null 的授權請求會被拒絕。forever 授權的預算使用下方單獨的(通常更嚴格的)上限。
  • 未設置時: 5(USDC)。
  • 格式: 正數(USDC)。
  • 設置歸屬: 非用戶設置項

X402_PREAUTH_MAX_FOREVER_BUDGET_USDC

forever 會話總預算的硬上限 (USDC)。

  • 作用: 與 MAX_BUDGET_USDC 形式相同,但僅在 ttl_hours: "forever" 時適用。之所以獨立,是因為去掉時間邊界後需要更嚴格的金額控制。forever 預算可以高於或低於按時間限定的預算——由運維選擇;默認值設得更高,是因為 forever 授權通常是每筆金額很小、但在數月內累積(「$0.01/call x 2000 calls」)。
  • 未設置時: 20(USDC)。
  • 格式: 正數(USDC)。
  • 設置歸屬: 非用戶設置項

X402_PREAUTH_DISABLE

全局 kill switch。

  • 作用: 當為 1 時,所有 preauth 代碼路徑都會短路。transfer_token 忽略 x402_context,LLM 工具返回 disabled 錯誤,REPL 打印「x402 preauth disabled by env」並拒絕授權。所有 x402 付款回退到常規的兩步確認流程。
  • 何時設置: 事件響應(疑似失控的付費牆)、每筆付款都必須經用戶顯式確認並記錄的合規審計窗口,或者根本不想要此功能的運維。
  • 未設置時: 0(preauth 機制處於激活狀態)。
  • 格式: 1/true/yes/on 表示禁用;其他任何值(默認)保持啟用。
  • 設置歸屬: 非用戶設置項

OpenClaw workspace 集成

agent 讀寫位於 ~/.minara/workspace/ 的 workspace 目錄 (經 --workspace 覆蓋),其中含仿照 OpenClaw 的 AGENTS.default schema 的 markdown 文件:SOUL.md(身份)、 AGENTS.md(規則)、IDENTITY.md、USER.md、MEMORY.md(精選長期)、 HEARTBEAT.md(會話間備忘)、BOOTSTRAP.md(僅首次運行), 以及 memory/YYYY-MM-DD-*.md(每日日誌)。 模板隨 src/workspace/templates/ 發佈。minara setup 在首次運行時播種它們。播種是冪等的,絕不 覆蓋用戶已編輯過的文件。

WORKSPACE_HEARTBEAT_ENABLED

每輪寫入 HEARTBEAT.md 狀態的寫入器。

  • 作用: 開啟時,agent 在每輪結束後寫入 <workspace>/HEARTBEAT.md,包含 last_seensession_idsurfaceturn_countlast_user_query,以及從回覆中啟發式提取的 open_loops。寫入器在多次寫入間原樣保留用戶編輯過的 ## Schedule 小節。
  • When to disable: 只讀的 workspace 掛載、CI 運行,或不希望在磁盤上留下會話備忘的隱私敏感場景。
  • 未設置時: 開啟。
  • 格式: 0/false/no/off 表示禁用;其他任何值(默認)保持啟用。
  • 設置歸屬: 設置 → 偏好(schema 鍵)

WORKSPACE_DAILY_LOG_ENABLED

追加按會話的每日日誌。

  • 作用: 開啟時,每個週期會在持久化的 SQLite 水位之後,把所有尚未記賬的 chat_turns 行刷寫到 <workspace>/memory/YYYY-MM-DD-<session>.md。這些行保留其真實的 session id、surface 與 runtime 來源;correlation id 絕不會被用作 session id。按會話分文件可避免多進程追加競爭。
  • When to enable: 長期運行的部署,希望 agent 積累工作記憶,供你之後提升到 MEMORY.md。
  • 未設置時: 關閉(在顯式開啟前,workspace 保持精簡)。
  • 格式: 1/true/yes/on 表示啟用。
  • 設置歸屬: 設置 → 偏好(schema 鍵)

WORKSPACE_DAILY_LOG_INTERVAL

每日日誌追加之間的輪數。

  • 作用: 刷寫上述 chat_turns 積壓的節奏。每次到期刷寫都會寫入水位之後的所有行,因此增大間隔只會延遲持久化,而不會對中間的輪次進行抽樣或丟棄。
  • 未設置時: 5 輪。
  • 格式: 正整數。
  • 設置歸屬: 非用戶設置項

WORKSPACE_DREAM_ENABLED

週期性的 MEMORY.md 歸併。

  • 作用: 開啟時,一個 setInterval 任務每隔 WORKSPACE_DREAM_INTERVAL_HOURS 喚醒一次,從 memory/ 讀取近期的每日日誌,並請求當前 LLM 提取持久的事實/偏好/決策。結果會作為 ## Dreamed YYYY-MM-DD 小節追加到 MEMORY.md(僅追加——絕不覆蓋用戶編輯)。來自自動化的日誌輪次在磁盤上仍可審計,但會在進入 LLM prompt 前被移除,因此 Autopilot、strategy、workflow 或來源未知的 perps 運行不會變成用戶偏好。
  • When to enable: 長期運行的部署,運維希望長期記憶從短期日誌演化而來、無需手工整理。會消耗 LLM 調用——在成本敏感的場景下保持關閉。
  • 未設置時: 關閉。
  • 格式: 1/true/yes/on 表示啟用。
  • 設置歸屬: 設置 → 偏好(schema 鍵)

WORKSPACE_DREAM_INTERVAL_HOURS

dream 歸併的節奏。

  • 作用: 兩次 dreaming 運行之間的小時數。當上一次運行仍在進行時,調度器會跳過該 tick,因此緩慢的 LLM 調用不會堆積。當 WORKSPACE_DREAM_ENABLED 關閉時無效。
  • 未設置時: 24(每天一次歸併)。
  • 格式: 正數(小時,可為小數)。
  • 設置歸屬: 非用戶設置項

WORKSPACE_DREAM_TOTAL_INPUT_BYTES

dream prompt 輸入的全局字節預算 (所有每日日誌合計)。

  • 作用: 限制單次 dream pass 送入 LLM 的總字節數。每日日誌會在預算內保留為一段最新在前的連續後綴,因此模型始終看到一段按時間連續、且包含最近活動的切片。防止一段密集日誌的長窗口衝破模型的上下文窗口。單文件內容仍會尾部截斷到 64 KB(單文件上限),且即使最近的日誌單獨就超過此預算,也始終保留。當 WORKSPACE_DREAM_ENABLED 關閉時無效。
  • 未設置時: 262144(256 KB)。
  • 格式: 正整數(字節)。
  • 設置歸屬: 非用戶設置項

WORKSPACE_DREAM_LOCK_TTL_MS

dream 鎖文件的 TTL。

  • 作用: 一個 <workspace>/.dreaming.lock 文件在被視為過期、可被其他進程回收之前會被尊重多久。應反映單次 dream pass(LLM 調用 + IO)的最長合理時長,而非兩次運行之間的間隔。該鎖可防止 REPL 與 HTTP gateway 在各自的 tick 窗口重疊時,同時把相同日誌歸併進 MEMORY.md。不支持 NFS workspace(底層 O_EXCL 語義無法保證在所有 NFS 客戶端上都是原子的)——請讓 dreaming 保持在單臺主機上。當 WORKSPACE_DREAM_ENABLED 關閉時無效。
  • 未設置時: 1800000(30 分鐘)。
  • 格式: 正整數(毫秒)。
  • 設置歸屬: 非用戶設置項

REPORT_BUNDLE_CHART_PNGS

在 deep-research 的 HTML / PDF 報告中回退到 PNG 打包的圖表,而非交互式 ECharts。

  • 作用: 當設置時,gateway 的 deep-research 分支向 renderDeepResearchReport 傳入 ["html", "pdf", "charts"],於是 bundleChartPngs 運行,HTML 將每個 chart://<id> 內嵌為靜態的 <img src="charts/<id>.png"> 標籤(通過無頭 playwright 在服務端渲染)。未設置時(v7 起的默認),gateway 只傳入 ["html", "pdf"],每個 chart:// 鏈接展開為標準的 ECharts 內嵌形式(<div class="echart-host"> + 從 echarts CDN 注水的內聯 <script>)。默認產生帶縮放 + tooltip + saveAsImage PNG 下載的交互式圖表。
  • 由哪個 skill / tool 消費:deep-research 流水線(src/gateway/api.tshandleChatStream deep-research 分支)。
  • When to set it: 需要導出報告用於離線分發(echarts CDN 不可達)的運維,或無法容忍打開時拉取約 120 KB CDN 腳本的運維。權衡:PNG 打包的圖表是靜態的——無縮放、無 tooltip、無 PNG 下載按鈕。必須安裝無頭 playwright(已是項目依賴)才能運行圖表物化。
  • 未設置時: 交互式 ECharts(CDN 注水)。在有網絡訪問的瀏覽器中打開 HTML 即可看到圖表;離線時圖表會按內嵌腳本的 try/catch 降級為一個小小的「chart unavailable」佔位。
  • 格式: 1 / true(啟用)——其他任何值或未設置都表示禁用。
  • 設置歸屬: 設置 → 偏好(schema 鍵)

錢包充值監聽

實時充值檢測 SSE 端點 (POST /v1/wallet/deposits/watch)。為 perps USDC/Arbitrum 地址 的 Portfolio DepositModal 中的綠色翻轉提供動力。 兩種鏈傳輸方式;agent 在啟動時選擇: 1. Alchemy(首選)——設置 ALCHEMY_API_KEY。使用 alchemy_getAssetTransfers(專為傳入轉賬構建的 查詢)+ alchemy_pendingTransactions WS 訂閱以 實時觀測 mempool。免費層:每月 300M CU。 2. 公共 RPC 回退——無 ALCHEMY_API_KEY 時。每 5s 輪詢 eth_getLogs,過濾到充值地址的 USDC Transfer 事件。無 mempool 可見性(此模式下不發出 pending 事件)。 它控制什麼:WALLET_DEPOSIT_WATCH_ENABLED——該 SSE 端點的 總開關。開發環境默認 ON,讓該特性開箱 即用;設為 false / 0 乾淨地禁用。關閉時, web-ui 的 DepositStatus pill 顯示 "Live updates unavailable", 用戶仍可正常複製地址。 哪個 skill / 工具消費它:apps/agent/src/wallet-watch/* 和 api.ts 的 handleWalletDepositsWatch 處理器。

WALLET_DEPOSIT_WATCH_ENABLED

WALLET_DEPOSIT_WATCH_ENABLED=true

  • 設置歸屬: 設置 → 偏好(schema 鍵)

ALCHEMY_API_KEY

Alchemy 的 Arbitrum API key。一個 key 可用於所有 Alchemy 鏈。可選—— 不配置時 watcher 回退到公共 Arbitrum RPC(無 mempool 檢測)。 ALCHEMY_API_KEY=abc123...

  • 設置歸屬: 設置 → API 密鑰

ALCHEMY_NETWORK

Alchemy 網絡枚舉字符串。arb-mainnet 是目前我們唯一關心的(perps 錢包 充值 = Arbitrum 上的 USDC)。僅當你把 ALCHEMY_API_KEY 指向測試網做端到端 QA 時才覆蓋。 ALCHEMY_NETWORK=arb-mainnet

  • 設置歸屬: 非用戶設置項

ARBITRUM_RPC_URL

公共 Arbitrum RPC URL——在 ALCHEMY_API_KEY 未設置時使用。

SOLANA_RPC_URL

公共 Solana RPC URL——由現貨充值 watcher 用於 Solana 鏈。非 EVM,因此不會 自動接入 Alchemy;會先嚐試此 URL,再依次嘗試 foundation 級別的公共列表 (api.mainnet-beta.solana.com、solana-rpc.publicnode.com、…)。該 transport 每 5 秒輪詢一次用戶 USDC token 賬戶上的 getSignaturesForAddress,並在 confirmed 確認級別翻轉為 credited

DEPOSIT_WATCH_TIMEOUT_MS

一個 watch 會話在自動關閉前會存續多久(ms)。默認 20 分鐘——足以應對緩慢 的鏈上確認,同時限制忘記關閉的彈窗對資源的佔用。 DEPOSIT_WATCH_TIMEOUT_MS=1200000

  • 設置歸屬: 非用戶設置項

本頁目錄