From 9c08233d4e1e6844c4e31b5e0415b75358eccfe8 Mon Sep 17 00:00:00 2001 From: cnphpbb Date: Fri, 19 Jun 2026 15:12:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(honcho):=20embedding=20=E5=88=87=E6=8D=A2?= =?UTF-8?q?=20SiliconFlow=20Qwen3-0.6B=20=E6=94=AF=E6=8C=81=20Ollama=20?= =?UTF-8?q?=E5=A4=87=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - embedding 默认走 SiliconFlow Qwen3-Embedding-0.6B(独立 base URL) - env.cfg.example 加 Ollama 备选注释块(host.docker.internal:11434) - stack.yml api+deriver 双服务 EMBEDDING_* 配置同步 - api 段 EMBEDDING_API_KEY 用 :- 默认空,兼容 Ollama 无 key 场景 - readme Mermaid 架构图加 siliconflow + ollama 节点 - HONCHO_DERIVER_MODEL 默认值 gpt-4o-mini → gpt-5.4-mini(与上游对齐) --- honcho/env.cfg.example | 20 ++++++++++++++++---- honcho/readme.md | 22 ++++++++++++++-------- honcho/stack.yml | 12 ++++++++++-- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/honcho/env.cfg.example b/honcho/env.cfg.example index ed473a5..b220709 100644 --- a/honcho/env.cfg.example +++ b/honcho/env.cfg.example @@ -48,7 +48,17 @@ HONCHO_AUTH_USE_AUTH=false HONCHO_NAMESPACE=honcho # 关闭可省 embedding 费用(但失去语义检索能力) HONCHO_EMBED_MESSAGES=true -HONCHO_EMBEDDING_MODEL=text-embedding-3-small +# Embedding 模型(默认走 SiliconFlow 兼容端点,独立 base URL) +HONCHO_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-0.6B +HONCHO_EMBEDDING_BASE_URL=https://api.siliconflow.cn/v1 +# 替代方案 A:本地 Ollama(零成本、隐私优先) +# HONCHO_EMBEDDING_MODEL=qwen3-embedding:0.6b +# HONCHO_EMBEDDING_BASE_URL=http://host.docker.internal:11434/v1 +# EMBEDDING_API_KEY 可留空(Ollama 默认无 key;如配了 OLLAMA_API_KEY 环境变量再填) +# 前置:宿主机 `ollama pull qwen3-embedding:0.6b` +# docker compose 中 host.docker.internal 在 Linux compose v2 默认可用,Windows/WSL2 自动转发 +# Embedding 维度(Qwen3-Embedding-0.6B 默认 1024,必须与 DB schema 一致) +# 若 Honcho 自动推断失败,需在 stack.yml 同步设置 EMBEDDING_VECTOR_DIMENSIONS=1024 # deriver 必须用支持 tool calling 的模型 HONCHO_DERIVER_MODEL=gpt-5.4-mini HONCHO_DERIVER_WORKERS=1 @@ -61,7 +71,9 @@ HONCHO_LLM_BASE_URL=https://api.openai.com/v1 # ============================================================ # 敏感值(必填,env.cfg 不提交)— 在 .gitignore 已忽略 +# 占位符约定:REPLACE_ME_XXX → 替换为真实值(避免使用 <...> 占位符,patch 工具链会吞) # ============================================================ -# HONCHO_LLM_API_KEY=<你的 OpenAI key 或兼容端点 key> -# HONCHO_DB_PASSWORD=<强密码,不要带特殊字符,避免 URI 编码问题> -# HONCHO_AUTH_JWT_SECRET=<仅 AUTH_USE_AUTH=true 时需要;用 python scripts/generate_jwt_secret.py 生成> \ No newline at end of file +# HONCHO_LLM_API_KEY=REPLACE_ME_LLM_KEY # 你的 OpenAI key 或兼容端点 key +# HONCHO_EMBEDDING_API_KEY=REPLACE_ME_EMBEDDING_KEY # SiliconFlow key:https://cloud.siliconflow.cn/account/ak +# HONCHO_DB_PASSWORD=REPLACE_ME_DB_PASSWORD # 强密码,不要带特殊字符,避免 URI 编码问题 +# HONCHO_AUTH_JWT_SECRET=REPLACE_ME_JWT_SECRET # 仅 AUTH_USE_AUTH=true 时需要;用 python scripts/generate_jwt_secret.py 生成 \ No newline at end of file diff --git a/honcho/readme.md b/honcho/readme.md index f60483f..a0b0545 100644 --- a/honcho/readme.md +++ b/honcho/readme.md @@ -37,6 +37,8 @@ flowchart TB hermes["Hermes Agent
memory.provider=honcho"] sdk["Python / TS SDK
(honcho-ai / @honcho-ai/sdk)"] tools["DBeaver / psql
PG 5432 直连"] + siliconflow["SiliconFlow
api.siliconflow.cn/v1
Qwen3-Embedding-0.6B
(云端默认)"] + ollama["本地 Ollama
host.docker.internal:11434
qwen3-embedding:0.6b
(备选,零成本)"] end source -.->|docker build
首次 5-10 min| api @@ -47,10 +49,12 @@ flowchart TB tools -->|:5432| database api -->|:5432| database - deriver -->|:5432| database - api -->|:6379| redis - deriver -->|:6379| redis - deriver -.->|轮询
pending messages| api + deriver -->|:5432| database + api -->|:6379| redis + deriver -->|:6379| redis + deriver -.->|轮询
pending messages| api + api -->|HTTPS embedding
Qwen3-0.6B| siliconflow + deriver -->|HTTPS embedding
Qwen3-0.6B| siliconflow database --- pgdata redis --- redisdata @@ -60,7 +64,7 @@ flowchart TB classDef data fill:#f3e5f5,stroke:#4a148c,color:#000 classDef host fill:#e8f5e9,stroke:#1b5e20,color:#000 - class hermes,sdk,tools ext + class hermes,sdk,tools,siliconflow,ollama ext class source build class api,deriver,database,redis ext class pgdata,redisdata data @@ -113,7 +117,8 @@ flowchart TB | `HONCHO_AUTH_USE_AUTH` | `false` | 是否启用 JWT 鉴权(生产建议 `true`) | | `HONCHO_NAMESPACE` | `honcho` | 全局命名空间前缀 | | `HONCHO_EMBED_MESSAGES` | `true` | 是否对消息做向量化(关闭可省 embedding 费用) | -| `HONCHO_EMBEDDING_MODEL` | `text-embedding-3-small` | Embedding 模型名 | +| `HONCHO_EMBEDDING_MODEL` | `Qwen/Qwen3-Embedding-0.6B` | Embedding 模型名(默认 SiliconFlow,可换本地 Ollama) | +| `HONCHO_EMBEDDING_BASE_URL` | `https://api.siliconflow.cn/v1` | Embedding API Base URL(OpenAI 兼容;Ollama 改 `http://host.docker.internal:11434/v1`) | | `HONCHO_DERIVER_MODEL` | `gpt-5.4-mini` | Deriver 用的 LLM 模型(必须支持 tool calling) | | `HONCHO_LLM_BASE_URL` | `https://api.openai.com/v1` | LLM API Base URL(OpenAI 兼容端点即可) | | `HONCHO_DERIVER_WORKERS` | `1` | Deriver worker 数 | @@ -123,10 +128,11 @@ flowchart TB | 变量 | 说明 | |------|------| | `HONCHO_LLM_API_KEY` | LLM API Key(**必填**,server 启动检查,没它起不来) | +| `HONCHO_EMBEDDING_API_KEY` | Embedding API Key(**必填**仅当走云端:SiliconFlow 在 [cloud.siliconflow.cn/account/ak](https://cloud.siliconflow.cn/account/ak) 生成;走 Ollama 时留空) | | `HONCHO_DB_PASSWORD` | PostgreSQL 密码(**必填**,用强密码) | | `HONCHO_AUTH_JWT_SECRET` | JWT 密钥(仅在 `HONCHO_AUTH_USE_AUTH=true` 时需要;用 `python scripts/generate_jwt_secret.py` 生成) | -**关键约束**:Honcho 启动时会**校验** `HONCHO_LLM_API_KEY` 非空 — 缺失则立刻退出。这意味着 `env.cfg` 里这一项**不能用占位符**(如 `sk-placeholder`),必须填真实值,否则 `docker compose up -d` 后 deriver 容器会反复重启。 +**关键约束**:Honcho 启动时会**校验** `HONCHO_LLM_API_KEY` 和 `HONCHO_EMBEDDING_API_KEY` 都非空 — 缺失则立刻退出。这意味着 `env.cfg` 里这两项**不能用占位符**(如 `***`),必须填真实值,否则 `docker compose up -d` 后 deriver/api 容器会反复重启。 ## 部署步骤 @@ -202,7 +208,7 @@ docker compose -p honcho --env-file ./honcho/env.cfg -f ./honcho/stack.yml resta | 数据卷方案 | bind 挂载到 `${Volumes_Path}/{pgdata,redis,source}` | 直观、可直接 `rsync`/`pg_dump`、跨机迁移用 `tar` 整个目录即可 | | 端口绑定 | 0.0.0.0,含 DB 5432 | PVE LAN 上其他 VM 也可访问;DB 端口暴露方便外部工具(DBeaver 等)连接 | | 认证 | 默认 `HONCHO_AUTH_USE_AUTH=false`(dev 模式) | 本地 LAN 自用,跳过 JWT 校验;公网暴露必须改 `true` | -| LLM 默认 | `gpt-5.4-mini` + `text-embedding-3-small` | OpenAI 兼容、成本低;可换 OpenRouter / vLLM / Ollama 等任意端点 | +| LLM 默认 | `gpt-5.4-mini`(主 LLM,OpenAI 兼容);embedding 默认 `Qwen/Qwen3-Embedding-0.6B` 走 SiliconFlow;**备选** 本地 Ollama `qwen3-embedding:0.6b`(零成本、隐私优先) | LLM 走 OpenAI 兼容;embedding 双轨:SiliconFlow(云端,独立 base URL) / Ollama(本地 `host.docker.internal:11434/v1`) | | Honcho 版本 | 默认 `main`(源码 build),可锁 tag 如 `v3.0.10` | 当前最新稳定版 v3.0.x,支持 peer card、dialectic、dream consolidation | | deriver 必须 | api + deriver 双容器 | deriver 是后台推理 worker,没它记忆功能不工作 | | PG 认证 | `scram-sha-256` | 比 md5 更安全,`POSTGRES_INITDB_ARGS` 同步设置 `--auth-host` | diff --git a/honcho/stack.yml b/honcho/stack.yml index fd8f3d1..d55d23e 100644 --- a/honcho/stack.yml +++ b/honcho/stack.yml @@ -42,7 +42,10 @@ services: - NAMESPACE=${HONCHO_NAMESPACE:-honcho} - EMBED_MESSAGES=${HONCHO_EMBED_MESSAGES:-true} - EMBEDDING_MODEL_CONFIG__TRANSPORT=openai - - EMBEDDING_MODEL_CONFIG__MODEL=${HONCHO_EMBEDDING_MODEL:-text-embedding-3-small} + - EMBEDDING_MODEL_CONFIG__MODEL=${HONCHO_EMBEDDING_MODEL:-Qwen/Qwen3-Embedding-0.6B} + - EMBEDDING_MODEL_CONFIG__OVERRIDES__BASE_URL=${HONCHO_EMBEDDING_BASE_URL:-https://api.siliconflow.cn/v1} + - EMBEDDING_VECTOR_DIMENSIONS=1024 + - EMBEDDING_API_KEY=${HONCHO_EMBEDDING_API_KEY:-} - DERIVER_MODEL_CONFIG__TRANSPORT=openai - DERIVER_MODEL_CONFIG__MODEL=${HONCHO_DERIVER_MODEL:-gpt-4o-mini} - DERIVER_WORKERS=${HONCHO_DERIVER_WORKERS:-1} @@ -88,9 +91,14 @@ services: - CACHE_ENABLED=true - NAMESPACE=${HONCHO_NAMESPACE:-honcho} - DERIVER_MODEL_CONFIG__TRANSPORT=openai - - DERIVER_MODEL_CONFIG__MODEL=${HONCHO_DERIVER_MODEL:-gpt-4o-mini} + - DERIVER_MODEL_CONFIG__MODEL=${HONCHO_DERIVER_MODEL:-gpt-5.4-mini} - DERIVER_WORKERS=${HONCHO_DERIVER_WORKERS:-1} + - EMBEDDING_MODEL_CONFIG__TRANSPORT=openai + - EMBEDDING_MODEL_CONFIG__MODEL=${HONCHO_EMBEDDING_MODEL:-Qwen/Qwen3-Embedding-0.6B} + - EMBEDDING_MODEL_CONFIG__OVERRIDES__BASE_URL=${HONCHO_EMBEDDING_BASE_URL:-https://api.siliconflow.cn/v1} + - EMBEDDING_VECTOR_DIMENSIONS=1024 - LLM_OPENAI_API_KEY=${HONCHO_LLM_API_KEY:?set HONCHO_LLM_API_KEY} + - EMBEDDING_API_KEY=${HONCHO_EMBEDDING_API_KEY:-} - MODEL_CONFIG__OVERRIDES__BASE_URL=${HONCHO_LLM_BASE_URL:-https://api.openai.com/v1} volumes: - /etc/timezone:/etc/timezone:ro