95 lines
6.9 KiB
Markdown
95 lines
6.9 KiB
Markdown
# 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 变更
|
||
```
|