## 模型逻辑清理 早期把模型 API 端点/密钥/模型 ID 硬编码的残留(AGENT_API_* / THINKING_* / TITLE_* 三件套)已彻底移除。模型配置统一由 config/custom_models.json (经 model_profiles 解析为档案)描述,运行时通过 apply_profile 注入; 没有任何可用模型时按既定行为报错。 - config/api.py: 删 9 个三件套符号,仅保留 DEFAULT_RESPONSE_MAX_TOKENS - utils/api_client.py: client 改为空配置起步,移除三件套 import - server/chat_flow_helpers.py: 删死 import(TITLE_* 符号) ## 部署级配置外置(按"决策权归谁"分类) config/*.json 不再一概锚定源码树: - 程序能力(docker_risk_markers / skill_hints)留源码树,随版本演进 - 部署者自定义(custom_models / host_workspaces / auto_approval / goal_review / forbidden_commands / host_sandbox_policy)外置到 ~/.agents/<mode>/config/ 新增统一解析机制(config/paths.py): - DEPLOY_CONFIG_DIR(默认 ~/.agents/<mode>/config,可用环境变量覆盖) - resolve_deploy_config():只读,回退链 部署目录→源码树.json→源码树.example (开发环境不必先跑 setup 也能用源码树种子) - deploy_config_path():写回用,稳定指向部署目录 6 个加载点改用上述解析;顺带修复 approval_agent / goal_review_agent 的 DEBUG_TRANSCRIPT_DIR 仍指旧源码树 logs/ 的漏迁问题。 ## 安全与运维 - 含密钥/机器特定的 5 个文件停止 git 追踪(git rm --cached,本地保留) 并加入 .gitignore,仓库仅留 .example 种子;forbidden_commands 保留 追踪作默认黑名单 - scripts/setup.py: 模型配置写到部署目录(用与 paths 一致的独立推导, 不 import config 以免过早锁定路径) - scripts/migrate_runtime_data.py: 新增 config/*.json → 部署目录迁移 (备份 + 不覆盖已存在) ## 关联:P1 配置收敛 + P2 首启向导 - config/server.py: Web 端口/监听地址/debug/NODE_BIN/PYTHON_BIN 单一事实源 - 消灭 8091 多处重复定义(state.py 死代码、app_legacy、main.py 各读各的) - 修复 sub_agent_manager 命令数组硬编码 "node" → NODE_BIN(便携包内置 Node 的前提) - scripts/setup.py: 终端首启向导(模式/端口/管理员/密钥/模型) ## 测试 test_config_paths_resolution 更新以反映新行为(host_workspaces 锚定部署 目录、新增 DEPLOY_CONFIG_DIR 用例);全部离线用例通过。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
90 lines
3.5 KiB
Plaintext
90 lines
3.5 KiB
Plaintext
# === API Keys ===============================================================
|
||
# 基础推理模型(必填)
|
||
AGENT_API_BASE_URL=https://api.example.com
|
||
AGENT_API_KEY=your-api-key
|
||
AGENT_MODEL_ID=deepseek-chat
|
||
|
||
# 智能思考模型(可选,留空则回退到基础模型)
|
||
AGENT_THINKING_API_BASE_URL=
|
||
AGENT_THINKING_API_KEY=
|
||
AGENT_THINKING_MODEL_ID=
|
||
|
||
# 对话标题生成模型(可选,留空则回退到基础推理模型)
|
||
AGENT_TITLE_API_BASE_URL=
|
||
AGENT_TITLE_API_KEY=
|
||
AGENT_TITLE_MODEL_ID=
|
||
|
||
# 第三方搜索(可选)
|
||
AGENT_TAVILY_API_KEY=
|
||
AGENT_TAVILY_API_KEY_2=
|
||
AGENT_TAVILY_API_KEY_BACKUP=
|
||
# 使用哪个 Tavily 环境变量请在 config/search.py 里改 TAVILY_API_KEY_ENV_NAME
|
||
|
||
# 每轮最大响应 token(可选)
|
||
AGENT_DEFAULT_RESPONSE_MAX_TOKENS=32768
|
||
|
||
# === 管理员账户 ===============================================================
|
||
# 使用 `python - <<'PY' ... generate_password_hash` 生成哈希
|
||
AGENT_ADMIN_USERNAME=admin
|
||
AGENT_ADMIN_PASSWORD_HASH=
|
||
|
||
# === Web Session =============================================================
|
||
WEB_SECRET_KEY=replace-with-random-hex
|
||
|
||
# === Web 服务 ================================================================
|
||
# 监听端口(统一来源,main.py / server.app / state 均读取此项)
|
||
WEB_SERVER_PORT=8091
|
||
# 监听地址:多用户/服务器用 0.0.0.0;单机便携包建议 127.0.0.1 只听本机
|
||
WEB_SERVER_HOST=0.0.0.0
|
||
# 调试模式(同时控制 Flask reloader),生产保持 0
|
||
WEB_SERVER_DEBUG=0
|
||
|
||
# === 运行环境二进制(便携 release 包用,开发环境留默认即可)==================
|
||
# 子智能体使用的 node 可执行文件;留 "node" 表示走系统 PATH
|
||
AGENT_NODE_BIN=node
|
||
# Python 解释器路径;留空表示使用当前进程的 sys.executable
|
||
AGENT_PYTHON_BIN=
|
||
|
||
# === 终端容器沙箱 =============================================================
|
||
# 模式:docker / host
|
||
TERMINAL_SANDBOX_MODE=docker
|
||
# 宿主机模式工作区配置(JSON 文件)
|
||
HOST_WORKSPACES_FILE=./config/host_workspaces.json
|
||
# 容器镜像及挂载路径
|
||
TERMINAL_SANDBOX_IMAGE=python:3.11-slim
|
||
TERMINAL_SANDBOX_MOUNT_PATH=/workspace
|
||
TERMINAL_SANDBOX_SHELL=/bin/bash
|
||
# 资源与网络限制
|
||
TERMINAL_SANDBOX_NETWORK=bridge
|
||
TERMINAL_SANDBOX_CPUS=0.5
|
||
TERMINAL_SANDBOX_MEMORY=1g
|
||
# 附加绑定目录(逗号分隔,可留空)
|
||
TERMINAL_SANDBOX_BINDS=
|
||
# 运行时路径及容器名称前缀
|
||
TERMINAL_SANDBOX_BIN=docker
|
||
TERMINAL_SANDBOX_NAME_PREFIX=agent-term
|
||
# 启动失败时是否强制报错(建议 1;当前实现中 docker 失败会直接报错)
|
||
TERMINAL_SANDBOX_REQUIRE=0
|
||
# 宿主机执行环境默认模式:sandbox / direct(建议 sandbox)
|
||
HOST_EXECUTION_MODE_DEFAULT=sandbox
|
||
# direct 模式自动回退秒数:600=10分钟,0 或 -1 表示不自动回退
|
||
HOST_EXECUTION_DIRECT_TTL_SECONDS=600
|
||
# macOS 宿主机沙箱:额外可写白名单路径(逗号分隔,默认仅工作区+/tmp)
|
||
HOST_SANDBOX_MACOS_WRITABLE_PATHS=
|
||
# 注入到容器的额外环境变量(以 TERMINAL_SANDBOX_ENV_* 命名)
|
||
# 例如:TERMINAL_SANDBOX_ENV_HTTP_PROXY=http://127.0.0.1:7890
|
||
|
||
# === 资源控制 ================================================================
|
||
PROJECT_MAX_STORAGE_MB=2048
|
||
MAX_ACTIVE_USER_CONTAINERS=8
|
||
|
||
# === MCP 工具扩展(可选) =====================================================
|
||
# 1=启用,0=禁用
|
||
MCP_TOOLS_ENABLED=1
|
||
# MCP 服务配置文件路径(默认 data/mcp_servers.json)
|
||
MCP_SERVERS_FILE=./data/mcp_servers.json
|
||
# MCP 协议版本(默认 2025-06-18)
|
||
MCP_PROTOCOL_VERSION=2025-06-18
|
||
# MCP 默认超时(秒)
|
||
MCP_DEFAULT_TIMEOUT_SECONDS=25
|