# 2026-05-22 工作日志 ## 刘新玉 - 反馈调度链路优化 ### AI 归纳质量修复 - **DeepSeek 返回空根因**:`max_tokens: 256` 被 v4-pro 推理(reasoning)全部消耗,实际输出 token=0。修复:`max_tokens` 改为 `1024` - **空描述回退**:在 `ai_summarize_feedback.py` 的 `generate_descriptions()` 中新增 `generate_fallback_description()`,AI 返回空时回退到关键词规则生成(import `sync_feishu_feedback` 的 `extract_location_elements` + `generate_problem_description`) - **修复后效果**:4 个簇全部 AI 生成,质量对比规则版提升显著(见下方对照表) ### 2026-05-21 数据修复后的效果对照 | 簇 | 规则版(10:00 群聊) | AI 版(修复后) | |----|---------------------|----------------| | #1 (27条) | "在关卡4-4,组件数据丢失" | "U13-4的听力选择题型缺少重点句配置" | | #2 (9条) | "媒体文件: a8c55e4a3670.png" | "项目中音频文件se_Spaceship_TV_Food存在ogg和mp3格式重名" | | #3 (4条) | "如果一定要删除一个的话" | "游戏音效存在ogg和mp3两个文件,实际播放调用mp3" | | #4 (2条) | "图片 (1/1)" | "无明确问题" | ### 新调度流程(明天 5/23 生效) ``` 10:00 → sync(步骤1-6) + 保存 context.json + 生成占位符文档 ❌不分发 10:05 → DeepSeek 归纳 → 回写文档 → 📨分发到小葵小葵群 ``` ### "今日问题拆解"逻辑梳理 刘新玉查看了文档效果,分析了三个关键生成逻辑: 1. **聚类 (sort_threads)**:Union-Find 算法,直接引用+推断引用。当前问题:簇#1 27条消息多个不同话题被合并 2. **结论提取 (extract_conclusion)**:关键词匹配("已修复"→已修复,"设计如此"→非问题等)。当前问题:簇#1 多个子问题被一个结论覆盖 3. **发言人标记**:🚩 标记首条消息发送者,✅ 标记末条消息发送者。多子问题长对话时标记不准 ### 已知待优化问题 1. 簇 #1 话题混杂(U13知识点 + 音频跟读 + Spine bug) 2. 簇 #2 和 #3 本质是同一问题(ogg/mp3重名),被拆成两个簇 3. 结论提取用关键词导致"设计如此"覆盖了不同子问题的结论 4. 刘新玉尚未给出具体优化方向 ### 修改的文件 - `/root/.openclaw/workspace-xiaokui/scripts/ai_summarize_feedback.py` — max_tokens 256→1024,新增 generate_fallback_description,import sync_feishu_feedback 用于回退 - `/root/.openclaw/workspace-xiaokui/scripts/sync_feishu_feedback_wrapper.sh` — 10:00 任务改为 --ai-placeholders --skip-dispatch - `/root/.openclaw/workspace-xiaokui/skills/feishu-feedback-sync/scripts/sync_feishu_feedback.py` — --apply-ai 回写成功后新增 dispatch_summary_to_chat 分发 # 2026-05-22 工作日志 ## 刘新玉 - 反馈调度链路优化 ### AI 归纳质量修复 - **DeepSeek 返回空根因**:`max_tokens: 256` 被 v4-pro 推理(reasoning)全部消耗,实际输出 token=0。修复:`max_tokens` 改为 `1024` - **空描述回退**:在 `ai_summarize_feedback.py` 的 `generate_descriptions()` 中新增 `generate_fallback_description()`,AI 返回空时回退到关键词规则生成(import `sync_feishu_feedback` 的 `extract_location_elements` + `generate_problem_description`) - **修复后效果**:4 个簇全部 AI 生成,质量对比规则版提升显著(见下方对照表) ### 2026-05-21 数据修复后的效果对照 | 簇 | 规则版(10:00 群聊) | AI 版(修复后) | |----|---------------------|----------------| | #1 (27条) | "在关卡4-4,组件数据丢失" | "U13-4的听力选择题型缺少重点句配置" | | #2 (9条) | "媒体文件: a8c55e4a3670.png" | "项目中音频文件se_Spaceship_TV_Food存在ogg和mp3格式重名" | | #3 (4条) | "如果一定要删除一个的话" | "游戏音效存在ogg和mp3两个文件,实际播放调用mp3" | | #4 (2条) | "图片 (1/1)" | "无明确问题" | ### 新调度流程(明天 5/23 生效) ``` 10:00 → sync(步骤1-6) + 保存 context.json + 生成占位符文档 ❌不分发 10:05 → DeepSeek 归纳 → 回写文档 → 📨分发到小葵小葵群 ``` ### "今日问题拆解"逻辑梳理 刘新玉查看了文档效果,分析了三个关键生成逻辑: 1. **聚类 (sort_threads)**:Union-Find 算法,直接引用+推断引用。当前问题:簇#1 27条消息多个不同话题被合并 2. **结论提取 (extract_conclusion)**:关键词匹配("已修复"→已修复,"设计如此"→非问题等)。当前问题:簇#1 多个子问题被一个结论覆盖 3. **发言人标记**:🚩 标记首条消息发送者,✅ 标记末条消息发送者。多子问题长对话时标记不准 ### 已知待优化问题 1. 簇 #1 话题混杂(U13知识点 + 音频跟读 + Spine bug) 2. 簇 #2 和 #3 本质是同一问题(ogg/mp3重名),被拆成两个簇 3. 结论提取用关键词导致"设计如此"覆盖了不同子问题的结论 4. 刘新玉尚未给出具体优化方向 ### 修改的文件 - `/root/.openclaw/workspace-xiaokui/scripts/ai_summarize_feedback.py` — max_tokens 256→1024,新增 generate_fallback_description,import sync_feishu_feedback 用于回退 - `/root/.openclaw/workspace-xiaokui/scripts/sync_feishu_feedback_wrapper.sh` — 10:00 任务改为 --ai-placeholders --skip-dispatch - `/root/.openclaw/workspace-xiaokui/skills/feishu-feedback-sync/scripts/sync_feishu_feedback.py` — --apply-ai 回写成功后新增 dispatch_summary_to_chat 分发 ## 刘新玉 - 聚类/结论/发言人三项优化(5/22 上午) ### 聚类优化 - **内容相似度校验**:`infer_missing_references` 策略2(同发送者)和策略3(最近不同发送者)加入 `content_similarity()` 校验,低于 `SIMILARITY_FLOOR=0.08` 不建立推断引用 - **超大簇拆分**:新增 `split_oversized_clusters()`,对超过 `MAX_CLUSTER_MSGS=15` 条的簇按相邻消息内容相似度找边界拆分 - **相似度算法**:中文2字以上词 + 英文3字以上词的 Jaccard 系数,过滤停用词(收到/好的/明白等) - **拆分层数限制**:最多拆3次,每段至少3条消息,以 sender 切换 + 相似度 < 0.05 为边界 ### 结论提取优化 - `extract_conclusion` 对 >8 条消息的簇改为聚焦后 30% 消息(至少3条),避免前面无关结论污染 ### 发言人标记优化 - `summarize_cluster` 新增 `is_topic_initiator()` 检测函数,识别话题切换点并用 📌 标记多话题发起者 - 判定逻辑:非首发言人、非简单回复(屏蔽"好的/收到/OK"等)、发送者切换、含问题特征关键词 ### 2026-05-21 回归验证结果 | 指标 | 优化前 | 优化后 | |------|--------|--------| | 簇数 | 4 | 7 | | 最大簇 | 27条 | 12条 | | ogg/mp3 问题 | 拆成2个簇 | 合并为1个簇 ✅ | | Spine bug | 混在U13里丢失 | 独立为簇 #7 ✅ | | U13知识点 | 和音频/Spline混 | 独立为簇 #2 + #4 ✅ | ### 新增常量/函数 - `SIMILARITY_FLOOR = 0.08`、`MAX_CLUSTER_MSGS = 15` - `content_similarity(text1, text2)`、`split_oversized_clusters(clusters_dict)`、`is_topic_initiator(prev_name, name, text)` - 修改:`infer_missing_references()`、`extract_conclusion()`、`summarize_cluster()`、`sort_threads()` ## 刘新玉 - 分发文档链接修复(5/22 11:20) ### 问题 分发到小葵小葵群的文档链接硬编码为总文档 `RaL6whoYMijyYHkSlWrc7OLLnBy`,而非当天子文档 ### 修复 - `dispatch_summary_to_chat()` 新增 `doc_url` 参数 - `--apply-ai` 流程:从 `list_child_nodes()` 返回的 `nodes[title]["node_token"]` 构造链接 - `main()` 分发循环:同上,对每个 day 查 `list_child_nodes()` 获取对应 node_token - 链接格式:`https://makee-interactive.feishu.cn/wiki/{node_token}` ## 刘新玉 - AI 描述人名脱敏(5/22 11:30) ### 问题 问题描述中包含员工姓名"江涛" ### 修复(两层防护) 1. **System Prompt** 新增规则6:严禁出现员工姓名,用"某角色/某员工"替代 2. **`strip_names(description, cluster_data)` 后处理**: - 步骤1:从 cluster 提取发送者姓名,精确替换 - 步骤2:姓氏 + 1个中文字符模式匹配,排除内容词白名单(文件/资源/游戏/动画/设计等50+词) - 替换为"相关人员" ### 修复效果(簇 #7) | 修复前 | 修复后 | |--------|--------| | "角色江涛的spine动画中,眼睛设计应为睁开但实际显示为闭眼。" | "Spine动画中角色眼睛呈现闭眼状态,与设计不符。" | ## 刘新玉 - 反馈流程完整概览(5/22 12:00) ### 全链路三层架构 ``` 采集层 → 每5分钟(飞书群同步) / 每分钟(微信群导出+P0检测) 汇总层 → 每天 10:00(飞书) 10:02(微信) 聚类+归纳+写入知识库 AI层 → 每天 10:05(飞书) 10:07(微信) DeepSeek生成描述+回写+分发群聊 ``` ### 时间线 | 时间 | 飞书 | 微信 | |------|------|------| | 10:00 | sync_feishu_feedback (占位符,不分发) | — | | 10:02 | — | sync_wechat_feedback (占位符,不分发) | | 10:05 | ai_summarize_feedback (回写+分发) | — | | 10:07 | — | ai_summarize_feedback --channel wechat (回写+分发) | ## 刘新玉 - 微信反馈同步系统搭建(5/22 下午) ### 背景 刘新玉要求微信用户反馈流程与飞书一致(收集→整理→归纳→分发),之前微信只有 MySQL 入库和每分钟同步到表格。 ### 新增文件 - `scripts/sync_wechat_feedback.py` — 微信同步脚本,复用飞书所有逻辑(聚类/优先级/归纳/分发),仅替换数据源和文档目标 - `scripts/sync_wechat_feedback_wrapper.sh` — crontab wrapper ### 改动文件 - `skills/feishu-feedback-sync/scripts/sync_feishu_feedback.py` — `update_summary_doc_as_children()` 新增 `title_prefix` 参数,支持 "微信-" 前缀 - `scripts/ai_summarize_feedback.py` — 新增 `--channel wechat` 参数,支持微信专属上下文路径和回写脚本 ### 微信数据映射 ``` wechat_group_message → sync_wechat_feedback.fetch_wechat_data() → 统一元组格式 svr_msg_id → message_id (r[0]) sender_name → sender_name (r[1]) msg_type → msg_type (r[2]) content → content (r[3]) media_url → media_url (r[4]) refer_msg_svrid → quote_message_id (r[5]) msg_time → msg_time (r[6]) msg_timestamp → msg_timestamp (r[7]) ``` ### 知识库结构 | 文档 | node_token | 父文档 | 用途 | |------|-----------|--------|------| | 飞书问题反馈 | FOxgwkVtLiTl3ZkrkIXcT8T2nJg | SB3dwaSshie7ifklKlLc2GswnqX | 飞书原始数据 | | 微信问题反馈 | R4HRwNU42iwH1Hk3OMCcB6i7n1u | SB3dwa... | 微信原始数据 | | 飞书用户反馈问题汇总 | RaL6whoYMijyYHkSlWrc7OLLnBy | SB3dwa... | 飞书每日归纳 | | 微信用户反馈问题汇总 | XhtGwjitFizzCNkw8Xzc2IXsnuf | SB3dwa... | 微信每日归纳 | ### 飞书表格 | 表格 | sheet token | 用途 | |------|-------------|------| | 内容测试问题反馈 | AHtnsehwShUVyDtjasSciIvgn7b | 飞书导出 | | 用户救火群 | RUXfsytPzhJO5kt2uwCcvdIgnLg | 微信导出 | ### WeChat 2026-05-21 测试结果 - 62 条消息 → 28 个初始簇 → 10 个有效簇(≥2条) - P0: 3 个(阅读问题、发音问题)— 自动判定正常 - AI 归纳 dry-run 通过,占位符替换逻辑正确 ### 待确认 - 微信 crontab 条目是否已添加 ✅ 全部就位 - 微信父文档 `XhtGwjitFizzCNkw8Xzc2IXsnuf` 下子文档创建权限 ✅ 已验证 - 飞书总文档名称是否需要更新为 "飞书用户反馈问题汇总"(当前显示为 "用户反馈问题汇总")