15 KiB
15 KiB
Boss 当前运行与部署状态
更新时间:2026-03-26
1. 本地状态
当前本地已经验证通过:
npm run lintnpm run build- Web 健康检查:
http://127.0.0.1:3000/api/health - 会话聚合接口:
http://127.0.0.1:3000/api/v1/conversations - 主 Agent 项目详情:
http://127.0.0.1:3000/api/v1/projects/master-agent - AI 账号摘要接口:
http://127.0.0.1:3000/api/v1/accounts - 设备 Skill 同步接口:
http://127.0.0.1:3000/api/v1/devices/mac-studio/skills - 登录接口:
POST http://127.0.0.1:3000/api/auth/login - 登录态接口:
GET http://127.0.0.1:3000/api/auth/session - 登录恢复接口:
POST http://127.0.0.1:3000/api/auth/restore - 登出接口:
POST http://127.0.0.1:3000/api/auth/logout - OTA 包下载接口:
GET http://127.0.0.1:3000/api/v1/user/ota/package - 本地 agent 健康检查:
http://127.0.0.1:4317/health - 本地 Skill 扫描接口:
http://127.0.0.1:4317/api/v1/skills - 本地 agent 手动 heartbeat:
POST http://127.0.0.1:4317/api/v1/heartbeat launchd已安装:~/Library/LaunchAgents/com.hyzq.boss.local-agent.plist
本地已知运行方式:
cd /Users/kris/code/boss
npm run build
npm start
cd /Users/kris/code/boss
npm run apk:debug
cd /Users/kris/code/boss
npm run apk:release
cd /Users/kris/code/boss
npm run aab:release
cd /Users/kris/code/boss
./scripts/start-local-agent.sh ./local-agent/config.example.json
本地常驻安装:
cd /Users/kris/code/boss
./scripts/install-local-launchagent.sh
如需切回本地回环开发控制面:
cd /Users/kris/code/boss
./scripts/install-local-launchagent.sh /Users/kris/code/boss/local-agent/config.example.json
补充说明:
npm run build现在会先自动清理.next,避免ENOTEMPTYnpm start会显式带上BOSS_STATE_FILE=$PWD/data/boss-state.json,避免 Next standalone 把状态写到.next/standalone/datanpm start、服务器systemd与远端npm run build当前都显式设置了BOSS_RUNTIME_ROOT,避免process.cwd()在 standalone / 服务器构建阶段误扫描整个仓库next.config.ts当前已把deployment / docs / design / local-agent / prompts / scripts / android等目录排除出 standalone tracing,服务器端构建不会再把非运行时资产卷进.next/standalonedata/boss-state.json的写入已经改成串行事务队列、原子替换和.bak备份恢复,heartbeat与 APP 日志并发写入已复核通过- 当前登录成功后会写入
boss_sessionCookie;会话 / 设备 / 我的 / 线程页面以及主要/api/v1/*路由都要求有效会话 - 当前
boss_session默认保持 30 天,Set-Cookie已验证为Max-Age=2592000 - 原生 Android 客户端当前会把登录返回的
boss_session / restore token / account落到SharedPreferences,并在 APP 启动时通过/api/auth/restore自动补回会话;已本地验证“登录 -> 取 restore token -> restore 接口恢复”链路 - 登录成功后的客户端跳转当前已做稳态兜底:会先确认
/api/auth/session已可读,再replace到/conversations,并补一次window.location.replace防止真机 WebView 偶发卡在登录提示页 POST /api/auth/send-code当前已增加 60 秒冷却和 15 分钟窗口限流POST /api/auth/send-code当前还会先按用途校验账号状态:登录 / 忘记密码必须是已存在账号,注册必须是未注册账号- 当前账号连续登录失败 5 次后会锁定 10 分钟
- 当前登录页已临时切到免验证模式;点击“登录”会直接创建最高管理员会话,不再校验账号密码或验证码
- 新注册和重置密码当前已切到
scrypt哈希;历史sha256密码会在下一次密码登录时自动迁移 launchd会保持com.hyzq.boss.local-agent常驻,所以本地 agent 被手动结束后会自动重启launchd默认加载local-agent/config.cloud.json,控制面指向https://boss.hyzq.netlocal-agent/config.example.json仍保留给本地127.0.0.1:3000回环开发- 本地
launchd当前已把mac-studio作为17600003315的绑定 Codex 节点上报 - 本地 agent 当前会递归扫描
~/.codex/skills,并把本机 Skill 同步到云端设备维度 - 根布局当前会挂载 APP 日志桥,路由切换、运行时错误、消息发送和 OTA 操作会通过
/api/v1/app-logs实时同步到服务器;日志绑定已改成按当前登录会话解析设备 - 根布局当前还会挂载原生运行时桥:维护 APP 内导航历史、拦截 Android 返回键、防止根页直接退回桌面,并在 OTA / 同签名覆盖安装后自动尝试恢复登录态
- UI 外壳已收口为真机态:移动端不再渲染假的
9:41 / 5G状态栏,底部一级导航固定在视口底部,背景图按手机 viewport 全屏 cover,WebView 不再显示外层圆角矩形预览壳 - 会话页、设备页、技能页和项目详情页当前都通过
/api/v1/events的 SSE 自动刷新 - 我的页当前新增
AI 账号入口,支持查看主 GPT / 备用 GPT / API 容灾,并明确主链路优先走已经在绑定电脑上登录ChatGPT Plus / Codex的Master Codex Node - 主 Agent 当前真实对话链路已验证通过:
Boss Web -> /api/v1/projects/master-agent/messages -> master-agent task queue -> local-agent -> codex exec -> /complete -> 项目消息账本 - 主 Agent 同步等待窗口当前为 55 秒;若本机 Codex 节点回复更慢,项目页仍会通过 SSE 在任务完成后自动刷新出真实回复
GET /api/v1/app-logs当前已支持登录态分页查询POST /api/v1/app-logs、POST /api/v1/devices/[deviceId]/skills、POST /api/v1/workers/[workerId]/thread-context当前都要求有效设备 token 或匹配登录会话- 设备页当前只保留生产设备;旧演示脏数据已经从设备、运维和审计聚合视图里剔除
npm run apk:debug当前会自动把最新 APK 发布到public/downloads/boss-android-latest.apk,并写入public/downloads/boss-android-latest.jsonnpm run apk:release当前会先准备本机 release keystore,再构建 signed release APK 并发布到public/downloads/boss-android-latest.apk- APK 发布脚本当前还会额外保留带版本号的安装包:
public/downloads/boss-android-v{versionName}-{flavor}.apk npm run aab:release当前会先准备本机 release keystore,再构建 signed release AAB 并发布到public/downloads/boss-android-latest.aab- AAB 发布脚本当前还会额外保留带版本号的归档包:
public/downloads/boss-android-v{versionName}-{flavor}.aab - AAB 归档元数据会写入
public/downloads/boss-android-latest-aab.json - 当前默认管理员账号:
17600003315 - 当前默认测试密码:
boss123456 - 登录页当前是临时免验证入口;Web 登录页和原生 Android 登录页都会直接创建会话
- 当前已生成 Android debug APK:
android/app/build/outputs/apk/debug/app-debug.apk - 当前已生成 Android signed release APK:
android/app/build/outputs/apk/release/app-release.apk - 当前 release 构建还会额外生成带版本号的 APK:
android/app/build/outputs/apk/release/boss-android-v{versionName}-release.apk - 当前最新 release 构建版本:
2.1.1(versionCode=8) - 当前 release keystore 位于本机
android/keystores/boss-release.keystore,签名参数位于android/signing/release-signing.properties 2.0.1已在本机连接的华为真机上复核通过,修复了Theme.SplashScreen导致的AppCompatActivity启动闪退2.1.0已把 Web 一级页和主要二级页全部补成原生活动页:MainActivity / ProjectDetailActivity / ProjectGoalsActivity / ProjectVersionsActivity / ProjectForwardActivity / ThreadDetailActivity / DeviceDetailActivity / DeviceEnrollmentActivity / SkillInventoryActivity / SecurityActivity / SettingsActivity / AiAccountsActivity / OpsCenterActivity / AboutActivity2.1.0已完成签名包覆盖安装到本机连接的华为真机,并确认com.hyzq.boss可以成功拉起进程2.1.1已补上原生 OTA 下载安装引导、REQUEST_INSTALL_PACKAGES权限声明,以及根页默认入口/返回逻辑收口
2. 服务器状态
服务器信息:
- 主机:
106.53.170.158 - 用户:
ubuntu - 系统:
Ubuntu 24.04.4 LTS - 代码路径:
/opt/boss
已验证服务:
boss-web.service:运行中caddy.service:运行中postfix.service:运行中dovecot.service:运行中http://127.0.0.1:3000/api/health:正常http://127.0.0.1:3000/api/v1/conversations:正常- SMTP Submission 自测:
127.0.0.1:587可认证发信 - IMAPS 监听:
127.0.0.1:993正常
服务器上观察到的运行态:
boss-web当前通过npm start启动- 实际监听端口为
3000 boss-web.service显式设置了BOSS_STATE_FILE=/opt/boss/data/boss-state.jsonCaddy反代127.0.0.1:3000Postfix监听25 / 465 / 587Dovecot监听993- 当前部署脚本在远端重启服务后会自动执行一遍本机 health check
- 当前部署脚本已排除
data/目录,不会再用本地状态文件覆盖服务器上的boss-state.json - 当前部署脚本会先在本机执行
npm run build,再把已经验证通过的.next构建产物同步到服务器 - 当前部署脚本会在 rsync 前先删除服务器旧
.next并修正/opt/boss所有权,避免历史 root 产物卡住同步 - 服务器当前不再现编 Next standalone,而是直接重启使用本机同步过去的构建产物,避免服务器端 tracing / 权限差异导致构建失败
- 当前部署脚本还会在远端重启前递归修正
/opt/boss所有权到ubuntu:ubuntu,避免运维文件被 root 覆盖后再次污染运行时目录
3. 域名与 HTTPS 状态
当前这部分不是简单的“好了/没好”,而是已经切清楚边界:
已确认的事实:
Caddy服务日志显示,曾在2026-03-25 12:33:51 CST成功为boss.hyzq.net获取证书- 服务器本机
dig +short boss.hyzq.net返回106.53.170.158 - 服务器本机访问
http://boss.hyzq.net会被308跳转到https://boss.hyzq.net - 服务器本机执行
curl --resolve boss.hyzq.net:443:127.0.0.1 https://boss.hyzq.net -I返回307并跳转到/auth/login
同时也确认了这些事实:
- 当前本机网络
dig +short boss.hyzq.net仍返回198.18.1.188 - 当前本机网络
curl -I http://boss.hyzq.net返回308 - 当前本机网络
curl -I https://boss.hyzq.net返回HTTP/2 307,并跳转到/auth/login - 当前本机网络
curl https://boss.hyzq.net/api/health返回{"ok":true,"service":"boss-web",...} - 当前本机网络
curl https://boss.hyzq.net/api/v1/conversations已返回真实聚合数据 - 当前本机网络
nc -vz boss.hyzq.net 25 587 993全部成功 - 服务器本机直接执行
curl -I https://boss.hyzq.net也返回HTTP/2 307 - 服务器本机直接执行
curl https://boss.hyzq.net/api/health也返回{"ok":true,"service":"boss-web",...} - 服务器本机直接执行
curl https://boss.hyzq.net/api/v1/conversations也返回真实聚合数据 - 服务器本机通过
swaks走127.0.0.1:587 + STARTTLS + AUTH LOGIN向verify@boss.hyzq.net发信成功,邮件已进入/home/bossmail/Maildir boss-web已支持通过/opt/boss/.env.server切到email模式;本轮临时切到email后,POST https://boss.hyzq.net/api/auth/send-code已成功向verify@boss.hyzq.net投递邮件,随后已恢复默认fixed
因此当前结论是:
- 服务器端
Caddy + TLS配置已经具备 - 证书申请和续签链路已经具备
- 当前网络下公网
443已经可以实际访问 - 公网域名下的 API 也已经可以直接对外提供服务
- 服务器邮件栈
Postfix + Dovecot已上线,公网25 / 587 / 993当前可达 - 但当前网络下
dig仍显示198.18.1.188,说明入口前面可能还有代理层或分裂 DNS;排障时要以真实 HTTP/HTTPS 可达性为准,而不是只盯解析值
4. 当前未完成或仅为 MVP 的部分
- 当前服务器默认仍是
fixed,验证码为000000 - 当前虽然已经补齐 OTA 版本中心、检查更新、执行升级和 APK 包下载链路,但仍是文件型状态驱动的 MVP,不是原生增量更新基础设施
- 当前“OTA / 重装后不掉登录”覆盖原生 Android 客户端的
SharedPreferences恢复与同签名覆盖安装;如果用户先卸载 APP 再全新安装,仍可能丢失本地原生存储 - 数据存储仍是文件型,而不是数据库
- 设备发现、项目扫描和额度采集仍是静态配置驱动的 MVP
- APP 实时日志当前已能同步到主 Agent 会话,但还没有单独的日志检索、分页和告警升级规则
- Skill 清单当前按设备同步和展示已经可用,但还没有“安装 / 卸载 Skill”这种远程管理能力
- 服务器侧主 Agent 实时回复依赖被绑定设备的
local-agent在线并能执行codex exec;如果设备离线,只能保留任务或走 API 容灾账号 - API 容灾当前由用户在 APP 的
我的 > AI 账号页面自行配置OpenAI API账号,不再依赖服务器预置 Key - 图片 / 视频真实文件上传仍未接对象存储
- 认证虽然已有最小会话 Cookie,但还没有刷新令牌、跨端会话治理、CSRF 防护和更细的风控策略
- 邮件对外正式投递仍缺少 DNS / 信誉相关的最终收口,例如 SPF、DKIM、DMARC、MX 与退信策略
- 外部真实邮箱的 end-to-end 收件链路还没有在生产账号上完成最终验收
5. 推荐的复核命令
本地:
curl -sS http://127.0.0.1:3000/api/health
curl -sS -H 'Content-Type: application/json' -d '{"account":"17600003315","password":"boss123456","method":"password"}' http://127.0.0.1:3000/api/auth/login
curl -sS http://127.0.0.1:3000/api/auth/session
curl -sS http://127.0.0.1:3000/api/v1/conversations
curl -sS http://127.0.0.1:3000/api/v1/projects/master-agent
curl -sS http://127.0.0.1:3000/api/v1/devices/mac-studio/skills
curl -I http://127.0.0.1:3000/api/v1/user/ota/package
curl -sS http://127.0.0.1:4317/health
curl -sS http://127.0.0.1:4317/api/v1/skills
curl -sS -X POST http://127.0.0.1:4317/api/v1/heartbeat
服务器:
"$HOME/.codex/skills/boss-server-debug/scripts/server_ssh.sh" health
"$HOME/.codex/skills/boss-server-debug/scripts/server_ssh.sh" exec "systemctl status boss-web --no-pager"
"$HOME/.codex/skills/boss-server-debug/scripts/server_ssh.sh" exec "systemctl status caddy --no-pager"
"$HOME/.codex/skills/boss-server-debug/scripts/server_ssh.sh" exec "systemctl status postfix --no-pager"
"$HOME/.codex/skills/boss-server-debug/scripts/server_ssh.sh" exec "systemctl status dovecot --no-pager"
"$HOME/.codex/skills/boss-server-debug/scripts/server_ssh.sh" exec "curl -sS http://127.0.0.1:3000/api/health"
"$HOME/.codex/skills/boss-server-debug/scripts/server_ssh.sh" exec "curl -sS http://127.0.0.1:3000/api/v1/conversations"
域名:
dig +short boss.hyzq.net
curl -I http://boss.hyzq.net
curl -I https://boss.hyzq.net
curl -I --resolve boss.hyzq.net:443:106.53.170.158 https://boss.hyzq.net
nc -vz boss.hyzq.net 25 587 993
6. 运维判断原则
- 判断 Web 是否正常,以
/api/health和/api/v1/conversations为准 - 判断本地设备端是否正常,以本地 agent
/health和手动 heartbeat 为准 - 判断服务器是否正常,以
systemd和本机curl为准 - 判断公网是否真的可用,必须从外部网络重新验证
boss.hyzq.net