# MemeMeow 服务端配置。复制为 .env 后填写,密钥不会返回给前端。 # Compose 运行身份:start.sh 未显式设置时自动采用当前服务用户;直接 docker compose # 必须手工填写实际的非 root UID/GID,不能使用 0 或空值。 MEMEMEOW_RUNTIME_UID= MEMEMEOW_RUNTIME_GID= # Agent 诊断文件每个达到指定容量时轮转,保留 14 天。 MEMEMEOW_AGENT_DIAGNOSTICS_ROTATION=200 MB EMBEDDING_API_KEY= EMBEDDING_BASE_URL=https://api.siliconflow.cn/v1 EMBEDDING_MODEL=BAAI/bge-m3 LLM_ENHANCE_MODEL= # 独立图片命名进程,直接调用图片模型。 MEMEMEOW_AUTO_RENAME_BASE_URL= MEMEMEOW_AUTO_RENAME_API_KEY= MEMEMEOW_AUTO_RENAME_MODEL=mememeow/auto-rename MEMEMEOW_AUTO_RENAME_POOL=default MEMEMEOW_AUTO_RENAME_CONCURRENCY=10 MEMEMEOW_AUTO_RENAME_INTERVAL_SECONDS=30 MEMEMEOW_AUTO_RENAME_TIMEOUT_SECONDS=90 # 本地视觉检索:活动模型为官方 DINOv2 ViT-B/14。源码固定为官方提交,权重必须公开下载并只读挂载。 MEMEMEOW_VISUAL_MODEL=dinov2_vitb14 MEMEMEOW_VISUAL_DIMENSIONS=768 MEMEMEOW_VISUAL_PREPROCESS_VERSION=dinov2_vitb14-rgb224-first-frame-v1 # Compose 运行时会改用容器内固定路径 /opt/dinov2 和 /models;以下路径供宿主机夹具使用。 MEMEMEOW_VISUAL_MODEL_REPO=./data/dinov2 MEMEMEOW_VISUAL_WEIGHTS_PATH=./data/models/dinov2_vitb14_pretrain.pth MEMEMEOW_VISUAL_WEIGHTS_DIR=./data/models MEMEMEOW_VISUAL_WEIGHTS_SHA256=0b8b82f85de91b424aded121c7e1dcc2b7bc6d0adeea651bf73a13307fad8c73 # Compose 会覆盖为 mememeow-visual:8276;不要在容器内使用 127.0.0.1 访问视觉服务。 MEMEMEOW_VISUAL_INTERNAL_URL=http://127.0.0.1:8276/internal/visual-embedding MEMEMEOW_VISUAL_HEALTH_URL=http://127.0.0.1:8276/health MEMEMEOW_VISUAL_INTERNAL_TOKEN= MEMEMEOW_VISUAL_CPU_THREADS=4 MEMEMEOW_VISUAL_CPU_INTEROP_THREADS=1 MEMEMEOW_VISUAL_CONCURRENCY=1 MEMEMEOW_VISUAL_MAX_PIXELS=25000000 MEMEMEOW_VISUAL_REQUEST_TIMEOUT_SECONDS=120 # 语境研究由共享 Agent executor 容器执行;宿主 OpenCode 可执行文件仅用于显式 host 回滚。 MEMEMEOW_OPENCODE_EXECUTABLE=opencode MEMEMEOW_OPENCODE_BASE_URL= MEMEMEOW_OPENCODE_API_KEY= MEMEMEOW_AGENT_RUNTIME_MODE=executor # Compose 内部服务地址由 docker-compose.yml 固定为 mememeow-agent-runtime:8277,启动脚本会覆盖此空值。 MEMEMEOW_AGENT_EXECUTOR_URL= # Compose 会在 Docker named volume 中首次启动时生成随机 token;不要把 token 写入仓库。 # 仅显式 host 回滚模式需要手动取消注释并填入随机非空值。 # MEMEMEOW_AGENT_EXECUTOR_TOKEN= # Compose 内部路径由 docker-compose.yml 注入,通常无需设置。 # MEMEMEOW_AGENT_EXECUTOR_TOKEN_FILE= MEMEMEOW_AGENT_EXECUTOR_REQUEST_TIMEOUT_SECONDS=1810 MEMEMEOW_AGENT_EXECUTOR_MAX_TIMEOUT_SECONDS=1800 # 外部 workspace selector 的独立 capability 签名材料;不与 API/数据库密钥复用。 MEMEMEOW_WORKSPACE_CAPABILITY_KEY= MEMEMEOW_OPENCODE_WORKSPACE_CAPABILITY_TTL_SECONDS=300 # OpenCode 明确 session 的自动续跑默认关闭;开启前请确认 provider 与副作用边界。 MEMEMEOW_AGENT_RESUME_ENABLED=false MEMEMEOW_AGENT_RESUME_MAX_ATTEMPTS=2 MEMEMEOW_AGENT_RESUME_BACKOFF_SECONDS=2 MEMEMEOW_AGENT_RESUME_MAX_BACKOFF_SECONDS=60 MEMEMEOW_AGENT_RESUME_TIMEOUT_SECONDS=900 # Agent callback 根 secret;至少 16 字节,仅 API 读取并用于签发当前 Task 短期 token。 # 留空时 callback 保持不可用,不会回退到无认证或随机运行时凭据。 MEMEMEOW_AGENT_CALLBACK_SECRET= # 可选旧 key 验证窗口,格式为 kid=secret,kid=secret;不参与新 token 签发。 MEMEMEOW_AGENT_CALLBACK_VERIFICATION_KEYS= MEMEMEOW_AGENT_REVERSE_IMAGE_INTERNAL_URL= # 模型由命令行 --model 传递;当前通用配置只注册此模型,研究任务固定使用 max 推理变体。 MEMEMEOW_OPENCODE_MODEL=mememeow/gpt-5.6-luna MEMEMEOW_OPENCODE_RUNTIME_ROOT=./data/opencode # 外部 provider 的受控 selector 根;目录由宿主适配层预装配。 MEMEMEOW_OPENCODE_WORKSPACE_ROOT=./data/opencode/workspaces MEMEMEOW_OPENCODE_TIMEOUT_SECONDS=1800 # Agent lane 全局运行并发;必须为正整数,默认 1,修改后重启服务生效。队列不设数量门禁。 MEMEMEOW_OPENCODE_CONCURRENCY=1 # 单个持久 scope 的 Agent 同时运行上限;不得超过全局运行并发,由 PostgreSQL 公平 claim 强制,默认 1。 MEMEMEOW_AGENT_SCOPE_CONCURRENCY=1 # 设置页更新凭据;留空时设置 API 只读。 MEMEMEOW_SETTINGS_ADMIN_TOKEN= # 指向预装 OpenCode 插件依赖;留空时使用项目根目录 .opencode/node_modules。 MEMEMEOW_OPENCODE_NODE_MODULES=./.opencode/node_modules # Agent 结果文件协议:任务目录位于 data/opencode/task-results//。 MEMEMEOW_AGENT_RESULT_MAX_BYTES=1048576 MEMEMEOW_AGENT_RESULT_RETENTION_DAYS=14 MEMEMEOW_AGENT_RESULT_MAX_TASKS=500 # 联网图片检索默认使用 Google Vision Web Detection;只在明确设置为 serpapi 时读取 SerpApi。 MEMEMEOW_REVERSE_IMAGE_PROVIDER=google_vision GOOGLE_CLOUD_PROJECT= # 可选。留空时使用 Google ADC;填写时只由服务端读取,不能传给 Agent。 GOOGLE_APPLICATION_CREDENTIALS= SERPAPI_API_KEY= MEMEMEOW_REVERSE_IMAGE_CACHE_ROOT=./data/reverse_image_cache/web_detection MEMEMEOW_DATA_ROOT=./data MEMEMEOW_IMAGE_ROOT=./data/images # 图片 bind mount 的宿主路径;测试或非仓库部署可改为受控绝对路径。 MEMEMEOW_IMAGE_ROOT_HOST=./data/images MEMEMEOW_MAX_UPLOAD_SIZE=20971520 # GIF 按实际内容识别,原始输入最多 100MB,超过 10MB 自动压缩。 # 服务端强制每请求最多 20 个文件;并发值仅供客户端调度提示,服务端不以此字段限制在途请求。 # 总请求预算留空表示 disabled。 MEMEMEOW_MAX_FILES_PER_REQUEST=20 MEMEMEOW_MAX_CONCURRENT_UPLOAD_REQUESTS=2 MEMEMEOW_MAX_REQUEST_BYTES=134217728 # PostgreSQL 16 + pgvector(宿主机 database.sh 使用,固定监听回环地址 5434;Compose API 会覆盖为 postgres:5432)。 POSTGRES_DB=mememeow POSTGRES_USER=mememeow POSTGRES_PASSWORD=mememeow MEMEMEOW_DATABASE_URL=postgresql+psycopg://mememeow:mememeow@127.0.0.1:5434/mememeow # Adminer 数据库查看器的宿主机回环端口。 MEMEMEOW_DB_VIEWER_PORT=8080 # Adminer 主镜像可按部署环境覆盖;Docker Hub 不可达时,启动脚本会尝试备用镜像。 MEMEMEOW_DB_VIEWER_IMAGE=adminer:4 MEMEMEOW_DATABASE_POOL_SIZE=5 MEMEMEOW_DATABASE_MAX_OVERFLOW=10 MEMEMEOW_DATABASE_POOL_TIMEOUT=10 MEMEMEOW_DATABASE_POOL_RECYCLE=1800 MEMEMEOW_EMBEDDING_DIMENSIONS=1024 MEMEMEOW_WORKER_LEASE_SECONDS=120 MEMEMEOW_WORKER_HEARTBEAT_SECONDS=30 MEMEMEOW_WORKER_MAX_ATTEMPTS=3 MEMEMEOW_PROTECTED_MODE=false MEMEMEOW_ALLOWED_ENDPOINTS=/,/health,/search,/config,/backend/settings,/tasks,/generate-cache,/images,/media MEMEMEOW_RATE_LIMIT_ENABLED=false MEMEMEOW_RATE_LIMIT_REQUESTS=60 MEMEMEOW_RATE_LIMIT_WINDOW=60