用途
该技能用于在用户的 VPS 上搭建一个个人仪表盘,与 Hermes 并列运行,使用与 Hermes 相同的技术栈(TanStack Start、Tailwind、SQLite),并置于 setup-vps 所建立的访问门禁之后。仪表盘初始为空壳,包含问候语、三个代理状态灯、一个指向 Hermes 的链接以及一个 API 密钥页面。之后用户可以通过 Hermes 请求添加模块,Hermes 会编写、测试、上线并推送到用户的 GitHub。
主要能力
- 在 https://dashboard.<域名> 部署个人仪表盘,与 Hermes 使用相同外观和技术栈。
- 初始提供空壳页面:问候语、三个代理状态灯、Hermes 链接、API 密钥页面。
- 支持通过 Hermes 按需添加模块,模块会自动出现在侧边栏和首页。
- 将仪表盘代码以私有仓库形式保存到用户的 GitHub(hermes-dashboard)。
- 通过 expose add 将仪表盘发布到公网,并确保没有未受保护的页面。
- 为 Hermes 配置访问仪表盘的权限,并安装技能文件使其了解仪表盘的位置和操作方式。
- 在相关代理的 VPS 配置块中记录仪表盘信息,保持现有行不变。
使用方式
技能执行者需自行完成所有步骤,与用户交流时使用用户的语言、简短消息、避免术语(不说“token”“systemd”“repo”“build”,而说“access”“the service”“your GitHub”“put online”)。
关键步骤包括:
- 检查环境:通过 ssh 命令确认 hermes、gateway、dashboard 状态,expose 状态,以及 gh 认证状态。
- 获取文件:从 GitHub 克隆或拉取 ai-maxxing-skills 仓库到服务器缓存目录,并安装 dashboard.sh 和 dashboard-cli 命令。
- 创建代码:仅在 ~/projects/dashboard 不存在时,从模板复制并初始化 git 仓库,提交初始空壳。
- 保存到 GitHub:使用 gh repo create 创建私有仓库 hermes-dashboard 并推送。若名称被占用,需先询问用户。
- 安装 Node:运行 dashboard install-node 安装 Node 24 和 pnpm(已存在则跳过)。
- 部署服务:获取用户名字,设置环境变量后运行 dashboard deploy,首次可能需要几分钟。
- 授予 Hermes 访问权限:运行 dashboard key,并验证 dashboard-cli get /api/v1/whoami 返回 "key": "hermes"。
- 安装 Hermes 技能:将 SKILL.md 复制到 ~/.hermes/skills/productivity/dashboard/SKILL.md。
- 上线:运行 expose add dashboard.<域名> 8794,并确认 expose status 列出 site=dashboard.<域名> 且无 UNPROTECTED 行。
- 验证:从本地 curl 检查返回 302 到 /.gate/login 或 200,然后让用户打开页面确认登录后显示名字、三个状态灯和“No module yet”。
- 第一个模块:让用户通过 Telegram 或 Discord 向 Hermes 发送请求,例如“Add a module to my dashboard that lists my latest conversations.”。若 Hermes 不知道仪表盘,重启其聊天后重试。
- 告知所有代理:在 ## VPS 块中记录仪表盘 URL、代码位置、Hermes 添加模块的方式以及部署命令。
- 最终检查清单:逐项确认命令已安装、代码在 GitHub(私有)、Node 就绪、服务运行、Hermes 有访问权限、Hermes 知道仪表盘、在线可访问、无未保护页面、代理已告知。
适用场景
适用于已通过 setup-vps 建立 VPS 环境、希望拥有一个与 Hermes 同栈的个人仪表盘,并希望通过 Hermes 按需添加模块的用户。
限制
- 绝不打印服务器上的密钥或令牌。
- 所有远程命令需以 ssh hermes '<command>' < /dev/null 方式运行;登录用户非 root 时,安装需加 sudo。
- 绝不通过 expose add 以外的方式发布仪表盘。
- 绝不替换已存在的 ~/projects/dashboard,因为其中包含用户的模块。
- 若 hermes-dashboard 名称在用户账户上已被占用,需先询问再使用其他名称。
- 若 dashboard.<域名> 已指向其他地方,需先询问再选择其他名称(如 home.<域名>),然后以该 DASHBOARD_URL 重新运行步骤 5。
- 退出码 4 表示检查失败并打印原因,退出码 5 表示打印服务日志。
- 首次部署可能需要几分钟。
- 地址生效可能需要一分钟。
- 若 Hermes 表示不知道仪表盘,需重启其聊天后重试。