新增: 小程序配置持久化与心跳闭环 + 文档同步

小程序(mobile client)三项改进:

一、配置持久化(分发前置)
- 运行时配置(relay 地址/设备 ID/token/心跳间隔)接入 storage
- 懒加载:首次读取从 storage 恢复,合并默认值兼容旧字段
- 新增重置函数:清除 storage + 回到默认占位值
- 读写失败降级不崩溃

二、心跳 pong 闭环(移动网络可靠性)
- 中继服务识别小程序心跳 ping,直接回 pong(不经桌面端透传)
- 小程序收到 pong 更新入站时间,半连接看门狗据此判活
- 治移动网络 TCP 半连接挂死(socket 仍开但无响应)

三、文档同步关闭已完成项
- 条件表达式引擎:求值器+执行器+前端编辑入口+翻译均已落地
- 流式状态按会话隔离:accessor 委派 per-conv Map 已落地
- 灵感录入增强:表单已含来源/标签/优先级字段
This commit is contained in:
2026-06-28 23:55:51 +08:00
parent cc3ef5bc1d
commit cb7e1fce82
6 changed files with 119 additions and 34 deletions

View File

@@ -256,11 +256,11 @@ graph TD
> 继批1-3c 升级后的下一步:灵感来源录入增强 + 自动采集机制。**属新功能范畴**,需独立设计采集规则/触发/去重,下一阶段推进。
- [ ] **F-260621-01 [P2/新功能]** **source 字段录入增强 + 自动采集机制**
1. **source 录入增强**:灵感捕捉模态框加 `source` / `tags` / `priority` 输入(现仅描述),让录入即结构化(来源/标签/优先级)
2. **自动采集机制**:从对话 / 任务 / 代码中自动提炼灵感(降低录入门槛,捕捉随手遗失的灵感)
- [x] **F-260621-01 [P2/新功能]** **source 录入增强已落地**(灵感捕捉模态框已含 source/tags/priority 输入字段,逗号分隔 tags 转 JSON):
1. **source 录入增强**:灵感捕捉模态框`source` / `tags` / `priority` 输入,录入即结构化
2. ⏸️ **自动采集机制**:从对话/任务/代码中自动提炼灵感 —— 需独立设计采集规则/触发/去重,属下一阶段新功能
- **需设计**:采集规则(什么信号算灵感 — 关键词/意图/重复模式)/ 触发时机(对话结束/任务完成/手动触发)/ 去重(相似灵感合并避免洪水)/ 用户确认流(自动采集不污染灵感池,需用户确认入库)
- **依赖**:批1-3c 升级完成(已有 source/tags 字段基础) + 对话历史可读(F-15 archived_segment 状态) + 任务可读
- **依赖**:批1-3c 升级完成(已有 source/tags 字段基础) + 对话历史可读(F-15 archived_segment 状态) + 任务可读
- **关联**:memory [[devflow-idea-module]] / [[aichat-skill-slash-autocomplete]](联想需求,场景相关)
---
@@ -286,8 +286,8 @@ graph TD
**P1(阻塞真机/可靠性·5 项)**:
- [ ] P1-D-260622 [P1🔴·真机分发最高阻断] **token/deviceId 硬编码 + 无配对绑定 + 无 storage 持久化**`config.ts:35-39` 硬编码本机 device_id+token(注释自认「联调期硬编码,后续做配对绑定」),`:52-54` setConfig 仅内存赋值无 `uni.setStorageSync`。真机分发不能用本机硬编码 device_id。修:settings 页输入 + setConfig 持久化 storage + getConfig 读回退 default。— `apps/df-miniapp/src/config.ts`
- [ ] P1-A-260622 [P1🔴·可靠性] **心跳 pong 闭环缺失**`ws.ts:226` `{control_kind:'ping'}`,`relay.rs:355` miniapp 入站全标 `MessageKind::Command` 透传 device,但 ping 无 cmd 字段 → `remote_bridge.rs:143` match 无 ping 分支 → device 收不到有效命令无 pong 回;`useAiChat.ts:440` onControl 仅 console.log 无 pong 处理;`ws.ts:245-257` 重连仅靠 onClose/onError 无心跳超时。移动网络 TCP 半连接高发,device 静默挂死无感知。修:relay 解析 ping 构造 Control 类型 + device 响应 pong + miniapp 维护 lastPongTime 看门狗(3×interval 未收 pong 主动重连)。— `ws.ts` + `relay.rs:handle_inbound_text` + `useAiChat.ts`
- [x] P1-D-260622 [P1] **config 持久化已实现**:`setConfig` 接入 `uni.setStorageSync`,懒加载从 storage 读回退 defaultConfig,新增 `resetConfig` 清除。— `apps/df-miniapp/src/config.ts`
- [x] P1-A-260622 [P1] **心跳 pong 闭环已实现**:relay 识别 `{control_kind:"ping"}` 构造 pong 回 miniapp(不经 device 透传),miniapp `lastInboundAt` 更新看门狗治半连接挂死。— `crates/df-relay/src/relay.rs` + `apps/df-miniapp/src/api/ws.ts` + `apps/df-miniapp/src/composables/useAiChat.ts`
**用户补充核验(2026-06-22 用户详读源码+设计文档,主代逐项核源码判真伪)**: