oclaw/_local/system.env.example
2026-06-22 11:17:32 +08:00

452 lines
23 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# =============================================================================
# 【仓库约定 — 必读】
#
# 1) 新增「进程环境变量」(代码里新出现 os.getenv / 读取 os.environ)时:
# - 必须在本文件登记:变量名、含义、典型取值、与前端/管理后台是否有关联。
# - 提交代码评审时一并更新本模板(复制为 _local/system.env 后本地填写真实值;system.env 勿提交)。
#
# 2) 加载时机:网关入口 modules/http/fastapi_app.py 会调用 load_system_env(),
# 仅加载「_local/system.env」单一路径(platform/config/bootstrap_env.py)。
# 已在操作系统 / 启动脚本里 export 的变量优先级更高(不会被文件覆盖)。
#
# 3) 与 SQLite app_setting / 管理后台的关系:
# - 多数运行参数可在「管理后台」写入数据库;具体优先级以代码为准(常见:后台优先,
# 仅部分开关保留「环境变量优先」)。
# - 本节标注「仅存数据库」的项不要指望写在本 env 文件生效(除非代码明确读取 getenv)。
#
# 4) 布尔值约定:未特殊说明时,1/true/yes/on 表示开启;0/false/no/off 表示关闭。
#
# 用法:复制本文件为同目录 system.env,按需取消注释并填写。
# copy _local\system.env.example _local\system.env
# =============================================================================
# -----------------------------------------------------------------------------
# 一、HTTP 网关监听(uvicorn / FastAPI)
# -----------------------------------------------------------------------------
# AIA_ASSISTANT_GATEWAY_HOST 监听地址,默认 0.0.0.0。
# AIA_ASSISTANT_GATEWAY_PORT 监听端口,默认 8787。
# 【前端】无专门开关;由部署/启动脚本决定。
AIA_ASSISTANT_GATEWAY_HOST=0.0.0.0
AIA_ASSISTANT_GATEWAY_PORT=8787
# OCLAW_UVICORN_WS_MAX_SIZE uvicorn WebSocket 单帧最大字节;默认与 hello 里 maxPayload 一致(约 25MB)。
# 不设时 python -m oclaw... 仍用旧 uvicorn 默认 16MB,多图 base64 一条 chat.send 易超限被断连,前端报 ws_closed。
# 若用命令行启动 uvicorn,请自行加:--ws-max-size 26214400(或与 MAX_PAYLOAD_BYTES 一致)。
# OCLAW_UVICORN_WS_MAX_SIZE=
# AIA_PREWARM_INTERVAL_SECONDS 后台预热任务周期(秒),默认 600,合法范围代码内 clamp。
# 【前端】无。
AIA_PREWARM_INTERVAL_SECONDS=600
# -----------------------------------------------------------------------------
# 二、数据目录、SQLite、密钥与语言(进程级)
# -----------------------------------------------------------------------------
# AIA_ASSISTANT_DB_PATH / OPS_ASSISTANT_DB_PATH SQLite 库路径(二选一即可),相对路径相对仓库根。
# 【前端】无直接开关;决定连接哪份数据库文件。
AIA_ASSISTANT_DB_PATH=
OPS_ASSISTANT_DB_PATH=
# AIA_ASSISTANT_DB_BACKEND / OPS_ASSISTANT_DB_BACKEND 持久化后端:sqlite(默认)或 postgresql。
# 完整割接步骤与排障见 docs/ASSISTANT_PG_MIGRATION.md。
# 设为 postgresql 时需配置 AIA_ASSISTANT_DATABASE_URL。首次连 PG 前在实例上建库(如 CREATE DATABASE oclaw),再应用 schema:
# 推荐:alembic upgrade head(或执行 svc/persistence/ddl/postgresql_bootstrap.sql),可选再运行
# runtime/operations/scripts/migrate_assistant_sqlite_to_postgresql.py 从 SQLite 迁数据。
#
# 【Alembic】迁移脚本目录名为 assistant_migrations/(避免与 PyPI 包名 alembic 及 python -m alembic 冲突)。
# 仓库根执行:python -m alembic upgrade head(或 alembic.exe -c alembic.ini upgrade head)。
# 执行前请设置与本节相同的 PG 环境变量(至少 AIA_ASSISTANT_DB_BACKEND=postgresql 与 AIA_ASSISTANT_DATABASE_URL),以便 env.py 连上目标库。
#
# 【割接到 PostgreSQL(生产/联调)建议顺序】
# 1) 备份当前 SQLite 主库文件(db_path 指向的路径)。
# 2) 在 PG 上 CREATE DATABASE …(如 oclaw),并对该库执行 alembic upgrade head。
# 3) 运行导入(空库),任选其一(均依赖本机已安装 requirements.txt 含 psycopg、SQLAlchemy):
# · Linux / 无头设备:chmod +x runtime/operations/scripts/assistant_import_sqlite_to_postgresql.sh
# 后执行 ./runtime/operations/scripts/assistant_import_sqlite_to_postgresql.sh --dry-run 再去掉 --dry-run。
# 或 ./runtime/operations/scripts/cutover_sqlite_to_postgresql.sh(含 SQLite 文件备份 + dry-run + 导入)。
# · Windows:powershell -ExecutionPolicy Bypass -File runtime/operations/scripts/cutover_sqlite_to_postgresql.ps1 -LoadSystemEnv
# · 直接 Python(URL 可读环境变量或 _local/system.env + --load-system-env):
# python runtime/operations/scripts/migrate_assistant_sqlite_to_postgresql.py --load-system-env --sqlite-from-db-path --dry-run
# 或显式:--sqlite <路径> [--pg-url <postgresql+psycopg或 postgresql 连接串>]
# 默认要求 PG 各表为空;若需叠加数据用 --allow-non-empty(自担风险)。
# 4) 核对脚本末尾 verify 行数一致后,将 AIA_ASSISTANT_DB_BACKEND=postgresql 与 AIA_ASSISTANT_DATABASE_URL 写入 system.env / 部署环境并重启网关。
# 【应用启动顺序】PostgreSQL 模式下须先对目标库执行 schema 迁移(alembic upgrade head),再启动网关;不要在空库上直接启动生产实例(缺表会失败)。数据割接时顺序为:备份 SQLite → 建库并迁移 → 导入脚本 → 再切换 env 并启动应用。
AIA_ASSISTANT_DB_BACKEND=
OPS_ASSISTANT_DB_BACKEND=
# AIA_ASSISTANT_DATABASE_URL / OPS_ASSISTANT_DATABASE_URL PostgreSQL 连接串。
# 可用 libpq 形式:postgresql://user:pass@host:5432/dbname
# 也可用 SQLAlchemy 形式:postgresql+psycopg://user:pass@host:5432/dbname(与 SQLAlchemy URL 一致;原生 psycopg 连接前会自动去掉 +psycopg)。
# 别名:AIA_ASSISTANT_PG_DSN / OPS_ASSISTANT_PG_DSN。
# AIA_TEST_PG_URL 仅 pytest:若设置,tests/test_database_backend.py::test_get_assistant_store_postgresql_smoke 会连真实 PG;
# 可与 AIA_ASSISTANT_DATABASE_URL 填同一串(含 postgresql+psycopg:// 亦可)。
AIA_ASSISTANT_DATABASE_URL=
OPS_ASSISTANT_DATABASE_URL=
AIA_TEST_PG_URL=
# AIA_ASSISTANT_PG_CONNECT_TIMEOUT 原始 psycopg 连接超时(秒),默认 10,范围 1–120(见 svc/persistence/pg_adapter.py)。
AIA_ASSISTANT_PG_CONNECT_TIMEOUT=
# AIA_LOG_CHAT_MESSAGE_PERSIST 设为 1/true/on 时,每次成功写入 chat_message 后打一条 WARNING 日志(含 backend、session_id、message_id、role、event_type),便于在 gateway.err.log 里 grep「chat_message_persisted」;默认关闭。
# AIA_LOG_CHAT_MESSAGE_PERSIST=
# AIA_ASSISTANT_MASTER_KEY 用于加密迁移密钥等;不设则部分迁移不可用。
# 【前端】管理后台「密钥迁移」相关界面会检测是否配置(提示文案)。
AIA_ASSISTANT_MASTER_KEY=
# AIA_ASSISTANT_PASSWORD / OPS_ASSISTANT_PASSWORD 管理后台登录密码(旧名 OPS_* 兼容)。
# 【前端】登录表单;环境变量常用于自动化部署注入初始密码。
# 若两者与数据库 secret(auth_password) 都未配置,系统会回落到默认初始密码:admin123(建议首次登录后立即改密)。
AIA_ASSISTANT_PASSWORD=
OPS_ASSISTANT_PASSWORD=
# AIA_ASSISTANT_LANG 全局默认语言倾向(如 zh),具体会话可被覆盖。
# 【前端】聊天语言一般由会话/UI 控制。
AIA_ASSISTANT_LANG=
# AIA_ASSISTANT_PREMERGE_BACKUP_KEEP / OPS_* 数据库预合并备份保留策略相关。
# AIA_LEGACY_DB_FORCE_PREMERGE / OPS_* 是否强制走遗留库合并逻辑。
AIA_ASSISTANT_PREMERGE_BACKUP_KEEP=
OPS_ASSISTANT_PREMERGE_BACKUP_KEEP=
AIA_LEGACY_DB_FORCE_PREMERGE=
OPS_LEGACY_DB_FORCE_PREMERGE=
# -----------------------------------------------------------------------------
# 三、主配置文件路径(oclaw.json 与别名)
# -----------------------------------------------------------------------------
# AIA_OCLAW_CONFIG_PATH 主配置 JSON(agents、工作区等);多处 gateway/direct_loop 读取。
# OCLAW_CONFIG_PATH 别名,hooks_runtime / user_config_hooks / gateway server_methods 等。
# 【前端】无单一开关;配置内容决定模型与工作区。
AIA_OCLAW_CONFIG_PATH=
OCLAW_CONFIG_PATH=
# OCLAW_RUNTIME_CONFIG_JSON 内联 JSON 配置片段(调试/容器注入)。
OCLAW_RUNTIME_CONFIG_JSON=
# -----------------------------------------------------------------------------
# 四、工作区与路径守护(工具可读目录)
# -----------------------------------------------------------------------------
# OCLAW_WORKSPACE 逻辑工作区根路径;多处注入 prompt / hooks。
# OCLAW_STATE_DIR Agent 状态目录,默认 .oclaw。
# OCLAW_SHELL 子进程 shell 覆盖。
# OCLAW_HOME boot-md / command-logger 等与 OCLAW_STATE_DIR 二选一的别名路径。
OCLAW_WORKSPACE=
OCLAW_STATE_DIR=.oclaw
OCLAW_SHELL=
OCLAW_HOME=
# AIA_WORKSPACE_ROOT / OPS_WORKSPACE_ROOT 路径守护主根覆盖。
# AIA_WORKSPACE_EXTRA_ROOTS / OPS_* 额外允许访问的根,竖线或分隔符依代码。
# 【前端】Admin「用户/会话」里「额外根路径」等与上述 env 合并(见 app.js 文案)。
AIA_WORKSPACE_ROOT=
OPS_WORKSPACE_ROOT=
AIA_WORKSPACE_EXTRA_ROOTS=
OPS_WORKSPACE_EXTRA_ROOTS=
# AIA_MCP_FILESYSTEM_EXTRA_ROOTS / OPS_* MCP 官方 filesystem 进程额外根路径。
# 【前端】管理后台「网关/MCP」设置项可写库;与此 env 合并。
AIA_MCP_FILESYSTEM_EXTRA_ROOTS=
OPS_MCP_FILESYSTEM_EXTRA_ROOTS=
# -----------------------------------------------------------------------------
# 五、Expert Plan / Agent v2(专家模式计划态)
# -----------------------------------------------------------------------------
# AIA_EXPERT_PLAN_AGENT_V2_ENABLED 是否启用 expert 下的 plan_agent_v2 网关分支。
# 取值 1/true/on:启用;留空或 0/false:否。
# 优先级:SQLite app_setting 非空则优先于 env(见 runtime/plan_agent_v2/switch.py)。
# 【前端】聊天 ⋯ 菜单里「Plan / Agent 版本」选 v2/v1 会通过 /admin/api/chat/user-mode 写入同一键(v2→1,v1→0)。
# 首次在未写入库前仅 env 生效;一旦在菜单里保存过,以库为准。
AIA_EXPERT_PLAN_AGENT_V2_ENABLED=0
# 【仅存数据库 · 写在此处无效】AIA_EXPERT_PLAN_CONFIRM_STRATEGY(strict/auto/off)
# 计划确认策略;由 Admin chat API 写入库;前端 chat.js「确认策略」菜单与会话同步。
# 【仅存数据库 · 写在此处无效】AIA_EXPERT_PLAN_FILE_DIR 计划文件目录。
# 【仅存数据库】会话级 execution_mode / confirm_strategy 走接口元数据与 chat_api,不靠 getenv。
# -----------------------------------------------------------------------------
# 六、LLM 提供商密钥与默认模型(环境兜底;正式账号多在 DB llm_profile)
# -----------------------------------------------------------------------------
OPENAI_API_KEY=
OPENAI_BASE_URL=
OPENAI_MODEL=
OPENAI_EMBEDDING_MODEL=
ANTHROPIC_API_KEY=
ANTHROPIC_BASE_URL=
ANTHROPIC_MODEL=
GOOGLE_API_KEY=
GEMINI_API_KEY=
OLLAMA_BASE_URL=
OPENAI_BASE_URL_OLLAMA=
OLLAMA_MODEL=
DASHSCOPE_API_KEY=
DASHSCOPE_BASE_HTTP_API_URL=
# AIA_ASSISTANT_MODE 全局助手模式字符串(与 chat_models 等协调);测试里可用 OPS_ASSISTANT_MODE。
AIA_ASSISTANT_MODE=
# --- OpenAI 兼容「思考」字段 ---
AIA_LLM_THINKING_FORCE_DISABLED=
AIA_LLM_THINKING_FORCE_ENABLED=
AIA_LLM_THINKING_DISABLED=
# --- Gemini SSE ---
AIA_GEMINI_THINKING=
AIA_GEMINI_THINKING_LEVEL=
AIA_GEMINI_THINKING_BUDGET=
# -----------------------------------------------------------------------------
# 七、直连循环(direct_loop):空回复、工具结果长度、trace
# -----------------------------------------------------------------------------
AIA_IMAGE_TOOL_RESULT_REPLAY_CAP_CHARS=
AIA_VIDEO_TOOL_RESULT_REPLAY_CAP_CHARS=
AIA_TOOL_WIRE_FROZEN_ON_STARTUP=
AIA_TRACE_TOOL_EXPOSURE_PLAN=
AIA_EMPTY_ASSISTANT_RETRY_MAX=
AIA_EMPTY_ASSISTANT_RETRY_DELAY_MS=
AIA_EMPTY_ASSISTANT_RETRY_TOTAL_TIMEOUT_MS=
# 【管理后台】部分同名项可在运维设置里配置(如 AIA_SSE_QUEUE_MAXSIZE);chat_api 读 env 作兜底。
AIA_SSE_QUEUE_MAXSIZE=
# -----------------------------------------------------------------------------
# 八、工具清单 / MCP / 插件 / 高风险工具可见性
# -----------------------------------------------------------------------------
AIA_SKILL_TOOLCALL_ENABLED=
AIA_PUBLIC_TOOLS_ALLOW_HIGH=
AIA_ENABLE_MCP_TOOLS=1
OPS_ENABLE_MCP_TOOLS=
AIA_PLUGIN_TOOLS_ENABLED=1
AIA_PLUGIN_TOOL_IDS=
AIA_ENABLE_RUN_COMMAND=
AIA_LOCAL_ADAPTER_STARTUP_SELF_CHECK=1
# AIA_MCP_SPECIALISTS 允许使用 MCP 的专家角色列表,逗号分隔。
AIA_MCP_SPECIALISTS=generalist,manager
# AIA_MCP_ENV_ALLOWLIST 补充名单:仅用于「未写入 mcp_local.env,但要从宿主/Docker 环境透传到 MCP」的变量名。
# 写入 oclaw/_local/mcp_local.env(或 data/mcp_local.env 等合并路径)的键会自动传入 MCP,不必出现在本列表。
# 非空则整表替换内置默认补充名(慎用);一般留空即可。
# 【前端】管理后台可维护同名设置。
AIA_MCP_ENV_ALLOWLIST=
# AIA_MCP_ENV_ALLOWLIST_EXTRA 在「内置默认补充名」或上面整表替换结果之后,再追加的补充变量名,逗号分隔。
AIA_MCP_ENV_ALLOWLIST_EXTRA=
# AIA_MCP_SQLITE_COMMAND 表格附件走 MCP 时的 sqlite 命令路径覆盖。
AIA_TABULAR_USE_MCP=
AIA_TABULAR_SQL_TIMEOUT_MS=
# -----------------------------------------------------------------------------
# 九、工具运行时:上下文长度、日志、历史摘要
# -----------------------------------------------------------------------------
AIA_TOOL_LLM_MESSAGE_MAX_CHARS=
AIA_TOOL_HISTORY_SUMMARY_AFTER_CALLS=
AIA_TOOL_LOG_MAX_CHARS=
# -----------------------------------------------------------------------------
# 十、Skills 根目录与注入
# -----------------------------------------------------------------------------
AIA_SKILLS_ROOT=
AIA_DISABLE_LEGACY_SKILLS_FALLBACK=
AIA_SKILLS_PROMPT_IN_SYSTEM=
AIA_SKILLS_PROMPT_MAX_CHARS=18000
# AIA_SKILL_ROLE_BINDING_ENABLED / AIA_SKILL_ROLE_BINDING_MANAGER_INHERIT
# 技能与角色绑定;env 优先于 store(见 runtime/skill_role_binding.py)。
# 【前端】高级设置里可操作同名开关(app.js 文案引用)。
AIA_SKILL_ROLE_BINDING_ENABLED=
AIA_SKILL_ROLE_BINDING_MANAGER_INHERIT=
# --- ClawHub ---
AIA_CLAWHUB_SITE=
AIA_CLAWHUB_REGISTRY=
AIA_CLAWHUB_TOKEN=
AIA_CLAWHUB_API_BASE=
CLAWHUB_SITE=
CLAWHUB_REGISTRY=
CLAWHUB_TOKEN=
# --- Cocoloop ---
AIA_COCOLOOP_API_BASE=
COCOLOOP_API_BASE=
# -----------------------------------------------------------------------------
# 十一、附件 ACL、体积上限
# -----------------------------------------------------------------------------
AIA_ATTACHMENT_ACL_STRICT=
AIA_MAX_ATTACHMENT_BYTES=
# -----------------------------------------------------------------------------
# 十二、路由与运行时日志
# -----------------------------------------------------------------------------
# 详见 docs/LOGGING.md。根目录默认:<db_path 父目录>/logs(常为 data/logs/)。
AIA_OCLAW_ROUTER_MODE=
AIA_RUNTIME_LOG_DIR=
# OCLAW_DESKTOP_LOG_ROOT 可选;Electron 写 desktop.log/backend.log 的根;start_desktop.ps1 会设为与 AIA_RUNTIME_LOG_DIR 相同。
OCLAW_DESKTOP_LOG_ROOT=
# OCLAW_LOG_LEVEL / AIA_LOG_LEVEL 应用与 uvicorn 文件日志级别,默认 INFO。
# OCLAW_LOG_MAX_BYTES 单文件上限(字节),默认 20971520(20 MiB)。
# OCLAW_LOG_BACKUP_COUNT 轮转保留份数,默认 5。
# AIA_LOG_TO_FILE 设为 0/false/off 时不写 app/*.log(pytest 也会跳过文件 handler)。
# OCLAW_HOOK_LOG_USE_STATE_DIR 设为 1/true 时,command-logger / boot-md 改回 ~/.oclaw/logs(或 OCLAW_STATE_DIR/logs);默认写入运行日志根下 hooks/。
OCLAW_LOG_LEVEL=
OCLAW_LOG_MAX_BYTES=
OCLAW_LOG_BACKUP_COUNT=
AIA_LOG_TO_FILE=
OCLAW_HOOK_LOG_USE_STATE_DIR=
# -----------------------------------------------------------------------------
# 十三、RAG / 记忆
# -----------------------------------------------------------------------------
AIA_RAG_MODE=
AIA_RAG_EMBEDDING_MODE=
AIA_MEMORY_EPISODIC_TTL_DAYS=
MEMORY_EPISODIC_TTL_DAYS=
# -----------------------------------------------------------------------------
# 十四、WebSocket(/ws)
# -----------------------------------------------------------------------------
OCLAW_WS_REQUIRE_AUTH=1
OCLAW_WS_ALLOWED_ORIGINS=
OCLAW_WS_RATE_LIMIT_WINDOW_MS=60000
OCLAW_WS_RATE_LIMIT_CONN_PER_WINDOW=120
OCLAW_WS_RATE_LIMIT_IP_PER_WINDOW=240
OCLAW_WS_RATE_LIMIT_USER_PER_WINDOW=360
OCLAW_WS_SEND_QUEUE_MAX_MESSAGES=256
OCLAW_WS_SEND_QUEUE_MAX_BYTES=
OCLAW_WS_EVENT_REPLAY_MAX=256
# netx -> oclaw AP 分析接口共享 token(可选;设置后可用 Bearer 直接访问 /admin/api/ops-ai/analyze-sync)
OCLAW_OPS_AI_SHARED_TOKEN=
# netx -> oclaw 告警 WSS(/ws/netx-bridge)独立 token,与 OPS_AI 分开
OCLAW_NETX_BRIDGE_TOKEN=
# -----------------------------------------------------------------------------
# 十五、模型请求:工具 JSON、Replay 策略、Agent 消息回放
# -----------------------------------------------------------------------------
AIA_OPENAI_TOOLS_MAX_JSON_CHARS=
AIA_SHRINK_OPENAI_TOOLS=
AIA_SHRINK_OPENAI_TOOLS_MAX_JSON=
# OpenAI 兼容 /chat/completions:默认在每个 tools[].function 写入 strict: true;网关因未知字段 400 时设为 0。
AIA_TOOL_FUNCTION_STRICT=
AIA_REPLAY_POLICY_ENABLED=
AIA_REPLAY_REPAIR_TOOL_PAIRING=
AIA_TOOL_CALL_ID_MAX_LEN=
AIA_REPLAY_TOOL_FULL_ROUNDS=
AIA_REPLAY_REASONING_SIGNATURE_POLICY=
# -----------------------------------------------------------------------------
# 十六、图片 / OCR 多模态通道(OpenAI-compatible;preferred 名称)
# -----------------------------------------------------------------------------
OPENAI_IMAGE_MODEL=
OPENAI_AUDIO_TRANSCRIPTION_MODEL=
# query_image_attachment、OCR 降级 send_ocr_image_messages — 仅用 AIA_OCR_*(与图片专家互不继承)
AIA_OCR_MODEL=
AIA_OCR_BASE_URL=
AIA_OCR_API_KEY=
AIA_OCR_CHAT_ENDPOINT=
# specialist=image → send_legacy_image_messages — 仅用 AIA_IMAGE_EXPERT_*(禁止与 AIA_OCR_* 混用通道)
AIA_IMAGE_EXPERT_MODEL=
AIA_IMAGE_EXPERT_BASE_URL=
AIA_IMAGE_EXPERT_API_KEY=
AIA_IMAGE_EXPERT_CHAT_ENDPOINT=
# compatible-mode defaults to OpenAI vision blocks (type + image_url/text). Set to 1 only if your gateway
# requires DashScope doc shape without "type" on each content part (may break OpenAI-compatible gateways).
# AIA_IMAGE_EXPERT_COMPAT_USE_DASHSCOPE_NATIVE_BLOCKS=
# Max input images per turn (1–12; default 8).
# AIA_IMAGE_EXPERT_MAX_INPUT_IMAGES=
# Multi-turn image specialist: inherit images from assistant/user history when this turn has no attachment (0=off).
# AIA_IMAGE_SPECIALIST_SESSION_IMAGE_FALLBACK=
# AIA_IMAGE_SPECIALIST_FALLBACK_SCAN_MESSAGES=
# Optional; image expert top-level kwargs (parity with DashScope multimodal-gen samples)
DASHSCOPE_IMAGE_STREAM=
DASHSCOPE_IMAGE_N=
DASHSCOPE_IMAGE_WATERMARK=
DASHSCOPE_IMAGE_NEGATIVE_PROMPT=
DASHSCOPE_IMAGE_PROMPT_EXTEND=
DASHSCOPE_IMAGE_SIZE=
CLOUDFLARE_ACCOUNT_ID=
CLOUDFLARE_API_TOKEN=
# -----------------------------------------------------------------------------
# 十七、Web 搜索(official Bing/Google HTTP API)
# -----------------------------------------------------------------------------
OCLAW_WEB_SEARCH_OFFICIAL_API_KEY=
OCLAW_WEB_SEARCH_OFFICIAL_API_ENDPOINT=
OCLAW_WEB_SEARCH_BING_API_KEY=
OCLAW_WEB_SEARCH_BING_API_ENDPOINT=
OCLAW_WEB_SEARCH_GOOGLE_API_KEY=
OCLAW_WEB_SEARCH_GOOGLE_CSE_ID=
OCLAW_WEB_SEARCH_GOOGLE_API_ENDPOINT=
# -----------------------------------------------------------------------------
# 十八、微信 / 企业微信 长连接 Runner(interfaces/channels/wecom)
# -----------------------------------------------------------------------------
WECOM_LONGCONN_MODE=
WECOM_LONGCONN_INTERVAL_SEC=
WECOM_LONGCONN_WS_URL=
WECOM_LONGCONN_PULL_URL=
WECOM_LONGCONN_SEND_RETRY=
WECOM_LONGCONN_MOCK_TEXT=
WECOM_LONGCONN_DELIVER_OUTBOUND=
WECOM_LONGCONN_USE_RESPONSE_URL=
AIA_WECOM_LONGCONN_WORKERS=
WECOM_LONGCONN_WORKERS=
AIA_WECOM_LONGCONN_INBOUND_QUEUE_MAXSIZE=
WECOM_LONGCONN_INBOUND_QUEUE_MAXSIZE=
# -----------------------------------------------------------------------------
# 十九、Wiki Worker、杂项、对外版本号
# -----------------------------------------------------------------------------
AIA_WIKI_WORKER_POLL_SECONDS=4
AIA_WIKI_WORKER_ID=wiki-worker-main
AIA_ILINK_BOT_TOKEN=
OCLAW_VERSION=0.1
# runtime/operations/main.py 启动时可写入:
# AIA_ASSISTANT_GATEWAY_HOST / PORT(已由第一节覆盖)
# -----------------------------------------------------------------------------
# 二十、Skill 内第三方(示例:Tavily)
# -----------------------------------------------------------------------------
TAVILY_API_KEY=
# -----------------------------------------------------------------------------
# 二十一、下列 keys 常在「管理后台 → 网关/运维」中配置(SQLite),与 env 二选一或叠加
# 若代码未 getenv,请使用后台保存;不要仅写在本文件。
# -----------------------------------------------------------------------------
# AIA_TURN_MAX_CONTEXT_MESSAGES / AIA_TURN_MAX_TOOL_ROUNDS (默认 100,上限 300) / AIA_TURN_MAX_TOOL_WORKERS
# AIA_OCLAW_MAX_ATTEMPTS
# AIA_ENABLE_PLUGIN_TOOLS(注意与 AIA_PLUGIN_TOOLS_ENABLED 命名区分,以后台为准)
# AIA_TOOL_CONTEXT_TRUNCATE_ENABLED
# AIA_CHAT_SHOW_TTFT_DEBUG
# AIA_SKILL_RUNTIME_ENABLED / AIA_SKILL_AUTO_INSTALL_ENABLED
# AIA_OCLAW_RETRYABLE_ERROR_CODES / AIA_OCLAW_RETRY_CODES_STRICT_MODE
# rag_mode、embedding 相关部分亦在后台 memory/RAG 页
# 【前端】多数上述项在 Admin 设置表单中有对应勾选或输入框。
# -----------------------------------------------------------------------------
# 二十二、netx(ops:UME 告警 / 纳管网元 CLI / 诊断)
# -----------------------------------------------------------------------------
# 推荐路径:Admin 安装 netx MCP(server_id=netx),MCP env 使用 NETX_API_URL / NETX_API_TOKEN。
# 见 docs/NETX_MCP_INTEGRATION.md。
# OCLAW_NETX_BUILTIN_TOOLS 默认 0;设为 1 时额外注册旧版 inline netx_* 工具(迁移期双轨,勿与 MCP 同时暴露给模型)。
# OCLAW_NETX_BASE_URL 仍用于 runtime 锚点 HTTP 探测;与 MCP 的 NETX_API_URL 通常相同。
# UME:/v1/ume/alarms、/v1/ume/inventory/ne 等;纳管网元:/v1/managed-ne、/v1/managed-ne/exec。
# OCLAW_NETX_API_TOKEN 可选;netx 若启用 Bearer 鉴权,填与 netx 侧一致的 token(MCP env 亦需一致)。
# OCLAW_OPS_NETX_CONTEXT_INJECT 默认 1;ops 专家每轮把 netx 最新 UME 同步锚点注入 system。
# 设为 0/false/off 可关闭(压测或 netx 不可达时减少噪音)。
# 【前端】无;仅进程环境变量。
OCLAW_NETX_BUILTIN_TOOLS=0
OCLAW_NETX_BASE_URL=http://127.0.0.1:8890
OCLAW_NETX_API_TOKEN=
OCLAW_OPS_NETX_CONTEXT_INJECT=1