MINARA

環境變量

Agent 如何使用密鑰,以及添加新變量的約定

本頁介紹 minara-agent-v2 加載環境變量的約定,以及引入新變量所需的步驟。每個變量的詳細參考(包括默認值、格式、使用方文件,以及未設置時的影響),請參閱 參考 → 環境變量

標準模板位於項目根目錄的 .env.example。請保持該文件與兩個頁面同步。

MINARA_ 前綴專用於 Minara 平臺專屬變量 (MINARA_API_KEYMINARA_BASE_URLMINARA_SKIP_FUND_CONFIRMMINARA_DATA_DIRMINARA_OPENAI_BASE_URLMINARA_OPENAI_CHAT_PATH)。Agent 循環基礎設施變量(網關、日誌、 模型、場景、記憶配置)不使用該前綴。

用戶可見開關寫入 Settings(settings.json#preferences)。密鑰寫入 credentials.json(設定 → API Keys / 訊息)。呼叫端讀 prefs.get / secrets.* / infra.get。Env 是啟動時的維運層,以及覆蓋鏈上的文件化回退。

TL;DR 約定

任何需要 API 密鑰、secret、token 或可覆蓋 URL 的新技能或工具,必須:

  1. 寫入正確的存儲,再透過 façade 讀取。 密鑰走 API-key / messaging 登錄表和 secrets.dataSource / secrets.messaging。用戶開關走 preferences schema 和 prefs.get。維運基礎設施(GATEWAY_PORTMINARA_DATA_DIR)走 config/infra/schema.tsinfra.get。嚴禁硬編碼密鑰;嚴禁通過 CLI 參數傳入並回顯。

  2. 在同一次提交中,將有詳細說明的條目追加到 apps/agent/src/config/env-docs/,再生成 .env.example 條目須說明:控制的內容、消費它的技能/工具、運營商何時需設置、未設置時的默認行為,以及可接受的值格式。僅有一行存根(# FOO_KEY=)的條目會被拒絕。

  3. 對於領域技能apps/agent/src/skills/builtin/*.tsapps/agent/src/skills/external/<id>/),在 requires_env 中聲明該變量,以便 SkillRegistry 在憑據缺失時完全隱藏該技能:

    export const myNewSkill: DomainSkill = {
      id: "research.my_provider",
      // ...
      requires_env: ["MY_PROVIDER_API_KEY"],
    };
  4. 對於工具apps/agent/src/tools/*.ts),當密鑰缺失時,工廠函數應返回空的 ToolEntry[]。工具註冊表會靜默排除未註冊的名稱,因此下游技能中的 tool_names 引用會優雅降級:

    export function createMyProviderTools(): ToolEntry[] {
      const apiKey = secrets.dataSource("MY_PROVIDER_API_KEY");
      if (!apiKey) return [];
      // ...
    }
  5. 嚴禁提交真實密鑰。 .env 已加入 .gitignore;.env.example 是已提交的模板,值留空。

.env 加載方式

加載由 apps/agent/src/config/load-env.ts 處理。這是一個副作用模塊,調用 Node 22 內置的 process.loadEnvFile(".env")。它作為每個入口的第一行被導入:

  • apps/agent/src/gateway/cli.ts:REPL 模式
  • apps/agent/src/gateway/server.ts:HTTP 模式

ESM 求值順序保證加載器在任何在導入時讀取 process.env.<NAME> 的下游模塊之前運行。

優先級:已由 shell / CI / systemd 導出的變量優先於 .env 中的值。加載器不會覆蓋已有的 key。這與 Node 的默認行為一致,也是最安全的規則(不會意外遮蔽 CI 注入的密鑰)。

dotenv 依賴。 僅依賴 process.loadEnvFile,自 Node 22.5 起穩定可用。.env 文件缺失時靜默跳過,不報錯。

變量清單

每個變量的詳細文檔(默認值、格式、使用方文件、未設置時的影響),請參閱 參考 → 環境變量。下表為快速參考摘要。

LLM 提供商

至少需要一個可解析的提供商(直接設置,或通過 minara auth login 保存的 OAuth 配置),否則 Agent 拒絕啟動。

變量默認值格式效果
ANTHROPIC_API_KEYsk-ant-...主要 Claude 憑證。未設置時依次回退到已存儲的 OAuth、再到 OpenRouter。
OPENROUTER_API_KEYsk-or-...備用多模型路由器。僅在 Anthropic 路徑均失敗時嘗試。
OPENAI_API_KEYsk-...圖像生成、KB embedding、TTS 以及(可選)LLM。僅設置此變量不會自動選 OpenAI 作為 LLM::需運行 minara auth login openai --api-key $OPENAI_API_KEY 才啟用 LLM 路徑;圖像、音頻、KB 工具仍會直接使用此變量。
OPENAI_BASE_URLhttps://api.openai.com/v1URLOpenAI API 基礎 URL 的可選覆蓋::用於 Azure 兼容網關或企業代理。
OPENAI_ORG_IDorg-...計費路由的可選 OpenAI-Organization 頭。
XAI_API_KEY不透明字符串原生 xAI(Grok)LLM provider 密鑰::通過 xai-api-key provider 直接調用 api.x.ai/v1。在 auto-select 中優先級最低;不會取代既有 Anthropic/OpenRouter 配置。
XAI_BASE_URLhttps://api.x.ai/v1URLxAI API 基礎 URL 的可選覆蓋。
MINARA_XAI_OAUTH_CLIENT_IDxAI Grok-CLI 公共 idUUID覆蓋發送到 auth.x.ai 的 OAuth public client_id。默認複用 Hermes Agent 公開共享的 id(RFC 8252 §8.4 允許);xAI 可能隨時撤銷。

擴展思考(Extended Thinking)

Claude 3.7+ / Sonnet 4.x / Opus 4.x / Haiku 4.5+ 支持 thinking API 參數。模型按 query 自行決定花多少 budget 去推理:簡單查詢花約 0 thinking tokens,複雜綜合可能用滿預算。其他 provider(OpenAI o1/o3)的 reasoning 是自動的,對於它們參數被接受但不生效。

web-ui 複用現有的 ReasoningBlock(默認摺疊,帶流式預覽)渲染 trace,覆蓋普通 chat 與機構模式的 persona card 兩個面。對於不支持原生擴展思考的模型,輸入框工具欄會展示一個手動 Thinking 開關,開啟後會在用戶消息前面追加一句 "think step by step" 的指令。

變量默認值格式效果
THINKING_ENABLEDtruetrue | false主開關。設為 false 後所有 agent 表面都不開啟 thinking(非原生模型的手動開關仍然顯示,但 prefix 也不會生效)。
THINKING_BUDGET_TOKENS4000正整數單次 LLM turn 的 thinking token 上限。Anthropic 只對模型實際用掉的 tokens 計費。
INSTITUTION_THINKING_BUDGET_TOKENSTHINKING_BUDGET_TOKENS正整數僅作用於機構模式角色調用的覆蓋值。便於在不抬高全局默認的情況下給多 Agent 流水線更多推理空間。
DEEP_RESEARCH_THINKING_BUDGET_TOKENSTHINKING_BUDGET_TOKENS正整數同上模式,作用於 deep-research 綜合階段。

web_search / web_extract 後端

web_searchweb_extract 共用一個後端。模型不能選擇 provider。按可用性取第一個:Tavily → Firecrawl → Exa(本地 EXA_API_KEY 或已登錄的平台 exaPassthrough)。沒有鏈式回落,沒有 DuckDuckGo / Google / Brave / Anthropic 原生路徑,也沒有 HTML 抓取提取。空結果和 HTTP 錯誤留在當前後端。

變量默認值格式效果
TAVILY_API_KEYTavily API key最高優先級。失敗不會回落到 Firecrawl 或 Exa。註冊地址 https://tavily.com。
FIRECRAWL_API_KEYFirecrawl API keyTavily 不可用時的搜索 + 乾淨 markdown 抽取。免費額度 500 credits/月。註冊地址 https://www.firecrawl.dev/app/api-keys。
EXA_API_KEYExa API keyTavily 與 Firecrawl 都不可用時使用。有本地 key 時直接調用;未設置時,已登錄會話仍走平台透傳。註冊地址 https://dashboard.exa.ai/api-keys。

Minara 核心

變量默認值格式效果
MINARA_API_KEY不透明字符串Minara REST 憑證。未設置時回退到已保存的 OAuth 配置(Web UI 登錄)。
MINARA_BASE_URLhttps://api.minara.ai絕對 URL後端 API 源。只在指向 staging 環境或本地 mock 時覆寫。
MINARA_FRONTEND_BASE_URLhttps://minara.ai絕對 URLWeb 前端源。終端超鏈接和深度研究報告中的 token:// / address:// 深度鏈接會指向此地址。指向 staging 前端或本地 Next.js dev server 時覆寫。
AGENT_MODELclaude-sonnet-4-6模型 id主 Agent 循環模型,也可通過 /model 設置。
MINARA_DATA_DIR~/.minara絕對路徑SQLite、沙盒、認證及日誌的根目錄。
MINARA_TERMINAL_CWD絕對路徑覆蓋 agent 的工作目錄(文件讀寫及 shell 命令的 cwd)。解析順序:會話級覆蓋 → 此變量 → process.cwd()。適用於啟動目錄與工作目錄不同的 gateway/cron 常駐進程;本地 CLI 通常不設,回退到 shell cwd。路徑不存在時忽略並繼續回退。
FILES_URL_BASE/v1/filesURL 或路徑公開文件鏈接前綴(反向代理後面)。
OFFLINE_MODE1/true/yes/on對沙盒工具強制禁用出站 HTTP。
LOG_LEVELinfodebug|info|warn|error日誌閾值。debug 安全但日誌量約為原來的 4 倍。

HTTP 網關

變量默認值格式效果
GATEWAY_HOST127.0.0.1IP / 主機名綁定接口。迴環地址 = 僅本地;非迴環需要身份驗證(守衛在交互模式下拒絕啟動,或在 Docker/CI 模式下自動生成 token)。
GATEWAY_PORT8080整數網關綁定的 TCP 端口。
GATEWAY_AUTH_TOKEN不透明字符串每個 /v1/... 路由的 Bearer token。在迴環地址上未設置時認證禁用;在非迴環綁定上未設置時,token 將被自動生成或啟動被拒絕。
MINARA_ALLOW_INSECURE_BIND1/true/yes/on繞過安全綁定守衛:在非迴環地址上以未認證方式提供服務。僅適用於受信任的防火牆主機。
WEB_UI_DIST_DIR絕對路徑同源在 / 提供的 web-ui dist/ 構建產物(桌面端 / 單端口)。未設置時不提供靜態 UI(僅 API)。
WEBHOOK_PORT整數可選的專用入站 webhook 端口。

安全與涉及資金的操作

變量默認值格式效果
DISABLE_STRICT_PLAYBOOK未設置(嚴格模式開啟)1/true 表示禁用buildPlaybookBlock 回退到舊版軟建議 header。默認行為渲染命令式"本輪次權威規範"清單語氣。
DISABLE_METHODOLOGY_INJECTION未設置(注入開啟)1/true 表示禁用關閉全部三條按需方法論路徑(場景佔位符、工具輸出 <methodology_reminder>methodology_lookup 工具)的緊急停止開關。默認行為在畢業等級(Wilson ≥ 0.55)查詢存儲。
DISABLE_METHODOLOGY_INSTANCE_DISPATCH未設置(調度開啟)1/true 表示禁用BO 調優方法論實例覆蓋的緊急停止開關。默認行為在有實例時將實例閾值合併到模板默認值;禁用時僅使用模板解析。
DISABLE_KNOWLEDGE_BUDGET未設置(預算開啟)1/true 表示禁用知識預算協商器的緊急停止開關。默認:將場景 playbook + 記憶上下文 + 角色提示詞的合併 token 數截斷至 KNOWLEDGE_BUDGET_TOKENS。禁用時輸出完整長度。
ROLE_MEMORY_MODEshadowoff / shadow / active啟動時固定的 Role Memory 模式。off 保留已有數據供審計,但不新建、不評價、不召回、不注入;shadow 只為已匹配且已執行的人工交易生成和評價案例,不注入提示詞;active 還會把已復盤案例注入匹配的分析角色及機構 Trader / PM 提示詞。自動或來源不明的 perps 始終排除,執行工具也不會收到案例文本。非法值會警告並回退 shadow;修改後需重啟。
DISABLE_PARALLEL_TOOL_CALLS未設置(並行開啟)1/true 表示禁用Agent 循環中每輪並行工具調度的緊急停止開關。默認:不在 META_UNSAFE 黑名單(activate_skills)中的 READ_ONLY 等級工具通過 Promise.all 併發執行;CONFIRM_ONCE 及以上等級的工具(涉及資金 / 寫入 / 提現)始終串行。禁用時每次工具調用像舊版 for-await 循環一樣逐一執行。兩種模式下 tool_result 消息順序均保持一致。
CHAT_INTENT_GATING_ENABLED未設置(關閉)1/true 表示啟用意圖門控的個性化注入。開啟時:緩存前綴保留始終注入的個性化核心(交易摘要、核心的知識 / 風險標籤、最近記憶、自定義提示、生效中的偏好),由一次性分類器只把其餘需要的行為標籤維度追加到易變塊,因此不會擾動緩存。關閉時:每輪把完整的個性化塊注入緩存前綴(舊版行為)。開啟時每輪多一次簡短的分類器調用。
POSITION_MEMORY_ENABLED未設置(關閉)1/true 表示啟用持倉 / 會話感知的記憶注入。開啟時:涉及某個資產的輪次(消息裡出現代幣符號,或該資產屬於用戶近期現貨主力交易標的)會把最多 5 條與其相關的已存記憶注入易變塊。建議類問題帶入歷史觀點與交易筆記;基本面類問題帶入用戶的分析偏好與參考習慣。全程確定性且本地執行(關鍵詞意圖路由加 SQLite 查詢,不新增 LLM 調用);交易信號讀取由交易摘要重建刷新的預構建現貨主力標的產物。也可在運行時通過 personalization.positionMemory 偏好修改。
SHADOW_MODEsampledoff|sampled|onA/B 觀測記錄器。在分類器 / 記憶快照 / 角色提示詞決策點將(當前、提議)變體對寫入 shadow_runs SQLite 表。
SHADOW_SAMPLE_RATE0.1[0, 1]SHADOW_MODE=sampled 時的採樣概率。
SHADOW_RETENTION_DAYS30正整數shadow_runs 行的保留天數。啟動時執行一次性清理。
MEMORY_SNAPSHOT_PREF_LIMIT50非負整數會話記憶快照中 preference 類別行的配額。
MEMORY_SNAPSHOT_STRAT_LIMIT30非負整數strategy 類別行的配額。
MEMORY_SNAPSHOT_TRADE_LIMIT50非負整數trade_note 類別行的配額。
MEMORY_SNAPSHOT_OBS_LIMIT30非負整數observation 行的基礎配額。pref / strategy / trade 桶中未用完的槽位會溢出到此桶。
MEMORY_REFRESH_WRITES3非負整數觸發軟快照刷新的"自上次重建以來寫入次數"閾值。
MEMORY_REFRESH_TURNS10非負整數觸發軟快照刷新的"自上次重建以來輪次數"閾值。兩個閾值須同時滿足(AND)才觸發會話中重建。設為 0 可完全禁用刷新(快照在會話內凍結)。
MEMORY_WRITE_MAX_LEN2000正整數(200–8000)agent 通過 memory_write 保存記憶(observation / preference / trade_note / strategy)時保留的最大字符數。超長內容在寫入前被截斷,避免單條過大記憶撐爆提示詞或搜索索引。也可在運行時通過 memory.writeMaxLen 偏好項調整。更嚴格的個性化事實路徑有自己更短的限制,不受影響。
KNOWLEDGE_BUDGET_TOKENS15000非負整數場景 playbook + 記憶上下文 + 角色提示詞合併 token 數上限。超出時按優先級從低到高截斷(角色 → 記憶 → 場景)。0 禁用上限。設置 DISABLE_KNOWLEDGE_BUDGET=1 可完全繞過截斷。
KNOWLEDGE_SOURCE_TAGSfalsetrue|false在每個動態知識塊前加 HTML 註釋來源標籤。僅供人工 / 日誌審計使用。
PREFERENCE_LEARNING00/1M2 偏好演化流程的主開關(定期 LLM 提議器 + 聊天內畢業卡)。為 0 時,M1 PreferenceStore 及 REPL/CLI/REST 手動管理仍可用;提議器不觸發,也不注入畢業卡。
PREFERENCE_PROPOSER_INTERVAL30正整數連續兩次提議器觸發之間的輪次數。fire-and-forget 異步方式運行,提議器在用戶可見響應發送之後運行,因此這是攤銷成本,不影響用戶延遲。
PREFERENCE_WEEKLY_QUOTA3正整數任意滾動 7 天窗口內允許的最大畢業次數。達到上限後提議器跳過本週期。手動 /preferences approve 可繞過該配額。與 AutoClaw 的"每週 1-3 次深度演化"原則一致。
PREFERENCE_DEDUP_THRESHOLD0.85[0, 1]TF-IDF 餘弦相似度分數閾值;超過該值時候選被視為與現有活躍偏好(狀態 ∈ active/proposed/deprecated)重複,並在持久化前丟棄。
PREFERENCE_PROPOSER_BATCH_SIZE200正整數單次提議器 LLM 調用中拉取的最近候選最大數量。
PREFERENCE_MIN_CLUSTER_SIZE3正整數(≥ 2)提議器 LLM 報告單個聚類所需的最少支持候選消息數,低於此數量的提議不會持久化。下限為 3,防止單例進入隊列。
PREFERENCE_ASK_COOLDOWN_HOURS24正整數同一偏好連續發起畢業詢問的最小間隔小時數。用戶選擇"稍後"或無回覆後,該行保持 proposed 狀態,但在窗口結束前從詢問隊列中隱藏。
PREFERENCE_ASK_MIN_GAP_TURNS5正整數同一 REPL 會話內對不同偏好連續發起畢業詢問之間的最小輪次數。防止卡片連續彈出。
PREFERENCE_SKIP_IN_CHAT_ASK00/1完全禁用聊天內畢業卡。提議器仍會運行並寫入提議;運營商通過 /preferences pending + approve(REPL/CLI/REST)審核。
PREFERENCE_HARD_AUTO_ACTIVATE10/1M3。開啟時,用戶消息命中強信號關鍵詞(never绝不kill switch 等)會自動激活 hard_constraint,無需彈卡。用戶在 24 小時內可通過 /preferences undo <id> 撤銷。
PREFERENCE_STYLE_AUTO_ACTIVATE10/1M3。對同一 dedup_key 觀察 N 次後靜默自動激活 personal_style 偏好。卡片保留給影響更大的偏好。
PREFERENCE_STYLE_MIN_OBSERVATIONS2正整數M3。樣式自動激活前需要的相同陳述觀察次數。值越高,用戶自我矛盾的機會越多。
PREFERENCE_HARD_UNDO_WINDOW_HOURS24正整數M3。強信號自動激活後用戶仍可執行 /preferences undo <id> 的時間窗口。超出此窗口的行須使用 /preferences deprecate
MINARA_SKIP_FUND_CONFIRM1/true/yes/on繞過所有涉及資金工具的確認門控。僅限非交互式場景。
DISABLE_SCRIPT_RISK_GATE1/true/yes/on⚠ 用於關閉在 execute_code / terminal / write_file / patch 之前運行的靜態分析腳本風險門控。未設置時,RED 命中(大面積 rm *、刪除工作區外路徑、IMDS / SSRF、容器逃逸、憑據 / 錢包 store 讀取、間接混淆 + sink)直接拒絕;YELLOW 命中(資金類 CLI shell-out、鏈上危險方法、env 投毒、指定路徑 rm、風險包安裝)通過 AskUserQuestion 二次確認。設為 truthy 會同時跳過 RED 和 YELLOW,僅在事故響應或完全離線 CI 中使用。日常工作流豁免請使用工作流定義中的 script_risk_policy 字段(body_sha256 + 類別),不要設此全局 env。審計落庫時 script_risk_decisions.bypassed_by="env_global"
MINARA_TOOL_RESULT_RETAIN_HOURS24[1, 720] 範圍內的整數持久化在 <dataDir>/sandbox/files/.tool-results/ 下的超大工具結果的存活小時數,超時後由週期性清理刪除。合規 / 季度審查窗口可設為 168(7 天);臨時 CI 運行可設為 1。格式錯誤或超範圍的值回退到 24 小時並寫入 warn 日誌。

混合記憶檢索

EMBEDDING_PROVIDER=disabled(默認)時,混合搜索代碼路徑不活躍:所有記憶行的 embedding_state 保持 'pending'embedding 列為 NULLsearchMemoriesHybrid 直接回退到現有的 FTS5 BM25 路徑,結果字節完全一致。運營商僅在需要跨詞彙召回提升時啟用(例如中文查詢 山寨币最近怎么样 檢索英文 altcoin drawdown 知識)。寫入路徑保持同步,embedding 在行提交後通過 queueMicrotask 異步進行,不影響用戶側延遲。

變量默認值格式效果
EMBEDDING_PROVIDERdisableddisabled|openai|voyage選擇 embedder。disabled 時工廠返回 null,混合路徑不活躍。其他值需要 EMBEDDING_API_KEY
EMBEDDING_API_KEY不透明字符串Bearer token。OpenAI:sk-...;Voyage:pa-...。非 disabled 提供商未設置時,工廠仍返回 null 並記錄 warn。
EMBEDDING_MODEL提供商原生(text-embedding-3-small / voyage-3模型 id模型標識符。僅在確認維度與 EMBEDDING_DIM 匹配後才覆蓋。
EMBEDDING_DIM1536正整數向量維度。用於啟動時聲明 vec0 虛擬表。模型不匹配時行狀態為 embedding_state='failed'。在已有數據庫上變更需手動刪除並重建 vec0 表。
EMBEDDING_BASE_URL提供商原生/embeddings 結尾的 URL可選覆蓋,用於自託管網關或代理。
SQLITE_VEC_EXTENSION_PATH捆綁的 sqlite-vec npm 二進制絕對文件系統路徑sqlite-vec 可加載擴展的顯式路徑。僅在自行管理二進制文件時設置(自定義構建、系統路徑、剝離 node_modules 的 Docker 層)。加載失敗為非致命錯誤,混合路徑靜默降級到 BM25。

當提供商已啟用但發生瞬時 API 失敗時,行的狀態為 embedding_state='failed'minara doctor 命令(E1 階段)暴露每種狀態的計數,便於運營商發現堆積;minara doctor --fix --apply(E2 階段)通過 MemoryStore.backfillEmbeddings() 補填。failedpending 均可補填,同一行可能循環,直到成功 embedding 後狀態變為 embedded。短於 10 個字符的行,或觸發方法論注入掃描器的行,狀態為 skipped,永遠不會 embed。

回測反饋循環(Sprint 6:在線結果填充器)

週期性任務,用於閉合符合條件執行的學習循環。它計算確定性的交易後市場結果("+5.20% in 24h"),持久化結果,再運行可選的推理評價。統一 Trading Memory 的來源規則會先執行:自動或來源未知的 perps 不會進入人工評價鏈路。

不會重新執行歷史決策。 僅評價 trade_executions 中已有的 pending 行。開啟後,gateway 啟動時會先立即處理逾期任務,再進入固定間隔。默認暗部署(BACKTEST_ENABLED=false)。

變量默認值格式效果
BACKTEST_ENABLEDfalsetrue|false主開關。false 時運行器和調度器均不註冊(零運行時開銷)。true 時調度器每 BACKTEST_CRON_HOURS 小時觸發一次。
BACKTEST_DRY_RUNfalsetrue|false試運行:計算結果,輸出到 shadow_runs(facet='backtest_outcome'),但跳過 updateTradeOutcomerecordUsage。適用於第一週上線協議。
BACKTEST_MIN_TRADE_AGE_MS86400000(24 小時)正整數(毫秒)交易進入評估資格前的最小存活時間。傳入 ReviewEngine.minTradeAgeForEvalMs
BACKTEST_OUTCOME_HORIZON_HOURS24正整數(小時)created_at 後多少小時採樣結果價格。渲染在結果字符串中,讓評估器看到窗口長度。
BACKTEST_BATCH_LIMIT20正整數每次觸發拉取的最大待處理行數。傳入 ReviewEngine.maxEvalsPerBatch
BACKTEST_CRON_HOURS24正數調度器間隔。使用 setInterval().unref()。小於 1 分鐘的值會被向上截斷。
BACKTEST_PRICE_PROVIDERautoauto|hyperliquid|yahoo強制使用單一歷史價格數據源。auto 路由:加密貨幣走 Hyperliquid,再 Yahoo -USD;股票/未知走 Yahoo;穩定幣為 1.0。
BACKTEST_MAX_COST_USD_PER_RUN2.00非負浮點數單次運行費用上限。運行器在運行前後快照 BudgetTracker.getDailySpend("learning");超出時以 status=stopped_budget 停止。0 表示禁用。與 BudgetTracker 的日 / 月上限疊加計算。
LEARNING_RECORD_USAGEfalsetrue|false歸因驗證通過後,開啟實時推理質量與方法論反饋。已歸因交易通過 methodology_observations 和 promoted benchmark run 更新;runner 不再批量增加舊 Wilson 計數。建議在 shadow 行乾淨後最後開啟。

上線協議(plan dapper-coalescing-shell §Sprint 6):

  1. 設置 BACKTEST_ENABLED=trueBACKTEST_DRY_RUN=true,運行一個 cron 週期。檢查 shadow_runs WHERE facet='backtest_outcome',確認結果字符串符合 ±N.NN% in Xh 格式,跳過原因合理。
  2. BACKTEST_DRY_RUN 翻轉為 false。Runner 開始向 trade_executions 寫入確定性 outcome 和終態;evaluation run 與 observation 保持追加寫入。
  3. 只有歸因乾淨後才開啟 LEARNING_RECORD_USAGE=true。按 profile version 監控 evaluation_runsmethodology_observationsmethodology_metric_stats;只有 promoted primary run 影響新統計。

個性化重建(M3.2 事件驅動閾值)

Minara 通過 PersonalizationRebuilder 從每次對話中學習交易偏好。M3.2 之前,重建器每 10 分鐘在冷卻後運行一次。M3.2 將其改為事件驅動加閾值門控:數據寫入(交易、記憶、聊天輪次)觸發事件喚醒重建器;每次重建須通過兩個獨立門控,即最少新輸入數量自上次重建以來的最小經過時間。兩個門控須同時滿足,缺一不觸發。

60 分鐘安全網調度器仍然存在,用於覆蓋丟失的事件(如寫入與其訂閱者之間進程重啟),但在安靜的系統上產生零 LLM 調用和零 info 日誌。

交易摘要閾值

變量默認值格式效果
FIN_PROFILE_TRADING_SUMMARY_MIN_NEW_TRADES3正整數自上次重建以來的最少新交易數,滿足後門控 2 才允許交易摘要重建。
FIN_PROFILE_TRADING_SUMMARY_MIN_INTERVAL_MIN30正整數,分鐘自上次重建以來的最小經過時間。
FIN_PROFILE_TRADING_SUMMARY_MAX_TRADES100正整數冷啟動 / 強制重新生成時傳入 LLM 的交易數上限。
FIN_PROFILE_TRADING_SUMMARY_INCREMENTAL_MAX_TRADES50正整數將已有摘要增量合併時傳入 LLM 的新交易數上限。

如果交易頻率導致摘要頻繁更新,可提高閾值;如需在回測或新手引導期間儘快收斂,可降低閾值。

記憶提取閾值

變量默認值格式效果
FIN_PROFILE_MEMORIES_MIN_NEW_TURNS5正整數自上次提取以來需記錄的最少新聊天輪次數,滿足後 rebuildMemories 才運行。
FIN_PROFILE_MEMORIES_MIN_INTERVAL_MIN10正整數,分鐘自上次記憶提取以來的最小經過時間。
MEMORY_CONSOLIDATION_ENABLED未設置(默認開)0/false/no/off 關閉為聊天抽取的事實做矛盾消解。默認開啟:每次重建多一次後臺 LLM 調用,判定每條事實是重複、細化還是取代已有事實;被取代的事實軟刪除(可恢復),每次決策都記錄到 memory_consolidation_events 審計表;也用於仲裁 agent 記錄事實的近重複。設為 0 可回退到僅追加(ADD)。
MEMORY_CONSOLIDATION_GUIDANCE自由文本,最多 500 字符可選的非權威傾向,用於指導消解如何合併或淘汰事實(例如“以我最新的說法為準”)。它絕不覆蓋硬性安全規則:用戶設置的硬約束只有在更新的明確用戶陳述下才會被丟棄,用戶陳述的事實始終優先於 assistant 推斷的事實。消解關閉時無效。

rebuildMemories 掃描游標 last_indexed_chat_id 之後寫入的 chat_turns 行並提取離散事實。默認使用僅 ADD 提示詞(無 UPDATE/DELETE),矛盾內容與先前事實並列 ADD,在檢索時解決。當 MEMORY_CONSOLIDATION_ENABLED 開啟時,後續的消解過程改為對每條事實判定 ADD / UPDATE / SUPERSEDE,在寫入時整理過時與矛盾的行(見 Minara Memory)。每條提取的事實以行的形式寫入共享 memories 表,包含 fact_typeattributed_toentities_jsonlinked_memory_ids 元數據。

共享配置項

變量默認值格式效果
FIN_PROFILE_EVENT_DEBOUNCE_SEC30正整數,秒scheduleCheck(dim) 的防抖窗口。將快速連續的寫入合併為一次門控檢查後的重建。
CHAT_TURN_RECORDING1(開啟)0/false/no/off 表示禁用將每輪的 (user_message, final_response, tool_calls) 持久化到 chat_turnsrebuildMemories 的輸入來源,禁用後無數據可提取。

運營提示: 在全新部署時,將 FIN_PROFILE_TRADING_SUMMARY_MIN_NEW_TRADES 設為 1,將 FIN_PROFILE_MEMORIES_MIN_NEW_TURNS 設為 2,使重建器在第一天快速預熱。配置文件穩定後恢復默認值。

Agent 外歷史鏡像

個性化重建器現在消費三個數據源:本地 trade_history(agent 會話內)、perps_fills(Minara /v1/perp-wallets/fills 跨子錢包鏡像)、external_spot_activities(Minara /v1/tx/cross-chain/activities)。以下配置項控制 MinaraHistorySync 的同步策略以及 LLM 重建讀取的數據量。

變量默認值格式效果
FIN_PROFILE_HISTORY_SYNC_WINDOW_DAYS90正整數,天滾動同步窗口。超過此窗口的記錄永遠不會被拉取。
FIN_PROFILE_HISTORY_SYNC_MIN_INTERVAL_MIN5正整數,分鐘連續同步觸發之間的節流下限。窗口內的多次 scheduleSync() 調用會合併為一次。
FIN_PROFILE_HISTORY_SYNC_TIMEOUT_SEC8正整數,秒每次 syncAll() 的硬超時。通過 AbortController 取消進行中的 HTTP 請求。
FIN_PROFILE_HISTORY_SYNC_PAGE_HINT500正整數,行perps fills 端點的"頁面可能滿"啟發式判據。當 getPerpSubAccountFills 返回 ≥ 此值時,同步器會前移 startTime 再次請求。
FIN_PROFILE_HISTORY_SYNC_OVERLAP_SEC60正整數,秒在可能被截斷的頁面前移 startTime 時的重疊時間。fill_uid 去重讓重疊變得無害。
FIN_PROFILE_HISTORY_SYNC_MAX_ROUNDS_PER_SUB10正整數每個子錢包截斷滾動循環的硬上限。
FIN_PROFILE_HISTORY_SYNC_MAX_FAILURES5正整數單個 (source, sub_account_id) 的連續失敗閾值。達到/超過後,正常調度中跳過該鍵。
FIN_PROFILE_HISTORY_SYNC_FAILURE_COOLDOWN_MIN30正整數,分鐘達到 MAX_FAILURES 後,下次探測嘗試受此冷卻控制。探測成功重置計數器;失敗累加。防止永久凍結。
FIN_PROFILE_HISTORY_SYNC_SPOT_MAX_PAGES20正整數spot 分頁循環的硬上限。
FIN_PROFILE_HISTORY_SYNC_SPOT_PAGE_SIZE100正整數spot 分頁批次大小,作為 limit 轉發給 Minara。
FIN_PROFILE_TRADING_SUMMARY_PERPS_RECENT_FILLS30正整數LLM 重建讀取的最新 perps fills 數量。聚合數據始終全量發送。
FIN_PROFILE_TRADING_SUMMARY_SPOT_RECENT_ACTIVITIES20正整數同上,針對 spot。
FIN_PROFILE_TRADING_SUMMARY_AGGREGATE_WINDOW_DAYS90正整數,天餵給 LLM 的 per-symbol / per-pair 聚合窗口。
FIN_PROFILE_MEMORY_SOFT_DELETE_RETENTION_DAYS30正整數,天軟刪除記憶的可恢復保留期。超過後,30 分鐘清理 cron 物理刪除。

同步觸發模型。 三條路徑觸發 MinaraHistorySync.scheduleSync():(1) 任何 trade:recorded 事件(agent 剛執行了一筆交易,用戶很可能也在 web/mobile 端做了操作),(2) PersonalizationRefreshTask 的每小時安全網 tick(兜底丟失的事件),(3) 顯式的 /refresh-personalization --force / POST /v1/profile/refresh 路徑。5 分鐘節流保證每個窗口內 API 不會被打超過一次。

水位粒度。 minara_history_sync_state(source, sub_account_id) 為主鍵。單個子錢包的瞬時故障既不會汙染其同伴的水位,也不會影響全局 spot 游標。

Hyperliquid 永續合約

MINARA_HL_DEX_DISCOVERY 控制在構建永續合約快照和同步交易歷史時,Minara 發現 Hyperliquid 命名永續 DEX 的範圍。

變量默認值格式效果
MINARA_HL_DEX_DISCOVERY1/true/yes/on 表示啟用將永續合約快照與歷史同步接入 Hyperliquid perpDexs 實時發現。默認行為僅查詢當前用戶群持有倉位的兩個 dex("" 默認 + "xyz" 股票/大宗商品),將每次掃描扇出控制在 4 訂閱 × 2 dex × 2 調用 = 16 次 HL 請求,符合 HL 單 IP 速率限制。啟用後,快照還會調用 perpDexs(緩存 10 分鐘),並向 HL 當前暴露的所有命名 dex(xyz、flx、vntl、hyna、km、abcd、cash、para,約 9 個)扇出。對於典型的 4 訂閱用戶,每次掃描會推至約 72 次請求,可靠地觸發公共 /info 端點的 429 限制。僅在確實持有默認對以外的 dex 倉位時設置。

Strategy Studio(測試版)

一個運營商配置項控制 strategy-rl 基準測試運行器使用的離線策略代碼生成子 Agent。它有合理默認值,不設置也可正常使用。

變量默認值格式效果
MINARA_SS_CODEGEN_MAX_ITER3正整數,截斷至 [1, 10]每次基準測試運行中離線代碼生成子 Agent"生成代碼 → 臨時回測 → 精煉"循環的步數預算。子 Agent 運行到該步數;模型在此預算內自行決定何時回測、何時停止。返回時,成功狀態根據最終回測重新計算(status COMPLETED 且非零交易且回撤 < 0.95)。使用快速/廉價 llmClient(如 Haiku)且希望更好收斂的運營商可提高此值;使用慢速/昂貴模型時可降低(1-2)。由 runStrategyCodeSubagentapps/agent/src/core/strategy-code-subagent.ts 中消費。

Harness RL

環境變量默認值可接受值用途
MINARA_SKILL_ROUTER_RL_ENABLED未設置(關閉)1 / true / yes / on啟用僅供運營人員使用的 Skill Router Harness RL 試點:版本化排序策略、可替換 benchmark Case、有界候選探索、顯式晉升與回滾,以及使用已晉升策略對每輪 Skill 目錄排序。未設置時不會創建 skill_router_* 表,目錄保持原有 priority 順序。該功能不會修改 Skill 文本、工具權限層級、安全閘門或模型權重。

機構模式(多 Agent 投研團隊模擬)

minara_institution_analyze 工具召集 6 階段流水線(4 名分析師並行 → 多空研究辯論 → 研究主管(RM)→ 交易員 → 三方風控辯論 → 投資組合經理(PM))用於高風險單資產分析。以 TradingAgents 為原型;輪次數默認值與該項目的 default_config.py 完全一致,超時和 token 上限則遵循 Minara 的 deep-research 及 Agent 循環約定。

以下所有變量均為 Agent 循環基礎設施,按項目約定無 MINARA_ 前綴。全部不設置時採用 TA 錨定的默認值。

變量默認值格式效果
INSTITUTION_MAX_DEBATE_ROUNDS1整數,截斷至 [1, 5]第 2 階段多空交替輪次數。1 輪 = 2 次發言(一次多方 + 一次空方)。與 TradingAgents 的 max_debate_rounds: 1 一致。需要額外對抗性審查時可調至 2;常規分析保持 1。由 runInstitutionapps/agent/src/tools/institution/orchestrator.ts 中消費。
INSTITUTION_MAX_RISK_ROUNDS1整數,截斷至 [1, 5]第 5 階段激進 → 保守 → 中性輪轉輪次數。1 輪 = 3 次發言。與 TradingAgents 的 max_risk_discuss_rounds: 1 一致。
INSTITUTION_WALL_CLOCK_TIMEOUT_MS1200000整數毫秒,截斷至 [60000, 1800000]單次 minara_institution_analyze 調用的硬性掛鐘時間上限。超出時,編排器短路並返回已完成的階段結果加 meta.truncated: true。單次 LLM 調用的超時由 INSTITUTION_PER_CALL_TIMEOUT_MS 控制,且不超過此掛鐘時間。單次調用上限從 60 秒提高到 300 秒後同步上調;如需恢復舊的快速失敗行為,可將兩個配置項一起調回。
INSTITUTION_PER_CALL_TIMEOUT_MS300000整數毫秒,截斷至 [5000, INSTITUTION_WALL_CLOCK_TIMEOUT_MS]流水線中每次子 Agent 調用(分析師、辯論參與者、管理層、結構化重試)的單次 LLM 調用超時。分析師需要調度 2-3 個數據工具並在單次子 Agent 循環中寫出結構化 AnalystReport,通常超過 60 秒上限;舊的 wallClock / 10 推導方式會在寫入中途中止。使用快速模型時可降低(如 60000)以快速失敗;使用慢速深度模型時可提高(如 600000),同時相應調高掛鐘上限。
INSTITUTION_MAX_OUTPUT_TOKENS_PER_TURN4096整數,截斷至 [1024, 16384]流水線中每次 LLM 調用的 max_tokens 上限(分析師、辯論參與者、管理層、結構化重試)。這是費用上限,不影響行為。與 Agent 循環的默認 max_tokens 一致。投資組合經理(PM)持續截斷 executive_summary 時可提高。

單模型策略。 流水線中每個角色(分析師、辯論參與者、研究主管(RM)、交易員、風險人物、投資組合經理(PM)、配置 Agent/Allocator)均運行在運營商選定的 Agent 模型上,與 Agent 其餘部分使用相同的提供商和模型。不支持按角色覆蓋。如需在更強的模型上運行綜合分析,可為整個會話切換 Agent 默認模型。

成本說明: 單次機構運行約 25 次 LLM 調用 × 4K 輸出 token,合計約 10⁵ 輸出 token。以默認設置在 Sonnet 級模型上約需 $1-3。向終端用戶暴露該工具時,請在顯著位置註明此成本。

硬編碼常量(v1 中不可通過環境變量調整):

  • 第 1 階段分析師併發數 = 4(分析師數量;通過 Promise.all 並行,無信號量庫)。
  • 子 Agent 內層循環輪次上限 = 5 輪。與 Minara 的 strategy-code-subagent 規範一致;分析師通常只需 1-3 次工具調用即可生成報告。
  • 單次 LLM 調用超時 = wallClock / 10,下限 5 秒。
  • 輸出語言 = 繼承自現有的用戶消息語言檢測(與 deep-research 使用相同的模式);內部辯論輪次始終使用英語,僅最終報告本地化。

如實際運營需要調整硬編碼常量,請在後續 PR 中將其提升為環境變量。

自學習與 Phase B 反思(v2 PR 1 / PR 2)

v2 自學習軌道將每次機構運行持久化到三張 SQLite 表(institution_runsinstitution_role_outputsinstitution_reflections),針對仍持有的倉位運行多窗口 Phase B 反思階梯(1d/7d/30d/90d/180d/365d),並在每次新機構調用前對陳舊的歷史運行寫入"懶加載"反思(Phase 0 回顧刷新)。以下所有變量均為 Agent 循環基礎設施,按項目約定無 MINARA_ 前綴。

變量默認值格式效果
INSTITUTION_LEARNING_ENABLEDonon | offv2 持久化主開關。為 off 時,捕獲鉤子為空操作,institution_* 表保持空。生產環境保持開啟;持久化的行為後續 Phase B 反思和方法論畢業提供輸入。由 captureInstitutionRunapps/agent/src/learning/institution/capture-hook.ts 中消費。
INSTITUTION_RETROSPECT_ENABLEDonon | offPhase 0 懶加載刷新主開關。開啟時,每次新機構調用會遍歷同一(ticker, asset_class)的近期運行,並對最新反思已陳舊的運行寫入 lazy_refresh 反思。標準每日 cron 不受影響,繼續運行。
INSTITUTION_RETROSPECT_LIMIT10整數,截斷至 [1, 50]Phase 0 歷史深度。每個(ticker, asset_class)最多查詢的歷史運行數。多標的頻繁用戶可降低(3-5)以限制單次調用延遲;反思上下文比新鮮度更有價值時可提高(20+)。
INSTITUTION_RETROSPECT_TIMEOUT_MS120000正整數毫秒Phase 0 掛鐘時間上限。有效超時為 min(此变量, INSTITUTION_WALL_CLOCK_TIMEOUT_MS / 2),下限 5 秒,保證當第 1 階段開始時,編排器(第 1-6 階段)仍有至少 50% 的聲明掛鐘預算。
INSTITUTION_LAZY_REFRESH_STALE_HOURS24整數,截斷至 [1, 168]歷史運行的最新反思被視為陳舊(可懶加載刷新)的小時數閾值,以 evaluated_at 為準。
INSTITUTION_LAZY_REFRESH_DEDUPE_HOURS6整數,截斷至 [1, 48]同一運行連續兩次 lazy_refresh 寫入之間的最小小時數。防止 10 分鐘內多次調用 /institution BTC 產生冗餘反思。
INSTITUTION_AUTO_STALE_DAYS90整數,截斷至 [30, 365]open 狀態的運行在未最終確認的情況下超過此天數後,自動晉升為 auto_stale。auto_stale 運行繼續接收 Phase B 反思,但在 PM 的 past_context 注入中權重降低。
INSTITUTION_BENCHMARK_CRYPTOBTC代碼加密資產類別的 alpha 基準。Phase B 反思計算 alpha = raw_return - benchmark_return。設為已配置價格源能解析的標的。
INSTITUTION_BENCHMARK_STOCKSPY代碼股票/指數的 alpha 基準。
INSTITUTION_BENCHMARK_FOREXDXY代碼外匯對的 alpha 基準。大宗商品、穩定幣和未知類別無基準,alpha 記錄為 null

分析師恢復與規範資產預解析

每個 Phase-1 分析師 slot 先在自由的 tool 調用循環裡跑,然後跑一輪固定格式的綜合 turn,要求模型用 HEADLINE / KEY FINDINGS / CONFIDENCE 的結構化散文格式總結觀察。編排器在服務端直接把散文解析為 AnalystReport:不再有強制提交的 toolChoice 階段,也沒有重試 harness。當散文為空或解析失敗時,編排器回落到 buildSubagentSummaryReport,它在兩種分支下都能產出可用報告(tool 有成功結果時引用 tool 數據;全部失敗時回到該分析師角色的默認推理)。下游階段始終收到可用的總結;舊的 data_gap 標誌已經退役,也沒有可調的重試預算,契約是"始終產出可用結果",沒有預算需要調。

在 Phase 1 派發之前,若 ticker 為 unknown,會觸發服務端的規範身份預解析:並行查詢 CoinGecko / CMC / DexScreener,將每個 provider 的結果歸一化為 chain+contract(或 chain+native)身份,持久化在帶過期時間的 SQLite 緩存中。

變量默認值類型描述
INSTITUTION_FORCE_RESOLVER_PREFLIGHTfalsetrue | false對所有 ticker 都跑規範預解析,而不只是 classifyAsset === "unknown" 的情況。便於 ops 驗證;少量延遲開銷(緩存命中約 50ms,未命中約 200-500ms)。
CANONICAL_ASSET_CACHE_TTL_RESOLVED_DAYS30正整數天數outcome: "resolved"(單一規範 chain+contract 或 native+chain)的 TTL。
CANONICAL_ASSET_CACHE_TTL_MULTI_DAYS14正整數天數outcome: "multi"(多鏈部署,如 USDC 在 20 條鏈上)的 TTL。比 resolved 短,因為用戶消歧可能會固定到具體某條鏈。
CANONICAL_ASSET_CACHE_TTL_AMBIGUOUS_DAYS7正整數天數outcome: "ambiguous"(多個 provider 給出不一致結果)的 TTL。短一些,等數據收斂後重新解析。
CANONICAL_ASSET_CACHE_TTL_NONE_DAYS1正整數天數outcome: "none" 的 TTL。非常短,因為 provider 每日更新數據,應儘快再次嘗試而不是緩存空結果。
CANONICAL_ASSET_CACHE_TTL_USER_DAYS365正整數天數用戶提供條目(通過 minara assets pin 或 banner CTA 的操作員覆寫)的 TTL。Pin 條目優先於 provider 解析。
CANONICAL_ASSET_CACHE_FALLBACK_TO_EXPIREDtruetrue | false實時聚合失敗(所有 provider 宕機或限流)時,返回帶 from_expired_fallback: true 標記的過期緩存條目,而不是直接報告 outcome: "none"

方向感知評分。 Phase B 記錄的 raw_return 對做空倉位取反,對持平決策歸零(在下跌標的上盈利的做空記錄正收益,而非負收益)。做多或未指定方向的倉位直接透傳。詳見 reflect.ts applyDirection()

可重試的數據中斷。 標準窗口評估在價格獲取失敗時寫入 data_unavailable 佔位符;下次 cron 執行時,一旦價格恢復,該佔位符會被 UPSERT 為 oknextDueStandardWindowstatus='ok' 過濾,確保窗口在成功前持續重新評估。

離線學習配置調優(Phase B 門控)

apps/agent/src/learning/methodology-store.ts 中的 LEARNING_CONFIG 超參數目前為手動調整。未來的貝葉斯優化工具將針對 Sprint 6 積累的 P&L 歸因數據對其進行調優;代碼位於 apps/agent/src/learning/replay/tools/tuning/(構建完成後)。

該工具僅離線運行,通過 CLI / Python 子進程執行,從不作為請求路徑的一部分。在數據積累達到準備門控(≥100 條已評估交易,≥20 條唯一方法論命中,見 minara learning stats)之前,整個路徑保持禁用。

變量默認值格式效果
LEARNING_TUNING_ENABLEDfalsetrue|false調優工具的主門控。除非此值為 true,否則 minara learning replay 短路返回 { skipped: "tuning_disabled" }minara learning stats 忽略此門控(純只讀 SQL)。在生產環境中保持 false,直到人工運營商明確開啟調優會話。

完整路線圖及目標函數設計見 apps/agent/docs-src/bo-learning-config-tuning.md

方法論自優化循環(第 1-7 階段)

輪次結束鉤子運行獨立的 Haiku 級摘要器,從建議類輪次提取 {asset, decision, confidence, quoted_price},並持久化到 decision_history。默認為異步模式;對用戶可見延遲無影響。

變量默認值格式效果
DECISION_CAPTURE_ENABLEDfalsetrue|false主開關。false 時鉤子立即返回,跳過預過濾和 LLM 調用。
DECISION_SUMMARIZER_MODELclaude-haiku-4-5-20251001模型 id用於提取決策 JSON 的模型。覆蓋率 < 70% 時切換為 Sonnet。
DECISION_SUMMARIZER_TIMEOUT_MS15000正整數單次調用超時(毫秒)。超時會丟棄該行並記錄警告;不重試。
DECISION_CAPTURE_SYNC_MODEfalsetrue|false在摘要器返回前等待。僅用於確定性測試 : 會增加輪次延遲。
DECISION_CAPTURE_HEURISTIC_ENABLEDtruetrue|false二級:捕獲響應包含 BUY/SELL 關鍵詞 + 資產代碼的輪次,就算未激活建議場景。
DECISION_CAPTURE_UNIVERSAL_SCANfalsetrue|false三級:對每個輪次調用摘要器。僅供診斷使用 : 摘要器成本約增加 4 倍。

階段 2 : 多週期回測 + 幻覺檢查

定時任務填充 decision_outcomes 表,記錄 1 天、3 天、1 周、1 月的收益。填充前,系統對比 agent_quoted_price 與歷史實際價格;偏差超過 HALLUCINATION_MAX_PRICE_DELTA_PCT 時,該決策被標記並排除在下游學習外。

變量默認值格式效果
DECISION_BACKTEST_ENABLEDfalsetrue|false主開關。關閉時定時任務不啟動,無 cron 計時器。
DECISION_BACKTEST_DRY_RUNfalsetrue|false計算結果但寫入 shadow_runs(facet='decision_outcome') 而非 decision_outcomes/decision_history。第 1 周灰度發佈。
DECISION_BACKTEST_HORIZONS1d,3d,1w,1mCSV週期列表。每個週期對應一行決策。最長週期決定待處理決策何時可參與計算。
DECISION_BACKTEST_CRON_HOURS24正整數定時任務調用間隔(小時)。
DECISION_BACKTEST_MAX_AGE_DAYS60正整數超過此天數的待處理決策被跳過(積壓防控)。
HALLUCINATION_MAX_PRICE_DELTA_PCT0.05十進制|reported − real| / real 閾值;超過此值決策被標記為幻覺。

第 3 階段 : 獎勵

獎勵函數將 4 個時間跨度的收益向量聚合為單個標量,用於評估每項決策。BUY 獎勵上升行情,SELL 獎勵下降行情,HOLD 獎勵中性走勢(|收益| ≤ 閾值)。

變量默認值格式作用
DECISION_HORIZON_WEIGHTS_JSON{"1d":0.15,"3d":0.25,"1w":0.35,"1m":0.25}JSON 對象加權平均中各時間跨度的權重。缺失的標籤權重為 0。
DECISION_HOLD_NEUTRALITY_THRESHOLD0.02小數|收益| 低於此值時計為 HOLD 獲勝。超過此值時,HOLD 獲得負獎勵(機會成本)。

第 4 階段 / 7 : 方法論實例分發

每個(模板、資產類別)的閾值覆蓋。第 4 階段提供腳手架;第 7 階段將提示詞構建器切換為優先使用實例覆蓋。off 保持第 4 階段前的行為完全不變。

實例分發默認啟用:提示詞構建器在可用時將 BO 調優的實例覆蓋合併到模板默認值。通過 DISABLE_METHODOLOGY_INSTANCE_DISPATCH=1 緊急停止開關恢復僅模板解析(見上文 agent-loop 部分的說明)。

第6階段 :: BO 調優週期

Python 工具集(位於 tools/tuning/)按符合條件的 bucket 運行 bayesian-optimization; 由 TS 週期編排器驅動,該編排器評估 6 個資格門限 + 資產類別配置。

變量默認值格式效果
METHODOLOGY_INSTANCE_TUNING_ENABLEDfalsetrue|falseBO 週期總開關。
METHODOLOGY_TUNING_CRON_DAYS7正整數週期調用間隔(天數)。
METHODOLOGY_TUNING_MAX_BUCKETS_PER_CYCLE10正整數每個週期處理的 Top-N bucket(按 tunability_score 排序)。
METHODOLOGY_TUNING_PROFILES_PATH$MINARA_DATA_DIR/methodology-tuning-profiles.json文件路徑資產類別配置的 JSON 覆蓋。按類別淺合併;null 排除。
METHODOLOGY_TUNING_MIN_DECISIONS_GLOBAL正整數應用於每個配置 min_decisions 的緊急下限(取最大值)。
METHODOLOGY_TUNING_MIN_IMPROVEMENT_REL0.05十進制數BO 後檢查 #1 :: 測試集均值獎勵必須超過基準值的百分比。
METHODOLOGY_TUNING_MAX_SENSITIVITY_DROP_10PCT0.5十進制數 (0, 1]BO 後檢查 #2 :: 若 ±10% 鄰域得分下降超過此值,拒絕接受。
METHODOLOGY_TUNING_PARAM_BOUND_REL0.5十進制數BO pbounds 半寬度,為模板默認值的分數。
METHODOLOGY_TUNING_MIN_CAPTURE_CONFIDENCE0.3十進制數 [0, 1]BO 回放僅考慮 capture_confidence ≥ 此值的決策。

推出順序:

  1. DECISION_CAPTURE_ENABLED=true :: 開始錄製建議輪次。
  2. 等待約 30 天收集數據。
  3. DECISION_BACKTEST_ENABLED=true + DECISION_BACKTEST_DRY_RUN=true :: 影子模式運行 1 周。
  4. DECISION_BACKTEST_DRY_RUN=false :: 實時回測寫入。
  5. 檢查 minara learning stats 報告 READY_FOR_BO=true
  6. METHODOLOGY_INSTANCE_TUNING_ENABLED=true :: 激活 BO 週期。
  7. Instance dispatch 默認啟用;保持 DISABLE_METHODOLOGY_INSTANCE_DISPATCH 未設置。

內置工具

每一行都是可選的。缺少變量會靜默禁用相應功能。

變量效果
TAVILY_API_KEY默認的 web_search / web_extract 後端。
FIRECRAWL_API_KEYTavily 不可用時啟用 web_searchweb_extract
EXA_API_KEYTavily 與 Firecrawl 都不可用時啟用 web_searchweb_extract(本地 key 或登錄後的平台透傳)。
FAL_KEY啟用 Fal.ai 圖像 / 視頻模型。
MESSAGING_DEFAULT_PROVIDERsend_message 省略 provider 時使用的提供商 id(如 telegramslack)。可選 : 未設置時採用首個已配置提供商。
MESSAGING_MAX_ATTACHMENT_BYTESsend_message({attachments}) 調用中單個附件的大小限制。默認:52 428 800(50 MB)。提供商 API 獨立強制執行自身限制。
TELEGRAM_BOT_TOKENTelegram 出站消息。與 TELEGRAM_CHAT_ID 配對。支持流式編輯。
TELEGRAM_CHAT_IDTelegram 數字聊天 id。
TELEGRAM_RICH_TEXT將 Telegram 回覆渲染為富文本(HTML,失敗時回退 MarkdownV2,再回退純文本)。默認開啟;設為 false 則發送純文本。
SLACK_WEBHOOK_URLSlack 傳入 Webhook URL。最簡單的 Slack 路徑;無流式傳輸。
SLACK_BOT_TOKENSlack bot token(xoxb-...)。通過 chat.update 啟用流式編輯。與 SLACK_CHANNEL_ID 配對。
SLACK_CHANNEL_ID默認 Slack 頻道 id(如 C0123ABC)。與 SLACK_BOT_TOKEN 一起使用時必需。
SLACK_APP_TOKEN啟用 Socket Mode 入站的應用級令牌(xapp-…)。Agent 主動向 Slack 建立 WebSocket 並接收 Events API 消息,無需公網 Request URL。與 SLACK_BOT_TOKEN 配對。
DISCORD_BOT_TOKENDiscord bot token。通過 PATCH /channels/{}/messages/{} 進行流式編輯。與 DISCORD_CHANNEL_ID 配對。
DISCORD_CHANNEL_ID數字 Discord 頻道 id。
HASS_URLHome Assistant 基礎 URL(如 https://hass.local:8123)。
HASS_TOKENHome Assistant 長期訪問令牌。
HASS_NOTIFY_SERVICEHA 通知服務 id(如 mobile_app_you,可帶或不帶 notify. 前綴)。一次性,無流式傳輸。
SMTP_HOST出站 SMTP 主機(如 smtp.gmail.com)。email 提供商必需。
SMTP_PORTSMTP 端口(587 STARTTLS,465 SSL)。
SMTP_USERSMTP 身份驗證用戶名(對於無身份驗證的中繼可選)。
SMTP_PASSWORDSMTP 身份驗證密碼 / 應用密碼(已脫敏)。
EMAIL_FROM出站郵件中使用的"From"地址。
EMAIL_TOsend_message 省略 channel 時的默認收件人。
GOOGLE_OAUTH_CLIENT_ID一鍵"Email (Gmail)"連接器(email-gmail 提供商)的 Google OAuth 客戶端 ID。也可在 設置 → 消息 中填寫。
GOOGLE_OAUTH_CLIENT_SECRETGmail 連接器的 Google OAuth 客戶端密鑰(脫敏顯示)。
GMAIL_REFRESH_TOKEN由"連接 Gmail"流程寫入。通過 Gmail API 發信所用的長期令牌(僅 gmail.send 權限,從不讀取郵件)。
GMAIL_SENDER_EMAIL由"連接 Gmail"流程寫入。發信所用的已授權郵箱地址。
GMAIL_TOemail-gmail 提供商的可選收件人。留空則推送到已連接的收件箱本身。
WHATSAPP_ACCESS_TOKENMeta Cloud API Bearer 令牌。啟用 whatsapp 提供商。
WHATSAPP_PHONE_NUMBER_IDMeta 開發者應用中的數字電話號碼 id。
WHATSAPP_RECIPIENT默認 E.164 收件人(+12025551234)。
SIGNAL_CLI_NUMBER你的註冊 Signal 發件人號碼(E.164 格式)。需要 PATH 中有 signal-cli
SIGNAL_RECIPIENT默認 E.164 收件人。
SIGNAL_CLI_BINARY覆蓋 signal-cli 二進制文件路徑。默認:PATH 查找 signal-cli
TELEGRAM_WEBHOOK_SECRETTelegram 傳入 webhook 的共享密鑰。未設置時 /webhooks/telegram 返回 404。
SLACK_SIGNING_SECRETSlack 應用簽名密鑰,用於傳入 webhook HMAC 驗證。未設置時 /webhooks/slack 返回 404。
DISCORD_APPLICATION_PUBLIC_KEYDiscord Ed25519 應用公鑰(十六進制)。未設置時 /webhooks/discord 返回 404。
WHATSAPP_APP_SECRETMeta 應用密鑰,用於 WhatsApp Cloud API 入站 HMAC-SHA256 驗證(X-Hub-Signature-256 頭)。未設置時 POST /webhooks/whatsapp 返回 404。
WHATSAPP_VERIFY_TOKENWhatsApp Cloud API 的 hub.verify_token,用於一次性 GET 握手時回顯。未設置時 GET /webhooks/whatsapp 返回 404。
MESSAGING_INBOUND_TRANSCRIBE在傳入語音附件上啟用語音轉錄(通過 OpenAI Whisper)。需要 OPENAI_API_KEY
MESSAGING_VOICE_REPLY收到語音消息時,除流式文字回覆外再附帶一條語音回覆。需要語音服務(ELEVENLABS_API_KEYOPENAI_API_KEY)。
ELEVENLABS_API_KEYElevenLabs 密鑰。設置後語音合成與聽寫優先走 ElevenLabs(延遲更低),OpenAI 作為回退。
VOICE_TTS_PROVIDER指定語音合成服務商:auto(默認)/ elevenlabs / openai
VOICE_TTS_VOICE朗讀回覆使用的音色 id(主服務商原生 id)。留空用服務商默認。
VOICE_TTS_MODELTTS 模型。ElevenLabs:eleven_v3(默認,最像真人)、eleven_multilingual_v2eleven_turbo_v2_5eleven_flash_v2_5;OpenAI 默認 gpt-4o-mini-tts
VOICE_TTS_STABILITY / VOICE_TTS_SIMILARITY_BOOST / VOICE_TTS_STYLE / VOICE_TTS_SPEAKER_BOOST / VOICE_TTS_SPEEDElevenLabs 朗讀默認參數(0-1,speed 為 0.7-1.2,speaker boost 為 1/0)。設置頁 → Voice models 的滑塊會按用戶覆蓋。
VOICE_TTS_FAST_FIRST1(默認)/ 0。每條回覆的第一句話用最快的模型朗讀,開口更快;後續句子保持所選模型。
VOICE_STT_PROVIDER指定語音聽寫服務商:auto(默認)/ elevenlabs / openai
VOICE_STT_MODEL主服務商的 STT 模型覆蓋。留空為 scribe_v1 / gpt-4o-mini-transcribe
VOICE_FFMPEG_PATH可選的 ffmpeg 路徑,用於語音轉碼(企業微信/公眾號的 AMR 入站語音;企業微信的 AMR 語音回覆)。默認查 PATH;沒有 ffmpeg 時相關平臺優雅降級。
TWITTERAPI_API_KEY第三方 Twitter 抓取工具。啟用 research.social.twitter
X_API_BEARER_TOKEN官方 X API v2。啟用 x.api 技能。
GLASSNODE_API_KEYGlassnode 鏈上指標。啟用 research.onchain.glassnode
QDRANT_URL向量知識庫端點。同時啟用 research.knowledge_base skill 和機構模式的 kb_search 工具(後者還需要配置 EMBEDDING_PROVIDER)。設置後,news / fundamentals / sentiment 分析師會在調用 web_search 之前先查詢 Qdrant,給綜合階段提供明顯更乾淨的輸入。
QDRANT_API_KEY可選 Qdrant Cloud 身份驗證。設置後會作為 api-key 請求頭隨每次 Qdrant 請求發送。
KB_EMBEDDING_PROVIDERkb_search 專屬的 embedder 覆蓋。僅當填充 Qdrant 的 embedder 與 EMBEDDING_PROVIDER 不一致時設置(典型場景:v1 Qdrant 用 OpenAI text-embedding-3-small 填充,但當前部署用 voyage-3 做 memory)。未設置時 kb_search 複用全局 EMBEDDING_*。維度不匹配時 Qdrant 會返回 400,kb_search 在錯誤信息中會直接提示設置該覆蓋。
KB_EMBEDDING_API_KEYKB_EMBEDDING_PROVIDER 的認證。未設置時回退到 EMBEDDING_API_KEY
KB_EMBEDDING_MODELKB_EMBEDDING_PROVIDER 的模型 id,需與填充 Qdrant 時所用模型一致。
KB_EMBEDDING_DIM向量維度。常見模型 id 會自動推斷;自定義模型時顯式設置。
E2B_API_KEY啟用 workspace.e2b 雲沙盒。

消息平臺(擴展集)

在原有七個平臺(telegramdiscordslackemailwhatsappsignalhome_assistant)之上新增 11 個 IM 與消費社交平臺。每個平臺有自己的 env 變量塊;任何一項為空都會靜默禁用該 provider 的出入站(路由 404,gateway 從運行時映射中剔除)。

詳細配置步驟、入站 webhook URL、簽名算法見 消息通道 各平臺子頁。連線憑據最快的路徑是 minara auth messaging add(交互式 picker,列出 18 個平臺及其當前已配置 / 未配置狀態)。

Lark / Feishu

變量效果
LARK_APP_IDLark 應用 id,cli_xxxxxxxxxxxxxxxx。出站必需。
LARK_APP_SECRETLark 應用密鑰。用於換取 tenant access token(2 小時緩存)。
LARK_DEFAULT_CHAT_ID默認 oc_xxxxxxxxxxxxxxxx 群聊 id,用於出站發送。
LARK_VERIFICATION_TOKEN入站 webhook 驗證 token。入站必需。
LARK_ENCRYPT_KEY入站加密密鑰(可選)。設置後,入站 POST 體以 {encrypt: ...} 形式到達,使用 AES-256-CBC 解密;密鑰 = SHA256(encrypt_key),IV = 該密鑰前 16 字節。
LARK_DOMAINopen.feishu.cn(中國大陸,默認)或 open.larksuite.com(國際版)。

WeCom(企業微信)

變量效果
WECOM_CORP_ID"我的企業" 頁面的 corp id。
WECOM_AGENT_ID應用 agent id(數字)。
WECOM_SECRET應用密鑰。換取 access_token(2 小時緩存)。
WECOM_DEFAULT_TOUSER默認接收人,豎線分隔的 user id 或 @all
WECOM_CALLBACK_TOKEN回調 token。用 [token, ts, nonce, encrypt] 做 SHA1 排序簽名。
WECOM_CALLBACK_AES_KEY43 字符 EncodingAESKey,用於入站 AES-256-CBC 解密。

DingTalk(釘釘)

變量效果
DINGTALK_WEBHOOK_URL自建群機器人 webhook URL(https://oapi.dingtalk.com/robot/send?access_token=...)。
DINGTALK_WEBHOOK_SECRET機器人簽名密鑰(SECxxxx)。出站用 timestamp\nsecret 做 HMAC-SHA256 簽名;同一算法驗證入站 outgoing-webhook 簽名。
DINGTALK_STREAM_APP_KEYStream Mode 應用 key(AppKey / ClientID)。啟用客戶端外連的 Stream Mode 入站 daemon,通過網關 WebSocket 接收機器人消息,無需公網回調 URL。與 DINGTALK_STREAM_APP_SECRET 配對。
DINGTALK_STREAM_APP_SECRETStream Mode 應用密鑰(AppSecret / ClientSecret)。與 DINGTALK_STREAM_APP_KEY 一起使用時必需。

WeChat OA(公眾號)

變量效果
WECHAT_OA_APP_ID公眾號 AppID,wxxxxxxxxxxxxxxxxx
WECHAT_OA_APP_SECRET公眾號 AppSecret。換取 access_token(2 小時緩存)。
WECHAT_OA_TOKEN服務器配置 Token。入站 SHA1 簽名(GET 握手 3-元組,POST 4-元組)。
WECHAT_OA_AES_KEY43 字符 EncodingAESKey,用於入站 AES-256-CBC 解密。
WECHAT_OA_DEFAULT_OPENID默認 openid 收件人。客服消息必須在 48 小時交互窗口內。

QQ Bot

變量效果
QQ_BOT_APP_IDBot AppID(數字)。
QQ_BOT_APP_SECRETBot Secret。同時作為入站 Ed25519 簽名驗證的 seed 來源(重複填充至 32 字節後派生密鑰對)。
QQ_BOT_TOKENBot token(遺留字段,保留兼容性)。
QQ_BOT_DEFAULT_CHANNEL_ID默認目標,<kind>:<id> 其中 kind ∈ channel / group / c2c / dm。純 id 默認為 channel:。主動消息上限 4 條 / 月。

LINE

變量效果
LINE_CHANNEL_ACCESS_TOKEN長期 bearer,用於 push API。
LINE_CHANNEL_SECRET頻道密鑰。驗證 X-Line-Signature HMAC-SHA256(base64)over 原始 body。僅出站場景可留空。
LINE_DEFAULT_USER_ID默認 userId / groupId / roomId。

Mattermost

變量效果
MATTERMOST_URL服務器 URL(無尾部斜槓)。
MATTERMOST_BOT_TOKENBot 用戶個人訪問 token。
MATTERMOST_DEFAULT_CHANNEL_ID出站默認頻道 id。
MATTERMOST_OUTGOING_WEBHOOK_TOKENOutgoing-webhook token,與入站 body 中的 token 字段做常量時間比對。僅出站場景可留空。Outgoing webhook 只在公開頻道按觸發詞觸發。

Microsoft Teams

變量效果
TEAMS_BOT_APP_IDBot 的 Microsoft App ID GUID。入站 JWT 的 audience(多租戶)或 audience + tenant GUID(單租戶)。
TEAMS_BOT_APP_PASSWORDBot 的 Microsoft App Password。換取出站 access token(1 小時緩存)。
TEAMS_BOT_TENANT_ID多租戶填 common,單租戶填 GUID。影響入站 JWT audience 校驗。
TEAMS_DEFAULT_CONVERSATION_IDbootstrap fallback 的會話 id。生產代碼應從入站 activity 學到 conversation id。
TEAMS_DEFAULT_SERVICE_URLbootstrap fallback 的 service URL。默認 https://smba.trafficmanager.net/teams。生產代碼從入站 activity.serviceUrl 學得。

Google Chat

變量效果
GOOGLE_CHAT_SERVICE_ACCOUNT_JSON_PATH服務賬號 JSON 密鑰的路徑。按 CLAUDE.md §4,文件必須放在 data / sandbox 樹內。
GOOGLE_CHAT_DEFAULT_SPACE_ID默認 space 資源名,spaces/AAAA1234567
GOOGLE_CHAT_AUDIENCE必須與 Workspace 控制台的 "Authentication Audience" 完全一致(GCP project number 字符串或 endpoint URL)。audience 錯誤會讓每次入站返回 401。

BlueBubbles(iMessage)

變量效果
BLUEBUBBLES_SERVER_URLmacOS 上運行的 BlueBubbles server 公網 URL(通常是隧道)。
BLUEBUBBLES_PASSWORD共享服務器密碼。入站採用純常量時間比對,無 HMAC。
BLUEBUBBLES_DEFAULT_CHAT_GUID默認 chat GUID,如 iMessage;-;+15551234567

Matrix

變量效果
MATRIX_HOMESERVERHomeserver URL(如 https://matrix.org)。
MATRIX_ACCESS_TOKEN長期 bearer。使用 Authorization: Bearer 頭;?access_token= query 形式已棄用。
MATRIX_USER_IDBot 用戶(如 @bot:example.org)。用於在 /sync 中過濾自循環。
MATRIX_DEFAULT_ROOM_ID默認房間 id(!abc:example.org)。入站 daemon 將 emit 限定在該房間。
MESSAGING_MATRIX_INBOUND設為 1 時,應用啟動時會拉起 /sync 長輪詢 daemon。Daemon 在首次運行時丟棄歷史事件;游標存於 <dataDir>/matrix-sync.json。不支持 E2EE。

客戶端外連入站 daemon

Telegram、Discord、Slack、Mattermost、QQ、DingTalk 和 Lark 都支持客戶端外連入站 daemon:Agent 主動向外建立並保持一條長連接(長輪詢或 WebSocket),而不必運行公網 webhook 服務器。這正是讓雙向對話能在沒有公網 IP、沒有隧道、沒有第三方的個人機器上工作的原因。當平臺的出站憑據已配置且未為其配置公網 webhook 時,對應 daemon 會自動啟動;下面的開關是對該自動判定的顯式三態覆蓋(留空 = 自動,1 = 強制開啟,0 = 強制關閉)。

變量效果
MESSAGING_TELEGRAM_POLLINGTelegram getUpdates 長輪詢。啟動時調用 deleteWebhook;游標存於 <dataDir>/telegram-updates.json。webhook 信號:TELEGRAM_WEBHOOK_SECRET
MESSAGING_DISCORD_GATEWAYDiscord Gateway WebSocket。還能投遞 Interactions webhook 收不到的普通頻道 / 私信消息。需要在 Discord 開發者門戶啟用特權 Message Content intent。webhook 信號:DISCORD_APPLICATION_PUBLIC_KEY
MESSAGING_SLACK_SOCKETSlack Socket Mode。需要 SLACK_APP_TOKEN。webhook 信號:SLACK_SIGNING_SECRET
MESSAGING_MATTERMOST_WSMattermost v4 WebSocket 機器人。可觸達 outgoing-webhook 無法觸達的私信和私有頻道。webhook 信號:MATTERMOST_OUTGOING_WEBHOOK_TOKEN
MESSAGING_QQ_WSQQ v2 網關 WebSocket。無 webhook 專用密鑰(webhook 複用 QQ_BOT_APP_SECRET),故優先使用 daemon;設為 0 改用 webhook。
MESSAGING_DINGTALK_STREAMDingTalk Stream Mode。需要 DINGTALK_STREAM_APP_KEY / DINGTALK_STREAM_APP_SECRETDINGTALK_WEBHOOK_SECRET 用於出站簽名而非入站,故不抑制 daemon;設為 0 改用 webhook。
MESSAGING_LARK_WSLark / Feishu 長連接,經官方 SDK。webhook 信號:LARK_VERIFICATION_TOKEN

MCP 集成

變量格式效果
MCP_SERVERSJSON 數組覆蓋默認 MCP 服務器列表。
DEFILLAMA_API_KEY不透明字符串DefiLlama Pro API 密鑰。為 typed defillama_* 工具鑑權(apps/agent/src/defillama/client.ts 在 Pro 主機呼叫時注入為 URL 路徑前綴)。用 tool_search namespace: "cap/defillama" 發現工具——無 skill 包。替代已棄用的 DEFILLAMA_MCP_TOKEN。未設置時 Pro 呼叫可走 Minara forward 或免費端點。
MCP_EVM_RPC_URLURLEVM JSON-RPC 原始子 Agent。
MCP_ETHERSCAN_URLURLEtherscan 風格的區塊瀏覽器(60+ EVM 鏈)。
MCP_SOLSCAN_URLURLSolscan Solana 區塊瀏覽器。
MCP_GOPLUS_URLURLGoPlus Web3 安全分析。

原生提供商密鑰(PR-A → PR-G 遷移)

提供商路由推出已下線了供應商 coinglass / coinank / query-token-audit / meme-rush / polymarket / okx-dex-token / okx-wallet-portfolio / okx-security / okx-dex-trenches SKILL.md 包。它們的功能現在存在於 apps/agent/src/tools/_shared/ 下的原生優先鏈以及 analysis.derivatives / market.flows / security.token / discovery.dex / prediction.markets 技能中。下面列出的環境變量控制原生提供商,而非舊版 SKILL.md 包。

變量激活的原生技能請求頭 / 用法
CMC_API_KEY優先鏈 cmc 提供商(minara.core.crypto_klineget_priceget_trending 中的價格 / 熱度備用)X-CMC_PRO_API_KEY
CMC_PRO_API_KEY保留供現存的供應商 cmc-api-* SKILL.md 包使用X-CMC_PRO_API_KEY
COINGECKO_API_KEY升級 coingecko-pro 提供商(價格 / K線 / 鏈上持有者)並解鎖現存 coingecko 外部 SKILL.md 中的專業級端點x-cg-pro-api-keyx-cg-demo-api-key
COINGLASS_API_KEYcoinglass skill :: CoinGlass v4 REST API 的類型化透傳(約 160 個只讀端點:期貨、現貨、期權、ETF 資金流、鏈上指數、交易所餘額、清算熱力圖),按品類各一個分類工具。同時為 btc_rainbow_band 工具供數。配置本地密鑰時直連 CoinGlass;未配置時該 skill 通過 Minara 後端轉發已放行的端點子集。CG-API-KEY
BINANCE_WEB3_API_KEY + BINANCE_WEB3_SECRET_KEY優先鏈 binance-web3-dex 提供商 :: 以太坊 / BSC / Base / Solana 上鍊上代幣數據(discovery.dex 元數據 / 持有人 / 池子)的首選,在這四條鏈上排序高於 coingecko 鏈上層級和 okx-dex;錢包聚合在查詢限定於這四條鏈(或未配置 OKX 四元組)時由它承接;同時控制 binance-web3 外部技能的啟用X-OC-* HMAC 對
OKX_API_KEY + OKX_SECRET_KEY + OKX_PASSPHRASE + OKX_PROJECT_ID優先鏈 okx-dex 提供商 :: discovery.dex(錢包聚合、DEX 代幣在 binance-web3-dex 之後的備用)、非幣安 Web3 鏈上的 security.token、幣安 Web3 未覆蓋的鏈上 meme.*OKX HMAC 四元組
FMP_API_KEY通過 tool_searchcap/fmp 命名空間發現的 FMP 公開股票數據工具?apikey= 查詢參數(由 apps/agent/src/fmp/client.ts 注入)

原生 prediction.markets 技能是只讀的(Polymarket 的公開 Gamma + CLOB 讀端點),無需任何環境變量。已下線的 external-polymarket SKILL.md 使用 PRIVATE_KEY / RPC_URL / POLY_BUILDER_* 來進行認證訂單下單;該寫入路徑尚未遷移,這些環境變量在 Agent 中已無消費者。

保留的外部技能包

PR-G 刪除後,這些 vendor 化的技能包仍保留在原地 (它們覆蓋了原生優先鏈尚未吸收的能力):

用途環境變量
external-binance超出公有 binance-public 提供商的現貨、槓桿、私有端點公有無需;私有需賬戶密鑰
external-coingecko鏈上 GeckoTerminal OHLCV + 超出優先鏈免費層的更深 coingecko 接口COINGECKO_API_KEY
external-hyperliquid原生 minara.perps_analytics 技能未覆蓋的用戶賬戶端點每用戶簽名密鑰
external-cmc-api-*(4 個包)超出價格、熱門排行的 CoinMarketCap 端點CMC_PRO_API_KEY
external-okx-defi-portfolioexternal-okx-dex-marketexternal-okx-dex-signalexternal-okx-dex-wsexternal-okx-audit-log不在原生 okx-dex 提供商中的 OKX Web3 / DeFi 接口OKX 四變量
external-diagram-designexternal-strategy-studio與提供商路由無關 : 保持不變

方法論學習閉環 : case 歸因 + synthesis(Phase 1-5)

Phase 1-5 系列引入的方法論學習閉環的調節參數(case-recorder、歸因 cron、synthesis)。全部可選 : 默認值面向生產環境調優。大多數運維方只 需關注 總開關和 synthesis 閾值。

總開關(事故響應)

變量作用何時翻
DISABLE_METHODOLOGY_INJECTION關閉讀路徑 : placeholder / fusion hint / methodology_lookup 工具。方法論停止在 prompt 和工具輸出中出現。LLM 被汙染的方法論語料帶偏;需要乾淨的 prompt 排查問題。
DISABLE_METHODOLOGY_CASE_RECORDING僅關閉 case 寫路徑。recordHint / finalizeTurn 成 no-op;讀路徑繼續工作。case 表 schema 遷移中;讀路徑仍需正常。
DISABLE_METHODOLOGY_MUTATIONS關閉所有方法論 mutation:recordUsage / recordOutcome / requantize / synthesis / case-attribution / setMethodologyQuarantine。讀路徑保留。Wilson 計數看起來已損壞;調查期間凍結一切。覆蓋範圍比上兩個更廣。

設為 1 / true / yes / on 啟用。其他值或未設保持路徑活躍。 熱讀 : 運維可不重啟 agent 翻轉。

Synthesis 調優(Phase 4 D)

變量默認值效果
METHODOLOGY_SYNTHESIS_FLAG_MEDIAN_BPS50加權窗口 median ≤ -0.5%(= -50 bps)觸發 regime_shift_flagged。值越小越敏感。
METHODOLOGY_SYNTHESIS_FLAG_HIT_RATE0.45加權 hit_rate 低於此值觸發 flag。值越大越敏感。
METHODOLOGY_SYNTHESIS_DEMOTE_MEDIAN_BPS200自動降級要求 median ≤ -2% AND 30 天樣本 ≥ 10 AND 終身 Wilson > 0.55。
METHODOLOGY_SYNTHESIS_HALFLIFE_DAYS147/30/90/180 天窗口的新鮮度半衰期。越小越對近期數據敏感。
METHODOLOGY_STRESS_THRESHOLD_PCT25黑天鵝熔斷器。當一輪 synthesis 中超過 25% 的同向方法論觸發自動降級時,抑制級聯,改施加臨時 factor=0.8。

價格質量(Phase 3 F4.3)

每個資產類別的日內絕對收益上限。7 天窗口按 sqrt(7) 放大。攔截單日 FX 印錯、拆股後的價格跳變、退市標的歸零等汙染 Wilson 的髒數據。

變量默認值備註
METHODOLOGY_PRICE_CAP_MAJOR_CRYPTO0.5日 50%
METHODOLOGY_PRICE_CAP_LAYER_10.5
METHODOLOGY_PRICE_CAP_LAYER_20.6L2 波動更大
METHODOLOGY_PRICE_CAP_DEFI_BLUE_CHIP0.6
METHODOLOGY_PRICE_CAP_MEME_COIN1.0meme 幣確實可能日內 100% 波動
METHODOLOGY_PRICE_CAP_STABLECOIN0.02激進 : 穩定幣不應日內波動 > 2%
METHODOLOGY_PRICE_CAP_STOCK0.15
METHODOLOGY_PRICE_CAP_INDEX0.1
METHODOLOGY_PRICE_CAP_COMMODITY0.2
METHODOLOGY_PRICE_CAP_FOREX0.05

Case-recorder 維護(Phase 2)

變量默認值效果
METHODOLOGY_HINT_ORPHAN_MS1800000(30 分鐘)pending hint 行被 orphan sweeper 標記 orphaned 前的 TTL。應大於 agent 單次合理 turn 時長。

Phase 5 : 跨 turn 橋接 + 調度器

變量默認值效果
METHODOLOGY_LEARNING_CRON_ENABLEDunset(off)啟用進程內調度器。設為 1 後 setInterval 自動跑 orphan sweep → 7d 標準歸因 → synthesis 全套。
METHODOLOGY_LEARNING_CRON_INTERVAL_MS21600000(6 小時)調度器節奏。clamp 在 [1 分钟, 7 天]
IS_PRIMARY_WORKERunset = 單進程默認 primary多進程 serve 模式下,僅一個 worker 應跑調度器。設為 1 表示 primary;其他 worker 設為 0

運營學習 cron

agent 默認自動調度學習 cron。運維方將下面任一 minara learning 子命令接入系統 cron / launchctl / systemd timer。推薦每日節奏:

# 每日 03:00 — sweep、归因、synthesize。幂等,错过的一次会在下一 tick 重放。
0 3 * * *  /usr/local/bin/minara learning cron --json >> /var/log/minara-learning.log

CLI 表面(Phase 4 E):

minara learning methodology explain <id>          # 当前状态 + 审计
minara learning methodology lifecycle [--kind k]  # 审计日志尾部
minara learning methodology cases [--asset c]     # case 表尾部
minara learning attribute                         # 一次 7d 归因 pass
minara learning synthesize [--asset c]            # 一次 synthesis pass
minara learning sweep-orphans                     # 一次 orphan sweep
minara learning cron                              # 上面全部

方法論審計子系統(被動觀察者)

一套只讀的審計子系統疊加在學習閉環之上,產出一個複合健康分。六個維度合成複合分:synthesis 決策穩定性、畢業後短期降級率、歸因健康度、資產類覆蓋度、隔離反覆檢測、cron 健康度。子系統永不變更學習狀態,唯一寫入是每次 pass 一行到 methodology_audit_reports。端到端測試在每次審計 pass 前後哈希四張學習表,一旦未來回歸引入寫入會立即失敗。

cron 與 agent loop 合作。每次 tick 檢查共享的 BusyTracker。如果有用戶對話在跑、或 agent 空閒時間不足配置的閾值,本次 tick 被推遲。連續 N 次推遲後,飢餓守衛強制執行,避免長期忙碌的部署丟失審計覆蓋。pass 執行過程中,orchestrator 在每個 SQL 階段之間向事件循環讓步,turn 進來時立即在 busy tracker 上暫停。

默認每天跑一次。cron_health 讀取 methodology_cron_runs 心跳錶,由 src/learning/methodology-cron.ts 在每次學習 tick 末尾寫入,所以歸因通道安靜(無可歸因 case)不會被誤判為閉環已死。

變量默認作用
METHODOLOGY_AUDIT_CRON_ENABLED0進程內審計調度器的開關。多 worker 部署同時遵循 IS_PRIMARY_WORKER
METHODOLOGY_AUDIT_CRON_INTERVAL_MS86400000(24h)tick 間隔。運行時夾緊到 [5min, 30d]
METHODOLOGY_AUDIT_WINDOW_DAYS30窗口型維度的回溯窗口。夾緊到 [1, 365]
METHODOLOGY_AUDIT_RETENTION_DAYS90methodology_audit_reports 行的保留期,每個本地日最多裁剪一次。夾緊到 [7, 3650]
METHODOLOGY_AUDIT_SKIP_BUSY_THRESHOLD_MS180000(3min)BusyTracker 報告繁忙或 idle 窗口短於此值時跳過本次 tick。夾緊到 [0, 1h]。設為 0 關閉預檢查。
METHODOLOGY_AUDIT_MAX_DEFERRED_TICKS4飢餓守衛。連續推遲達到此值後,下次 tick 無論繁忙狀態都強制執行。夾緊到 [0, 100]
METHODOLOGY_AUDIT_YIELD_TIMEOUT_MS60000(60s)pass 內每個讓步點等待 idle 的最長時間,超時後無論繁忙狀態都繼續。夾緊到 [0, 10min]
DISABLE_METHODOLOGY_AUDITunset1/true 短路寫路徑(cron + CLI audit run)。返回 band=disabled 佔位,不持久化。讀路徑(audit show/trend/findings)仍可用。

CLI 接口:

minara learning audit run [--window-days N]  # 内联单次 pass
minara learning audit show [--latest|--pass <id>]
minara learning audit trend [--days N]       # composite 历史 + sparkline
minara learning audit findings [--severity high|medium|low]

資金確認繞過(高級 : 生產警告)

MINARA_SKIP_FUND_CONFIRM 由統一確認門執行。設置後 fund-moving 調用跳過確認卡片並在首次調用即執行。case-recorder 同步 適配 : 繞過下執行的 turn 計為 fund_moving_executed 進行 Wilson 歸因。 不要在交互式或生產環境中設置。

主動式財富智能體

後臺監管循環負責運行每個已激活的委託(按市價標記持倉、止盈/止損/再平衡、記錄盈虧快照、寫入工作日誌),以及較慢的重新發現循環(尋找新機會)。這三項也可以在 設置 → 主動模式(以及主動模式模塊自身的設置頁)裡實時修改;下面的環境變量是啟動時的兜底。多 worker 部署只在 IS_PRIMARY_WORKER=1 的 worker 上運行該循環。

變量默認值作用
PROACTIVE_SUPERVISOR_ENABLED1(開)後臺監管器的總開關。0 會暫停每個已激活委託的自主活動;委託保持激活狀態,只是停止操作,直到你重新打開。
PROACTIVE_SUPERVISOR_INTERVAL_SEC900(15 分鐘)每個委託多久檢查一次持倉,單位為秒。運行時鉗制到 [10s, 1h]
PROACTIVE_REDISCOVER_INTERVAL_SEC1800(30 分鐘)委託多久尋找一次新機會(付費的重新規劃步驟),單位為秒。鉗制到 [1min, 24h]。每輪實時讀取,改動無需重啟即可生效。未配置模型時優雅跳過。

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

這些變量約束了 HTTP 402 / x402 支付牆的"一次付費後自動付費"功能。授權調用本身始終經過第 3b 條的兩步確認門控;在活躍會話範圍內匹配的後續付款跳過每次調用的用戶提示,直接通過 transfer_token 執行。每次自動扣費都會向響應寫入審計元數據(會話 ID + 剩餘預算),讓用戶可以追蹤每次扣費。

連接到:

  • apps/agent/src/minara/x402-preauth-store.ts : SQLite 存儲 + 上限計算
  • apps/agent/src/minara/x402-preauth-config.ts : 環境加載器 + 上限輔助函數
  • apps/agent/src/tools/_shared/confirm.tsshouldAutoExecuteX402 輔助函數
  • apps/agent/src/tools/trade.tstransfer_token 優先查詢自動執行策略
  • apps/agent/src/tools/x402-preauth.tsx402_preauth_grant / _list / _revoke
  • apps/agent/src/gateway/repl-commands.ts/x402 preauth CLI 入口
變量默認值格式效果
X402_PREAUTH_DEFAULT_TTL_HOURS24正整數(小時)調用 x402_preauth_grant 時未指定 ttl_hours 所應用的默認 TTL。
X402_PREAUTH_MAX_TTL_HOURS168(7 天)正整數(小時)非永久 TTL 的硬上限。請求更長期限的授權會被拒絕,錯誤字段為 field: "ttlMs"
X402_PREAUTH_ALLOW_FOREVER11/true/yes/on 表示允許0 時,ttl_hours: "forever" 的授權被拒絕,錯誤字段為 field: "forever"。永久預算上限仍被讀取用於文檔說明。
X402_PREAUTH_MAX_PER_CALL_USDC0.5正數(USDC)單次自動付款的硬上限。超過此金額的單次付款會降級為常規兩步確認,就算在活躍會話內::這是限制每次調用風險範圍的安全邊界。
X402_PREAUTH_MAX_BUDGET_USDC5正數(USDC)非永久會話的總預算上限。
X402_PREAUTH_MAX_FOREVER_BUDGET_USDC20正數(USDC)永久會話的總預算上限。獨立設置是因為移除時間約束需要更嚴格的金額控制。
X402_PREAUTH_DISABLE01/true/yes/on 表示禁用全局緊急停止開關。設置後,所有預授權代碼路徑短路,x402 付款降級為常規兩步確認流。可在事件應對或合規審計期間使用。

scope=any + ttl=forever 是最寬鬆的授權組合。 REPL 的 /x402 preauth grant 處理器對該組合需要雙重顯式確認; LLM 工具 x402_preauth_grant 永遠不會自動提議它。

OpenClaw 工作空間集成

Agent 讀取並寫入工作空間目錄(默認 ~/.minara/workspace/,可通過 MINARA_WORKSPACE_DIR 環境變量或 --workspace 標誌覆蓋),該目錄包含按 OpenClaw 的 AGENTS.default.md 模式建模的 markdown 文件:SOUL.md(身份)、AGENTS.md(規則)、IDENTITY.mdUSER.mdMEMORY.md(精選長期記憶)、HEARTBEAT.md(會話間備忘)、BOOTSTRAP.md(僅首次運行)、TOOLS.md(環境特定工具說明)和 memory/YYYY-MM-DD-*.md(日誌)。

模板位於 apps/agent/src/workspace/templates/ 下。啟動路徑在 createApp() 內自動調用 seedWorkspaceIfMissing(),使新安裝獲得完整文件集,無需操作員運行 minara setup。種子過程是冪等的 : 用戶編輯過的文件永遠不會被覆蓋。HEARTBEAT.md 有意不被種子化(Agent 在首輪結束時寫入真實的;種子化陳舊狀態會造成誤導)。

Web UI 的設置 → 工作空間面板通過網關的 /v1/workspace/files 端點編輯 ~/.minara/workspace/ 下的運行時文件,使用 sha256 樂觀併發控制。

連接到:

  • apps/agent/src/workspace/seed.tsseedWorkspaceIfMissing + atomicWriteFile
  • apps/agent/src/workspace/heartbeat-writer.ts : 每輪 ## State 寫入器
  • apps/agent/src/workspace/daily-log-writer.ts : 每會話日誌記錄
  • apps/agent/src/workspace/dreaming-task.ts : 定期 MEMORY.md 合併
  • apps/agent/src/workspace/bootstrap-handler.tsBOOTSTRAP_DONE 時歸檔
  • apps/agent/src/workspace/soul-change-detector.ts : 披露 SOUL.md 編輯
變量默認值格式效果
WORKSPACE_HEARTBEAT_ENABLED1(開啟)0/false/no/off 禁用每輪 HEARTBEAT.md 狀態寫入器。開啟時,每輪後 Agent 寫入 last_seensession_idsurfaceturn_countlast_user_query,外加從回覆中提取的啟發式 open_loops。用戶編輯的 ## Schedule 部分在寫入間通過 schedule_raw 往返同步保留原樣。在只讀工作空間掛載、CI 運行或隱私敏感場景下禁用。
WORKSPACE_DAILY_LOG_ENABLED0(關閉)1/true/yes/on 啟用每次到達寫入週期後,按 SQLite chat_turns 水位將全部未落盤 turn 寫入 <workspace>/memory/YYYY-MM-DD-<session>.md;保留真實 session、surface 和來源,不使用 correlation ID 代替 session。
WORKSPACE_DAILY_LOG_INTERVAL5正整數(輪)Journal backlog 的 flush 週期。每次都會寫完水位後的所有 turn;增大值只會延後落盤,不會抽樣丟棄中間 turn。
WORKSPACE_DREAM_ENABLED0(關閉)1/true/yes/on 啟用定期合併 MEMORY.md。自動來源 turn 保留在日誌中供審計,但在 LLM 前移除,Autopilot、策略、workflow、cron 和來源不明的 perps 執行不會變成人工偏好或案例。
WORKSPACE_DREAM_INTERVAL_HOURS24正數(小時,可小數)夢想運行間隔。前一次運行仍在進行時調度器跳過本次,故緩慢 LLM 調用無法堆積。WORKSPACE_DREAM_ENABLED 關閉時無效。
WORKSPACE_DREAM_TOTAL_INPUT_BYTES262144(256 KB)正整數(字節)單次 dream 餵給 LLM 的所有 daily 日誌總字節預算。日誌按"最新優先連續後綴"挑選,讓模型看到的總是一段時序連貫且包含最近活動的窗口。每個文件仍受 64 KB 上限做尾部截斷;最新一份日誌就算單獨超預算也保留。防止長窗口密集日誌爆掉模型 context。WORKSPACE_DREAM_ENABLED 為關閉時無效。
WORKSPACE_DREAM_LOCK_TTL_MS1800000(30 分鐘)正整數(毫秒)<workspace>/.dreaming.lock 的 TTL。超過此值的鎖被視為陳舊,可被其它進程接管。該值反映"單次 dream 最長合理執行時長",不應等於 tick 間隔。如果 LLM 調用經常超過 30 分鐘則調高。NFS 掛載的 workspace 不被支持(底層 O_EXCL 在部分 NFS 客戶端下不保證原子),請讓 dream 跑在單一主機上。WORKSPACE_DREAM_ENABLED 為關閉時無效。

MINARA_WORKSPACE_DIR--workspace CLI 標誌覆蓋讀寫的默認 ~/.minara/workspace/ 路徑,包括自動種子和網關編輯器。在指向現有 OpenClaw 工作空間時有用(--workspace ~/.openclaw/workspace)。

深度研究報告渲染

變量默認接受值用途
REPORT_BUNDLE_CHART_PNGS未設置(關閉)1 / true 啟用讓深度研究 HTML / PDF 報告退回到 v7 之前的 PNG 打包方式,而不是默認的可交互 ECharts。默認(關閉): 網關傳遞 ["html", "pdf"]renderDeepResearchReport,每個 chart://<id> 鏈接都會展開為 ECharts 官方文檔的標準嵌入模式(<div class="echart-host"> + 內聯 <script> 從 CDN 加載 echarts 完成渲染),用戶能直接縮放、懸浮看 tooltip、點工具欄按鈕下載 PNG。開啟: 網關傳遞 ["html", "pdf", "charts"]bundleChartPngs 通過無頭 playwright 把每張圖渲染為 <dir>/charts/<id>.png,HTML 嵌入 <img> 標籤。適用於離線分發或 echarts CDN 不可達的場景;代價是圖表變成靜態截圖,喪失交互。被 apps/agent/src/gateway/api.ts handleChatStream 的深度研究分支消費。

Point-in-time 財務快照

變量默認值用途
SEC_USER_AGENT未設置查詢 SEC EDGAR 時必填。使用 ProductName [email protected],讓 SEC 可以識別並聯系運營方。未設置時,shadowenforce 模式都會停用 PIT 快照構建。
PIT_FINANCIAL_SNAPSHOT_MODEshadowdata.pitFinancialSnapshots.mode 的啟動後備值:off 保留舊 Fundamentals 流程,shadow 構建並記錄快照但繼續使用舊輸入,enforce 將 PIT 快照和 Fundamentals 分析緩存設為權威輸入。Settings 中的偏好設置優先。

歷史快照只接納 SEC accepted time 不晚於請求截止時間的事實。FMP 數據只有在確定性匹配 SEC filing 後才能補充事實。Yahoo 當前摘要、市值、板塊、行業、TTM 數值和 DCF 始終屬於 latest-only approximation。

行為記憶

設置 BEHAVIOR_MEMORY_ENABLED=true 後才會開始採集。分類開關彼此獨立;資產上下文、交易和對話仍需顯式開啟。系統不保存請求/聊天正文、密鑰、地址、訂單參數或單項持倉。

變量默認值用途
BEHAVIOR_MEMORY_ENABLEDfalse採集總開關
BEHAVIOR_MEMORY_CAPTURE_{ENGAGEMENT,FEATURE_USAGE,CONFIGURATION,AUTOMATION,STRATEGY}true非敏感採集分類
BEHAVIOR_MEMORY_CAPTURE_{FINANCIAL_CONTEXT,TRANSACTION,CONVERSATION}false敏感聚合分類選擇性開關
BEHAVIOR_REFLECTION_ENABLED / BEHAVIOR_REFLECTION_INCLUDE_IN_MEMORYtrue / false行為反思與受限對話記憶橋接
BEHAVIOR_REFLECTION_CUSTOM_PROMPT僅用於反思的指導,最多 1,000 字符
BEHAVIOR_MEMORY_RAW_RETENTION_DAYS / BEHAVIOR_MEMORY_MAX_MB90 / 128保留期與 SQLite 軟上限
BEHAVIOR_MEMORY_BATCH_SIZE / BEHAVIOR_MEMORY_BATCH_KB / BEHAVIOR_MEMORY_FLUSH_MS / BEHAVIOR_MEMORY_QUEUE_MAX256 / 256 / 500 / 10000緩衝寫入限制
BEHAVIOR_MEMORY_PRESSURE_FREE_MB / BEHAVIOR_MEMORY_CRITICAL_FREE_MB / BEHAVIOR_MEMORY_DISK_CHECK_MS5120 / 1024 / 60000磁盤 GC、暫停與檢查閾值

添加新環境變量的檢查清單

合併前請完成:

  • 選定歸屬:preferences schema、API-key / messaging 登錄表,或 infra schema(不屬於 prefs/secrets 登錄表時加 exempt
  • 呼叫端透過 prefs.get / secrets.* / infra.get 讀取,而不是 process.env.<NAME>
  • apps/agent/src/config/env-docs/sections/ 對應章節添加說明塊(用途、消費者、何時設置、未設置時的默認值、值格式)
  • 對於域技能:設置 requires_env: ["<NAME>"],使技能在憑據缺失時自動隱藏
  • 對於工具:工廠函數在變量缺失時返回 [](啟動時絕不拋錯)
  • 變量名遵循約定 <PROVIDER>_API_KEY / <PROVIDER>_TOKEN / <PROVIDER>_<FIELD> : 大寫下劃線命名法,提供商前綴優先
  • 任何地方都未提交真實密鑰值

本頁目錄

TL;DR 約定.env 加載方式變量清單LLM 提供商擴展思考(Extended Thinking)web_search / web_extract 後端Minara 核心HTTP 網關安全與涉及資金的操作混合記憶檢索回測反饋循環(Sprint 6:在線結果填充器)個性化重建(M3.2 事件驅動閾值)交易摘要閾值記憶提取閾值共享配置項Agent 外歷史鏡像Hyperliquid 永續合約Strategy Studio(測試版)Harness RL機構模式(多 Agent 投研團隊模擬)自學習與 Phase B 反思(v2 PR 1 / PR 2)分析師恢復與規範資產預解析離線學習配置調優(Phase B 門控)方法論自優化循環(第 1-7 階段)階段 2 : 多週期回測 + 幻覺檢查第 3 階段 : 獎勵第 4 階段 / 7 : 方法論實例分發第6階段 :: BO 調優週期內置工具消息平臺(擴展集)Lark / FeishuWeCom(企業微信)DingTalk(釘釘)WeChat OA(公眾號)QQ BotLINEMattermostMicrosoft TeamsGoogle ChatBlueBubbles(iMessage)Matrix客戶端外連入站 daemonMCP 集成原生提供商密鑰(PR-A → PR-G 遷移)保留的外部技能包方法論學習閉環 : case 歸因 + synthesis(Phase 1-5)總開關(事故響應)Synthesis 調優(Phase 4 D)價格質量(Phase 3 F4.3)Case-recorder 維護(Phase 2)Phase 5 : 跨 turn 橋接 + 調度器運營學習 cron方法論審計子系統(被動觀察者)資金確認繞過(高級 : 生產警告)主動式財富智能體x402 支付牆預授權(PR-X)OpenClaw 工作空間集成深度研究報告渲染Point-in-time 財務快照行為記憶添加新環境變量的檢查清單