01
准备环境,拉取项目
准备 Git 和已运行的 Docker。Docker 镜像内已包含 Python、uv 和 FFmpeg,本机不需要单独安装它们。
检查工具
git --version
docker compose version
docker info
前三条命令应显示版本信息和 Docker 服务端信息;若提示无法连接 Docker,请先启动 Docker 服务。
拉取项目
git clone https://github.com/ybh-ybh/know-where.git
cd know-where
PowerShell · 复制配置
Copy-Item .env.example .env
macOS / Linux · 复制配置
cp .env.example .env
03
准备模型,填写 .env
在你选择的模型服务控制台创建 API Key,查找其 OpenAI 兼容 Chat Completions 接口根地址和模型 ID。下面六项是主线必填配置,替换占位值后保存。
dotenv · 六项必填
# 数据库连接地址:按第 4 步选择的路径填写。
KW_DATABASE_URL=postgresql+psycopg://knowwhere:替换为数据库密码@postgres:5432/knowwhere
# 飞书自建应用的凭据。
KW_FEISHU_APP_ID=cli_替换为你的AppID
KW_FEISHU_APP_SECRET=替换为你的AppSecret
# 文本模型:填写供应商的兼容接口根地址和实际模型ID。
KW_LLM_API_KEY=替换为你的APIKey
KW_LLM_BASE_URL=https://你的模型服务地址/v1
KW_LLM_MODEL=替换为你的模型ID
Base URL 使用供应商提供的根地址,不要追加 /chat/completions。
保留模板的 KW_ASR_PROVIDER=faster_whisper 和 KW_TEMP_STORAGE_PROVIDER=local。
视觉模型三项此时可继续注释。
只在本机编辑 .env。此页面不需要你填写密钥;不要把 .env 上传到 GitHub。数据库地址在下一步补全。
完成标志 已填写自己的飞书与文本模型配置,准备补全数据库连接。
04
准备 PostgreSQL
新建数据库 · 可选 Compose 配置
仓库已经提供 compose.postgres.yml。它会单独启动 PostgreSQL 17 容器,数据保存在命名卷中,不开放主机端口。请自行生成至少 24 位随机字母数字密码,并在 .env 中填写下面两项;两处密码必须相同。
dotenv · 新建数据库
# 自行生成的数据库密码;只供可选 PostgreSQL 容器使用。
KW_POSTGRES_PASSWORD=替换为你的随机字母数字密码
# 用同一个密码替换此处,主机名保持 postgres。
KW_DATABASE_URL=postgresql+psycopg://knowwhere:替换为你的随机字母数字密码@postgres:5432/knowwhere
启动数据库
docker compose -f compose.yml -f compose.postgres.yml up -d postgres
docker compose -f compose.yml -f compose.postgres.yml ps postgres
等待状态显示 healthy 后继续。数据库名和用户名均为 knowwhere。密码仅在空数据卷第一次初始化时生效,之后只修改 .env 不会改变数据库中已有账号密码。
使用已有数据库
先在 PostgreSQL 管理工具中创建专用数据库和账号,确保账号能连接并创建、修改表。将实际连接信息填入 .env:
dotenv · 已有数据库
KW_DATABASE_URL=postgresql+psycopg://用户名:URL编码后的密码@容器可访问的数据库主机:5432/knowwhere
不要启用 compose.postgres.yml,也不需要 KW_POSTGRES_PASSWORD。若密码含 @、:、/、% 等字符,先对密码部分进行 URL 编码,端口使用数据库实际端口。
容器内的 localhost / 127.0.0.1 是容器自身。远程数据库使用容器可达的域名或 IP;Windows/macOS Docker Desktop 上的宿主机数据库可使用 host.docker.internal,并确认 PostgreSQL 监听地址和访问规则允许 Docker 连接。Linux 主机上的数据库需提供容器可达的主机地址,不直接套用 localhost。
完成标志 新建数据库为 healthy;或已有数据库已建好,.env 中填写了容器可达的连接地址。
05
构建镜像,启动知归
首次构建会下载系统和 Python 依赖,请等待命令完成。接着迁移数据库并检查连接:
构建镜像 · 新建数据库
docker compose -f compose.yml -f compose.postgres.yml build app
构建镜像 · 已有数据库
docker compose build app
迁移与健康检查 · 新建数据库
docker compose -f compose.yml -f compose.postgres.yml run --rm app migrate-and-health
迁移与健康检查 · 已有数据库
docker compose run --rm app migrate-and-health
成功输出 OK: migrations + config + postgresql。此时验证的是配置和数据库,不代表飞书权限或模型接口已验证。
后台启动机器人 · 新建数据库
docker compose -f compose.yml -f compose.postgres.yml --profile gateway up -d gateway
后台启动机器人 · 已有数据库
docker compose --profile gateway up -d gateway
查看状态与日志 · 新建数据库
docker compose -f compose.yml -f compose.postgres.yml --profile gateway ps
docker compose -f compose.yml -f compose.postgres.yml logs --tail 50 gateway
查看状态与日志 · 已有数据库
docker compose --profile gateway ps
docker compose logs --tail 50 gateway
gateway 应保持运行。若不断重启,先到下方排错区域检查原因。不要仅凭“长连接已启动”这一行判断已成功连到飞书,下一步还要检查飞书控制台并发送消息验证。
完成标志 数据库检查通过,Gateway 容器持续运行,准备回飞书设置事件。
07
发送链接,完成第一条归档
在飞书客户端搜索并打开你创建的“知归”机器人私聊,直接发送下面的公开仓库链接:
发送给飞书机器人
https://github.com/ybh-ybh/know-where
- 先收到“知归已收到,正在提取、总结并归档。”
- 等待模型处理完成,收到“归档完成:”及记录链接。
- 打开记录,检查标题、原始链接、分类、摘要和关键观点。也可查看多维表格的未读与分类视图。
第一次请使用文字内容验证。只发送“绑定知归”不会触发归档;视频与图文可在下方扩展能力中继续配置。
完成标志 机器人返回归档完成,且你能打开记录、看到本次链接及整理结果。到这里主线部署完成。
08
日常运行与更新
查看日志、停止与恢复机器人
实时日志 · Ctrl+C 仅退出查看 · 新建数据库
docker compose -f compose.yml -f compose.postgres.yml logs -f gateway
实时日志 · Ctrl+C 仅退出查看 · 已有数据库
docker compose logs -f gateway
仅停止机器人 · 新建数据库
docker compose -f compose.yml -f compose.postgres.yml stop gateway
仅停止机器人 · 已有数据库
docker compose stop gateway
恢复运行 · 新建数据库
docker compose -f compose.yml -f compose.postgres.yml --profile gateway up -d gateway
恢复运行 · 已有数据库
docker compose --profile gateway up -d gateway
修改 .env 后重新创建容器
只运行 restart 不会重新载入 env_file。修改配置后执行:
应用新配置 · 新建数据库
docker compose -f compose.yml -f compose.postgres.yml --profile gateway up -d --force-recreate gateway
应用新配置 · 已有数据库
docker compose --profile gateway up -d --force-recreate gateway
更新代码
先暂停向机器人发送链接,等待当前归档完成,再停止 Gateway 接收新任务:
更新前停止机器人 · 新建数据库
docker compose -f compose.yml -f compose.postgres.yml stop gateway
更新前停止机器人 · 已有数据库
docker compose stop gateway
然后备份数据库。新建数据库可执行以下命令,将容器内备份复制到当前目录;已有数据库请使用供应商备份或 pg_dump。完成备份后再拉取代码并更新。
备份数据库 · 同名文件会被覆盖
docker compose -f compose.yml -f compose.postgres.yml exec -T postgres pg_dump -U knowwhere -d knowwhere -Fc -f /tmp/knowwhere-backup.dump
docker compose -f compose.yml -f compose.postgres.yml cp postgres:/tmp/knowwhere-backup.dump ./knowwhere-backup.dump
构建、迁移、更新 · 新建数据库
docker compose -f compose.yml -f compose.postgres.yml build app
docker compose -f compose.yml -f compose.postgres.yml run --rm app migrate-and-health
docker compose -f compose.yml -f compose.postgres.yml --profile gateway up -d --force-recreate gateway
构建、迁移、更新 · 已有数据库
docker compose build app
docker compose run --rm app migrate-and-health
docker compose --profile gateway up -d --force-recreate gateway
若 git pull 提示存在本地改动或分支分叉,先保存改动、处理提示,不强行覆盖。
停止整套容器
停止容器并保留数据卷 · 新建数据库
docker compose -f compose.yml -f compose.postgres.yml --profile gateway down
停止容器并保留数据卷 · 已有数据库
docker compose --profile gateway down
新建数据库方式会同时停止 PostgreSQL;已有数据库不会受此命令停止。恢复时先按第 4 步启动数据库,再恢复 Gateway。不要添加 -v,否则会删除本项目管理的数据卷。
完成标志 能查看运行状态、应用配置更新,并知道如何备份和保留数据停止服务。