feat(h5): web 联网能力、实时查询路由与 session Finish 对齐

- 新增 web 能力并挂载 platform/web(web_search/fetch_url)
- 实时查询强制 web skill,router fallback 与 await session Finish
- Session Broker 覆盖率/指标、stream replay 与相关单测/E2E 脚本

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-07-06 16:06:26 +08:00
parent 08feae8bef
commit 14a00774d9
41 changed files with 3501 additions and 126 deletions
+39
View File
@@ -63,6 +63,45 @@ pnpm dev:all
| `PLAZA_APP_DIR` | ../memind_plaza | Plaza 专用脚本的源码路径(`pnpm dev:plaza` / `pnpm start:plaza` / `pnpm dev:all` |
| `MEMIND_SESSION_BROKER_ENABLED` | `0`(未设置) | Session Broker 灰度开关;Patch 2+ 本地验证时可设 `1`,见 [H5 Session 架构](./h5-session-architecture-20260706.md) |
### H5 Session 架构本地全量联调(`0706-bug干净` 分支)
**本机 `.env`**(勿提交 Git)打开下列开关后重启 `pnpm dev`
```bash
MEMIND_SESSION_BROKER_ENABLED=1
MEMIND_ROUTER_NORMALIZED_DECISION=1
MEMIND_SSE_EVENT_TAXONOMY=1
MEMIND_RUN_STREAM_REPLAY=1
MEMIND_H5_HTML_FINISH_GUARD=1
```
| 开关 | 验证点 |
|------|--------|
| `MEMIND_SESSION_BROKER_ENABLED` | Portal 启动日志、`sessionAccess` 路径 |
| `MEMIND_SESSION_BROKER_METRICS` | `[session_broker.*]` structured log(§13.4 |
| `MEMIND_ROUTER_NORMALIZED_DECISION` | gateway 读 `decision.route` / `session_hint``shadow` 仅打 `[router-shadow]` 日志 |
| `MEMIND_SSE_EVENT_TAXONOMY` | SSE payload 多 `taxonomy` 字段 |
| `MEMIND_RUN_STREAM_REPLAY` | run SSE 含 `id:`,断线重连补发 |
| `MEMIND_SESSION_STREAM_REPLAY` | session SSE 持久化 + Last-Event-ID 重连补发(4c |
| `MEMIND_H5_HTML_FINISH_GUARD` | Finish 后假交付检测 / 自动 repair |
启动后应看到类似:
```text
[Portal] H5 session flags: MEMIND_SESSION_BROKER_ENABLED, ...
```
回归:
```bash
npm run verify:h5-session-patches
# 内含:单测、§5.7 session broker coverage、goosed proxy boundary、MindSpace publish guards
```
手工 soak 清单(全量开发完成后执行):[pending-fixes/h5-local-soak-20260706.md](./pending-fixes/h5-local-soak-20260706.md)
关闭某项:对应变量改 `0` 或删除后重启 dev。
Plaza 本地开发说明见 [plaza-local.md](./plaza-local.md)。生产发布、同步与回滚不要在这里处理,统一看 [生产更新发布指南](./release-deploy.md)。
### 本地 `.env` 与 103 生产 `.env` 分离