【路由】源码构建PilotDeck 智能体
项目地址
部署环境
- 设备:软路由N100
- 设备架构:X86
- 部署方式:源码构建
项目资源
- 夸克网盘:
链接:https://pan.quark.cn/s/93c4242de7be?pwd=HKxj
提取码:HKxj
项目优势
- PilotDeck 以 WorkSpace 为基本单位,将文件、记忆、技能在项目级别完整隔离与沉淀,并配套提供 白盒记忆、智能路由、Always-on 三大能力,整套系统原生支持 Model Context Protocol (MCP),跨前端(Web / CLI / IM)行为一致。支持将不同的大模型APi统一在这个项目中,根据任务难度来智能调用不同的模型能力,以降低生产者的Token费用。同时也支持后台自动跑任务,支持将该项目,接入微信APP,随时可以用微信APP处理工作。
PilotDeck 完整部署与维护包
这是一个可直接解压到 iStoreOS / OpenWrt 软路由使用的完整源码与部署包。
它已经包含本项目部署过程中遇到的鉴权构建问题和 DeepSeek 模型配置修正。
版本与修复内容
- PilotDeck
main源码快照。 - 源码提交:
1732d07dc5f90cf243180b451c250e15f3a947ab。 - Dockerfile 在构建 UI 时接收
PILOTDECK_DISABLE_LOCAL_AUTH。 - Compose 的构建参数和运行时鉴权设置保持一致。
- 默认模型改为 DeepSeek 官方 API:
- 主模型:
deepseek/deepseek-v4-flash - 轻量模型:
deepseek/deepseek-chat - API URL:
https://api.deepseek.com/v1
- 主模型:
- 持久化目录直接映射到宿主机
./data。 - 智能体工作区直接映射到宿主机
./workspace。 - 提供安装、备份、更新和诊断脚本。
详细版本信息见 VERSION.txt。
目录说明
PilotDeck-Deploy-2026-10-22/
├── PilotDeck/ # 完整项目源码,Docker build context
├── docker-compose.yml
├── .env.example
├── config/
│ └── pilotdeck.deepseek.example.yaml
├── data/ # 运行后保存认证库、配置、会话和记忆
├── workspace/ # 智能体可读写的独立工作区
├── backups/ # 备份和升级下载目录
├── scripts/
│ ├── install.sh
│ ├── backup.sh
│ ├── update.sh
│ ├── patch-dockerfile.sh
│ └── diagnose.sh
├── VERSION.txt
└── README.md
包内故意不包含以下内容:
- 真实 API Key。
- 当前路由器的
data/、账号数据库和聊天数据。 - 构建生成的 Docker 镜像。
.git历史目录。
全新部署
将整个目录放到软路由:
/mnt/mydisk/docker/pilotdeck
进入目录:
cd /mnt/mydisk/docker/pilotdeck
cp .env.example .env
chmod 600 .env
首次部署建议先保持 API Key 为空,通过网页配置:
sh scripts/install.sh
docker compose logs -f --tail=200 pilotdeck
打开:
http://软路由局域网IP:3001
首次进入必须创建 PilotDeck 自己的账号。Lucky 账号、iStoreOS 账号和
PilotDeck 账号互不通用。
注册并登录后进入 Settings → Model Pool。
DeepSeek 官方 API 配置
不要将 DeepSeek Key 配置在 openrouter provider 下。
正确参数:
| 字段 | 值 |
|---|---|
| Provider ID | deepseek |
| Protocol | openai |
| API URL | https://api.deepseek.com/v1 |
| Model ID | deepseek-v4-flash |
| 完整主模型引用 | deepseek/deepseek-v4-flash |
| 轻量模型引用 | deepseek/deepseek-chat |
网页操作:
- 打开
Settings → Model Pool。 - 点击
+ 添加 Provider。 - 选择内置的
DeepSeek。 - API Key 只填写 Key 本身,不要添加
Bearer。 - 添加模型 ID
deepseek-v4-flash。 - 保存并点击连接测试。
- 将主模型设为
deepseek/deepseek-v4-flash。 - 在
Settings → Route检查是否还存在openrouter/...引用。 - 将所有路由和 Token Saver 引用迁移到 DeepSeek 后,再删除 OpenRouter。
PilotDeck 也会拒绝格式明显错误的模型引用。不要写成:
openrouter/deepseek/deepseek-v4-flash
语言切换为中文入口

