Files
boss/docs/architecture/current_runtime_and_deploy_status_cn.md
2026-06-03 11:36:44 +08:00

68 KiB
Raw Blame History

Boss 当前运行与部署状态

更新时间:2026-06-03

1. 本地状态

当前本地已经验证通过:

  • npm run lint
  • npm 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
  • AI 账号校验接口:POST http://127.0.0.1:3000/api/v1/accounts/[accountId]/validate
  • AI 账号 OpenAI 登录接口:POST http://127.0.0.1:3000/api/v1/accounts/onboard/openai-api
  • AI 账号阿里备用接入接口:POST http://127.0.0.1:3000/api/v1/accounts/onboard/aliyun-qwen
  • AI 账号 Master Node 绑定接口:POST http://127.0.0.1:3000/api/v1/accounts/onboard/master-node
  • 设备 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
  • 登录会话治理接口:GET/POST http://127.0.0.1:3000/api/v1/auth/sessions
  • 登出接口:POST http://127.0.0.1:3000/api/auth/logout
  • 管理后台总览接口:GET http://127.0.0.1:3000/api/v1/admin/overview
  • 独立企业后台 BFFGET http://127.0.0.1:3000/api/v1/admin/backoffice
  • 管理后台授权接口:GET/POST http://127.0.0.1:3000/api/v1/admin/access
  • 管理后台风险 SLA 扫描接口:POST http://127.0.0.1:3000/api/v1/admin/risks/scan
  • 管理后台状态备份与回退接口:GET/POST http://127.0.0.1:3000/api/v1/admin/backups,仅 highest_admin 可用;支持创建状态快照、列出快照和恢复到指定快照,恢复前会自动创建 pre-restore 快照。文件状态写入层已默认开启自动快照,可用 BOSS_STATE_AUTO_BACKUP_INTERVAL_MSBOSS_STATE_AUTO_BACKUP_KEEP 调整频率与保留数量
  • OTA 包下载接口:GET http://127.0.0.1:3000/api/v1/user/ota/package
  • boss-agent Mac OTA 接口:GET http://127.0.0.1:3000/api/v1/boss-agent/ota?deviceId=...&currentVersion=...GET http://127.0.0.1:3000/api/v1/boss-agent/ota/package
  • 本地 agent 健康检查:http://127.0.0.1:4317/health。当前这台开发机的 launchd 常驻已经恢复,/health 可在数十毫秒内返回,并且在手动 heartbeat 执行期间也不会再被 Codex 线程扫描卡死
  • 本地 Skill 扫描接口:http://127.0.0.1:4317/api/v1/skills
  • 本地 agent 手动 heartbeatPOST http://127.0.0.1:4317/api/v1/heartbeat
  • launchd 已安装:~/Library/LaunchAgents/com.hyzq.boss.local-agent.plist
  • 当前执行底座抽象层已落地在 src/lib/execution/,并已补齐 ExecutionBackend / PromptAssembler / PermissionPolicy / RemoteRuntimeAdapter / OrchestrationBackend 默认实现
  • 当前生产主链仍然沿用 local-agent -> codex exec resume -> /api/v1/master-agent/tasks/[taskId]/complete,执行底座重构以“先抽象、不改行为”为准
  • 当前 Codex server 调研结论已记录在 docs/architecture/codex_server_progress_card_cn.md:长期优先方向更新为 Codex App Server / Remote Control -> Inter-Thread Broker -> CodexMcpBackendAdapter -> codex exec resume 的分层 provider 策略;当前 boss-agent 默认打开 Codex App Server runner 作为 Codex 绑定入口Boss 仍保留 codex exec resume 兜底,并继续用 execution_progress 结构化进度卡作为 APP 可见执行态。本机 codex-cli 0.136.0-alpha.2 协议快照已生成到 docs/protocol-snapshots/codex-app-server/0.136.0-alpha.2/,确认支持 WebSocket auth、thread/inject_itemsturn/steerturn/interruptthread/archivethread/unarchivethread/forkthread/compact/startthread/rollbackthread/name/setthread/metadata/updatethread/shellCommandthread/unsubscribethread/realtime/*thread/goal/*thread/settings/updatedthread/compactedThreadItem.contextCompactionThreadItem.collabToolCallaccount/*model/verificationconfigWarningdeprecationNoticecommand/execmodel/listskills/extraRoots/sethooks/listplugin/installplugin/uninstallplugin/readplugin/skill/readplugin/share/*config/value/writeconfig/batchWriteconfig/mcpServer/reloadskills/config/write
  • 当前 App Server 能力发现已新增治理摘要local-agent 会在 heartbeat discovery 中拉取 experimentalFeature/list / collaborationMode/list / permissionProfile/list / mcpServerStatus/list,并把实验特性、协作模式、权限 Profile 与 MCP 服务状态写入设备 codexAppServer.metadata;设备详情页会显示“治理”摘要。该链路只保留安全摘要,不保存 MCP resource URI、permission profile 文件规则、本地路径、token 或工具参数。
  • 当前 App Server 能力发现已新增账号与配置摘要local-agent 会在 heartbeat discovery 中拉取 account/read / account/rateLimits/read / config/read / configRequirements/read / externalAgentConfig/detect并把账号登录方式、套餐、额度使用率、App 配置计数、托管要求数量和外部 Agent 迁移候选数量写入设备 codexAppServer.metadata;设备详情页会显示“账号 / 配置”摘要。该链路只读不写,不保存账号邮箱、完整 config、API key、本地路径或迁移描述。
  • 当前 App Server 能力发现已新增线程可见性摘要local-agent 会在 heartbeat discovery 中拉取 thread/list / thread/loaded/list,并把线程总数、已加载线程数、活跃线程数、归档线程数、最新更新时间和非归档线程轻量目录写入设备 codexAppServer.metadata.threadSummary;设备详情页会显示“线程”摘要。该链路不保存 cwd、本地路径、turn 内容、用户正文或内部 prompt。
  • 当前 App Server 能力发现已新增 turn 运行态摘要local-agent 会在 heartbeat discovery 中对非归档可见线程拉取 thread/turns/list,请求固定 itemsView=notLoaded,并把总轮次、运行中轮次、完成轮次、最新 turn 更新时间和每个线程的最近 turn 状态写入设备 codexAppServer.metadata.threadTurnSummary;设备详情页会显示“轮次”摘要。该链路不保存 turn id、turn items、用户正文、模型输出或内部 prompt。
  • 当前 App Server 能力发现已新增线程操作能力摘要local-agent 会把已验证进入当前协议快照的 archive / unarchive / fork / compact / rollback / rename / metadata / steer / interrupt / shell / unsubscribe 写入设备 codexAppServer.metadata.threadActionSummary;设备详情页会显示“线程操作”。该字段只读,不在 heartbeat 中调用任何线程写 API。
  • 当前 App Server 能力发现已新增插件治理能力摘要local-agent 会把已验证进入当前协议快照的 install / uninstall / read / skill-read / share 写入设备 codexAppServer.metadata.pluginGovernanceSummary;设备详情页会显示“插件治理”。该字段只读,不在 heartbeat 中调用任何插件写 API。
  • 当前 App Server 能力发现已新增账号与配置治理能力摘要local-agent 会把已验证进入当前协议快照的 login / logout / token refresh / add credits nudge / config write / MCP reload / Skill config write 写入设备 codexAppServer.metadata.accountGovernanceSummary / configGovernanceSummary;设备详情页会显示“账号治理 / 配置治理”。这些字段只读,不在 heartbeat 中调用任何账号或配置写 API。
  • 当前 App Server 能力发现已支持共享 Skill 根目录下发:配置 codexAppServerSkillExtraRoots / BOSS_CODEX_APP_SERVER_SKILL_EXTRA_ROOTSlocal-agent 会先调用 skills/extraRoots/set,再刷新 skills/list,并把 skillExtraRootsSummary 写入设备 codexAppServer.metadata;设备详情页会显示“共享 Skill 根”。该链路只保存数量、basename 和状态不保存根目录绝对路径、Skill 文件路径或配置原文。
  • 当前 App Server 能力发现已新增 Hook 治理摘要local-agent 会在 heartbeat discovery 中拉取 hooks/list,并把 hook 数、启用数、受管 / 可信 / 修改 / 未信任计数、warning / error 计数写入设备 codexAppServer.metadata.hookSummary设备详情页会显示“Hook”。该链路不保存 hook key、command、sourcePath、statusMessage、hash、error message 或本地路径。
  • 当前量产 B+ 架构开发文档已新增:docs/architecture/enterprise_ai_ops_architecture_cn.md。该文档把 PPT 中的主 Agent / 业务 Agent / 老板端 / 经理端 / 员工端 / 治理层 / 系统层 / 设备层 / 执行层 / 接入层整理成后续产品架构约束并明确数据库备份、业务回退、Codex 协议扩展和 Skill 治理方向;它是规划文档,不代表当前全部已落地
  • 当前 claw-code 已以最小 ClawBackendAdapter 形式接入执行底座,但默认关闭;只有显式配置 BOSS_CLAW_* 且可用性探测通过时,master-agent 当前对话中才会出现并允许选择 claw-runtime
  • 当前已新增最小 Telegram GatewayBoss 当前可直接暴露 Telegram webhook把 Telegram 私聊或受控群聊文本桥接进 master-agent 或按群 / Topic 路由到指定 Boss 项目,并在主 Agent 异步任务完成后自动回推 Telegram配置入口已接到 Web /me/telegram 和原生 Android 我的 > Telegram 接入
  • 如果历史上已经保存过 backendOverride=claw-runtime,但当前 Claw Runtime 不可用,运行时会自动回退到默认后端,并在 Web/Android 前台给出明确原因
  • 当前仓库已自带 scripts/claw-runtime-smoke.mjs 作为本地 smoke runtime在没有真实 claw-code 可执行文件时,可先用 BOSS_CLAW_COMMAND=nodeBOSS_CLAW_ARGS=scripts/claw-runtime-smoke.mjs 验证整条链
  • 当前 oh-my-codex 已以最小 OmxTeamBackendAdapter 形式接入执行底座,但默认关闭;当前已经接到 Web 群聊详情页 / 原生群资料页的编排后端选择卡,可在 Boss NativeOMX Team 间切换OMX 不可用时会自动回退到默认后端并明确提示原因
  • 当前仓库已自带 scripts/omx-team-smoke.mjs 作为本地 OMX smoke runtime在没有真实 oh-my-codex 可执行文件时,可先用 BOSS_OMX_COMMAND=nodeBOSS_OMX_ARGS=scripts/omx-team-smoke.mjs 验证 dispatch_execution 的真实执行 contract
  • 当前主 Agent 对活跃线程的理解已经升级成“线程状态文档 + 最近进展事件 + 关键时刻深拉”:projectUnderstanding 不再是唯一输入,threadStatusDocuments / threadProgressEvents 已进入主 Agent prompt 主链
  • 当前 Web 和 Android 都已经有线程状态只读入口:
    • WebGET /conversations/[projectId]/thread-status
    • AndroidThreadStatusActivity
  • 当前 conversation_reply / dispatch_execution 的线程执行结果会先经过 RemoteRuntimeAdapter 标准化;如果线程返回的是固定模式的内部环境提示(如“当前会话环境只读 / cwd …”),会直接转成失败,不再把原文写回会话消息
  • 当前设备模型已支持同一台 Mac / Windows 同时接入 Codex GUI + CLI 双能力Web / Android 设备详情页都会展示两种能力状态,并允许切换默认执行模式
  • 当前同项目 GUI / CLI 并行写入风险已接入项目/文件夹级冲突控制:默认阻断,用户只能对当前异常项目/文件夹选择 禁止 / 允许本次 / 永久放行
  • 当前已补上“Boss 统一电脑控制中枢”第二批本地 runtime主 Agent 已能把聊天请求识别为 discussion_only / project_development / browser_control / desktop_controlbrowser_control / desktop_control 已能作为正式 MasterAgentTask 入队,并返回 executionMode / riskLevel / requiresConfirmation 元数据给前台;本机 local-agent 现已把 browser-control-task-runner.mjs / computer-use-task-runner.mjs 升级成外部 runtime 桥,并默认带上 scripts/browser-control-smoke.mjs / scripts/cua-driver-computer-use-runtime.mjs 作为 browser / desktop 起步执行器
  • 当前这条电脑控制链先只按 macOS 交付:browser_control / desktop_control 任务会写入 controlPlatform=macoscomputerUseProvider,其中浏览器控制默认 openai-computer-use,桌面 GUI 控制默认 codex-computer-uselocal-agent 会先调用 Codex Computer Use失败后自动回退 cua-driver-computer-uselocal-agent 下发 runtime stdin 时也会携带同一组字段,桌面 dialog guard 只保留 macOS adapterWindows 分支不进入当前生产链路
  • 当前这两条控制链的 control_summary 已能回写结构化目标信息browser 会保留 targetUrldesktop 会保留 targetAppAndroid 聊天窗口会在控制结果卡片里直接显示执行目标
  • 当前 scripts/browser-control-smoke.mjs 已提升到“最小真实浏览器探测”:如果目标 URL 可访问,会抓取页面 <title> 并回写结果;scripts/codex-computer-use-runtime.mjs 会通过 Codex App Server 发起 Codex Computer Use 执行;scripts/cua-driver-computer-use-runtime.mjs 作为 fallback 接入 cua-driver 的 macOS 窗口级控制能力,默认执行 launch_app -> get_window_state,并支持安全范围内的引号文本写入;涉及发送、提交、删除、支付等动作时默认返回确认卡,不直接执行高风险提交
  • 当前 boss-agent 已补 Mac OTAscripts/package-boss-agent-mac-runtime.sh 会生成 dist/boss-agent-mac-runtime-{version}.zip,并同步发布 public/downloads/boss-agent-mac-latest.zip/json;本机 local-agent 默认每 5 分钟检查一次,可在 boss-agent 状态页手动“检查更新 / 下载并安装”。安装采用“下载校验 -> 写入暂存 wrapper -> 拉起 install.command”的安全路径失败不会覆盖当前运行版本。正式分发脚本已支持 BOSS_AGENT_NOTARIZE=1 + BOSS_AGENT_NOTARY_PROFILE 的 Developer ID 公证路径,本地开发默认仍可 ad-hoc / Apple Development 签名。
  • 当前最新 boss-agent Mac 包版本为 20260516221619,已部署到 https://boss.hyzq.net/api/v1/boss-agent/ota 并在局域网 MacBook Air macbook-air 上完成真实 OTA 下载、sha256 校验、暂存、覆盖安装和 up-to-date 检查:安装后 config.installed.json 仍保持 deviceId=macbook-air、账号 krisolo、版本 20260516221619launchd 状态为 running。
  • 当前安装器已做多电脑绑定保护:install.command 会保留所有 config*.json 并优先沿用当前 launchd active config底层 scripts/install-local-launchagent.sh 在无显式参数时也会优先读取现有 LaunchAgent 的配置路径,再回退自定义设备配置,避免多台 Mac 重装/OTA 时误切到默认 config.cloud.json
  • 当前 Cua runtime 已补上 launchd 友好的可执行文件发现:除 PATH 外会主动查找 ~/.local/bin/cua-driver/Applications/CuaDriver.app/Contents/MacOS/cua-driver;如果 launch_app 对已运行 App 返回 not found会兜底走 list_apps -> list_windows -> get_window_state 复用现有窗口
  • 当前本机 local-agent 默认 heartbeat 已把 browserAutomation / computerUse 两项能力视为“已接通起步版 runtime”因此 Boss 前台设备能力会直接显示这两条链路在线;codexAppServer 能力只有在显式打开 App Server runner 后才会上报在线stdio 模式会校验本机 codex 命令可执行ws/unix 模式会校验已配置 codexAppServerUrl;如果后续需要临时关闭,可在 local-agent/config.cloud.json 里单独下掉对应 connected 标记或 runtime 命令

本地已知运行方式:

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,避免 ENOTEMPTY
  • npm start 会显式带上 BOSS_STATE_FILE=$PWD/data/boss-state.json,避免 Next standalone 把状态写到 .next/standalone/data
  • npm 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/standalone
  • data/boss-state.json 的写入已经改成串行事务队列、原子替换和 .bak 备份恢复,heartbeat 与 APP 日志并发写入已复核通过
  • data/boss-state.json 当前额外具备自动历史快照:每次写入后按 BOSS_STATE_AUTO_BACKUP_INTERVAL_MS 节流写入 data/backups/state-snapshot-*.json,元数据标记 actorAccount=system / reason=auto:writeState,管理后台可直接作为回退点查看和恢复
  • BossState 当前新增 schemaVersion / migratedAt 元数据和 migrateBossState 迁移入口;读取旧的无版本状态时会补齐当前 schema并规范化 accountDeviceGrants / accountProjectGrants / accountSkillGrants / skillLifecycleRequests / permissionAuditLogs
  • 这只是正式数据库迁移前置层,当前生产读写仍然是 data/boss-state.json,尚未完成 PostgreSQL / Redis / 其他 DB 落地
  • 当前登录成功后会写入 boss_session Cookie会话 / 设备 / 我的 / 线程 页面以及主要 /api/v1/* 路由都要求有效会话
  • 当前 boss_session 默认保持 30 天,Set-Cookie 已验证为 Max-Age=2592000
  • 原生 Android 客户端当前会把登录返回的 boss_session / restore token / account 落到 SharedPreferences,并在 APP 启动时通过 /api/auth/restore 自动补回会话;已本地验证“登录 -> 取 restore token -> restore 接口恢复”链路
  • 当前多用户 / RBAC 第一阶段已落地:状态文件新增 accountDeviceGrants / accountProjectGrants / accountSkillGrants / skillCatalog / skillLifecycleRequests / permissionAuditLogs,非最高管理员访问 devices / conversations / projects / messages / device skills / state 时都会先走 src/lib/boss-permissions.ts 和 session-aware projections 过滤
  • 当前最高管理员授权管理接口已落地:GET/POST /api/v1/admin/access 可以查看脱敏账号、公司、设备、项目、Skill、授权、权限模板和审计日志并支持公司管理、公司启用/停用、账号/设备归属、设备吊销、批量导入预览、批量导入子账号、重置子账号密码、离职回收、创建/更新子账号、启用/停用子账号、授予设备/项目/Skill 权限、套用权限模板、撤销授权;停用公司会禁用该租户普通子账号并撤销会话,停用 / 回收 / 重置账号也会撤销该账号当前活跃会话,吊销设备会清空设备 token、置离线并阻断 heartbeat / 任务认领 / Skill 同步 / 日志上报 / boss-agent OTA普通账号访问返回 403
  • 当前旧 Web /admin 管理 UI 已下线:src/components/admin/boss-admin-app.tsx 和旧 data provider 已移除,/admin 现在只做兼容跳转到根路径 /
  • 当前企业级后台独立化第一批已部署到云:apps/boss-admin-web 作为 Vue + Vite + Ant Design Vue 独立 PC 后台,静态产物位于 /admin-web/index.htmladmin.boss.hyzq.net 根路径由 Caddy 内部 rewrite 到该静态入口,不再跳转到 /enterprise-admin
  • 当前后台风险处理接口已落地:POST /api/v1/admin/risks/actionshighest_admin 可用,支持对 ops_fault 指派负责人、设置 SLA、确认、关闭、创建或复用修复工单thread_context_alert 指派负责人、设置 SLA、确认和关闭POST /api/v1/admin/risks/scan 会扫描超时 SLA 并幂等写入 adminNotifications,并会把 Computer Use 不可用、boss-agent OTA 失败等运行态异常补成可治理 opsFaults,管理后台总览会展示开放风险通知;不支持的风险类型会明确返回 RISK_ACTION_UNSUPPORTED
  • 当前权限审计查询第一版已落地:GET /api/v1/audits/permission-logshighest_admin 可读,支持按 action / actorAccount / targetAccount / deviceId / projectId / skillId / cursor / limit 查询 permissionAuditLogs并实时返回短时间大量授权、Skill lifecycle 失败、过期授权仍存在、admin route 拒绝访问等 deterministic 风险摘要;后台 mutation 审计已支持 ipAddress / userAgent / requestId / beforeJson / afterJson其中重置密码会记录安全化前后快照Web /me/ops/audit 会向最高管理员展示最近权限审计和风险摘要
  • 当前 Skill 远程治理第一版可执行链路已落地:GET/POST /api/v1/admin/skills/requests 仅允许 highest_admin 创建和查看 install / update / uninstall / rollback / version_lock 请求;设备端通过 /api/v1/devices/[deviceId]/skill-requests/claim/complete 认领回写local-agent 默认每 5 秒执行本机 Skill 安装 / 更新 / 卸载 / 回滚 / 版本锁,并同步最新 Skill 清单。远程安装或带 sourceUrl 的更新必须命中本机 skillLifecycleAllowedSourcesskillLifecycleTrustedSources;配置为空时不允许远程新来源安装,但保留既有本地 Skill 的更新 / 回滚 / 卸载 / 版本锁。携带 checksum / expectedChecksum 的请求会校验 manifest.jsonSKILL.md 的 sha256更新 / 卸载 / 回滚前会写入 skillsDir/.boss-skill-backups 并在失败时尽量恢复
  • 当前授权管理前台已接入Web /me/access 与原生 Android 我的 > 用户与权限 仅最高管理员可见,可创建子账号、授权设备/项目/Skill、套用 只读观察员 / 项目开发者 / 设备操作者 模板、查看同名 Skill 跨设备聚合并撤销单条授权
  • 当前权限继承规则:显式 device.view 可带来绑定该设备项目的只读可见性,但不会自动获得 thread.chat / master_agent.ask / master_agent.takeover / computer.control / skill.use;这些动作必须来自项目或 Skill 显式授权
  • 当前主 Agent 执行链已经使用授权快照:boss-master-agent.ts 会先按请求账号裁出可见设备、项目、线程状态、进展事件和 Skill再生成执行提示词排入 MasterAgentTask 时会记录本次授权范围,供后续审计和执行器收敛
  • 登录成功后的客户端跳转当前已做稳态兜底:会先确认 /api/auth/session 已可读,再 replace/conversations,并补一次 window.location.replace 防止真机 WebView 偶发卡在登录提示页
  • POST /api/auth/send-code 当前已增加 60 秒冷却和 15 分钟窗口限流
  • POST /api/auth/send-code 当前还会先按用途校验账号状态:登录 / 忘记密码必须是已存在账号,注册必须是未注册账号
  • 当前账号连续登录失败 5 次后会锁定 10 分钟
  • 当前登录页默认要求账号密码或验证码校验;临时开发兜底只有显式设置 BOSS_AUTH_AUTO_LOGIN=1/true/yes 时才会开启
  • 新注册和重置密码当前已切到 scrypt 哈希;历史 sha256 密码会在下一次密码登录时自动迁移
  • launchd 会保持 com.hyzq.boss.local-agent 常驻,所以本地 agent 被手动结束后会自动重启
  • launchd 默认加载 local-agent/config.cloud.json,控制面指向 https://boss.hyzq.net
  • local-agent/config.example.json 仍保留给本地 127.0.0.1:3000 回环开发
  • 本地 launchd 当前已把 mac-studio 作为 krisolo 的绑定 Codex 节点上报
  • 本地 agent 当前会递归扫描 ~/.codex/skills,并把本机 Skill 同步到云端设备维度
  • 根布局当前会挂载 APP 日志桥,路由切换、运行时错误、消息发送和 OTA 操作会通过 /api/v1/app-logs 实时同步到服务器;日志绑定已改成按当前登录会话解析设备
  • 根布局当前还会挂载原生运行时桥:维护 APP 内导航历史、拦截 Android 返回键、防止根页直接退回桌面,并在 OTA / 同签名覆盖安装后自动尝试恢复登录态
  • UI 外壳已收口为真机态:移动端不再渲染假的 9:41 / 5G 状态栏,底部一级导航固定在视口底部,背景图按手机 viewport 全屏 coverWebView 不再显示外层圆角矩形预览壳
  • 原生 Android 当前也和这套产品方向对齐:会话 / 设备 / 我的 为固定底部 tab一级面维持微信式简单列表和聊天优先主 Agent / 审计对话 以普通置顶会话样式固定在会话首页顶部
  • 会话首页右上角当前已改成微信式 + 入口:直接从会话列表发起独立群聊;设备页右上角仍保留 +添加
  • 会话首页当前已升级成“项目聚合 + 线程下钻”:如果某个 Codex 文件夹只导入了 1 个线程,会话首页直接显示这个线程;如果同一文件夹下导入了多个线程,会话首页只显示文件夹归档项,进入后再看到该项目下的全部线程
  • 会话首页与内部线程视图当前已分层:原首页和原生根页改走 GET /api/v1/conversations/home,文件夹详情改走 GET /api/v1/conversation-folders/[folderKey];原有 GET /api/v1/conversations 继续保留给群聊创建、消息转发等需要平铺线程列表的内部能力使用
  • 会话首页搜索当前仍保留线程可达性:命中单线程项目时直接进入线程;命中多线程项目里的线程时,会显示 项目 / 线程,点击后先进入对应项目文件夹页并定位目标线程,不会把首页重新退回平铺线程结构
  • 会话首页的 置顶 / 已读 / 时间 / 预览 / 上下文环 当前都按项目会话聚合:单线程项目直接作用在线程,多线程项目则作用在文件夹归档项,文件夹时间和预览取内部最新线程,上下文环取内部最需要关注的线程
  • 项目详情页右上角当前会进入微信式会话信息页:单线程会话支持改名和发起群聊,群聊会进入群资料页并支持改群名
  • 原生顶部安全区当前已统一补上状态栏 inset首页、项目详情、会话信息、群资料、发起群聊和转发目标页的顶部按钮都已退回真机可点击区域
  • 项目详情页当前已补齐微信式消息转发:长按消息会弹出 转发 / 多选 / 复制 / 删除 / 取消;单条消息直接进入统一会话选择页,多选消息会进入合并转发链路
  • 原生转发目标页当前统一由 ForwardTargetActivity 承接;一次只允许选择一个目标会话,目标可为单线程会话、群聊、主 Agent审计对话
  • 当前单条消息转发会在目标会话中显示为普通转发消息,并保留 forwardSource;多条消息会落成 forward_bundle 聊天记录卡片,并保留来源会话、时间范围和摘要条目
  • 当前群聊编排主链已补上第一轮闭环:群聊文本消息会先进入主 Agent 生成推荐下发方案;用户确认后会创建真正的线程执行单,并写入系统通知;执行完成后会把线程原始结果镜像回群聊,再追加一条主 Agent 汇总
  • 当前 approval_required 群聊已补齐“确认 / 拒绝”两条审批动作:确认后才会创建 dispatchExecution,拒绝后会把群审批状态写成 rejected,并在群里追加明确系统提示
  • 当前原生聊天页已把待审批推荐前移到主消息流:ProjectDetailActivity 会直接显示 确认下发 / 拒绝 操作,且刷新后仍能恢复最近一条待确认推荐
  • 当前 approval_required 群聊在已经存在一条 pending_user_confirmation 推荐时,会拒绝继续创建新的推荐并返回 409,前台会提示用户先确认或拒绝当前推荐
  • 当前普通单线程聊天也已补上真实执行链:POST /api/v1/projects/[projectId]/messages 不再只写用户消息,而是会追加 conversation_reply 任务;绑定设备上的 local-agent 认领后会继续恢复到真实 Codex 线程,再把线程原始回复回写到该聊天窗口
  • 当前 Boss APP 到 Codex 桌面版的记录同步以数据层镜像为主:普通单线程消息和托管模式消息都会把 APP 用户原文作为干净 user_message 写入目标 Codex 线程 rollout并同步刷新 Codex thread 的 updated_at / updated_at_ms;托管链路不会把主 Agent 内部调度 prompt、系统提示词或权限字段镜像成桌面可见聊天记录
  • 当前 local-agent 已补 Codex Desktop Refresh Bridgerollout 镜像完成后会优先 POST 到本机常驻 http://127.0.0.1:4318/api/v1/codex-desktop/refresh,由 scripts/codex-desktop-refresh-bridge-daemon.mjs 给 Codex 桌面版发安全刷新提示daemon 不可用时回退到 scripts/codex-desktop-refresh-hint.mjs 命令式刷新。默认 deeplink-reload 模式会打开 codex://threads/{threadId} 目标线程深链,并在短延迟后发送一次应用刷新快捷键;它仍不模拟聊天输入、不点击、不发送。刷新桥默认会对短暂失败重试 2 次、每次间隔 120ms并把 deep link 与尝试次数作为结果返回;失败只记 local_agent.codex_desktop_refresh_failed,不会回滚已经写入的线程消息。当前 bridge 还暴露 GET /api/v1/codex-desktop/events SSE 和 GET /api/v1/codex-desktop/events/recent,每次刷新 hint 都会广播不含消息正文、不含内部 prompt 的 codex_desktop_refresh 事件;scripts/codex-desktop-event-consumer.mjs 是后续 Codex Desktop 插件/IPC 的订阅样例,可用 BOSS_CODEX_DESKTOP_EVENTS_ONCE=true 做一次性 smoke
  • 当前 bridge 还暴露 GET /api/v1/codex-desktop/capabilities,内部复用 scripts/codex-desktop-integration-probe.mjs 探测当前 Codex Desktop读取 Info.plist、确认 codex URL scheme、扫描 app.asar 中是否存在 codex://threads/,并明确返回 packagePatch.supported=false,避免后续误走修改签名 app 包体的路线
  • 当前 Web 群聊详情页也已补上待确认推荐的刷新恢复:服务端会在页面渲染时读取最近一条 pending_user_confirmation 的 dispatch plan聊天输入区会继续显示“等待你确认主 Agent 推荐”,不再因刷新丢失确认入口
  • 当前 AI 账号 页面已分成三条显式接入链:登录 OpenAI 平台账号API Key接入阿里百炼备用账号绑定 Master Codex NodeOpenAI API 登录成功后会立即切成当前主控,阿里百炼账号会作为备用链路保存
  • 当前 登录 OpenAI 平台账号 已升级成浏览器辅助登录流:原生 Android 会先进入 OpenAiOnboardingActivity,自动打开 OpenAI Platform 登录页;用户登录后可直接跳到 API Keys 页面,回 APP 粘贴 key 完成接入
  • 当前 OpenAiOnboardingActivity 在登录成功后会直接弹出 测试主 Agent 对话,可一键进入 master-agent 聊天页验证主控链路
  • 当前 AI 账号 页顶部会直接展示“当前主控身份”,并提供 校验主控 / 测试主 Agent 对话 两个入口,切换主控后不必再手动退回会话页验证
  • 当前阿里百炼备用链已完成一次真实线上闭环验证:手动切到 aliyun-qwen-backup 后,POST /api/v1/projects/master-agent/messages 会返回 queued,并已实际回流 阿里备用链正常。master-agent 会话
  • 当前 我的 > AI 账号 已把阿里百炼备用模型切成预设选择Web 和原生 Android 都支持直接切换 qwen3.5-plus / qwen3.5-flash,只有预设不适用时才需要填写自定义模型
  • 当前 我的 > 主 Agent 提示词 / 记忆 页面已接通:管理员全局主提示词只读展示、用户主提示词、当前对话附加提示词,以及用户通用记忆 / 跨项目项目记忆都可以在 Web 端查看和编辑;当前对话设置按登录账号隔离,管理员全局主提示词不可覆盖
  • 当前 Web 端 master-agent 会话页右上角也已补齐微信式三点菜单,支持直接进入 提示词 / 模型 / 推理强度 / 记忆 / 刷新
  • 当前 approval_required 群聊在 Web 端已统一用单一状态快照驱动:如果存在新的待确认推荐,会自动折叠旧的拒绝态;如果上次推荐已拒绝,会明确展示“重新生成新的推荐”的恢复入口
  • 当前如果主控身份还是 Master Codex Node,但该节点离线或执行立即失败,主 Agent 会优先尝试已配置的 OpenAI API / 阿里百炼 Qwen 备用账号,不再把失败日志直接原样回给用户
  • 当前原生 Android 的聊天发送已收短客户端等待窗口;master-agent 单聊依赖服务端快速入队和消息流里的“主 Agent 思考中 / 回复超时 / 重试等待”状态,不再要求客户端长时间同步阻塞
  • 当前设备导入主链也已补上第一轮后端闭环:heartbeat 可上报真实项目候选,服务端会生成 deviceImportDraft;用户可提交勾选结果、生成导入决议,再把选中的线程真正落成聊天窗口
  • Web 与原生 Android 当前都已补上“新设备导入草稿 -> 勾选 -> 决议预览 -> 应用导入”的前台流程;已绑定生产设备继续保留 heartbeat 自动导入主链
  • 当前设备导入前台的状态表达已经统一为:等待候选线程 / 等待勾选 / 建议生成中 / 建议已生成 / 已导入,并会回显最终导入的线程名
  • 当前已导入设备的项目理解同步已经收窄到“显式接管 / 用户主动要求同步”边界:绑定设备 heartbeat 或线程回写默认只追加轻量 threadProgressEvent,不会在未接管状态下主动向 Codex 线程发起隐藏对话
  • 当前全量理解链路只在单线程接管有效、全局接管有效,或用户明确要求“同步/核对项目目标和版本记录”时排 conversation_reply 任务;关闭接管会同步清理仍在 queued/running 的项目理解同步任务,避免取消接管后继续主动打扰线程
  • 当前群资料页已补上“修复群成员”入口:当群里存在失效线程引用、master-agent 这类不可下发成员,或真实线程成员少于 2 个时,前台会明确提示并允许重新选择真实线程成员
  • 当前原生聊天页也已前移“修复群成员”入口:脏群会在消息流上方直接显示 去修复 按钮,并跳转到群资料页完成成员替换
  • 当前当 heartbeat 同时携带旧 projects 和新 projectCandidates 时,服务端会优先走 deviceImportDraft,不再绕过勾选/审核阶段直接自动导入聊天窗口
  • 当前 dispatch_execution 完成回写已补幂等,重复完成同一个线程执行单不会再重复向群聊追加线程原始回复和主 Agent 汇总
  • 当前原生 Android 已把三条聊天主链统一成等待真实回写:主 Agent 单聊 / 普通线程单聊 / 群聊确认下发 都会保持等待,直到收到实际回复或明确超时提示
  • 当前设备导入 review 已补 owner/admin 鉴权,并已切成真实异步审核:review 会先排队 device_import_resolution master task前台进入“主 Agent 审核中”并自动刷新;导入草稿在 apply 后再次 heartbeat 也不会从 applied 回退成 resolved
  • 原生会话页当前的刷新失败策略已改成按当前 tab 独立判错:会话 不会再因为 设备 / OTA / 设置 的旁路请求失败而整体提示“刷新失败”
  • 会话页、设备页、技能页和项目详情页当前都通过 /api/v1/events 的 SSE 自动刷新
  • 我的页当前保留角色感知入口:member 只显示 账号与安全 / 设置 / 技能 / 关于,其中 Skill 列表继续由服务端按授权过滤;admin / highest_admin 额外显示 运维与修复 / AI 账号 / 附件与存储 / Telegram 接入用户与权限 只给 highest_admin
  • AI 账号 支持查看 主 GPT / 备用 GPT / API 容灾,并明确主链路优先走已经在绑定电脑上登录 ChatGPT Plus / CodexMaster Codex Node
  • AI 账号 页当前已补上显式 登录指引:手机端不会直接弹出 ChatGPT OAuth主 GPT 需要先在绑定电脑上的 Codex / ChatGPT Plus 会话里登录,再回手机端点“测试连接 / 校验连接”
  • AI 账号 页当前已升级成双入口:首页会显式展示 登录 OpenAI 平台账号绑定电脑上的 Codex 节点
  • 登录 OpenAI 平台账号 当前通过填写 OpenAI API Key 完成;校验成功后会立即设为当前主控
  • 绑定电脑上的 Codex 节点 当前会保存 master_codex_node 主账号,并可立即切为当前主控;同时返回“登录发生在绑定设备上”的中文指引,不会再让用户误以为手机里能直接弹 ChatGPT OAuth
  • 当前公网服务器对 api.openai.com 的直接出网仍未打通;远端 curl https://api.openai.com/v1/models 超时Python urllib 返回 Network is unreachable
  • 因此 POST /api/v1/accounts/onboard/openai-api 在公网环境下已经能返回明确中文网络错误,但在服务器出网恢复前,还不能完成真实 OpenAI 平台账号探针与调用
  • POST /api/v1/accounts/[accountId]/validate 当前对 master_codex_node 不再只看 nodeId,还会同时校验绑定设备是否在线;设备离线时返回 degraded 和清晰的人类可读提示
  • 主 Agent 当前真实对话链路已验证通过:Boss Web -> /api/v1/projects/master-agent/messages -> master-agent task queue -> local-agent -> codex exec -> /complete -> 项目消息账本
  • Telegram 当前真实对话链路已接通:Telegram Bot webhook -> /api/v1/integrations/telegram/webhook -> master-agent -> /api/v1/master-agent/tasks/[taskId]/complete -> Telegram Bot sendMessage
  • Telegram 配置保存当前也会自动做 webhook 同步webhook 模式自动 setWebhookpolling/关闭时自动 deleteWebhook
  • 主 Agent 单聊当前已改成“快速入队 + 异步回流”:POST /api/v1/projects/master-agent/messages 会先返回 masterReplyState + task,真实回复随后再回写消息账本
  • 当前对话级 agentControls 已经生效:master-agent 会话支持 modelOverride / reasoningEffortOverride,并会优先作用到实际 OpenAI 回复和 Master Codex Node 执行 prompt
  • 当前对话级 agentControls 也已支持 backendOverridemaster-agent 会话可在 Claw Runtime 可用时显式选择 claw-runtime,由 ExecutionBackendSelector 在当前对话里优先尝试对应后端;不可用时保存接口会直接拒绝,并返回人类可读原因
  • 原生 Android 当前会把 master-agent 的等待态保留在消息流里:发送后常驻显示“主 Agent 思考中”,超时后改成“主 Agent 回复超时 + 重试等待”,收到新回复后会自动清掉,不再只靠 toast 提示
  • GET /api/v1/app-logs 当前已支持登录态分页查询
  • POST /api/v1/app-logsPOST /api/v1/devices/[deviceId]/skillsPOST /api/v1/workers/[workerId]/thread-context 当前都要求有效设备 token 或匹配登录会话
  • 设备页当前只保留生产设备;旧演示脏数据已经从设备、运维和审计聚合视图里剔除
  • npm run apk:debug 当前会自动把最新 APK 发布到 public/downloads/boss-android-latest.apk,并写入 public/downloads/boss-android-latest.json
  • npm 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
  • 当前默认管理员账号:krisolo
  • 当前默认测试密码由线上初始化配置管理,文档不再明文记录
  • Web 登录页和原生 Android 登录页默认都必须通过账号密码或验证码校验后才会创建会话
  • 当前已生成 Android debug APKandroid/app/build/outputs/apk/debug/app-debug.apk
  • 当前已生成 Android signed release APKandroid/app/build/outputs/apk/release/app-release.apk
  • 当前 release 构建还会额外生成带版本号的 APKandroid/app/build/outputs/apk/release/boss-android-v{versionName}-release.apk
  • 当前最新 release 构建版本:2.5.11versionCode=24
  • 当前 release keystore 位于本机 android/keystores/boss-release.keystore,签名参数位于 android/signing/release-signing.properties
  • 真机开发约束:用户已明确切换到当前连接的 OPPO PHZ110ADB serial U84XJRIB7D65ZH45);除非用户再次要求切换设备,后续 Android 开发、ADB 安装、交互回归与问题复现统一使用这台 OPPO不再回退到原 PLB110
  • Android 真机无线调试当前可恢复使用但系统层面没有“永久保持无线调试开启”的官方稳定开关重启、切网、ADB server 重启或重新切换 USB 调试后,都可能自动失效
  • 如果要尽量稳定,当前推荐做法是:同一局域网下先走 USB 启用,再执行 adb tcpip 5555adb connect <phone-ip>:5555;同时固定同一 SSID、避免切热点/VPN、开启“保持唤醒”并保留 USB 作为长时间调试兜底
  • 2.0.1 已在本机连接的华为真机上复核通过,修复了 Theme.SplashScreen 导致的 AppCompatActivity 启动闪退
  • 2.1.0 已把 Web 一级页和主要二级页全部补成原生活动页:MainActivity / ProjectDetailActivity / ProjectGoalsActivity / ProjectVersionsActivity / ProjectForwardActivity / ThreadDetailActivity / DeviceDetailActivity / DeviceEnrollmentActivity / SkillInventoryActivity / SecurityActivity / AccessManagementActivity / SettingsActivity / AiAccountsActivity / OpsCenterActivity / AboutActivity
  • 2.1.0 已完成签名包覆盖安装到本机连接的华为真机,并确认 com.hyzq.boss 可以成功拉起进程
  • 2.1.1 已补上原生 OTA 下载安装引导、REQUEST_INSTALL_PACKAGES 权限声明,以及根页默认入口/返回逻辑收口
  • 2.2.0 已把原生 UI 回退到微信式交互:会话首页改为简单聊天列表,项目详情页改为聊天优先,只保留 项目目标 / 版本记录 两个轻入口,设备页和我的页根面改为简单列表
  • 2.2.1 已继续补齐原生交互细节:聊天页会即时显示本地“发送中”气泡,并且只在用户接近底部或本次发送主动触发时自动滚到底;关于页会显示 OTA 下载进度 / 重试 / 安装授权提示,离开后再回来仍会恢复本地下载状态;根 tab 会记住最近一次用户停留页,并把一级页返回逻辑收成“先回会话 tab再按一次返回进入后台”
  • 2.3.0 已把原生会话模型切到“线程 = 聊天窗口”:补上文件夹名副信息、后台活跃数量动态图标、微信式会话信息页、线程改名、独立群聊创建、群资料页,以及 主 Agent / 审计对话 普通置顶会话化
  • 2.4.0 已把原生消息转发切到微信式链路:单条消息支持长按直接转发,多选消息支持合并转发成聊天记录卡片,统一使用原生会话选择页替换旧的备注转发页
  • 2.5.0 已补齐聊天附件主链:原生聊天框左侧 + 已改成底部抽屉,支持图片 / 视频 / 文件发送;图片 / PDF / 文本会自动排队给主 Agent 分析,视频 / Office / 大文件改成手动触发
  • 2.5.0 已上线 我的 > 附件与存储:默认使用服务器文件存储,用户可切到阿里 OSS 私有桶并填写最小配置;下载链会使用附件上传时固化的 OSS 快照,避免后续改配置后旧附件失效
  • 2.5.1 已继续回退聊天详情页顶部交互:普通聊天态不再显示“刷新”,只保留微信式右上角“信息”入口;多选态的“取消 / 转发”保持不变
  • 2.5.1 已压缩“发起群聊”页首信息密度:来源会话场景只保留一张紧凑摘要卡,选择区改成更短的微信式提示,同时保留会话卡片式候选列表
  • 2.5.2 已继续回退深层原生页:会话信息 / 群资料 改为轻量头部信息 + 菜单式入口 + 线程列表;项目目标 / 版本迭代记录 也已按设计图改成轻卡片结构,不再使用厚按钮和说明块
  • 2.5.2 已压缩附件消息卡片的状态层级:待分析 收成 可分析让 AI 分析 收成 AI 分析,有摘要时不再重复显示 已分析
  • 2.5.4 已把 我的 根页收口成微信式资料区 + 白底菜单列表,会话根页同步改成更扁平的白底聊天列表,不再是厚圆角卡片流
  • 2.5.4 已把 设置 / 账号与安全 / AI 账号 / 技能 / 运维与修复 的顶部说明从绿色 soft panel 降成轻量列表说明,和会话/设备页统一成同一套微信式产品语言
  • 2.5.5 已补上群资料页“修复群成员”主链:历史脏群现在会明确提示失效成员,并允许重新选择真实线程成员写回群资料
  • 2.5.5 已给 approval_required 群聊补齐“确认 / 拒绝”两条审批动作;拒绝后会把群审批状态写成 rejected,并追加系统提示,不再继续下发到线程
  • 2.5.11 对应这一轮的主链收口Android 会话首页改为直接读取 /api/v1/conversations,会把这台 Mac 上已导入的 Codex 线程对话直接平铺出来;master-agent 对“操作真实线程”的请求会先生成推荐下发方案,确认后再把任务派到真实线程执行;线程无绑定或设备离线时,确认接口会给清晰失败原因,避免假成功状态
  • 当前附件分析任务已带受控 task token 下载链接和文本摘录:本地开发环境会跟随请求 origin 生成链接,生产环境默认走 https://boss.hyzq.net
  • 2.5.11 当前补齐了消息删除闭环:DELETE /api/v1/projects/[projectId]/messages?messageId=... 会删除账本消息、刷新会话预览并推送实时事件Android 长按消息的“删除”已接入该接口
  • 2.5.11 当前补齐了原生 我的 > 附件与存储 入口Android 可直接查看当前存储方式,切换服务器文件存储 / 阿里 OSS并支持保存或测试并保存
  • 2.5.11 当前后台通知已扩展到所有会话里的主 Agent 回复:只要 APP 不在前台,线程会话内的主 Agent 接管回复也会触发 Android 系统通知
  • 2.5.x 当前已补上会话首页独立建群入口:可以不从单线程聊天内部出发,直接在会话首页右上角 + 建立新群聊;同时已把多个原生自定义 top bar 页面统一纳入状态栏安全区处理
  • 当前 local-agent 已能回写带 dispatchExecutionId / targetProjectId / targetThreadId / rawThreadReply 的任务完成载荷,群聊分发执行结果不再只停留在主 Agent 队列
  • 当前 local-agentconversation_reply 任务会优先使用 codex exec resume <targetCodexThreadRef>,只有缺失真实线程引用时才退回 --ephemeral
  • 当前已绑定真实 codexThreadRef 的普通单线程聊天,会在 local-agent 执行 codex exec resume 前,先把 Boss 用户消息镜像写入对应 Codex Desktop rollout这样 APP 发起的消息也能进入桌面版同一线程历史,并按 sourceMessageId 去重。rollout 定位优先使用 state_5.sqlite,状态库不可用或索引缺失时回退扫描 ~/.codex/sessions;写入后会尽量刷新 threads.updated_at / updated_at_ms / has_user_event,再通过 codex://threads/{threadId} 深链提示桌面版打开目标线程
  • 当前 local-agent 已新增 Codex App Server providerboss-agent 默认配置 codexAppServerEnabled=trueconversation_reply / dispatch_execution 会先通过 codex app-server 的 stdio JSON-RPC 恢复或创建线程,也可配置 codexAppServerTransport=ws + codexAppServerUrl=ws://127.0.0.1:<port>codexAppServerTransport=unix + codexAppServerUrl=unix:///absolute/path.sock 连接同机长驻 App Server长驻连接可通过 codexAppServerAuthTokenFileBOSS_CODEX_APP_SERVER_AUTH_TOKEN_FILE 提供 bearer token。随后 runner 下发 turn/start 并收集流式 agent 回复;如果单个 JSON-RPC 请求返回 -32001 / retry laterrunner 会先做指数退避重试;如果任务携带 targetCodexTurnId,会改用 turn/steer 干预活跃 turn如果 App Server 在 turn 启动前失败,默认允许回退到 codex exec resume,如果 turn 已经启动则不再回退,避免同一轮用户消息被重复执行。桌面控制另有 codexComputerUseEnabled=true,默认先走 Codex Computer Use再回退 CUA Driver。
  • 当前已新增 Boss 自有 Inter-Thread Broker 第一版:服务端入口 POST /api/v1/projects/[projectId]/thread-collaboration 会创建带源/目标 Codex 线程引用的协作任务App Server runner 执行 thread/read(source) -> thread/inject_items(target) -> turn/start(target),用于让一个线程的结论受控进入另一个线程,不依赖官方任意线程 P2P 互聊能力
  • 当前 local-agentdispatch_execution 任务会按 orchestrationBackendId 分流:默认走 codex exec resume;当任务显式选择 omx-team 且本机 omxEnabled + omxCommand/omxArgs 可用时,会改走 OMX Team Runtime JSON 协议执行并回写 rawThreadReply / replyBody
  • 当前 local-agent 会在 Codex 任务执行中和完成时回传 executionProgress:服务端把同一任务的进度卡从 queued / running 更新到 completed / failedAndroid 原生聊天页会显示“进度 / 线程状态 / 实时状态 / 线程配置 / 线程协作 / 工具活动 / 思考摘要 / 账号状态 / 运行状态 / 安全提醒 / 审批状态 / 文件变更 / 分支详情 / 生成结果 / 后台智能体”。2026-05-31 起Codex App Server 的 turn/plan/updatedturn/diff/updateditem/started|completedthread/started 会直接映射为进度步骤、变更统计、生成产物和后台智能体;第二批已把 item/*/requestApprovalitem/autoApprovalReview/*guardianWarningserverRequest/resolveditem/fileChange/patchUpdated 映射为审批、安全提醒和文件变更摘要;第三批已把 thread/status/changedthread/realtime/* 安全映射为线程状态和实时状态摘要;第四批已把 model/reroutedthread/tokenUsage/updatedmcpServer/startupStatus/updatedremoteControl/status/changed 安全映射为运行状态摘要;第五批已把 thread/goal/*thread/settings/updatedthread/compacted 映射为线程配置摘要;第六批已把 account/updatedaccount/rateLimits/updatedmodel/verificationwarningconfigWarningdeprecationNotice 映射为账号状态、模型校验和安全提醒摘要;第七批已把 ThreadItem.collabToolCallThreadItem.contextCompaction 映射为线程协作和上下文压缩摘要;第八批已把 mcpToolCalldynamicToolCallwebSearchimageViewenteredReviewModeexitedReviewModecommandExecution 映射为工具活动摘要;第九批已把 ThreadItem.planThreadItem.reasoning.summary 映射为计划步骤与思考摘要;第十批已把 ThreadItem.imageGeneration 映射为图像生成工具活动和图片产物;第十一批已把 hook/started|completed 映射为钩子生命周期工具活动;第十二批已把 windowsSandbox/setupCompleted 映射为 Windows 沙箱准备状态摘要;第十七批已把新版 ThreadItem.collabToolCall.receiverThreadIds / agentsStates 安全映射为线程协作目标数量和 agent 状态集合。所有进度均通过 POST /api/v1/master-agent/tasks/[taskId]/progress 实时刷新;字段白名单会剥离 cwd、turnId、配置文件路径、内部 prompt、collab 源/目标线程 ID、receiverThreadIds、agentsStates 私有消息、共享 Skill 根绝对路径、tool arguments/result、web URL token、命令正文/输出、raw reasoning content、reasoning item id、图像生成 revisedPrompt/result、hook sourcePath/statusMessage/entries、Windows sandbox sourcePath/samplePaths/本地绝对路径和未清洗密钥complete 回写仍会携带最终进度兜底
  • 当前 local-agent heartbeat 已新增 Codex App Server capability discovery按 TTL 拉取模型、provider 能力、Skill、Hook、Plugin、App 摘要,并附加只读线程操作、插件治理、账号治理和配置治理能力 catalog写入 capabilities.codexAppServer.metadataWeb 设备详情会展示 App Server 连接状态、模型数量、默认/快速/深度模型、扩展数量、Hook 治理摘要、线程操作摘要、插件治理摘要、账号治理摘要和配置治理摘要
  • 当前 MasterAgentTask 已具备服务端租约和取消基础状态机claim 会写入 attemptCount / maxAttempts / leaseExpiresAt,运行中任务租约过期后可被重新认领,超过重试上限会转 timed_outPOST /api/v1/master-agent/tasks/[taskId]/cancel 会把任务转 canceled,迟到的成功 complete 不会覆盖终态
  • 当前 local-agentbrowser_control / desktop_control 已从占位骨架升级成外部 runtime 桥:当本机配置了 browserControlEnabled + browserControlCommandcomputerUseEnabled + computerUseCommand 时,会把标准化 JSON 请求透传给外部进程,并解析单行 JSON 结果;未启用时会 fail closed返回明确的 runtime disabled 错误,不再假装执行成功
  • 远程电脑控制链路当前已有可复用压测基线:npm run stress:remote-control 可按参数压测 local-agent -> MasterAgentTask -> browser_control / desktop_control runtime -> complete 回写 全链路;npm run stress:remote-control:ci 固定 120 条链路任务和 360 条 runtime 并发任务,并用 p95 延迟预算判断是否退化。压测报告可通过 --report-json=PATH 落盘,便于后续接入真实 macOS AX / Windows UIA helper 后复用同一套稳定性判断。
  • 当前历史脏群如果不再包含真实线程成员,群聊消息不会再表现成“无响应”;服务端会在群内追加明确 system_notice,提示先重新添加线程成员
  • 当前设备导入决议已经升级成真正通过 local-agent -> codex exec -> /complete 回写的主 Agent 决议链Web 和 Android 前台都会在 pending_resolution 阶段显示审核任务状态,并在任务完成后自动刷新出正式导入建议
  • 当前 local-agent 已改成先启动本地 4317 健康监听,再异步跑首次 heartbeat 和 task poll避免控制面短时阻塞时本地健康探针不可用
  • 当前 heartbeat 上报 browserAutomation / computerUse / codexAppServer 能力时,不再只看静态 connected 布尔值browser/computer 会参考 runtime 配置状态Codex App Server 会参考 codexAppServerEnabledstdio 模式校验本机 app-server 命令可执行性ws/unix 模式校验 codexAppServerUrl
  • Codex 项目/线程扫描当前已搬到 worker 线程执行,避免 .codex/logs_1.sqlitestate_5.sqlite 的同步扫描阻塞主线程健康接口
  • 当前 local-agent 的任务完成回写已通过 RemoteRuntimeAdapter 标准化,conversation_reply / dispatch_execution 的完成载荷会先做统一归一化,再进入主 Agent 完成路由
  • 原生 Android 当前对 master-agent 聊天不再依赖长时间同步等待;发送后会先显示“主 Agent 思考中”,右上角改成微信式 ... 菜单,菜单项包含 模型 / 推理强度 / 会话信息 / 刷新
  • 原生 Android 当前已新增 TelegramIntegrationActivity:可从 我的 > Telegram 接入 查看当前 Bot 状态、配置 Bot Token / Webhook Secret / Webhook URL、私聊白名单、群聊白名单、群聊触发策略和群 / Topic 到 Boss 项目的路由;群聊可配置为只接受 @Bot 或直接回复当前 Bot 的消息,并可直接测试连接或保存配置

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.json
  • Caddy 反代 127.0.0.1:3000boss.hyzq.net 服务客户 Web / App APIadmin.boss.hyzq.net 作为平台级 To B 独立后台入口并把根路径内部 rewrite 到 /admin-web/index.html
  • 服务器上存在 gptpluscontrol-boss-caddy-reconcile.timer,会周期性用 /home/ubuntu/build/gptpluscontrol/deploy/server/caddy.boss_hyzq_net.gptpluscontrol.conf 重写 /etc/caddy/Caddyfile/opt/boss/deployment/Caddyfile;以后改 Caddy 入口必须同步更新这份 canonical否则会重新生成重复站点块并导致 Caddy reload 失败
  • Postfix 监听 25 / 465 / 587
  • Dovecot 监听 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
  • 当前 admin.boss.hyzq.net 用于平台级 To B 独立后台入口,站点根路径直接承载新 PC 后台;/admin 不再渲染旧 UI只保留跳转到根路径的兼容入口

同时也确认了这些事实:

  • 当前本机网络 dig +short boss.hyzq.net 仍返回 198.18.1.188
  • 当前本机网络 dig +short admin.boss.hyzq.net 已返回 106.53.170.158
  • 当前本机网络 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 也返回真实聚合数据
  • 服务器本机通过 swaks127.0.0.1:587 + STARTTLS + AUTH LOGINverify@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,但验证码登录必须先通过 send-code 生成账本记录;不能只靠固定码直接登录
  • 当前虽然已经补齐 OTA 版本中心、检查更新、执行升级和 APK 包下载链路,但仍是文件型状态驱动的 MVP不是原生增量更新基础设施
  • 当前“OTA / 重装后不掉登录”覆盖原生 Android 客户端的 SharedPreferences 恢复与同签名覆盖安装;如果用户先卸载 APP 再全新安装,仍可能丢失本地原生存储
  • 数据存储默认仍是文件型,但已经有 PostgreSQL store adapter、schema 和维护脚本生产切换前需先执行备份、dry-run 迁移和回滚演练
  • 设备发现、项目扫描和额度采集仍是静态配置驱动的 MVP
  • APP 实时日志当前已能同步到主 Agent 会话,但还没有单独的日志检索、分页和告警升级规则
  • Skill 清单当前按设备同步和展示已经可用;远程治理目前只有最高管理员创建 lifecycle 请求和 list 状态,尚未真正下发到设备端执行安装 / 更新 / 卸载 / 回滚
  • 服务器侧主 Agent 实时回复依赖被绑定设备的 local-agent 在线并能执行 codex exec;如果设备离线,只能保留任务或走 API 容灾账号
  • 设备导入主链的后端状态机已经跑通,并且已经分成两条:
    • 新接入设备继续走 import draft -> 勾选 -> review -> apply
    • 已绑定的生产设备如果 heartbeat 带上真实 projectCandidates[],服务端会自动选中建议项、生成导入决议并直接应用,让会话页自动出现当前运行中的 Codex 线程
  • 本机 mac-studio 当前已经验证可通过 local-agent 直接从 ~/.codex/state_5.sqlite / logs_1.sqlite / session_index.jsonl / .codex-global-state.json 扫描真实 Codex 线程,并通过 heartbeat 自动导入到会话列表
  • 线程发现当前会优先保留每个 Codex 文件夹下的主工作线程;如果同文件夹里存在 worker / explorer 子线程,会优先过滤这些子线程,避免把子代理线程误当成独立聊天窗口
  • local-agent 当前还会在 codex exec resume 前再次校验目标线程绑定;如果目标线程在 Codex 本地状态库里不存在、已归档、cwd 不匹配或是 read-only 会话,会直接 fail closed不再把内部环境提示原文回写到聊天
  • 如果历史上误把 worker / explorer 子线程当成开发线程继续复用,即使后来把数据库权限改回可写,这类线程也可能仍然带着“只读勘察 / 不改文件”的历史上下文;恢复开发时应优先切回主交接线程,或先对该子线程补发明确的解锁指令
  • 会话首页当前已经不再简单平铺所有线程;如果某个设备导入了大量同文件夹线程,首页会优先显示项目归档项,降低会话页噪音
  • 已绑定生产设备的自动导入链现在还会在 heartbeat 时清理已经不再出现在最新 projectCandidates[] 里的旧线程会话,避免旧导入结果长期残留
  • API 容灾当前由用户在 APP 的 我的 > AI 账号 页面自行配置 OpenAI API 账号,不再依赖服务器预置 Key
  • 原生 Android 的二级深层页虽然仍保留 ProjectForwardActivity / ThreadDetailActivity / OpsCenterActivity 等能力,但它们已经退出主 UI 正面;后续如再加入口,需继续遵守“一级微信式,复杂能力下沉”的规则
  • Android 本地 Gradle 验证当前必须串行执行;如果并发跑 testDebugUnitTest / compileDebugJavaWithJavac / assembleDebug,会导致中间产物互踩并出现假失败
  • 聊天附件当前已经支持真实上传、消息落账本、受保护下载和原生打开;默认后端为服务器文件存储,可按用户切到阿里 OSS 私有桶
  • 企业认证默认值已收紧:POST /api/auth/login 默认不再允许临时免验证登录,只有显式设置 BOSS_AUTH_AUTO_LOGIN=1/true/yes 才会开启开发兜底。
  • 状态存储现在通过 src/lib/boss-state-store.ts 抽象,默认继续使用 data/boss-state.json;只有显式设置 BOSS_STATE_STORE=postgres 才会进入 PostgreSQL 路径,真实连接 / 写入还必须同时配置 BOSS_DATABASE_URL。schema 见 scripts/postgres-state-schema.sql,生产切换前需先跑 validate-schema、文件备份、migrate-file-to-postgres --dry-run、PostgreSQL 备份导出和恢复演练。
  • 认证已补 CSRF 基础防护、restore token 轮换、账号锁定和子账号 MFA 开关;后续仍可继续补更完整的企业 IdP / SSO
  • 邮件对外正式投递仍缺少 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":"krisolo","password":"<admin-password>","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
node scripts/boss-state-store-maintenance.mjs backup-file --dry-run
node scripts/boss-state-store-maintenance.mjs validate-schema
BOSS_STATE_STORE=postgres BOSS_DATABASE_URL="$BOSS_DATABASE_URL" node scripts/boss-state-store-maintenance.mjs migrate-file-to-postgres --dry-run
BOSS_STATE_STORE=postgres BOSS_DATABASE_URL="$BOSS_DATABASE_URL" node scripts/boss-state-store-maintenance.mjs export-postgres-backup --output /tmp/boss-postgres-backup.json --dry-run
BOSS_STATE_STORE=postgres BOSS_DATABASE_URL="$BOSS_DATABASE_URL" node scripts/boss-state-store-maintenance.mjs restore-postgres-backup --input data/boss-state.json --dry-run
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
npm run stress:remote-control:ci
npm run stress:remote-control -- --chain-tasks=120 --runtime-tasks=360 --runtime-concurrency=36 --timeout-ms=60000 --report-json=/tmp/boss-remote-control-stress.json

服务器:

"$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