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
+21 -1
View File
@@ -47,14 +47,34 @@ H5_PUBLIC_BASE_URL=http://127.0.0.1:5173
# 本地开发:Patch 2 接入后可设 1 验证 broker 路径;默认 0 保持 userAuth 直调。
# 103 生产:仅在灰度窗口于服务器 /Users/john/Project/Memind/.env 设置,勿把生产值写入 Git。
# MEMIND_SESSION_BROKER_ENABLED=0
# --- 本地全量联调示例(复制到 .env,勿提交 Git)---
# MEMIND_SESSION_BROKER_ENABLED=1
# MEMIND_ROUTER_NORMALIZED_DECISION=1
# MEMIND_SSE_EVENT_TAXONOMY=1
# MEMIND_RUN_STREAM_REPLAY=1
# MEMIND_SESSION_STREAM_REPLAY=1
# MEMIND_SESSION_BROKER_METRICS=1
# MEMIND_H5_HTML_FINISH_GUARD=1
# 启动后 Portal 日志应出现:[Portal] H5 session flags: ...
# 103 生产 goosed 多实例示例(仅服务器 .env,见 docs/103-runtime-topology.md):
# TKMIND_API_TARGET=https://127.0.0.1:18006
# TKMIND_API_TARGET_1=https://127.0.0.1:18007
# H5 Router normalized decisiondocs/h5-session-architecture-20260706.md Patch 3
# 默认 0gateway 仍读 legacy route;设 1 时 gateway 优先读 classification.decision.route。
# 默认 0/offgateway 仍读 legacy route
# shadow:只打 [router-shadow] 日志,行为不变
# 1/ongateway 优先读 classification.decision.route / session_hint
# MEMIND_ROUTER_NORMALIZED_DECISION=0
# H5 Session stream replaydocs/h5-session-architecture-20260706.md Patch 4c
# 默认 0session SSE 仍纯透传 goosed;设 1 时 Portal 持久化 session 事件并支持 Last-Event-ID 重连补发。
# MEMIND_SESSION_STREAM_REPLAY=0
# H5 Session Broker metricsdocs/h5-session-architecture-20260706.md §13.4
# 默认 0:不打 structured log;设 1 时输出 [session_broker.*] 行
# MEMIND_SESSION_BROKER_METRICS=0
# H5 SSE event taxonomydocs/h5-session-architecture-20260706.md Patch 4
# 默认 0:不改变 SSE wire format;设 1 时在 session/run SSE payload 附加 taxonomy 字段(shadow)。
# MEMIND_SSE_EVENT_TAXONOMY=0