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