# Planet 使用手册 这份手册面向日常使用、演示、开发联调和本地运维。它覆盖四个核心入口: - `planet.sh`:本地启动、停止、重启、健康检查和日志入口 - Earth:公开 3D 地球态势页面 - 控制台:登录后的管理后台 - Docs:后端 Gatekeeper 受控的文档站,基础使用文档公开,开发/运维文档按权限组开放 快速启动路径见 [快速开始](/home/ray/dev/linkong/planet/docs/technical/zh/quickstart.md)。常见排障见 [常见问题](/home/ray/dev/linkong/planet/docs/technical/zh/faq.md)。 ## 入口总览 默认启动后,常用地址如下: | 名称 | 地址 | 是否需要登录 | 说明 | | --- | --- | --- | --- | | Earth | `http://localhost:3000/earth` | 否 | 3D 地球、图层、BGP、卫星、海缆、新闻态势 | | Docs | `http://localhost:3000/docs` | 部分需要 | 使用手册公开;开发、后端、运维文档按 Gatekeeper 权限组开放 | | FAQ | `http://localhost:3000/docs/faq` | 否 | Windows / WSL、端口、依赖、动捕、凭证和权限排障 | | 控制台 | `http://localhost:3000/admin` | 是 | 数据、配置、告警、日志和专题观测 | | AI | `http://localhost:3000/ai` | 是 | 模型供应商、AI 工具和测试台 | | 后端 API 文档 | `http://localhost:8000/docs` | 视接口而定 | FastAPI / OpenAPI 文档 | ## planet.sh `planet.sh` 是本地开发和演示的主控脚本。优先使用它管理服务,而不是手动分别启动前端、后端、数据库和 AI Provider。 ### 启动 ```bash ./planet.sh start ``` 默认行为: - 启动 PostgreSQL 和 Redis - 启动 AI Provider - 启动后端 API - 启动前端 Vite dev server - 输出 Earth、控制台、Playground 和后端 API 文档入口 可指定端口: ```bash ./planet.sh start -b 8001 -f 3001 -a 8101 ``` 参数含义: | 参数 | 含义 | | --- | --- | | `-b ` | 后端端口 | | `-f ` | 前端端口 | | `-a ` | AI Provider 端口 | | `--allow-lan` | 允许局域网访问 | | `--verbose` | 在执行过程中显示更多命令输出 | ### AI Provider 环境变量和构建 AI Provider 的运行期配置可以放在两处: | 位置 | 适合内容 | 说明 | | --- | --- | --- | | `aiprovider/.env` | 团队约定的本地默认配置 | Docker Compose 会作为 `env_file` 读取 | | `~/.zshrc` | 个人机器上的 provider、模型、密钥和代理变量 | `planet.sh` 启动时会读取常见的 `AI_*`、`SERVICE_*`、`PYTHON_IMAGE`、`UV_IMAGE`、代理变量 | 推荐写法: ```bash export AI_PROVIDER=minimax export AI_PROVIDER_API=anthropic-messages export AI_BASE_URL=https://api.example.com/anthropic export AI_API_KEY=sk-change-me export AI_MODEL=MiniMax-M2.7 export AI_PROVIDER_SERVICE_TOKEN=change_me ``` 默认情况下,`planet.sh` 只静态解析 `~/.zshrc` 中简单的 `export KEY=value` 或 `KEY=value` 行,避免 shell 主题、插件或交互初始化拖慢启动。如果变量依赖复杂 shell 展开,可以显式启用 source 模式: ```bash PLANET_LOAD_ZSHRC_ENV=source ./planet.sh start -a ``` 如需完全忽略 `~/.zshrc`: ```bash PLANET_LOAD_ZSHRC_ENV=0 ./planet.sh start -a ``` AI Provider 镜像只在代码、Dockerfile、Compose 配置或相关 Python 依赖变化时重建。修改 `aiprovider/.env` 或 `~/.zshrc` 中的模型、密钥、Base URL 不会触发镜像重建;重启 AI Provider 即可让容器读取新配置: ```bash ./planet.sh restart -a ``` 构建较慢时,优先判断当前卡在哪一层: | 现象 | 常见原因 | 处理方式 | | --- | --- | --- | | `transferring context` 很大 | Docker build context 包含前端资源、PDF、数据目录等无关文件 | 当前仓库通过 `.dockerignore` 只发送 AI Provider 必需文件 | | `uv sync` 下载依赖较慢 | 首次构建或缓存为空,网络访问 Python 包较慢 | 等待首次构建完成;后续会复用 BuildKit 的 uv 下载缓存 | | 改密钥后仍显示旧配置 | 容器尚未重启 | 执行 `./planet.sh restart -a` | ### 停止 ```bash ./planet.sh stop ``` 会停止: - 后端 - AI Provider - 前端 - PostgreSQL - Redis ### 重启 全量重启: ```bash ./planet.sh restart ``` 按模块重启: ```bash ./planet.sh restart -b ./planet.sh restart -f ./planet.sh restart -a ./planet.sh restart -d ``` | 参数 | 作用 | | --- | --- | | `-b` | 只重启后端 | | `-f` | 只重启前端 | | `-a` | 只重启 AI Provider | | `-d` | 只重启数据库 | 按模块重启适合日常开发,能避免无关服务被打断。 ### 创建用户 ```bash ./planet.sh createuser ``` 用于首次进入控制台前创建登录账号。脚本会交互式提示用户名、密码和角色。 ### 健康检查 ```bash ./planet.sh health ``` 会检查: - `planet_*` 容器状态 - 后端 `/health` - AI Provider `/health` - 前端页面可达性 如果某项显示 offline,优先查看对应日志。 ### 日志 最近日志: ```bash ./planet.sh log ``` 持续跟随日志: ```bash ./planet.sh log -f ./planet.sh log -b ./planet.sh log -a ``` | 参数 | 日志来源 | | --- | --- | | `-f` / `--frontend` | `/tmp/planet_frontend.log` | | `-b` / `--backend` | `/tmp/planet_backend.log` | | `-a` / `--ai-provider` | `planet_aiprovider` 容器日志 | ### 局域网访问 ```bash ./planet.sh start --allow-lan ``` 适合: - WSL 中启动,Windows 浏览器访问 - 手机或平板演示 Earth - 局域网其他机器访问同一个开发实例 `--allow-lan` 只负责让前端和后端监听 `0.0.0.0`。如果服务运行在 WSL 中,Windows 本机通常可以通过 `localhost` 访问,但手机或其他电脑访问 `http://:3000` 还依赖 Windows 端口转发和防火墙放行。 推荐按顺序判断: ```bash # 在 WSL 或运行 Planet 的 shell 中 curl http://localhost:3000 curl http://localhost:8000/health ss -ltnp | grep -E ':3000|:8000' ``` 如果这里能看到 `0.0.0.0:3000` 和 `0.0.0.0:8000`,但局域网 IP 访问失败,请在管理员 PowerShell 中配置: ```powershell netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=3000 connectaddress=127.0.0.1 connectport=3000 netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8000 connectaddress=127.0.0.1 connectport=8000 New-NetFirewallRule -DisplayName "WSL Planet 3000" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3000 New-NetFirewallRule -DisplayName "WSL Planet 8000" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8000 ``` ## Earth Earth 是公开的 3D 态势页面,入口: ```text http://localhost:3000/earth ``` 它是独立前端,实际页面位于: - `frontend/public/earth/index.html` - `frontend/public/earth/js/` - `frontend/public/earth/css/` React 路由中的 `/earth` 只是用 iframe 承载它。 ### 主要用途 Earth 用于在一个地球视图中观察: - BGP 事件、异常和观测态势 - 卫星和轨迹 - 海缆与登陆点 - 算力中心 - 国界线、经纬线、高清材质、云图、地形 - 新闻直播和态势新闻 - 搜索和聚焦对象详情 ### 图层控制 右侧图层面板用于打开或关闭可视图层。 常见图层包括: - 经纬线 - 国界线 - 高清材质 - 大气云图 - 海缆 - 算力中心 - BGP 观测 - 卫星 - AIS 船只 - 轨迹 - 地形 部分图层存在依赖关系: - 地形依赖高清材质 - 轨迹依赖卫星 - 高清材质关闭时,地球会显示基座地图和边缘识别效果 ### 图例 左下角图例会跟随当前聚焦或启用的图层切换。 当前已覆盖: - 海缆 - 卫星 - 国界线 - 算力中心 - BGP - AIS 船只 AIS 船只图例按船型显示颜色: - 货轮 - 油轮 - 客船 - 渔船 - 军舰 - 停泊/低速 - 其他船只 船只图例中的三角形对应地图上的航行船只标记,圆点对应停泊或低速状态。 ### 搜索 Earth 搜索支持查找当前地球对象,例如: - 海缆 - 登陆点 - 卫星 - 算力中心 - BGP 事件 - BGP 观测站 搜索结果可以用于快速定位对象,并打开对应详情。 ### 位置候选采集 算力中心和 BGP 观测站详情卡支持自动采集坐标候选。点击对象后,使用详情卡中的 `自动采集坐标候选` 或 `重新自动采集坐标` 按钮,后端会从源坐标、开放组织注册 API 和在线地理编码中整理候选位置;这些常规来源没有候选时,会使用当前默认 AI Provider 做一次 LLM factcheck 兜底。BGP 观测站的已存储位置只用于补齐查询上下文,不会作为候选直接返回。 候选可以直接在 Earth 上预览。算力中心候选点击 `保存` 后会写入 `compute_center_locations` 维表,并立即刷新图层。算力中心图层左上角的通知气泡显示无法渲染的待定位数量;点击后可查看列表,单条采集候选,或用 `一键采用` 从上到下保存最高置信候选。没有可用候选的记录会留在列表中,不会被国家中心点或硬编码 hint 伪造位置。详细流程见 [Earth 位置候选采集使用手册](/home/ray/dev/linkong/planet/docs/technical/zh/location-pipeline-user.md)。 ### 设置 设置面板包含: - 旋转模式 / 巡航模式 / 动捕模式 - 巡航模块:BGP、新闻、算力中心、船只、海缆、卫星 - 视图设置:卫星显示风格、日夜模式、面板显示开关 - 动捕调试模式、动捕输入源、只显示骨骼 - 地球默认大小 - 地形透明度 - 重置设置 这些设置会保存在浏览器本地存储中。换浏览器或清理站点数据后会恢复默认值。 ### 视角控制 Earth 支持鼠标、触控板和触屏操作。 常用控制方式: | 操作 | 作用 | | --- | --- | | 鼠标左键拖动 | 旋转地球 | | 手指单指拖动 | 在触屏设备上旋转地球 | | 鼠标滚轮 | 放大或缩小视角 | | 双指捏合 | 在触屏设备上放大或缩小视角 | | 缩放按钮 | 按固定步长调整缩放 | | 点击缩放百分比 | 重置到默认缩放 | 缩放时,顶部胶囊会短暂显示当前缩放比例,例如 `缩放 180%`。这个提示只表示当前视角缩放,不代表数据加载进度;如果页面正在加载数据,加载提示优先显示,缩放提示不会打断加载状态。 拖动灵敏度会根据当前缩放自动调整。默认视角附近保持常规旋转速度;放大后拖动会逐步变细,适合检查某个区域、船只、卫星或 BGP 事件;缩小后拖动会略快,方便快速浏览全球态势。 ### 动作捕捉控制 Earth 预留了动作捕捉控制入口,面向大屏和未来 3D 展示。实时链路有两种输入源:默认的 `浏览器摄像头` 会直接用网页 `getUserMedia` 在本机浏览器识别;高级的 `Motion Agent` 会走 `摄像头/RTSP/HTTP -> 本地 Agent -> 本地 WebSocket -> Earth 页面`。两种模式都不会把摄像头帧或实时手势发到云端,也不会复用新闻/RSS 聚合接口。 默认不自动启用。打开设置里的 `动捕调试模式`,或用 `?motion=1` 打开 Earth 动捕连接后,系统会启动当前选择的输入源。输入源默认是 `浏览器摄像头`,无需安装应用,但页面必须运行在 HTTPS 或 localhost,且用户需要允许浏览器摄像头权限。需要双摄、USB index、手机/网络摄像头流或客户端/边缘设备时,可在设置中切到 `Motion Agent`。默认 Agent 地址是 `ws://127.0.0.1:8765/ws/gestures`,也可用 URL 参数 `motionAgent` 覆盖。 URL 参数也可以直接指定输入源:`?motion=1&motionProvider=browser` 使用浏览器摄像头;`?motion=1&motionProvider=agent` 使用 Motion Agent;传入 `motionAgent=ws://...` 时会自动选择 Motion Agent。 当前手势语义: | 手势事件 | 作用 | | --- | --- | | `rotate_left` | 地球向左旋转 | | `rotate_right` | 地球向右旋转 | | `rotate_up` | 地球向上旋转 | | `rotate_down` | 地球向下旋转 | | `zoom_in` | 放大视角 | | `zoom_out` | 缩小视角 | | `focus_prev` / `focus_next` | 在当前动捕图层内切换可交互目标 | | `layer_prev` / `layer_next` | 切换动捕候选图层,并巡航到新图层最近目标 | | `confirm` | 确认当前已选目标;当前浏览器识别暂未启用双手上举确认 | 设置面板中的 `动捕调试模式` 会打开调试面板。浏览器摄像头输入源会在面板内显示本机实时预览,并在其上绘制关节点和连线;`Motion Agent` 输入源只发送归一化骨架事件,不发送原始视频帧。面板里的 `只显示骨骼` 会隐藏视频预览、只保留深色背景和骨架;`停止匹配动作` 会暂停手势触发,但摄像头预览和骨架绘制仍可继续用于调试。未匹配动作时骨架为红色,匹配后变绿并显示当前动作名称。该入口和 `动捕输入源` 控件都已预留 Gatekeeper 权限标记,后续可接入鉴权控制。 ### 巡航模式 巡航模式会让 Earth 自动轮播聚焦目标。 当前巡航模块包括: - BGP - 新闻 - 算力中心 - 船只 - 海缆 - 卫星 适合演示、监控大屏或无人值守展示。 ### 移动端 Earth 有移动端抽屉布局。小屏下: - 图层控制进入移动抽屉 - 搜索、设置、详情会使用移动端面板 - 主要交互仍围绕地球对象点击、搜索和图层开关 ### 常见问题 #### Earth 打不开 先检查前端是否在线: ```bash ./planet.sh health ./planet.sh log -f ``` 如果前端端口不是 `3000`,使用启动时输出的实际端口。 #### 图层没有数据 检查后端和数据源: ```bash ./planet.sh health ./planet.sh log -b ``` 然后进入控制台查看: - `/datasources` - `/data` - `/bgp` #### 卫星、BGP 或海缆加载慢 这些图层可能依赖后端接口、外部数据源或首次加载任务。先等待启动任务完成,再查看日志和控制台数据源状态。 ## 控制台 控制台入口: ```text http://localhost:3000/admin ``` 控制台需要登录。首次使用先创建用户: ```bash ./planet.sh createuser ``` ### 页面结构 控制台使用 React + Ant Design,左侧菜单按工作域组织。 常见入口: | 页面 | 路由 | 用途 | | --- | --- | --- | | 仪表盘 | `/admin` | 系统概览 | | Earth | `/earth` | 打开公开 Earth 页面 | | 数据源 | `/datasources` | 查看数据源和触发采集 | | 采集数据 | `/data` | 查看采集后的数据 | | BGP 观测 | `/bgp` | 查看 BGP 专题数据 | | 系统告警 | `/alerts/system` | 系统级告警 | | BGP 告警 | `/alerts/bgp` | BGP 相关告警 | | 态势告警 | `/alerts/situational` | 态势研判告警 | | AI | `/ai` | 模型供应商、WebSearch 等工具和测试台 | | 系统日志 | `/logs` | 查看系统日志,通常仅 super admin 可见 | | 用户管理 | `/users` | 管理用户 | | 系统配置 | `/settings` | 系统配置和电视直播源等设置 | ### 数据源 `/datasources` 用于查看采集来源和触发采集。当前页面是“数据源目录”,会把内置数据源和自定义数据源放在同一张列表里展示。 常见操作: - 查看数据源状态 - 触发采集 - 查看最近采集任务 - 打开详情抽屉查看 endpoint、请求头、基础配置和是否为内置数据源 如果 Earth 上某类对象缺失,通常先到这里确认数据源是否可用。 数据源列表中的名称点击后只打开信息抽屉,不再承担编辑入口。接口地址、凭证、请求头和自定义数据源配置统一到 `/settings` 的“采集器设置”里维护。 当有采集任务正在运行时,总体进度下方会出现 `采集中 N` 标签。这个标签和其他状态标签放在同一排,但带有可点击样式;点击后会弹出当前采集中任务列表,显示每个任务的阶段、进度和处理数量。 ### 采集数据 `/data` 用于查看采集后的数据表。 适合排查: - 数据是否已经进入系统 - 数据更新时间是否符合预期 - 某个数据源是否产出了有效记录 ### BGP 观测 `/bgp` 是 BGP 专题页面。 它和 Earth 的 BGP 图层互补: - Earth 强调空间态势和可视聚焦 - 控制台 BGP 页面强调列表、状态、详情和研判 ### 告警 告警入口包括: - `/alerts/system` - `/alerts/bgp` - `/alerts/situational` 用于查看系统、网络和态势相关告警。 ### 系统配置 `/settings` 用于管理系统级配置。 当前常见用途包括: - 系统设置 - 电视直播源配置 - 采集器设置 ### AI `/ai` 用于管理 AI 运行链路,已经从系统配置中独立出来。旧链接 `/playground` 会跳转到 `/ai?tab=playground`。 当前包含: - `模型供应商`:默认 LLM provider、模型、Base URL、API Key、本地 `aiprovider` 代理和连接测试 - `工具`:WebSearch provider、搜索 API Key、Base URL、最大结果数、超时和高级 provider 参数 - `测试台`:AI Provider 状态、预设请求和真实分析链路调试 旧链接 `/settings?tab=ai` 会跳转到 `/ai?tab=providers`。 具体可用配置取决于当前登录用户权限。 #### 采集器设置 `/settings?tab=collector_credentials` 当前显示为“采集器设置”。这里统一维护所有采集器的连接配置,而不是只维护凭证。 使用方式: 1. 在下拉框选择采集器。 2. 查看状态标签: - `无需凭证` / `需要凭证` - 所属模块 - `启用` / `禁用` - `未检查` / `可用` / `不可用` 3. 点击下拉框右侧的插头图标执行健康检查。 4. 如果检查通过,状态会变为 `可用`。 5. 修改 endpoint、请求头、超时或重试次数后保存。 对于免费且不需要凭证的采集器,连接检查会直接请求对应 endpoint。对于需要凭证的采集器,连接检查会走对应凭证链路;如果凭证或 endpoint 相比上次验证成功时发生变化,需要重新点击连接。 系统判断“已连接”的条件是: - 当前配置已经成功采集过数据;或 - 当前配置已经点击过连接按钮并验证成功。 #### BarentsWatch AIS 凭证 `BarentsWatch AIS` 是需要凭证的内置采集器。选择该采集器后,凭证区域会显示在基础配置上方。 配置项: - `Client ID` - `Client Secret` - `Endpoint` 如果已经配置过 secret,输入框会显示脱敏预览。保存时如果保持这个脱敏预览不变,系统会保留原 secret;只有输入新的 secret 才会替换。 BarentsWatch AIS 支持从以下位置读取凭证: 1. 控制台采集器设置中保存的凭证。 2. 后端环境变量: - `BARENTSWATCH_CLIENT_ID` - `BARENTSWATCH_CLIENT_SECRET` - 兼容历史拼写:`BARRENTSWATCH_CLIENT_ID`、`BARRENTSWATCH_CLIENT_SECRET` 3. `~/.zshrc` 中的同名 `export`。 如果连接失败,页面会弹出凭证获取教程。教程支持: - 查看默认教程。 - 点击“教程不好用”让 AI Provider 根据默认 prompt 重新生成教程。 - 点击“重置”恢复默认教程。 默认教程以 BarentsWatch 官方 tutorial 为准,并提醒 Live AIS 应选择 `AIS - API`,不是普通 `BarentsWatch - API`。 ### 系统日志 `/logs` 用于查看系统日志。若菜单中不可见,通常是当前用户角色没有权限。 排查问题时常用组合: ```bash ./planet.sh health ./planet.sh log ``` 再进入 `/logs` 查看更结构化的运行信息。 ## Docs 文档站入口: ```text http://localhost:3000/docs ``` Docs 正文由后端 API 按权限读取,不再把全部 Markdown 直接打进前端构建产物。当前文档源文件仍位于: ```text docs/technical/zh/*.md docs/technical/en/*.md ``` 未登录访客默认只能看到 `public` 文档,例如首页、快速开始和使用手册。登录用户如果被分配 Gatekeeper 权限组,可以看到更多技术文档: - `docs_user`:用户操作类文档。 - `docs_developer`:Earth、前端、后端、采集器和 AI Provider 等开发文档。 - `docs_admin`:服务控制、运维、环境变量和敏感操作文档。 `admin` 默认拥有管理文档权限,`super_admin` 拥有全部 Docs 权限。Gatekeeper 权限组在控制台“用户管理”中配置。 Docs 支持: - 分类导航 - Markdown 渲染 - 表格和代码块 - 文档内目录 - 对当前可见文档搜索 - technical 文档之间的内部链接跳转 如果新增 technical 文档,应同步检查: - 是否有清晰的一级标题 - 是否需要加入后端 Docs metadata 的人工分类和排序 - 应归入 `public`、`docs_user`、`docs_developer` 还是 `docs_admin` ## 开发命令约定 前端命令必须使用 Bun: ```bash cd frontend bun install bun run dev bun run build ``` 不要使用 `npm run ...`。项目在 WSL / Windows 混合环境中优先依赖 Bun,避免 Node/npm 路径差异带来的兼容问题。 验证前端构建: ```bash source ~/.zshrc && bun run build ``` ## 故障排查顺序 遇到问题时,建议按这个顺序排查: 1. 看服务状态: ```bash ./planet.sh health ``` 2. 看最近日志: ```bash ./planet.sh log ``` 3. 按模块查看日志: ```bash ./planet.sh log -f ./planet.sh log -b ./planet.sh log -a ``` 4. 只重启有问题的模块: ```bash ./planet.sh restart -f ./planet.sh restart -b ./planet.sh restart -a ``` 5. 如果数据库或缓存异常,再重启数据库: ```bash ./planet.sh restart -d ``` 6. 仍无法恢复时,执行全量重启: ```bash ./planet.sh restart ``` ## 相关文档 - [快速开始](/home/ray/dev/linkong/planet/docs/technical/zh/quickstart.md) - [控制台前端结构](/home/ray/dev/linkong/planet/docs/technical/zh/frontend-admin-frontend-context.md) - [Earth 前端结构](/home/ray/dev/linkong/planet/docs/technical/zh/earth-frontend-context.md) - [Earth 图层样式属性索引](/home/ray/dev/linkong/planet/docs/technical/zh/earth-layer-style-reference.md) - [Earth 位置候选采集使用手册](/home/ray/dev/linkong/planet/docs/technical/zh/location-pipeline-user.md) - [系统服务控制](/home/ray/dev/linkong/planet/docs/technical/zh/backend-system-service-control.md) - [数据采集系统](/home/ray/dev/linkong/planet/docs/technical/zh/backend-collectors.md) - [数据源、采集器设置与连接验证](/home/ray/dev/linkong/planet/docs/technical/zh/datasource-collector-settings-connectivity.md)