# ============================================================
# OpenClaw + oGMemory 部署配置文件
# ============================================================
#
# 架构说明:
# 本部署脚本会启动三个容器(如果启用 openGauss):
# 1. openGauss 数据库容器(可选)
# 2. ogmemory 容器:独立的 oGMemory 服务(HTTP API,端口 8090)
# 3. openclaw-ogmemory 容器:OpenClaw Gateway(Web 界面,端口 18789)
#
# 配置说明:
# - 第一部分:OpenClaw Gateway 配置
# - 第二部分:oGMemory 服务配置
# - 第三部分:openGauss 数据库配置
# - 第四部分:容器配置
# - 第五部分:部署控制参数
# - 第六部分:性能监控(perf)
#
# 使用方法:
# 1. 编辑本文件,填写必要配置
# 2. 执行部署:
# - 完整部署(openGauss + ogmemory + openclaw-ogmemory):
# bash deploy.sh -password <密码>
# - 仅部署 ogmemory + openclaw-ogmemory:
# 修改 ENABLE_OPENGAUSS=false,然后 bash deploy.sh
#
# 注意:
# - 标记为 [必填] 的配置项必须设置
# - 标记为 [可选] 的配置项有默认值,可以注释掉(在行首加 #)
# - 部分配置项有回退逻辑,详见注释说明
# ============================================================
# ============================================================
# 第一部分:OpenClaw Gateway + 共享 LLM 配置
# ============================================================
# 用于 OpenClaw Gateway 服务(openclaw-ogmemory 容器)
# 同时作为 oGMemory 的默认 LLM 配置(通过 ogmemory.yaml 中的 ${...} 引用)
# 参考:entrypoint-openclaw.sh, ogmemory.example.yaml
# [必填] LLM 提供商标识
# 可选值:dashscope, openai, zhipu, volcengine 等
LLM_PROVIDER="openai"
# [必填] LLM API 密钥
# 此值同时供 oG-Memory 使用(ogmemory.yaml 中 ${LLM_API_KEY})
# 如果 oG-Memory 需要不同的 API Key,请在 ogmemory.yaml 中硬编码
LLM_API_KEY="${OPENAI_API_KEY}"
# [必填] LLM API 基础地址
# 此值同时供 oGMemory 使用(ogmemory.yaml 中 ${LLM_BASE_URL})
# 示例:
# - 阿里云百炼:https://dashscope.aliyuncs.com/compatible-mode/v1
# - 火山引擎:https://ark.cn-beijing.volces.com/api/v3
# - OpenAI:https://api.openai.com/v1
LLM_BASE_URL="${OPENAI_BASE_URL}"
# [必填] LLM 模型名称
# 此值同时供 oGMemory 使用(ogmemory.yaml 中 ${LLM_MODEL})
# 如果 oGMemory 需要不同的模型,请在 ogmemory.yaml 中硬编码
# 示例:qwen3-max, glm-5, doubao-seed-2-0-code-preview-260215, gpt-4o-mini
LLM_MODEL="gpt-4o-mini"
# [可选] OpenClaw Gateway 端口
# 默认值:18789
#GATEWAY_PORT="18789"
# [可选] OpenClaw Gateway Token(前端配对密码)
# 首次访问 Web 界面时需要输入此 Token
# 默认值:ogmem-default-token
#OPENCLAW_GATEWAY_TOKEN="ogmem-default-token"
# [可选] OpenClaw 绑定模式
# 可选值:lan(局域网), localhost(仅本机)
# 默认值:lan
#OPENCLAW_BIND_MODE="lan"
# [可选] oGMemory HTTP API 地址
# OpenClaw 通过此地址连接到 ogmemory 服务
# 默认值:http://127.0.0.1:8090
#OGMEM_URL="http://127.0.0.1:8090"
# [可选] OpenClaw 连接 oGMemory 的认证 API Key
# 启用多租认证后,OpenClaw 需要通过此 Key 访问 oGMemory
# 默认回退到 OG_ROOT_API_KEY(ROOT 权限,可访问所有账户数据)
# 也可设置为 Admin Key(限定账户权限),格式:account_id:key 中的 key 部分
# 例如:OG_AUTH_API_KEY="admin-key-for-a"(仅访问 acct-company-a)
# 推荐在 deploy.env 中显式配置,不再从 ogmemory.yaml 反向推导
# 默认值:与 OG_ROOT_API_KEY 相同
#OG_AUTH_API_KEY="root-secret-key-xxxxx"
# [可选] OpenClaw 连接 oGMemory 的账户 ID
# 当 OG_AUTH_API_KEY 是 Admin Key 时,此值必须与 Key 绑定的账户一致
# 当 OG_AUTH_API_KEY 是 Root Key 时,此值决定默认操作的账户
# 推荐在 deploy.env 中显式配置,不再从 ogmemory.yaml 反向推导
# 默认值:与 OG_ACCOUNT_ID 相同
#OG_AUTH_ACCOUNT_ID="acct-company-a"
# [可选] OpenClaw 默认认证回退值
# 当未显式配置 OG_AUTH_API_KEY / OG_AUTH_ACCOUNT_ID 时,
# 单实例模式会分别回退到 OG_ROOT_API_KEY / OG_ACCOUNT_ID
# 推荐在启用多租认证时在这里统一配置,供 OpenClaw 和 ogmemory.yaml 共同复用
#OG_ROOT_API_KEY="root-secret-key-change-me"
#OG_ACCOUNT_ID="acct-demo"
#OG_USER_ID="u-alice"
#OG_AGENT_ID="main"
# [可选] oGMemory 多租管理员 Key 列表
# 仅 oGMemory 使用,OpenClaw 不直接读取此值
# 多个 key 用逗号分隔,格式示例:
# acct-company-a:admin-key-for-a,acct-company-b:admin-key-for-b
#OG_ADMIN_API_KEYS=""
# ============================================================
# 第二部分:oGMemory 服务配置
# ============================================================
# 用于 oGMemory 服务(ogmemory 容器)
#
# oGMemory 的业务配置统一在 ogmemory.yaml 中管理。
# ogmemory.yaml 支持 ${ENV_VAR} 语法引用本文件中的变量,
# 避免在两个文件中重复填写相同的值。
#
# 使用方法:
# 1. 复制模板:cp ogmemory.example.yaml ogmemory.yaml
# 2. 编辑 ogmemory.yaml:
# - 共享配置:保持 ${LLM_API_KEY}、${LLM_BASE_URL}、${LLM_MODEL} 即可
# - oGMemory 专用:将 ${...} 替换为硬编码值
# 3. deploy.sh 会自动替换 ${...} 并挂载到容器
#
# 注意:如果启用了 openGauss(ENABLE_OPENGAUSS=true),
# deploy.sh 会自动替换 ogmemory.yaml 中的 vector_db.connection_string,
# 无需手动修改连接字符串中的 host/port/password。
#
# 完整 YAML 配置参考:ogmemory.example.yaml
# ---- AGFS 配置 ----
# [可选] AGFS 数据存储目录
# 用于存储记忆文件(.md 文件)
# 默认值:无(不挂载)
# 推荐设置以持久化记忆数据
AGFS_DATA_DIR="/home/test/ogmemory/agfs-auto"
# ============================================================
# 第三部分:openGauss 配置
# ============================================================
# 用于 openGauss 数据库容器
# [必填] 是否启用 openGauss
# true:部署 openGauss + ogmemory + openclaw-ogmemory
# false:仅部署 ogmemory + openclaw-ogmemory(需要外部数据库)
ENABLE_OPENGAUSS="true"
# [必填] openGauss 容器密码
# 注意:此密码需要在执行 deploy.sh 时通过 -password 参数指定
# 密码要求:
# - 长度至少 8 个字符
# - 包含大写字母、小写字母、数字、特殊符号(#?!@$%^&*)中的至少三种
# [可选] openGauss 容器名称
# 默认值:opengauss
#OG_CONTAINER_NAME="opengauss"
# [可选] openGauss 宿主机端口,openGauss选项开启时必填
OG_HOST_PORT="15432"
# [可选] openGauss 容器内端口
# 默认值:5432
#OG_PORT="5432"
# [可选] openGauss 节点名称
# 默认值:gaussdb
#OG_NODE_NAME="gaussdb"
# [可选] openGauss 用户名
# 默认值:gaussdb
#OG_USERNAME="gaussdb"
# [可选] openGauss 数据库名
# 默认值:postgres
#OG_DB_NAME="postgres"
# [可选] openGauss 镜像仓库
# 默认值:swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/opengauss-distributed
OG_IMAGE_REPO="swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/opengauss-distributed"
# [可选] openGauss 镜像标签
# 默认值:0328
#OG_IMAGE_TAG="0328"
# [可选] openGauss CPU 亲和性(绑定到特定 CPU 核心)
# 示例:0-3 表示使用 CPU 0-3
# 默认值:无
#OG_CPUSET_CPUS=""
# [可选] openGauss 启动超时时间(秒)
# 默认值:120
#OG_WAIT_TIMEOUT="120"
# ============================================================
# 第四部分:容器配置
# ============================================================
# [必填] openGauss 数据库宿主机 IP 地址
# 用于 oGMemory 连接 openGauss 数据库
OPENGAUSS_HOST_IP="127.0.0.1"
# [必填] OpenClaw 宿主机 IP 地址
# 用于 OpenClaw/oGMemory 服务访问地址,建议填写宿主机实际 IP(而非 127.0.0.1)
# 以便其他机器或容器能够访问服务
OPENCLAW_HOST_IP="127.0.0.1"
# ---- ogmemory 容器配置 ----
# [可选] ogmemory 容器名称
# 默认值:ogmem
OGMEM_CONTAINER_NAME="ogmem_auto"
# [可选] ogmemory 镜像
# 默认值:swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/ogmemory:poc1_416
OGMEM_IMAGE="swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/ogmemory:poc1_428"
# ---- openclaw-ogmemory 容器配置 ----
# [可选] openclaw-ogmemory 容器名称
# 默认值:openclaw_ogmem
OPENCLAW_CONTAINER_NAME="openclaw_ogmem_auto"
# [可选] openclaw-ogmemory 镜像
# 默认值:swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/openclaw-ogmemory:poc1_416
OPENCLAW_IMAGE="swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/openclaw-ogmemory:poc1_428"
# [可选] OpenClaw 状态持久化目录
# 如果设置,会挂载到容器的 /home/node/.openclaw
# 默认值:无(不挂载)
# 推荐设置以避免重复配对
# 注意:openclaw.json 由容器入口脚本托管。升级时如检测到缺少关键字段,
# 会先备份旧文件再按当前模板重建。
OPENCLAW_HOME_DIR="/Users/fergusj/ogmemory/openclaw-auto"
# Multi-tenant shortcut for shared oGMemory + multiple OpenClaw gateways.
# Format:
# OPENCLAW_INSTANCES="container_name|gateway_port|gateway_token|auth_api_key|auth_account_id|openclaw_home_dir;..."
#OPENCLAW_INSTANCES="openclaw_tenant_a|18789|tenant-a-web-token|admin-key-for-a|acct-company-a|/home/taoying/ogmem_415/openclaw-tenant-a;openclaw_tenant_b|18790|tenant-b-web-token|admin-key-for-a|acct-company-a|/home/taoying/ogmem_415/openclaw-tenant-b"
# ============================================================
# 第五部分:部署控制参数
# ============================================================
# [可选] 是否自动执行健康检查
# 默认值:true
#AUTO_HEALTH_CHECK="true"
# [可选] 是否跳过镜像拉取
# 默认值:false
#SKIP_PULL="false"
# [可选] 记忆提取阈值
# 默认值:200
#OGMEM_AFTER_TURN_THRESHOLD=200
# ============================================================
# 第六部分:性能监控(perf)
# ============================================================
# perf 模块记录每个请求的耗时、Token 消耗和美元成本,写入 JSONL 日志文件。
#
# 前提:ogmemory 镜像必须包含 perf/ 目录。
# 默认的 poc1_428 镜像不含 perf 模块,需本地构建:
#
# docker build -f docker/Dockerfile.standalone -t ogmemory:local .
# # 然后将 OGMEM_IMAGE 改为 ogmemory:local,并设置 SKIP_PULL=true
#
# 多 worker 说明:
# gunicorn 每个 worker 进程有独立的 Token 计数器,perf 日志会写入多个文件。
# 启用 perf 时建议设置 OGMEM_WORKERS=1,所有日志写入同一文件,
# 便于 `python -m perf.report` 直接生成报告。
#
# 报告生成:
# python -m perf.report <宿主机日志路径>/perf.jsonl -o report.md
#
# ============================================================
# [可选] 是否启用 perf 性能监控
# 默认值:不启用
#OGMEM_PERF_ENABLED="1"
# [可选] perf 日志输出路径(容器内绝对路径)
# 需要同步挂载宿主机目录,否则容器销毁后日志丢失
# 示例:-v /home/user/ogmem/perf_logs:/opt/ogmem/perf_logs
# 默认值:/opt/ogmem/perf_logs/<run_id>.jsonl(每 worker 独立文件)
#OGMEM_PERF_OUT="/opt/ogmem/perf_logs/perf.jsonl"
# [可选] perf 日志 HTTP 推送地址
# 设置后每条 SpanEvent 实时 POST 到此地址(可与 OGMEM_PERF_OUT 同时使用)
# 默认值:不推送
#OGMEM_PERF_HTTP_URL=""
# [可选] perf run_id 标识(区分不同部署批次)
# 默认值:自动生成 UUID
#OGMEM_PERF_RUN_ID=""
# [可选] perf 日志宿主机挂载目录
# 设置后 deploy.sh 会将此目录挂载到容器的 /opt/ogmem/perf_logs,
# 容器销毁后日志保留在宿主机。同时需设置 OGMEM_PERF_OUT。
# 示例:PERF_LOGS_HOST_DIR="/home/user/ogmem/perf_logs"
# OGMEM_PERF_OUT="/opt/ogmem/perf_logs/perf.jsonl"
# 默认值:不挂载(日志保留在容器内,重启后丢失)
#PERF_LOGS_HOST_DIR=""