安装与设置问题
解决安装器、Docker、数据库、认证和 /setup 相关的问题。
下面每一条对应一种安装器、服务器或 /setup 的故障,依次给出症状、原因和修复方法。请在包含 docker-compose.yml 的目录中运行 Compose 命令。由 CLI 管理的安装,该目录是 ~/.lore/docker。
安装器与 Docker
CLI 提示某个运行时被跳过
症状: 安装过程输出类似 claude CLI not found 的内容,并把该运行时标记为 skipped(已跳过)。如果所有选中的运行时都被跳过,安装会以 Install failed 结束。
原因: CLI 通过在 PATH 中查找运行时的命令来识别运行时。找不到命令时,CLI 会跳过该运行时,而不会把它记为已配置。
修复:
-
在运行安装程序的同一个 Shell 中,检查命令能否解析:
command -v claude -
如果没有输出,请安装该运行时,或把它的目录加入
PATH,然后打开新的 Shell。 -
针对该运行时重新安装:
npx @loremem/cli install --channels claudecode
Hermes 不需要运行时 CLI。安装程序只下载它的文件,连接需要你手动完成。参见 Agent 接入问题。
未检测到 Docker
症状: npx @loremem/cli install --docker 停止,并输出 Docker is not available 或 Docker Compose is not available。
原因: CLI 要求 docker version 执行成功,并且 docker compose version 或 docker-compose version 至少有一个执行成功。第一条错误表示 Docker 未安装、守护进程没有运行,或当前用户无法访问它。第二条错误表示缺少 Compose。
修复:
-
运行
docker version。它必须同时输出客户端和服务器信息,且没有错误。如果没有,请启动 Docker 守护进程。 -
运行
docker compose version。如果失败,请安装 Compose 插件。 -
重新安装:
npx @loremem/cli install --docker
Docker Compose 失败或健康检查超时
症状: 安装程序输出 docker compose up failed,或 Lore Docker health check timed out for http://127.0.0.1:18901。安装程序最多等待三分钟,等待 /api/health 返回成功。
原因: 容器启动失败,或 web 已启动,但一直不健康。数据库无法连接也会导致健康检查失败,因此超时通常指向 PostgreSQL。
修复:
-
检查容器状态:
cd ~/.lore/docker docker compose ps -
查看未运行或不健康的服务的日志:
docker compose logs web docker compose logs postgres -
修复日志中的错误,然后重新运行
docker compose up -d。
服务器与数据库
服务器无法启动
症状: web 服务退出或不断重启,或者 /api/health 始终没有响应。
原因: 常见原因包括 DATABASE_URL 有误、端口已被其他程序占用,或 PostgreSQL 容器不健康。
修复:
- 按上面的方式查看
web和postgres的日志。 - 在 Docker 内部,
DATABASE_URL指向postgres服务的5432端口。POSTGRES_PORT(默认55439)只是你的机器连接数据库时使用的宿主机端口。 - 如果
18901端口被占用,请在.env中把WEB_PORT设为空闲端口,并在基础 URL 中使用该端口。 - 修改
.env后,重新运行docker compose up -d,让容器读取新的值。
迁移失败,出现 vector 或 pg_jieba 错误
症状: web 日志中出现 [migrations] failed,后面跟着数据库错误。启动会停在失败的迁移处。
原因: 数据库中缺少 vector 扩展(pgvector),或者数据库角色无法创建 schema 和扩展。缺少 pg_jieba 或 zhparser 不会阻止迁移,只会削弱中文搜索的效果。
修复:
-
使用 Lore 的 PostgreSQL 镜像
fffattiger/pgvector-zhparser:pg16。它包含 pgvector、zhparser 和 pg_jieba,Docker 安装默认使用该镜像。 -
如果使用自己的 PostgreSQL 服务器,请安装 pgvector。首次启动时使用可以创建 schema 和扩展的角色,之后再切换到受限角色。
-
检查 Lore 数据库中已有的扩展:
SELECT extname FROM pg_extension WHERE extname IN ('vector', 'pg_jieba', 'zhparser'); -
要使用
pg_jieba,请把它加入shared_preload_libraries,然后重启 PostgreSQL。
/api/health 失败
症状: curl -fsS http://127.0.0.1:18901/api/health 提示连接被拒绝,或返回 503 等 HTTP 错误。
原因: 连接被拒绝表示 web 没有运行,或者你使用的地址中的端口与 WEB_PORT 不一致。返回 503 且 "status":"degraded",表示 web 无法连接数据库。
修复:
- 运行
docker compose ps,确认web和postgres都在运行。 - 遇到连接被拒绝,对比地址中的端口与
.env中的WEB_PORT。 - 遇到
503,用curl -sS http://127.0.0.1:18901/api/health读取响应正文,然后检查DATABASE_URL和postgres的日志。
令牌与认证
请求返回 401 Unauthorized
症状: Web 控制台、API 或 Agent 收到 {"detail":"Unauthorized"},或者 MCP 返回包含 Unauthorized 的 JSON-RPC 错误。
原因: 服务器设置了 API_TOKEN,而请求没有带令牌、带了错误的令牌,或者令牌放在了 Lore 不读取的位置。Lore 只从 Authorization: Bearer <token> 请求头中读取令牌。
修复:
-
对比服务器
.env中的API_TOKEN与客户端中的令牌。不要粘贴任何一个值。npx @loremem/cli status只显示是否保存了令牌(api_token: set或absent),无法证明令牌是否正确。 -
把正确的令牌写入客户端。
--skip-docker会保留已保存的服务器及其 Docker 管理设置:npx @loremem/cli install -y --skip-docker --api-token lm_your_token -
重启 Agent。每个运行时保存令牌的位置不同:Claude Code 保存在
~/.claude/settings.json的env中;Codex 保存在~/.codex/config.toml中[mcp_servers.lore]下的Authorization请求头中;OpenClaw 保存在~/.openclaw/openclaw.json的插件配置中;其他运行时读取~/.lore/config.json。
CLI 拒绝通过明文 HTTP 传输令牌
症状: 安装停止,并输出 API tokens require HTTPS for non-loopback Lore servers (pass --allow-insecure-http to explicitly accept the risk for this run)。
原因: 基础 URL 使用 http://,且主机不是 localhost、127.0.0.1 或 ::1。CLI 只允许在回环地址上通过明文 HTTP 发送令牌。
修复:
-
使用 HTTPS。把服务器放在带 TLS 的反向代理后面,并使用
https://地址。 -
在你信任的网络中,只为本次运行接受风险:
npx @loremem/cli install --base-url http://192.168.1.10:18901 --api-token lm_your_token --allow-insecure-http
注意
网络路径上的任何人都可能读取或篡改通过明文 HTTP 发送的令牌。--allow-insecure-http 的许可不会被保存,-y 也不代表同意该风险。
Loremem 云服务拒绝你的令牌
症状: 访问 https://api.loremem.com 的请求失效,或者安装停止并输出 Loremem SaaS requires an API token。
原因: 令牌已被吊销,或者安装时没有令牌。令牌只会在创建时显示一次。
修复:
-
在控制台中打开令牌页面,确认该令牌是否仍然存在。如果已被吊销,请在安装页面创建新的项目令牌。令牌和安装命令出现时,请立即复制。
-
使用新令牌运行安装:
npx @loremem/cli install --base-url https://api.loremem.com --api-token lm_your_token
版本、模型与配置
安装程序无法解析发布版本
症状: 安装输出 Could not resolve GitHub release tag,或下载时出现 curl 或 unzip 错误。
原因: CLI 会从 GitHub 读取最新的发布标签。请求受到速率限制,或网络路径被阻断,会导致第一种错误。下载依赖 curl 和 unzip,因此第二种错误表示其中之一缺失,或传输失败。
修复:
- 如果 GitHub 对请求进行了限流,请等待几分钟后重新安装。
- 确认你的机器可以访问
github.com。 - 如果缺少
curl或unzip,请先安装。
/setup 无法保存模型设置
症状: 嵌入模型或视图 LLM 步骤提示 Fill every field on this page before continuing,并列出空白字段;或者连接测试失败。
原因: 每个模型步骤都需要基础 URL、API 密钥和模型名称。嵌入模型会请求 <基础 URL>/embeddings。如果你的服务商把 OpenAI 兼容接口放在 /v1 下,基础 URL 就要包含 /v1,例如 http://127.0.0.1:8090/v1。不要自己再加上 /embeddings。
修复:
- 填写该步骤的三个字段:基础 URL、API 密钥和模型名称。
- 对该步骤运行连接测试,测试结果会指出失败的原因。
HTTP 401通常表示密钥有误,HTTP 404通常表示基础 URL 或路径有误,response missing embedding vector表示该端点不兼容 OpenAI 格式。 - 再次保存。修改嵌入模型后保存,会重建所有嵌入,保存操作会等待重建完成。
CLI 拒绝 ~/.lore/config.json
症状: CLI 停止,并输出 Invalid JSON in,后面是文件的完整路径和解析器的错误信息;或者输出 Lore config in ... must be a JSON object。
原因: 共享配置文件不是合法的 JSON,或者其顶层值不是对象。CLI 拒绝覆盖格式错误的文件,因此在你修复或移走该文件之前,错误会一直出现。
修复:
-
先备份文件,再修正语法。注意检查多余的逗号或缺失的引号。合法的文件结构如下:
{ "base_url": "http://127.0.0.1:18901", "api_token": "lm_your_token" } -
如果无法修复,把文件移走,然后用之前相同的参数重新连接。已有的服务器使用
--base-url,由 CLI 管理的服务器使用--docker。mv ~/.lore/config.json ~/.lore/config.json.bak npx @loremem/cli install --base-url http://127.0.0.1:18901 --api-token lm_your_token