mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-09 00:40:45 +08:00
Alarm delivery moved to NetX DSH hub; drop /ws/netx-bridge and its tests. Co-authored-by: Cursor <cursoragent@cursor.com>
450 lines
23 KiB
Text
450 lines
23 KiB
Text
# =============================================================================
|
||
# 【仓库约定 — 必读】
|
||
#
|
||
# 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=
|
||
|
||
# -----------------------------------------------------------------------------
|
||
# 十五、模型请求:工具 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
|