Doc-code consistency (per BEHAVIOR_SPEC.md ground truth):
- INTERNALS.md, dehydrator.py, README.md, config.example.yaml: drop the
outdated "API 不可用自动降级到本地关键词提取" claims; align with the
"RuntimeError on API outage, no silent fallback" design decision
- INTERNALS.md & BEHAVIOR_SPEC.md narrative: activation_count=1 → 0 (B-04)
- server.py header: 5 MCP tools → 6 (add dream)
OMBRE_PORT (T5/T6):
- Replace hardcoded 8000 in FastMCP / uvicorn / keepalive URL
with int(os.environ.get("OMBRE_PORT", "8000"))
OMBRE_HOOK_URL / OMBRE_HOOK_SKIP webhook (T7):
- Implement _fire_webhook() helper: fire-and-forget POST with 5s timeout,
failures logged at WARNING but never propagated
- Wired into breath / dream MCP tools and /breath-hook + /dream-hook routes
- Push payload: {event, timestamp, payload:{...}}; documented in ENV_VARS.md
Dashboard host-vault input (T12, per user request):
- New /api/host-vault GET/POST endpoints persist OMBRE_HOST_VAULT_DIR
to project-root .env (idempotent upsert, preserves other entries,
rejects quotes/newlines)
- Settings tab gains a "宿主机记忆桶目录 (Docker)" panel with
load/save buttons and a clear "需要 docker compose down/up 生效" notice
2.9 KiB
2.9 KiB
环境变量参考
| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
OMBRE_API_KEY |
是 | — | Gemini / OpenAI-compatible API Key,用于脱水(dehydration)和向量嵌入 |
OMBRE_BASE_URL |
否 | https://generativelanguage.googleapis.com/v1beta/openai/ |
API Base URL(可替换为代理或兼容接口) |
OMBRE_TRANSPORT |
否 | stdio |
MCP 传输模式:stdio / sse / streamable-http |
OMBRE_PORT |
否 | 8000 |
HTTP/SSE 模式监听端口(仅 sse / streamable-http 生效) |
OMBRE_BUCKETS_DIR |
否 | ./buckets |
记忆桶文件存放目录(绑定 Docker Volume 时务必设置) |
OMBRE_HOOK_URL |
否 | — | Breath/Dream Webhook 推送地址(POST JSON),留空则不推送 |
OMBRE_HOOK_SKIP |
否 | false |
设为 true/1/yes 跳过 Webhook 推送(即使 OMBRE_HOOK_URL 已设置) |
OMBRE_DASHBOARD_PASSWORD |
否 | — | 预设 Dashboard 访问密码;设置后覆盖文件存储的密码,首次访问不弹设置向导 |
OMBRE_DEHYDRATION_MODEL |
否 | deepseek-chat |
脱水/打标/合并/拆分用的 LLM 模型名(覆盖 dehydration.model) |
OMBRE_DEHYDRATION_BASE_URL |
否 | https://api.deepseek.com/v1 |
脱水模型的 API Base URL(覆盖 dehydration.base_url) |
OMBRE_MODEL |
否 | — | OMBRE_DEHYDRATION_MODEL 的别名(前者优先) |
OMBRE_EMBEDDING_MODEL |
否 | gemini-embedding-001 |
向量嵌入模型名(覆盖 embedding.model) |
OMBRE_EMBEDDING_BASE_URL |
否 | — | 向量嵌入的 API Base URL(覆盖 embedding.base_url;留空则复用脱水配置) |
说明
OMBRE_API_KEY也可在config.yaml的dehydration.api_key/embedding.api_key中设置,但强烈建议通过环境变量传入,避免密钥写入文件。OMBRE_DASHBOARD_PASSWORD设置后,Dashboard 的"修改密码"功能将被禁用(显示提示,建议直接修改环境变量)。未设置则密码存储在{buckets_dir}/.dashboard_auth.json(SHA-256 + salt)。
Webhook 推送格式 (OMBRE_HOOK_URL)
设置 OMBRE_HOOK_URL 后,Ombre Brain 会在以下事件发生时异步(fire-and-forget,5 秒超时)POST JSON 到该 URL:
事件名 (event) |
触发时机 | payload 字段 |
|---|---|---|
breath |
MCP 工具 breath() 返回时 |
mode (ok/empty), matches, chars |
dream |
MCP 工具 dream() 返回时 |
recent, chars |
breath_hook |
HTTP GET /breath-hook 命中(SessionStart 钩子) |
surfaced, chars |
dream_hook |
HTTP GET /dream-hook 命中 |
surfaced, chars |
请求体结构(JSON):
{
"event": "breath",
"timestamp": 1730000000.123,
"payload": { "...": "..." }
}
Webhook 推送失败仅在服务日志中以 WARNING 级别记录,不会影响 MCP 工具的正常返回。