mirror of
https://gitee.com/mateos/mateclaw.git
synced 2026-09-13 03:13:41 +08:00
Let skill Python scripts install packages from a configurable pip index instead of the default PyPI. docker-compose passes PIP_INDEX_URL / PIP_TRUSTED_HOST into the container; for the desktop app (host JVM, no Docker env) SkillScriptExecutionService falls back to mateclaw.pip.index-url / trusted-host Spring config and injects them into the subprocess, auto-deriving the trusted host for plain-HTTP LAN mirrors. The runtime image gains pip and a build toolchain (with the PEP 668 marker removed so on-the-fly installs work), and the script timeout ceiling is raised to accommodate large installs.
166 lines
9.0 KiB
Plaintext
166 lines
9.0 KiB
Plaintext
# MateClaw 环境变量配置
|
||
# 复制此文件为 .env 并填写实际值:cp .env.example .env
|
||
#
|
||
# LLM API Key(DashScope、OpenAI 等)无需在此配置,启动后在管理界面「模型管理」中添加。
|
||
#
|
||
# ⚠️ 所有标注「必填」的项若没配置,`docker compose up` 会直接失败退出,避免把默认/示例值带到生产环境。
|
||
|
||
# ==================== 数据库(Docker 模式必填) ====================
|
||
#
|
||
# ⚠️ Docker 栈已切换到 PostgreSQL 16(此前为 MySQL)。老部署升级前请先读
|
||
# docker-compose.yml 顶部的迁移说明:旧 mysql_data 卷不会被读取,需要先
|
||
# mysqldump 再用 pgloader 等工具导入,或钉在切换前的 tag 上继续用 MySQL。
|
||
|
||
DB_HOST=localhost
|
||
DB_PORT=5432
|
||
DB_NAME=mateclaw
|
||
|
||
# 应用连接账号(最小权限角色,由 docker/postgres/init/10-app-role.sh 首次
|
||
# 初始化时自动创建,仅拥有 mateclaw schema,不是超级用户)。
|
||
DB_USERNAME=mateclaw
|
||
|
||
# ⚠️ 必填且请改成强密码(至少 16 位,含大小写+数字+符号)。
|
||
# docker-compose.yml 会通过 ${DB_PASSWORD:?} 强制要求此项。
|
||
DB_PASSWORD=change-me-strong-user-password
|
||
|
||
# ⚠️ PostgreSQL 引导超级账号,仅用于容器内初始化和运维。
|
||
# 请改成与 DB_PASSWORD 不同的强密码。
|
||
DB_ADMIN_USERNAME=mateclaw_admin
|
||
DB_ADMIN_PASSWORD=change-me-strong-admin-password
|
||
|
||
# ==================== 搜索(可选) ====================
|
||
|
||
# WebSearch 工具的云端搜索 API(可选,二选一或都不配;不配可用 SearXNG sidecar)。
|
||
SERPER_API_KEY=
|
||
TAVILY_API_KEY=
|
||
|
||
# ==================== 安全(强烈建议覆盖) ====================
|
||
|
||
# JWT 签名密钥。若留空,服务器会用内置默认值并在启动日志里 WARN。
|
||
# 生产部署必须设置,至少 32 位随机字符串:openssl rand -base64 48
|
||
JWT_SECRET=
|
||
|
||
# CORS 白名单(逗号分隔,如 https://mateclaw.example.com,https://admin.example.com)。
|
||
# 若留空,服务器会允许所有 origin 并在启动日志里 WARN。生产部署务必设置。
|
||
MATECLAW_CORS_ALLOWED_ORIGINS=
|
||
|
||
# 公开访问基址(如 https://mateclaw.example.com)。用于把智能体生成文件的下载
|
||
# 链接拼成绝对地址,便于在 Web 之外(IM 消息、复制链接、外部下载)直接打开。
|
||
# 留空时回退到当前请求的 host,再退回相对路径。反代后部署建议显式设置。
|
||
MATECLAW_PUBLIC_BASE_URL=
|
||
|
||
# 是否公开 Swagger UI / OpenAPI 文档(/swagger-ui.html、/v3/api-docs)。
|
||
# 生产数据库 profile(mysql/kingbase/postgres)默认 false —— 匿名无法浏览全部
|
||
# 端点结构,需全局管理员(ROLE_ADMIN)。仅在内网/预发临时调试时设为 true。
|
||
MATECLAW_OPENAPI_EXPOSE_UI=
|
||
|
||
# SearXNG 会话密钥(容器内部用,留空会用开发默认值)。生产部署请设成 32+ 位随机串。
|
||
# openssl rand -hex 32
|
||
SEARXNG_SECRET=
|
||
|
||
# ==================== 浏览器工具(可选) ====================
|
||
#
|
||
# Docker 镜像已经把 Chromium 打进去了,默认零配置可用。
|
||
# 只有在下述场景才需要 override:
|
||
#
|
||
# 1) 把浏览器独立部署成 sidecar 容器,通过 CDP 连接:
|
||
# MATECLAW_BROWSER_CDP_URL=http://chrome-sidecar:9222
|
||
#
|
||
# 2) 指定非 Playwright 打包的浏览器(例如宿主机上已装的 Chrome):
|
||
# MATECLAW_BROWSER_CHROME_PATH=/usr/bin/google-chrome-stable
|
||
#
|
||
# 3) 强制使用 Playwright channel(chrome / msedge / chrome-beta …):
|
||
# MATECLAW_BROWSER_CHANNEL=chrome
|
||
MATECLAW_BROWSER_CDP_URL=
|
||
MATECLAW_BROWSER_CHROME_PATH=
|
||
MATECLAW_BROWSER_CHANNEL=
|
||
|
||
# ==================== 局域网 部署放开(可选,默认 false 严格模式) ====================
|
||
# 浏览器 SSRF 防护:放行本地回环和私有 IP(127.0.0.1 / 10.x / 192.168.x /
|
||
# 172.16-31.x / IPv6 fc00::/7 等),公网部署务必保持 false,否则 SSRF 防护失效
|
||
PLAYWRIGHT_ALLOW_PRIVATE_NETWORK=false
|
||
# 浏览器忽略 HTTPS 证书错误(自签证书 / IP 直连 HTTPS 场景)
|
||
# 公网部署务必保持 false,否则中间人攻击可绕过证书校验
|
||
PLAYWRIGHT_IGNORE_HTTPS_ERRORS=false
|
||
# Playwright 单次操作超时(秒),慢链路 / 大页面可调高
|
||
PLAYWRIGHT_DEFAULT_TIMEOUT_SECONDS=30
|
||
# Playwright 导航超时(秒),慢网络可调高
|
||
PLAYWRIGHT_NAVIGATION_TIMEOUT_SECONDS=30
|
||
# snapshot 文本截断长度,超出会返回 truncated:true 提示 LLM 用 selector 缩小范围
|
||
PLAYWRIGHT_SNAPSHOT_MAX_LENGTH=20000
|
||
|
||
# ==================== OpenAI OAuth(Docker,可选) ====================
|
||
#
|
||
# OpenAI ChatGPT OAuth 使用 Codex CLI 的 public client + PKCE / device code,
|
||
# 不需要自定义 client secret。
|
||
#
|
||
# 默认留空即可。后端会根据访问 Host 自动选择:
|
||
# - localhost / 127.0.0.1 / ::1 → LOCAL(PKCE 回调)
|
||
# - IP / 域名 / 反向代理访问 → DEVICE_CODE(无缝远程授权)
|
||
#
|
||
# 本机 Docker 若希望像桌面版一样直接通过宿主机浏览器完成
|
||
# http://localhost:1455/auth/callback 回调,可显式开启 LOCAL,并让容器内
|
||
# 临时回调服务监听 0.0.0.0,以便通过 `1455:1455` 端口映射被宿主机访问到:
|
||
# MATECLAW_OAUTH_OPENAI_DEPLOYMENT_MODE=local
|
||
# MATECLAW_OAUTH_OPENAI_CALLBACK_BIND_HOST=0.0.0.0
|
||
#
|
||
# 强制模式调试时也可设为:local / device_code / manual_paste
|
||
MATECLAW_OAUTH_OPENAI_DEPLOYMENT_MODE=
|
||
MATECLAW_OAUTH_OPENAI_CALLBACK_BIND_HOST=
|
||
|
||
# ==================== Wiki 知识库目录白名单(Docker 模式,可选)====================
|
||
#
|
||
# Docker 生产部署开启了路径安全校验(fail-closed)。
|
||
# 知识库使用「目录扫描」功能时,扫描路径必须在此白名单内,否则返回 400 错误。
|
||
# 多个路径用英文逗号分隔;留空则禁止所有目录扫描。
|
||
#
|
||
# 示例:MATE_WIKI_ALLOWED_SOURCE_ROOTS=/data/wiki,/opt/docs
|
||
#
|
||
# 同时在 docker-compose.yml 的 volumes 里把宿主机目录挂进容器,例如:
|
||
# volumes:
|
||
# - /your/host/path:/data/wiki
|
||
MATE_WIKI_ALLOWED_SOURCE_ROOTS=
|
||
|
||
# ── Wiki 知识源自动同步(变更监测)总开关 ────────────────────────
|
||
# 定时扫描各知识库的源目录、自动消化新文件。默认关闭,运维主动开启。
|
||
# AND 语义:全局这个开关开 *且* 某知识库自己的「自动同步」开关也开,
|
||
# 该库才会被定时扫描;手动「立即扫描」不受此开关影响。
|
||
# 间隔单位毫秒,默认 5 分钟(目前为全局,暂不支持按库配置)。
|
||
MATE_WIKI_WATCHER_ENABLED=false
|
||
MATE_WIKI_WATCHER_INTERVAL_MS=300000
|
||
|
||
# ── Skill 工作区目录 ─────────────────────────────────────────────
|
||
# 已安装的 skill、运行时积累的 LESSONS.md、skill 运行产物都落在这个目录。
|
||
# 默认(容器内)已指向 /app/data/skills,由 docker-compose 的 server_data 卷
|
||
# 持久化,容器重启不丢,无需额外挂卷。一般无需修改。
|
||
# 内置 skill 由 JAR classpath 每次启动现场释放,挂空卷也不会丢内置文件。
|
||
# 仅当你想把 skill 目录放到别处(如独立的 bind mount)时才覆盖此项,
|
||
# 并记得在 docker-compose.yml 的 volumes 里把对应宿主机目录挂进容器。
|
||
MATECLAW_SKILL_WORKSPACE_ROOT=
|
||
|
||
# ── Skill ZIP 上传大小上限(MB,可选)────────────────────────────
|
||
# 技能包上传/市场安装的应用层上限,默认单文件 1MB、整包 50MB。
|
||
# 解包时整包缓存在内存里,整包上限调多大,单次安装峰值内存就可能吃多大。
|
||
# 同时注意 Spring 层 spring.servlet.multipart 的上限(默认 100MB/200MB)。
|
||
MATECLAW_SKILL_UPLOAD_MAX_ENTRY_SIZE_MB=
|
||
MATECLAW_SKILL_UPLOAD_MAX_TOTAL_SIZE_MB=
|
||
|
||
# ── Python pip 镜像源(可选)──────────────────────────────────────
|
||
# skill 里 Python 脚本缺包时 pip install 走的源。默认用 PyPI 官方源。
|
||
# pip 原生读 PIP_INDEX_URL / PIP_TRUSTED_HOST 环境变量,容器内自动继承。
|
||
# HTTP 源会自动从 URL 推导 PIP_TRUSTED_HOST;自签 HTTPS 需手动填。
|
||
# 互联网加速: https://pypi.tuna.tsinghua.edu.cn/simple
|
||
# 局域网私有源: http://192.168.1.100:8080/simple(trusted-host 自动推导)
|
||
#PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
|
||
#PIP_TRUSTED_HOST=
|
||
# ── 桌面版补充(非 Docker,宿主机直接跑 Java)─────────────────────
|
||
# 桌面版不继承上面的 Docker 变量。用 Spring 配置注入 Python 子进程;
|
||
# 也可直接设系统环境变量 PIP_INDEX_URL / PIP_TRUSTED_HOST(覆盖更全)。
|
||
#MATECLAW_PIP_INDEX_URL=
|
||
#MATECLAW_PIP_TRUSTED_HOST=
|
||
|
||
# ── Maven 镜像(国内加速)─────────────────────────────────────────
|
||
# 在中国大陆构建时取消注释,将 Aliyun 仓库优先级提前,大幅提速 mvn 拉包。
|
||
# 空值(默认)使用 US Maven Central → Google CDN → Aliyun 的顺序。
|
||
#MAVEN_FLAGS=-Paliyun-first
|