- 左侧返回箭头下方那个菜单选项便是切换语言的选项。
首次启动前通过 .env 自动生成配置
如果希望首次启动时自动建立 DeepSeek 配置,在 .env 中填写:
PILOTDECK_MODEL=deepseek/deepseek-v4-flash
PILOTDECK_LIGHT_MODEL=deepseek/deepseek-chat
PILOTDECK_API_URL=https://api.deepseek.com/v1
PILOTDECK_API_KEY=sk-your-deepseek-api-key
entrypoint 只在 data/pilotdeck.yaml 不存在时读取这些值。
配置文件生成之后再修改 .env 不会覆盖现有模型配置,此时应使用网页设置。
后台访问
IP:3001 #局域网
Lucky 反向代理
推荐规则:
| 项目 | 值 |
|---|---|
| 监听端口 | 1871 |
| TLS | 开启 |
| 前端域名 | pilotdeck.hello.com |
| 后端地址 | http://192.168.100.8:3001 |
| 服务类型 | 反向代理 |
| 跨域支持 | 开启 |
| 禁用长连接 | 关闭 |
Lucky 2.27.x 会自动透传 WebSocket Upgrade,不需要单独的 WebSocket 开关。
确认日志没有持续出现下面的错误:
[WARN] WebSocket authentication failed
正确登录后应出现:
[OK] WebSocket authenticated for user: <用户名>
如果 Lucky 跑在 Docker 容器里,不能使用 127.0.0.1:3001 指向 iStoreOS
宿主机的 PilotDeck;应改成宿主机的局域网 IP。当前 Lucky 安装在宿主机时,
使用 http://192.168.100.8:3001 是正确做法。
从现有部署迁移
不要用本包的空白 data/ 覆盖已有数据。先停止服务并备份:
cd /mnt/mydisk/docker/pilotdeck
docker compose stop pilotdeck
sh scripts/backup.sh
将新包解压到临时目录,然后:
- 保留新包中的
docker-compose.yml。 - 保留新包中已修正的
PilotDeck/Dockerfile。 - 将旧部署的整个
data/复制到新包。 - 按需复制旧
workspace/。 - 确认
.env中的PILOTDECK_DISABLE_LOCAL_AUTH=0。
确认完成后再运行安装脚本。
备份
cd /mnt/mydisk/docker/pilotdeck
sh scripts/backup.sh
备份保存到 backups/<时间>/,包含:
data.tar.gzworkspace.tar.gz.env的本地副本- Compose 配置
- 版本信息
env.backup 可能包含 API Key,不要上传到网盘或发送给他人。
升级
不要运行:
docker compose pull
PilotDeck 当前需要从源码构建,没有可直接拉取的官方应用镜像。
使用提供的升级脚本:
cd /mnt/mydisk/docker/pilotdeck
sh scripts/update.sh
脚本会:
- 自动备份当前数据和配置。
- 下载最新
main源码。 - 自动重新应用登录鉴权构建补丁。
- 保留旧的
PilotDeck源码目录。 - 新镜像构建失败时恢复旧源码。
升级不会删除 data/、workspace/ 或 backups/。
常用维护命令
cd /mnt/mydisk/docker/pilotdeck
docker compose ps
docker compose logs -f --tail=200 pilotdeck
docker compose restart pilotdeck
docker compose down
docker compose up -d
sh scripts/diagnose.sh
故障排查
页面显示 Model configuration unavailable
查看完整诊断:
sh scripts/diagnose.sh
如果错误为 Access denied. No token provided:
- 确认访问的是 PilotDeck 自己的登录页面。
PILOTDECK_DISABLE_LOCAL_AUTH=0必须与 Dockerfile 构建参数一致。- 本包已包含该修复,不要从旧镜像继续启动。
WebSocket authentication failed
检查:
docker compose logs --tail=200 pilotdeck
同时确认 Lucky 后端地址直接指向 http://192.168.100.8:3001,
并已保留原始 /ws?token=... 请求路径和查询参数。
Incorrect API key / Missing Authentication header
通常是 provider 与 Key 不匹配:
| Key | 正确服务 |
|---|---|
sk-or-v1-... | OpenRouter |
普通 sk-... | 具体的 OpenAI 兼容服务,需确认服务商 |
如果使用 DeepSeek 官方 API,provider 必须是 deepseek,不是 openrouter。
构建卡住或拉取失败
本包不需要 git。构建需要访问 Docker Hub、Debian 源、npm registry
和 GitHub Release。软路由有代理时,可在执行构建命令时传入:
HTTP_PROXY=http://宿主机IP:7890 \
HTTPS_PROXY=http://宿主机IP:7890 \
DOCKER_BUILDKIT=1 \
docker compose build --build-arg PILOTDECK_DISABLE_LOCAL_AUTH=0 pilotdeck
若出现 signal: killed 或退出码 137,通常是内存不足。
安全边界
- 不要把 PilotDeck 的 3001 端口直接暴露到公网。
- 对外访问使用 Lucky HTTPS 反向代理。
- 建议给 PilotDeck 设置独立强密码。
- 不要将
/var/run/docker.sock挂载给容器。 - 不要把路由器根目录或
/mnt/mydisk/docker整个挂载到/workspace。 - 只将需要处理的文件放在
workspace/。 - 外部磁盘优先使用 ext4;exFAT/NTFS 可能导致权限和 SQLite 异常。





