本次按openclaw 2026.9.1为例子
https://github.com/openclaw/openclaw
菜单
一、docker部署
1.1 拉取项目源码
略
1.2 docker 镜像拉取
因为国内拉镜像可能会封,所以可以用docker pull + docker tag的方式绕开
1.3 修改配置文件.env
OPENCLAW_GATEWAY_TOKEN=****配置token****
# 自定义挂载路径
OPENCLAW_CONFIG_DIR=/opt/app/openclaw8_2/state
OPENCLAW_WORKSPACE_DIR=/opt/app/openclaw8_2/workspace
OPENCLAW_AUTH_PROFILE_SECRET_DIR=/opt/app/openclaw8_2/auth-secrets
## 设置时区
OPENCLAW_TIMEZONE=Asia/Shanghai
###开启沙箱用
DOCKER_GID=20
1.4 修改Dockerfile

1.5 修改docker-compose.yml


执行命令
shell>>>docker compose up -d
编写openclaw.json
二、部署emb模型
2.1、下载模型(略)
2.2 运行模型
(bge-emb) admin-xy@xy-ai-server:/DATA/app/embedding$ cat emb_server_bge-m3.py
from fastapi import FastAPI, HTTPException, Header
from pydantic import BaseModel
from FlagEmbedding import BGEM3FlagModel
import uvicorn
app = FastAPI()
AUTH_TOKEN = "sk-xxxxxxxxx"
# 纯 CPU 优化:关闭 FP16,开启内存高效模式
# 模型约 2.5GB,FP32 模式下 16G 内存可稳定运行
model = BGEM3FlagModel(
'/DATA/app/Models/Embedding/bge-m3',
use_fp16=False,
device="cpu",
use_memory_efficient=True
)
class EmbRequest(BaseModel):
model: str
input: str | list[str]
@app.post("/v1/embeddings")
async def emb(
req: EmbRequest,
authorization: str | None = Header(default=None)
):
# Token校验逻辑
if not authorization or not authorization.startswith("Bearer "):
raise HTTPException(status_code=401, detail="Missing token")
token = authorization.removeprefix("Bearer ")
if token != AUTH_TOKEN:
raise HTTPException(status_code=401, detail="Invalid token")
try:
texts = [req.input] if isinstance(req.input, str) else req.input
res = model.encode(
texts,
return_sparse=True,
return_dense=True,
batch_size=8,
max_length=4096
)
dense_vecs = res["dense_vecs"].tolist()
return {
"object": "list",
"data": [
{"object": "embedding", "embedding": v, "index": i}
for i, v in enumerate(dense_vecs)
],
"model": req.model,
"usage": {
"prompt_tokens": 0,
"total_tokens": 0
}
}
except Exception as e:
raise HTTPException(status_code=500, detail=f"Embedding failed: {str(e)}")
if __name__ == "__main__":
uvicorn.run("emb_server_bge-m3:app", host="0.0.0.0", port=8110)
2.3 创建服务
创建服务文件
sudo nano /etc/systemd/system/emb-bge.service
内容如下:
[Unit]
Description=BGE-M3 Embedding Service (Conda env, CPU only, no multi-process)
After=network.target
[Service]
User=admin-xy
Environment="CUDA_VISIBLE_DEVICES="
WorkingDirectory=/DATA/app/embedding
ExecStart=/DATA/app/conda/envs/bge-emb/bin/python emb_server_bge-m3.py
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
# 让systemd识别新增的service文件
sudo systemctl daemon-reload
# 设置开机自启
sudo systemctl enable emb-bge
# 启动服务
sudo systemctl start emb-bge
测试:
shell>>curl http://127.0.0.1:8110/v1/embeddings -H "Authorization: Bearer sk-1234567890xinyezjb2026" -H "Content-Type: application/json" -d '{
"model": "BAAI/bge-m3",
"input": ["星伴同行-进行AI"]
}'
