Files
DevFlow/docs/02-架构设计/专项设计/devflow集成u-claw-可行性研究-2026-09-28.md
T

95 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# devflow → u-relay → u-claw 集成可行性研究
> 2026-09-28 · 状态:可行性已定,待 devflow/u-claw 两侧细勘察补全
> 需求原话:「考虑 devflow -> u-relay -> u-claw, 让 devflow 集成 u-claw 能力」
## 一、定性结论
**不是从零集成,是复用已生产验证的通路,唯一工作面在 devflow 侧接入。**
u-claw 通用 WS 渠道已于 2026-08-29 随 u-ppt 试点上线(dev-ops 容器,心跳正常),u-relay 零改动,协议有现成 TS 参考实现。
## 二、知识脉络时间线(防断档,按此追溯)
| 时间 | 事件 | 留痕 |
|------|------|------|
| 2026-08-29 01:50 | swarm 试点拍板:u-claw 加通用 WS 渠道 + u-ppt Agent 面板经 u-relay 中继,点对点配对不实现 G1 | decisions.jsonl `2026-08-29 01:50` |
| 2026-08-29 02:25 | u-claw b401480 push + 发版:WS 渠道随 start 部署,`cfg.WS==nil` 跳过零行为变化;dev-ops 容器 20260829-0206 心跳正常 | decisions.jsonl `02:25` |
| 2026-08-29 02:47 | Node 探针模拟 miniapp 身份 E2E:hello_ack→agent_request→progress→agent_result 全通,2s 双端互证 | decisions.jsonl `02:47`;u-relay `scripts/e2e-miniapp.mjs` |
| 2026-08-29 起 | u-claw WS 渠道持续演进:368beba 初版(device 身份+独立 ws 子命令)→490280e 热重建僵尸连接→08e3f02 空闲超时分级判死 | u-claw git log |
| 2026-09-28 | 并行会话完成 u-family×devflow 四仓组合分析,落 KMS(基线与本文档一致) | `E:/wk-lab/docs/kms/u-family-devflow-组合分析.md` |
| 2026-09-28 | 用户提出 devflow 接入同一链路;本次三仓勘察(u-relay/devflow 已完,u-claw 收尾中) | 本文档 |
## 三、链路事实(勘察确认,非推断)
### 链路拓扑
```
devflow(WS客户端,Miniapp角色) ──wss──> u-relay(9180,零改动) <──出站WS── u-claw WS渠道(Device角色,已上线)
wss://u-relay.1216.top/ws/miniapp device_id 配对 /ws/device
```
### 协议(三层,均有实现背书)
- 传输层(relay):Hello{kind,device_id,token} 10s 握手超时 → hello_ack;帧=BroadcastMessage{device_id,kind,source,from,payload,ts};方向路由 Event→Miniapp / Command→Device;帧上限 1MiB;miniapp ping relay 本地回 pong
- 业务层(u-claw↔客户端,relay 纯透传):`agent_request{request_id,prompt}` 上行 → `agent_progress{request_id,text}` / `agent_result{request_id,text}` 下行
- 心跳:ping/pong 保活;u-claw 侧有空闲超时分级判死 + 热重建防僵尸连接
### 现成参考实现(最大捷径)
- **u-ppt `src/core/relay.ts`(223 行,TS)**:`RelayClient` 类,握手看门狗/hello_ack/progress|result 分发/`agent_request` 帧,devflow 前端同为 TS 可直接移植
- u-relay `scripts/e2e-miniapp.mjs`:探针脚本,协议逐字段参考
- u-claw `368beba` 起的 WS 渠道源码
### 部署拓扑(KMS 服务索引)
- u-relay:suke-dev systemd `u-relay.service`,9180,nginx wss 终止,musl 单二进制 ~3.6MB
- u-claw:多实例容器化(5+ bot),dev-ops 容器已含 WS 渠道版本;u-switch 模型路由公网口 `switch.1216.top`(devflow 若只要模型调用可直连,不必经 u-claw)
## 四、风险与决策点
1. **鉴权债**:relay 全局共享 token(`devflow-relay-default-token`,per-device token 留 Phase3 未做),持 token 者可冒充任意 device_id。自用可接受;devflow 与 miniapp 共用 relay 时建议补
2. **能力边界(勘察中)**:u-claw WS 渠道背后是完整 agent(会话/技能/意志卡)还是简化执行,决定「集成 u-claw 能力」含金量 —— 待 u-claw 侧勘察
3. **流式粒度**:progress/result 块级聚合非逐 token,aichat 首版按块级渲染
4. **多轮上下文**:request_id 单次请求语义,跨轮会话锚点在 u-claw 侧如何维持 —— 待勘察
5. **离线即丢**:relay 无离线缓存,devflow 需自行处理 u-claw 掉线(重试/超时)
## 五、devflow 侧接入方案(devflow 勘察已回,2026-09-28)
### 关键认知:角色方向
devflow 现有 df-tunnel 是 **Device 角色**(连 `/ws/device`,服务 miniapp 反控通路)。接 u-claw 须**另开一条 Miniapp 角色连接**(连 `/ws/miniapp`,仿 u-ppt `relay.ts`),用**独立 device_id** 与 u-claw 配对(先例:`u-ppt-dev-01`),与现有 miniapp 通路隔离,两路并存互不干扰(relay 同 device_id 支持多连接,但建议配对独立)。
### 接入形态三选(按成本升序,可组合)
1. **AI 工具形态(推荐首发)**:u-claw 包装为 aichat 工具——`declare_tool!` 注册 `ask_uclaw(prompt)`,devflow 的 AI 对话中可直接委托 u-claw 处理(用它侧的 agent/技能/Claude Code),progress 流式回流工具卡片。改动面:`src-tauri/src/commands/ai/tools/` 加一个 register 文件 + `tool_registry.rs:508` 挂载。零侵入 agentic loop。
2. **消息渠道形态**:出站仿 tunnel-subscriber 再订阅 `ai_event_bus`(event_bus.rs:138),入站仿 remote_bridge 写 payload 路由器(`remote_bridge.rs:145` 加 cmd 臂)。适合「aichat 会话直接由 u-claw 代言」,改动大于形态 1。
3. **反向 MCP**:devflow 已内嵌 MCP HTTP server(df-mcp,20 工具,`src-tauri/src/mcp.rs:45`),u-claw 可反向消费 devflow 能力——与形态 1/2 互补,不冲突。
### 传输层与配置
- WS 客户端:Rust 层新写轻量 client(TunnelClient trait 可并存新实现,`df-tunnel/src/tunnel.rs:61`)或前端 TS 移植 relay.ts;推荐 Rust 层(与工具形态同侧)
- 配置落位:地址/独立 device_id → `app_settings` KV(照抄 `relay_url` 模式,`lib.rs:194-217`);token → OS keyring(照抄 provider api_key 模式);默认关,对齐 u-claw `cfg.WS==nil` 零行为变化模式
- 注意:现有 token 硬编码在 `lib.rs:219`(`devflow-relay-default-token`),本项实施时顺带配置化
## 六、待补槽位(勘察代理回报后增量更新)
- [x] ~~devflow 侧~~ ✅ 2026-09-28 已填(第五节;另有:`build_provider`/`AiToolRegistry`/`EventBus`/`SettingsRepo`/keyring 扩展点清单已勘察,见会话或按第七节基线 grep 复核)
- [x] ~~u-claw 能力边界~~ ✅ KMS 组合分析已明:**u-claw = 常驻 `claude -p`(stream-json)的多渠道 Agent 网关**,WS 是继邮件/飞书后第三渠道(`wsch.go`),每渠道一条 chain=一个常驻 claude 子进程(prompt cache 热)——即 WS 渠道背后是**完整 Claude Code 能力**(技能/工具全量),「集成 u-claw 能力」含金量高
- [ ] u-claw 侧收尾(勘察代理进行中):WS 渠道的多轮会话锚定细节(request_id↔chain 映射、会话持久化边界)
## 关联阅读
- `E:/wk-lab/docs/kms/u-family-devflow-组合分析.md`(四仓画像+快照基线,本文档上游)
- `~/.claude/kms/服务索引-全机器.md`(部署拓扑)
- `~/.u-claw/willcard/decisions.jsonl`(8-29 试点留痕)
## 七、增量基线(下次免重探索,只补漂移)
```
基线 HEAD(2026-09-28):
devflow 4840f7e u-relay 9a2d376 u-claw d8dc003 u-ppt 4e68773
漂移检查命令(各仓):
git -C <repo> log --oneline <基线HEAD>..HEAD
关键漂移点:u-claw WS 渠道演进(ws 相关提交)、u-relay 角色鉴权(per-device token 是否落地)、devflow df-tunnel 变更
```