From 519ecb56eb7069861cc2618b7089e60322ad8830 Mon Sep 17 00:00:00 2001 From: kris Date: Fri, 3 Apr 2026 00:26:44 +0800 Subject: [PATCH] docs: record execution foundation rollout --- README.md | 4 ++++ .../api_and_service_inventory_cn.md | 21 +++++++++++++++++++ .../current_runtime_and_deploy_status_cn.md | 4 ++++ .../tasks/[taskId]/complete/route.ts | 5 ++++- 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 37866f3..d7d3e76 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ - `src/app`:当前 Web 页面和 API 路由 - `src/components`:共享 UI 和交互组件 - `src/lib`:文件型状态模型和聚合投影视图 +- `src/lib/execution`:当前已落地的执行底座抽象层,包含 `ExecutionBackend / PromptAssembler / PermissionPolicy / RemoteRuntimeAdapter / OrchestrationBackend` 默认实现 - `local-agent`:本地设备端心跳 + thread-context 上报服务 - `deployment`:`Caddy`、`systemd`、`launchd` 配置 - `scripts`:本地启动、安装、远端部署脚本 @@ -55,6 +56,8 @@ - `POST http://127.0.0.1:3000/api/auth/logout` 正常,退出后访问受保护 `/api/v1/*` 会返回 `401` - `GET http://127.0.0.1:3000/api/v1/user/ota/package` 正常,当前会返回最新 APK 包 - 当前这台开发机的 `launchd` 常驻 `local-agent` 已恢复:`GET http://127.0.0.1:4317/health` 现在可在数十毫秒内返回,且在手动 heartbeat 执行期间仍能正常回包 +- 当前 Boss 已新增 `src/lib/execution/` 执行底座抽象层;当前生产主链仍然沿用 `local-agent -> codex exec resume`,只是执行责任已开始通过 `ExecutionBackend / PromptAssembler / PermissionPolicy / RemoteRuntimeAdapter / OrchestrationBackend` 默认实现收束 +- 当前 `claw-code` 与 `oh-my-codex` 仍未正式接入生产执行链;当前状态是 contract-ready,可在后续通过 adapter 方式接入 - `GET http://127.0.0.1:4317/api/v1/skills` 正常,已返回本机扫描到的 Codex Skill - `POST http://127.0.0.1:4317/api/v1/heartbeat` 正常,且会顺带触发 `thread-context` 上报 - `launchd` 已加载:`~/Library/LaunchAgents/com.hyzq.boss.local-agent.plist` @@ -208,6 +211,7 @@ device-agent 当前职责: - 对普通单线程会话,认领到的 `conversation_reply` 任务会直接恢复到目标 Codex 线程,并把线程原始回复回写到对应聊天窗口 - 对群聊线程分发任务,认领到的 `dispatch_execution` 任务会把原始线程结果和主 Agent 汇总一起回写到群聊消息账本 - `local-agent` 对 `conversation_reply / dispatch_execution` 当前会优先使用 `codex exec resume `,只有缺失真实线程引用时才退回 `--ephemeral` +- `local-agent` 当前的任务完成回写已通过 `RemoteRuntimeAdapter` 标准化,`conversation_reply / dispatch_execution` 的完成结果都会先归一到统一远程执行结果结构,再进入主 Agent 完成路由 - `local-agent` 当前会先启动本地 `4317` 健康监听,再异步执行首次 heartbeat 和 task poll,避免控制面短暂阻塞时本地健康检查一起挂死 - Codex 项目/线程扫描当前已搬到 worker 线程执行,避免 `.codex/logs_1.sqlite` 和 `state_5.sqlite` 的同步扫描阻塞主线程 HTTP 响应 - 如果某个历史群聊里已经没有真实线程成员,当前不会再表现成“发了没反应”,而是会在群里追加一条 `system_notice`,提示用户先重新整理群成员 diff --git a/docs/architecture/api_and_service_inventory_cn.md b/docs/architecture/api_and_service_inventory_cn.md index 39475fd..9c1d83b 100644 --- a/docs/architecture/api_and_service_inventory_cn.md +++ b/docs/architecture/api_and_service_inventory_cn.md @@ -14,6 +14,7 @@ - 状态文件:通过 `BOSS_STATE_FILE` 显式指向 `data/boss-state.json` - 当前登录态:`boss_session` HttpOnly Cookie - 当前原生恢复态:`restore token + SharedPreferences` +- 当前执行底座:`src/lib/execution/`,已包含 `ExecutionBackend / PromptAssembler / PermissionPolicy / RemoteRuntimeAdapter / OrchestrationBackend` 默认实现 ### 1.2 boss-android-native @@ -89,6 +90,7 @@ - 当前常驻方式:`launchd` - 当前额外职责:向云端上报 `thread-context` - 当前新增职责:递归扫描本机 `~/.codex/skills` 并同步到设备 Skill 接口 +- 当前完成回写:`conversation_reply / dispatch_execution` 会先标准化成统一远程执行结果,再调用 `/api/v1/master-agent/tasks/[taskId]/complete` ### 1.4 Caddy @@ -158,6 +160,25 @@ - 用途:读取当前完整状态 - 注意:这是内部 MVP 调试接口,会直接返回整个 `BossState` +### 3.1.1 执行底座抽象层 + +- 目录:`src/lib/execution/` +- 当前默认实现: + - `types.ts` + - `execution-backend.ts` + - `orchestration-backend.ts` + - `prompt-assembler.ts` + - `memory-resolver.ts` + - `permission-policy.ts` + - `tool-registry.ts` + - `backend-selector.ts` + - `remote-runtime-adapter.ts` + - `backends/*` +- 当前状态: + - 已在生产代码中被 `boss-master-agent.ts`、`local-agent/server.mjs` 和 `master-agent task complete route` 使用 + - 当前仍服务 Boss 自身执行链 + - 当前未直接接入 `claw-code` 或 `oh-my-codex` + ### 3.2 认证相关 #### `POST /api/auth/send-code` diff --git a/docs/architecture/current_runtime_and_deploy_status_cn.md b/docs/architecture/current_runtime_and_deploy_status_cn.md index aefbf7c..1a2349d 100644 --- a/docs/architecture/current_runtime_and_deploy_status_cn.md +++ b/docs/architecture/current_runtime_and_deploy_status_cn.md @@ -26,6 +26,9 @@ - 本地 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` +- 当前执行底座抽象层已落地在 `src/lib/execution/`,并已补齐 `ExecutionBackend / PromptAssembler / PermissionPolicy / RemoteRuntimeAdapter / OrchestrationBackend` 默认实现 +- 当前生产主链仍然沿用 `local-agent -> codex exec resume -> /api/v1/master-agent/tasks/[taskId]/complete`,执行底座重构以“先抽象、不改行为”为准 +- 当前 `claw-code` 与 `oh-my-codex` 还未正式接入生产链,只是已经具备 adapter-ready 的 contract 基础 本地已知运行方式: @@ -185,6 +188,7 @@ cd /Users/kris/code/boss - 当前设备导入决议已经升级成真正通过 `local-agent -> codex exec -> /complete` 回写的主 Agent 决议链;Web 和 Android 前台都会在 `pending_resolution` 阶段显示审核任务状态,并在任务完成后自动刷新出正式导入建议 - 当前 `local-agent` 已改成先启动本地 `4317` 健康监听,再异步跑首次 heartbeat 和 task poll,避免控制面短时阻塞时本地健康探针不可用 - Codex 项目/线程扫描当前已搬到 worker 线程执行,避免 `.codex/logs_1.sqlite` 和 `state_5.sqlite` 的同步扫描阻塞主线程健康接口 +- 当前 `local-agent` 的任务完成回写已通过 `RemoteRuntimeAdapter` 标准化,`conversation_reply / dispatch_execution` 的完成载荷会先做统一归一化,再进入主 Agent 完成路由 - 原生 Android 当前对 `master-agent` 聊天不再依赖长时间同步等待;发送后会先显示“主 Agent 思考中”,右上角改成微信式 `...` 菜单,菜单项包含 `模型 / 推理强度 / 会话信息 / 刷新` ## 2. 服务器状态 diff --git a/src/app/api/v1/master-agent/tasks/[taskId]/complete/route.ts b/src/app/api/v1/master-agent/tasks/[taskId]/complete/route.ts index 36549de..0322321 100644 --- a/src/app/api/v1/master-agent/tasks/[taskId]/complete/route.ts +++ b/src/app/api/v1/master-agent/tasks/[taskId]/complete/route.ts @@ -31,7 +31,10 @@ export async function POST( const { taskId } = await context.params; try { - const normalized = normalizeRemoteExecutionResult(body); + const normalized = normalizeRemoteExecutionResult({ + ...body, + status: body.status === "failed" ? "failed" : "completed", + }); const task = await completeMasterAgentTask({ taskId, deviceId: body.deviceId.trim(),