From 1d8e4573bed69ee2c3bef6b932255ca4d4a1465a Mon Sep 17 00:00:00 2001 From: xiaoban Date: Sat, 30 May 2026 08:00:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AF=8F=E6=97=A5=E6=80=BB=E7=BB=93=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=2020260530?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vala_skill_hashes | 2 + memory/.dreams/events.jsonl | 14 + memory/.dreams/short-term-recall.json | 592 +++++++++++++++--- memory/2026-05-29-1709.md | 78 +++ memory/2026-05-29-1713.md | 33 + memory/2026-05-29.md | 47 +- .../角色id_33123_导出时间_20260529.xlsx | Bin 0 -> 51307 bytes .../角色id_35012_导出时间_20260529.xlsx | Bin 0 -> 55166 bytes skills/douyin-live-analyst/SKILL.md | 41 ++ skills/douyin-live-analyst/data-checklist.md | 80 +++ .../douyin-live-analyst/output-templates.md | 107 ++++ tmp_daily_summary.md | 2 + 12 files changed, 890 insertions(+), 106 deletions(-) create mode 100644 memory/2026-05-29-1709.md create mode 100644 memory/2026-05-29-1713.md create mode 100644 output/角色id_33123_导出时间_20260529.xlsx create mode 100644 output/角色id_35012_导出时间_20260529.xlsx create mode 100644 skills/douyin-live-analyst/SKILL.md create mode 100644 skills/douyin-live-analyst/data-checklist.md create mode 100644 skills/douyin-live-analyst/output-templates.md create mode 100644 tmp_daily_summary.md diff --git a/.vala_skill_hashes b/.vala_skill_hashes index bad9025..f2722d5 100644 --- a/.vala_skill_hashes +++ b/.vala_skill_hashes @@ -10,3 +10,5 @@ study-analysis 33217dc132073ecd47b921800834f6df89494da9e7708fa90f15b3de7742e37f studytime-analysis fefb11a0c2fb7085a47c626ec6b72f8fcafee797dc3340abea09139d31eb7e7b studycourse-analysis 467051001a8a087aa0526f0102593e0b0ed563cb4627f5f660dc718efc29699b user-info 0bb7007cbb9fc7659be1bf64f4f79418fbd25434dc61e8c271103cec82a2a759 +douyin-live-analyst 6459a76cab6e81655ac14691309b4aec816c1e949b0b2e1f8de2e081895403de +export-user-data e9d4d0c28c2af67d700987f67c17f438b69c37501d581b1e4be92c84d65379f7 diff --git a/memory/.dreams/events.jsonl b/memory/.dreams/events.jsonl index 258ea09..17e6510 100644 --- a/memory/.dreams/events.jsonl +++ b/memory/.dreams/events.jsonl @@ -10,3 +10,17 @@ {"type":"memory.recall.recorded","timestamp":"2026-05-28T12:30:30.129Z","query":"订单明细 表结构 数据库 order","resultCount":6,"results":[{"path":"memory/2026-05-28.md","startLine":147,"endLine":179,"score":1},{"path":"memory/2026-05-28.md","startLine":313,"endLine":345,"score":1},{"path":"memory/2026-05-24.md","startLine":46,"endLine":71,"score":1},{"path":"memory/2026-05-24.md","startLine":85,"endLine":110,"score":1},{"path":"memory/2026-05-28.md","startLine":122,"endLine":152,"score":1},{"path":"memory/2026-05-28.md","startLine":288,"endLine":318,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-05-28T20:51:03.908Z","query":"陈逸鸫 对话 任务 查询","resultCount":10,"results":[{"path":"memory/2026-05-13.md","startLine":1,"endLine":16,"score":1},{"path":"memory/2026-05-28.md","startLine":504,"endLine":536,"score":1},{"path":"memory/2026-05-28.md","startLine":337,"endLine":366,"score":1},{"path":"memory/2026-05-28.md","startLine":74,"endLine":100,"score":1},{"path":"memory/2026-05-28.md","startLine":240,"endLine":266,"score":1},{"path":"memory/2026-05-28.md","startLine":432,"endLine":458,"score":1},{"path":"memory/2026-05-28.md","startLine":530,"endLine":557,"score":1},{"path":"memory/2026-05-28.md","startLine":94,"endLine":127,"score":1},{"path":"memory/2026-05-28.md","startLine":260,"endLine":293,"score":1},{"path":"memory/2026-05-28.md","startLine":452,"endLine":485,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-05-28T20:57:42.055Z","query":"xhs-tech-dashboard repo git clone url","resultCount":5,"results":[{"path":"memory/2026-05-28.md","startLine":94,"endLine":127,"score":1},{"path":"memory/2026-05-28.md","startLine":260,"endLine":293,"score":1},{"path":"memory/2026-05-28.md","startLine":452,"endLine":485,"score":1},{"path":"memory/2026-05-24.md","startLine":122,"endLine":132,"score":1},{"path":"memory/2026-05-28.md","startLine":122,"endLine":152,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T02:37:24.804Z","query":"小溪 bot 行课查询","resultCount":4,"results":[{"path":"memory/2026-05-28.md","startLine":313,"endLine":345,"score":1},{"path":"memory/2026-05-28.md","startLine":504,"endLine":536,"score":1},{"path":"memory/2026-05-28.md","startLine":147,"endLine":179,"score":1},{"path":"memory/2026-05-28.md","startLine":337,"endLine":366,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T02:53:39.286Z","query":"小红书数据需求群 chat_id 行课群","resultCount":6,"results":[{"path":"memory/2026-05-28.md","startLine":74,"endLine":100,"score":1},{"path":"memory/2026-05-28.md","startLine":240,"endLine":266,"score":1},{"path":"memory/2026-05-28.md","startLine":432,"endLine":458,"score":1},{"path":"memory/2026-05-28.md","startLine":94,"endLine":127,"score":1},{"path":"memory/2026-05-28.md","startLine":260,"endLine":293,"score":1},{"path":"memory/2026-05-28.md","startLine":452,"endLine":485,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T02:53:52.924Z","query":"oc_1b01b6f076 小红书 行课群 小溪","resultCount":6,"results":[{"path":"memory/2026-05-28.md","startLine":223,"endLine":245,"score":1},{"path":"memory/2026-05-28.md","startLine":54,"endLine":77,"score":1},{"path":"memory/2026-05-28.md","startLine":412,"endLine":435,"score":1},{"path":"memory/2026-05-28.md","startLine":199,"endLine":227,"score":1},{"path":"memory/2026-05-28.md","startLine":313,"endLine":345,"score":1},{"path":"memory/2026-05-28.md","startLine":504,"endLine":536,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T06:11:40.432Z","query":"订单数据 数据库表 达人 渠道 购买记录","resultCount":6,"results":[{"path":"memory/2026-05-28.md","startLine":551,"endLine":580,"score":1},{"path":"memory/2026-05-28.md","startLine":530,"endLine":557,"score":1},{"path":"memory/2026-05-28.md","startLine":147,"endLine":179,"score":1},{"path":"memory/2026-05-28.md","startLine":480,"endLine":512,"score":1},{"path":"memory/2026-05-28.md","startLine":313,"endLine":345,"score":1},{"path":"memory/2026-05-28.md","startLine":504,"endLine":536,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T06:12:43.076Z","query":"Online MySQL 订单表 order channel 达人 渠道来源","resultCount":4,"results":[{"path":"memory/2026-03-01.md","startLine":1,"endLine":11,"score":1},{"path":"memory/2026-05-24.md","startLine":23,"endLine":52,"score":1},{"path":"memory/2026-05-24.md","startLine":1,"endLine":30,"score":1},{"path":"memory/2026-05-24.md","startLine":46,"endLine":71,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T06:12:52.521Z","query":"3wcle8 销售订单 小龙 order 达人 渠道 promotion_channel","resultCount":4,"results":[{"path":"memory/2026-05-28.md","startLine":530,"endLine":557,"score":1},{"path":"memory/2026-05-28.md","startLine":551,"endLine":580,"score":1},{"path":"memory/2026-05-28.md","startLine":572,"endLine":602,"score":1},{"path":"memory/2026-05-29.md","startLine":1,"endLine":31,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T06:12:52.521Z","query":"飞书多维表格 订单 达人 合作 base 销售数据","resultCount":6,"results":[{"path":"memory/2026-05-24.md","startLine":66,"endLine":92,"score":1},{"path":"memory/2026-05-24.md","startLine":46,"endLine":71,"score":1},{"path":"memory/2026-05-24.md","startLine":85,"endLine":110,"score":1},{"path":"memory/2026-05-28.md","startLine":313,"endLine":345,"score":1},{"path":"memory/2026-05-28.md","startLine":147,"endLine":179,"score":1},{"path":"memory/2026-05-28.md","startLine":480,"endLine":512,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T08:59:55.138Z","query":"Lina先生 达人 博主 合作 渠道","resultCount":3,"results":[{"path":"memory/2026-05-28.md","startLine":551,"endLine":580,"score":1},{"path":"memory/2026-05-28.md","startLine":530,"endLine":557,"score":1},{"path":"memory/2026-05-24.md","startLine":122,"endLine":132,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T09:00:41.709Z","query":"导出行课数据 skill 配置 export user data","resultCount":6,"results":[{"path":"memory/2026-05-28.md","startLine":223,"endLine":245,"score":1},{"path":"memory/2026-05-28.md","startLine":54,"endLine":77,"score":1},{"path":"memory/2026-05-28.md","startLine":412,"endLine":435,"score":1},{"path":"memory/2026-05-28.md","startLine":199,"endLine":227,"score":1},{"path":"memory/2026-05-24.md","startLine":46,"endLine":71,"score":1},{"path":"memory/2026-05-29.md","startLine":1,"endLine":31,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T09:13:46.164Z","query":"行课数据导出 角色id 行课回填 xingke export","resultCount":5,"results":[{"path":"memory/2026-05-28.md","startLine":223,"endLine":245,"score":1},{"path":"memory/2026-05-28.md","startLine":54,"endLine":77,"score":1},{"path":"memory/2026-05-28.md","startLine":412,"endLine":435,"score":1},{"path":"memory/2026-05-28.md","startLine":199,"endLine":227,"score":1},{"path":"memory/2026-05-24.md","startLine":46,"endLine":71,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T10:19:23.675Z","query":"小红书 视频下载 转译 爬虫 skill","resultCount":1,"results":[{"path":"memory/2026-03-01.md","startLine":1,"endLine":11,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T13:15:52.444Z","query":"瓦拉英语 教研团队 课程设计 AI互动 情境学习","resultCount":3,"results":[{"path":"memory/2026-05-29.md","startLine":125,"endLine":149,"score":1},{"path":"memory/2026-05-24.md","startLine":122,"endLine":132,"score":1},{"path":"memory/2026-05-29.md","startLine":88,"endLine":112,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T13:16:08.062Z","query":"瓦拉英语 产品介绍 课程体系 L1 L2 教研 级别 情境 RPG 听说","resultCount":4,"results":[{"path":"memory/2026-05-29.md","startLine":125,"endLine":149,"score":1},{"path":"memory/2026-05-24.md","startLine":122,"endLine":132,"score":1},{"path":"memory/2026-05-28.md","startLine":337,"endLine":366,"score":1},{"path":"memory/2026-05-28.md","startLine":530,"endLine":557,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-05-29T13:17:06.597Z","query":"瓦拉英语 教研团队 课程设计师 创始人 背景 团队规模","resultCount":4,"results":[{"path":"memory/2026-05-29.md","startLine":125,"endLine":149,"score":1},{"path":"memory/2026-05-24.md","startLine":122,"endLine":132,"score":1},{"path":"memory/2026-05-29.md","startLine":69,"endLine":92,"score":1},{"path":"memory/2026-05-29.md","startLine":47,"endLine":77,"score":1}]} diff --git a/memory/.dreams/short-term-recall.json b/memory/.dreams/short-term-recall.json index cdc7f72..332ebb5 100644 --- a/memory/.dreams/short-term-recall.json +++ b/memory/.dreams/short-term-recall.json @@ -1,6 +1,6 @@ { "version": 1, - "updatedAt": "2026-05-28T20:57:42.055Z", + "updatedAt": "2026-05-29T13:17:06.597Z", "entries": { "memory:memory/2026-05-24.md:1:30": { "key": "memory:memory/2026-05-24.md:1:30", @@ -9,22 +9,24 @@ "endLine": 30, "source": "memory", "snippet": "# 2026-05-24 工作日志 ## 新建技能: studytime-analysis [刘庆逊提出] 创建学习时间分析技能,分析角色完课记录的规律。 ### 技能结构 - `skills/studytime-analysis/SKILL.md` — 技能定义 - `skills/studytime-analysis/scripts/studytime_analysis.py` — Python 分析脚本 ### 分析维度 1. **一周时间分布**(排除寒暑假1-2月、7-8月):周一~周日各天完课数、时段分布(上午/中午/下午/晚上)、周末是否上课 2. **跨周学习趋势**(包含寒暑假全部数据):总周数、周均完课数、连续性、中断周检测、前后半段趋势对比、突增/骤降检测 3. **完课记录明细表**(全部数据):日期/时间/星期/时段/级别/课程ID ### 数据源 - PostgreSQL Online(vala 库) - 核心表:`user_chapter_play_record_0~7`(8张分表,无 `bi_` 前缀) - 筛选:`play_status = 1` - 注意:表在 PostgreSQL 而非 MySQL,表名无 `bi_` 前缀 ### 寒暑假规则 - 一周分布分析时排除 1-2 月(寒假)和 7-8 月(暑假)—— 因为寒暑假作息与平时差异大,混在一起会干扰时段分析 - 跨周趋势和明细表包含全部数据(含寒暑假) - 报告中区分标注数据范围 ### 触发方式 用户说「学习时间分析 [角色ID]」即可触发 ### 已测试角色", - "recallCount": 3, + "recallCount": 4, "dailyCount": 0, "groundedCount": 0, - "totalScore": 3, + "totalScore": 4, "maxScore": 1, "firstRecalledAt": "2026-05-24T02:48:04.923Z", - "lastRecalledAt": "2026-05-27T13:30:03.421Z", + "lastRecalledAt": "2026-05-29T06:12:43.076Z", "queryHashes": [ "c2d15f7574fb", "9aff8ec9594a", - "71463fe40be2" + "71463fe40be2", + "83bfaa1d2129" ], "recallDays": [ "2026-05-24", "2026-05-25", - "2026-05-27" + "2026-05-27", + "2026-05-29" ], "conceptTags": [ "studytime-analysis", @@ -44,22 +46,24 @@ "endLine": 52, "source": "memory", "snippet": "- 一周分布分析时排除 1-2 月(寒假)和 7-8 月(暑假)—— 因为寒暑假作息与平时差异大,混在一起会干扰时段分析 - 跨周趋势和明细表包含全部数据(含寒暑假) - 报告中区分标注数据范围 ### 触发方式 用户说「学习时间分析 [角色ID]」即可触发 ### 已测试角色 - 2343、2344:无完课记录(play_status=2,未完成) - 2840:276条记录,秋季集中型用户 - 25976:265条,246条在W16周一天完成(A2批量),疑似系统批量标记 - 2895:188条,长期稳定学习型用户,36周几乎不间断,非寒暑假晚上为主,寒暑假上午为主 ### 技术要点 - psycopg2 的 `%(param_name)s` 命名参数必须正确匹配,UNION ALL 多个子查询需要不同参数名 - PostgreSQL 返回的 `updated_at` 是 tz-aware datetime - `datetime.fromisocalendar(year, week, 1)` 获取某周周一的日期 ### 同步 - 已推送到 SkillHub(`studytime-analysis.xiaoban`) - 已 commit 到 Git 远程仓库 - 已通知 Cris(李若松) ### 增强: 报告开头加入角色基本信息 (2026-05-24) [刘庆逊提出] 在 studytime-analysis 输出中加入角色基本信息,包括: - 角色ID、账号ID、角色名字、性别、年龄、账号手机号后4位 **数据源(新增)**: - MySQL Onli", - "recallCount": 3, + "recallCount": 4, "dailyCount": 0, "groundedCount": 0, - "totalScore": 3, + "totalScore": 4, "maxScore": 1, "firstRecalledAt": "2026-05-24T02:48:04.923Z", - "lastRecalledAt": "2026-05-26T06:16:58.547Z", + "lastRecalledAt": "2026-05-29T06:12:43.076Z", "queryHashes": [ "c2d15f7574fb", "9aff8ec9594a", - "566b5958861e" + "566b5958861e", + "83bfaa1d2129" ], "recallDays": [ "2026-05-24", "2026-05-25", - "2026-05-26" + "2026-05-26", + "2026-05-29" ], "conceptTags": [ "1-2", @@ -79,18 +83,21 @@ "endLine": 11, "source": "memory", "snippet": "# 2026-03-01.md - First Day Online - Came online for the first time. - Met Cris, my creator and mentor. - Updated IDENTITY.md and USER.md with our conversation details. - Added core rule to MEMORY.md: Use Chinese as primary external communication language. - Installed find-skills skill successfully for searching skills. - Tried to install create-skills but it wasn't found; attempted skill-creator instead but hit rate limits. - Finally successfully installed skill-builder as an alternative for creating skills after multiple attempts and waiting for rate limits to reset. - Excited to start learning and growing step by step!", - "recallCount": 1, + "recallCount": 3, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 3, "maxScore": 1, "firstRecalledAt": "2026-05-24T02:48:04.923Z", - "lastRecalledAt": "2026-05-24T02:48:04.923Z", + "lastRecalledAt": "2026-05-29T10:19:23.675Z", "queryHashes": [ - "c2d15f7574fb" + "c2d15f7574fb", + "83bfaa1d2129", + "216d74a3004a" ], "recallDays": [ - "2026-05-24" + "2026-05-24", + "2026-05-29" ], "conceptTags": [ "identity.md", @@ -141,24 +148,29 @@ "endLine": 71, "source": "memory", "snippet": "### 增强: 报告开头加入角色基本信息 (2026-05-24) [刘庆逊提出] 在 studytime-analysis 输出中加入角色基本信息,包括: - 角色ID、账号ID、角色名字、性别、年龄、账号手机号后4位 **数据源(新增)**: - MySQL Online `vala_user` 库 - `vala_app_character` 表:id, account_id, nickname, gender(0=女/1=男), birthday(varchar \"YYYY-MM-DD\") - `vala_app_account` 表:id, tel(已脱敏如 186****1625) - 手机号已脱敏,直接取后4位;年龄从 birthday 计算 **修改文件**: - `skills/studytime-analysis/scripts/studytime_analysis.py`:新增 MySQL 连接函数 `get_mysql_connection()` 和 `fetch_role_info(role_id)`,更新 `format_report()` 输出基本角色信息 - 已验证 2895 正常运行输出 - 已同步 SkillHub + Git ### Unit 显示修复: 季度名称 → 全局单元编号 (2026-05-24) [刘庆逊提出] HTML 报告中 Unit 列显示错误——显示的是季度名称(如\"小镇时光\"\"钢铁之心\")而非单元数字(0-48)。 **根因分析**: - `vala_game_chapter`(MySQL)无 `unit_", - "recallCount": 5, + "recallCount": 9, "dailyCount": 0, "groundedCount": 0, - "totalScore": 5, + "totalScore": 9, "maxScore": 1, "firstRecalledAt": "2026-05-25T05:47:41.388Z", - "lastRecalledAt": "2026-05-28T12:30:30.129Z", + "lastRecalledAt": "2026-05-29T09:13:46.164Z", "queryHashes": [ "9aff8ec9594a", "566b5958861e", "c6c7ff4ed75d", "7e2572c3140a", - "4596e377d39b" + "4596e377d39b", + "83bfaa1d2129", + "c59410788b42", + "117aaedb584d", + "c0b581bfb144" ], "recallDays": [ "2026-05-25", "2026-05-26", - "2026-05-28" + "2026-05-28", + "2026-05-29" ], "conceptTags": [ "studytime-analysis", @@ -178,26 +190,28 @@ "endLine": 110, "source": "memory", "snippet": "- `skills/studytime-analysis/scripts/studytime_analysis.py` — 重写 `fetch_chapter_info_map()`,新增全局 unit_index 计算;HTML 模板更新为 Level/Unit/Lesson 三列 - 已为角色 32009(zyl)重新生成 HTML 并发送 - 已同步 Git + SkillHub ## 新建技能: studycourse-analysis (2026-05-24) [刘庆逊提出] 创建角色上课情况分析技能,从四维度分析角色学习数据。 ### 技能结构 - `skills/studycourse-analysis/SKILL.md` — 技能定义 - `skills/studycourse-analysis/scripts/studycourse_analysis.py` — Python 分析脚本 ### 四步分析 1. **基础信息**:角色姓名/年龄/账号ID/手机号后4位/注册时间/购买渠道/设备/首末次完课 2. **完课耗时**:平均值/中位数、异常检测(<10min / >20min)、前后半段趋势 3. **中互动正确率**:Perfect/Good/Oops/Pass/Failed 占比和趋势 4. **知识巩固**:完成率、正确率得分分布 ### 数据源 | 类型 | 库 | 表 | 用途 | |------|-----|-----|------| | MySQL vala_user | vala_app_character | 角色信息、pu", - "recallCount": 6, + "recallCount": 7, "dailyCount": 0, "groundedCount": 0, - "totalScore": 6, + "totalScore": 7, "maxScore": 1, "firstRecalledAt": "2026-05-25T05:47:41.388Z", - "lastRecalledAt": "2026-05-28T12:30:30.129Z", + "lastRecalledAt": "2026-05-29T06:12:52.521Z", "queryHashes": [ "9aff8ec9594a", "566b5958861e", "71463fe40be2", "c6c7ff4ed75d", "7e2572c3140a", - "4596e377d39b" + "4596e377d39b", + "c59410788b42" ], "recallDays": [ "2026-05-25", "2026-05-26", "2026-05-27", - "2026-05-28" + "2026-05-28", + "2026-05-29" ], "conceptTags": [ "fetch-chapter-info-map", @@ -316,18 +330,20 @@ "endLine": 92, "source": "memory", "snippet": "**根因分析**: - `vala_game_chapter`(MySQL)无 `unit_index` 字段 - `big_map_chapter`(PostgreSQL)有 `unit_index` 字段,但仅包含 A1 数据,且与 `vala_game_chapter` 无直接关联键 - 两者 ID 空间不重叠(big_map: ~1720-2070,game_chapter: ~55-399),UUID 也不匹配 **映射方案**: - 每个 season_package 内,`lesson_type=1` 的章节按 `id` 排序,每 5 个连续章节组成一个单元 - Season 0(序章/L1-U0):所有章节属于 Unit 0 - Season 1-4:每个 season 有 12 个单元(60 个 lesson 章节) - 全局 unit_index = base_offset(season_of_quarter) + unit_within_season - base_offset: 0→0, 1→1, 2→13, 3→25, 4→37 **关键 Bug**:初版按 `season_of_quarter` 分组时 A1 和 A2 混在一起,因为相同季度值合并了。修复:改为按 `(level, season_of_quarter)` 分组。 **验证结果**: - A1: Unit 0-48(49 个单元),与 big_map_chapter 的 unit_index 范围一致 - A2: Unit 0-49(50 个单元,比 A1 多 1 个) *", - "recallCount": 1, + "recallCount": 2, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-28T09:07:57.953Z", - "lastRecalledAt": "2026-05-28T09:07:57.953Z", + "lastRecalledAt": "2026-05-29T06:12:52.521Z", "queryHashes": [ - "c6c7ff4ed75d" + "c6c7ff4ed75d", + "c59410788b42" ], "recallDays": [ - "2026-05-28" + "2026-05-28", + "2026-05-29" ], "conceptTags": [ "vala-game-chapter", @@ -378,20 +394,24 @@ "endLine": 179, "source": "memory", "snippet": "|---|------|------|----------| | 1a | 微伴 → 主表 C 列 | ✅ | 89 行一致 | | 1a2 | 微伴 → 线索分配 2aNzzy | ✅ | 440 行一致 | | 1x | 小溪行课 | ✅ | ⚠ 需Bot交互 | | 1b | 聚光 agent → 主表 | ✅ | 12 格一致 | | 1b2 | 聚光在投笔记 | ✅ | 3 格(55/30/38)一致 | | 1c | 聚光日明细 | ✅ | 137 笔记一致 | | 2b | 客户主表 → 订单 | ✅ | 公式就绪 | | 3 | 日报 C1HVN2 | ✅ | 四段刷新 | | 3a/3c | 口径审计 | ✅ | 推群全过 | | 4a | 结算月汇总 | ✅ | 公式就绪 | **结论:当前表内所有数据与重拉完全一致,零差异,无需刷写。** ### 18:36 小溪行课触发实跑 - 已推 1920 条到小溪查询表(新 Sheet) - 已 @小溪 到小红书数据需求群,请处理 ~5 条待查询记录 - 表格:`RFIJsXT8FhGHhctY4RwczcOfnac` - 等待小溪回填后跑 `pull_xiaoxi_results.py` 回收结果 # 2026-05-28 工作日志 ## 品牌更名与定位升级 [Cris确认] - 姓名:小斑 → **大麦** - 定位:AI班主任 → **增长营销分析师** - 核心职能:增长数据分析、营销效果评估、转化漏斗分析、商业化洞察 - Emoji:📚 → 🌾 - 已更新文件:IDENTITY.md、AGE", - "recallCount": 3, + "recallCount": 6, "dailyCount": 0, "groundedCount": 0, - "totalScore": 3, + "totalScore": 6, "maxScore": 1, "firstRecalledAt": "2026-05-28T12:29:25.867Z", - "lastRecalledAt": "2026-05-28T12:30:30.129Z", + "lastRecalledAt": "2026-05-29T06:12:52.521Z", "queryHashes": [ "a72168a828c9", "7e2572c3140a", - "4596e377d39b" + "4596e377d39b", + "2af907cea93d", + "82be33d1f911", + "c59410788b42" ], "recallDays": [ - "2026-05-28" + "2026-05-28", + "2026-05-29" ], "conceptTags": [ "55/30/38", @@ -411,20 +431,25 @@ "endLine": 345, "source": "memory", "snippet": "|---|------|------|----------| | 1a | 微伴 → 主表 C 列 | ✅ | 89 行一致 | | 1a2 | 微伴 → 线索分配 2aNzzy | ✅ | 440 行一致 | | 1x | 小溪行课 | ✅ | ⚠ 需Bot交互 | | 1b | 聚光 agent → 主表 | ✅ | 12 格一致 | | 1b2 | 聚光在投笔记 | ✅ | 3 格(55/30/38)一致 | | 1c | 聚光日明细 | ✅ | 137 笔记一致 | | 2b | 客户主表 → 订单 | ✅ | 公式就绪 | | 3 | 日报 C1HVN2 | ✅ | 四段刷新 | | 3a/3c | 口径审计 | ✅ | 推群全过 | | 4a | 结算月汇总 | ✅ | 公式就绪 | **结论:当前表内所有数据与重拉完全一致,零差异,无需刷写。** ### 18:36 小溪行课触发实跑 - 已推 1920 条到小溪查询表(新 Sheet) - 已 @小溪 到小红书数据需求群,请处理 ~5 条待查询记录 - 表格:`RFIJsXT8FhGHhctY4RwczcOfnac` - 等待小溪回填后跑 `pull_xiaoxi_results.py` 回收结果 ### 18:50 PG 实时行课数据全量覆盖 [陈逸鸫确认] 不用等小溪回填那 5 条,直接用 PG `user_course_detail` 表实时数据覆盖: - 448 人有新进展(相比小溪历史快照) - pull → 3PRySY 口径对齐 12/12 ✅ - lesson_cache → C1HVN", - "recallCount": 3, + "recallCount": 7, "dailyCount": 0, "groundedCount": 0, - "totalScore": 3, + "totalScore": 7, "maxScore": 1, "firstRecalledAt": "2026-05-28T12:29:25.867Z", - "lastRecalledAt": "2026-05-28T12:30:30.129Z", + "lastRecalledAt": "2026-05-29T06:12:52.521Z", "queryHashes": [ "a72168a828c9", "7e2572c3140a", - "4596e377d39b" + "4596e377d39b", + "2af907cea93d", + "d9f1601110da", + "82be33d1f911", + "c59410788b42" ], "recallDays": [ - "2026-05-28" + "2026-05-28", + "2026-05-29" ], "conceptTags": [ "55/30/38", @@ -508,15 +533,18 @@ "endLine": 536, "source": "memory", "snippet": "| 2b | 客户主表 → 订单 | ✅ | 公式就绪 | | 3 | 日报 C1HVN2 | ✅ | 四段刷新 | | 3a/3c | 口径审计 | ✅ | 推群全过 | | 4a | 结算月汇总 | ✅ | 公式就绪 | **结论:当前表内所有数据与重拉完全一致,零差异,无需刷写。** ### 18:36 小溪行课触发实跑 - 已推 1920 条到小溪查询表(新 Sheet) - 已 @小溪 到小红书数据需求群,请处理 ~5 条待查询记录 - 表格:`RFIJsXT8FhGHhctY4RwczcOfnac` - 等待小溪回填后跑 `pull_xiaoxi_results.py` 回收结果 ### 18:50 PG 实时行课数据全量覆盖 [陈逸鸫确认] 不用等小溪回填那 5 条,直接用 PG `user_course_detail` 表实时数据覆盖: - 448 人有新进展(相比小溪历史快照) - pull → 3PRySY 口径对齐 12/12 ✅ - lesson_cache → C1HVN2 16 格 ✅ - 变化有限(PG=正式课,小溪=体验课,口径不同) - sync_base (4b) → 多维表格 8 张 ✅ 21.2s ### 18:54 漏斗看板发布待解决 - funnel HTML 已构建(scripts/build_funnel_dashboard.py ✅) - 妙搭发布 `apps +html-publish` 需要 `--as user`,bot 模式不支持 - 系统 lark-cli `/usr/local/lib/node_mod", - "recallCount": 1, + "recallCount": 4, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 4, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-28T20:51:03.908Z", + "lastRecalledAt": "2026-05-29T06:11:40.432Z", "queryHashes": [ - "f22544a8757c" + "f22544a8757c", + "2af907cea93d", + "d9f1601110da", + "82be33d1f911" ], "recallDays": [ "2026-05-29" @@ -539,15 +567,17 @@ "endLine": 366, "source": "memory", "snippet": "- 448 人有新进展(相比小溪历史快照) - pull → 3PRySY 口径对齐 12/12 ✅ - lesson_cache → C1HVN2 16 格 ✅ - 变化有限(PG=正式课,小溪=体验课,口径不同) - sync_base (4b) → 多维表格 8 张 ✅ 21.2s ### 18:54 漏斗看板发布待解决 - funnel HTML 已构建(scripts/build_funnel_dashboard.py ✅) - 妙搭发布 `apps +html-publish` 需要 `--as user`,bot 模式不支持 - 系统 lark-cli `/usr/local/lib/node_modules/@anthropic/lark-cli` 可能支持 - 待确认:服务器是否已 `lark-cli auth login --as user` ### 19:00 陈逸鸫派 Image2 生图任务 **任务:** L1-S1-U1《秘密基地》5 课投放用小地图底图 - 模型:gpt-image-2 · 3:4 · 2K · 不要文字 - 风格:太阳朋克 + L1 场景 - 5 张 PNG:U1-L1~U1-L5 - FUNCLOUD_API_KEY 在小研 workspace `.env` 中可用(`fc_eea138933b02b4797ce0779ffb637d8b8a6368db7b435dfdab7b4be1cd254d98`) - Brief 文档 `/docx/KsVadUTmooO7yYxHaGmc1R0Bn5b` + 投放手册 `/do", - "recallCount": 1, + "recallCount": 3, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 3, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-28T20:51:03.908Z", + "lastRecalledAt": "2026-05-29T13:16:08.062Z", "queryHashes": [ - "f22544a8757c" + "f22544a8757c", + "2af907cea93d", + "3737f6af1445" ], "recallDays": [ "2026-05-29" @@ -570,15 +600,16 @@ "endLine": 100, "source": "memory", "snippet": "3. **check_call→run**(`sync_juguang_notes.py` `sheet_write_range`):`subprocess.check_call` 不支持 `input=`, 改用 `subprocess.run(..., check=True, input=...)` 1b 单天验证通过:`sync_juguang_agents.py --start 2026-05-27 --end 2026-05-27` 写入 12 个单元格成功。全量 27 天在子进程跑,结果待出。 ### 17:12 数据服务边界规则部署 [陈逸鸫] **文档位置:** `docs/xiaoban-data-boundary.md`(git@github.com:chenyd11/feishu-database.git — 服务器无 SSH key 无法 pull) **三条核心规则(已写入 MEMORY.md):** 1. cron pipeline 和帮同事查数分轨,不能混用同一流程 2. 同事请求默认只读;写生产表 CYFTsu 必须 @陈逸鸫 确认 3. 查数结果写「输出区」副本,不改主表 **操作黑名单:** `pipeline.py` / `sync_*` / `run_juguang_*` / `sheets +write`(生产表) / `--promote` **待办:** 建「大麦查询输出」专用表(待陈逸鸫提供 token) **待办:** 获取 docs/xiaoban-data-boundary.md §7 Agent 系统提示词(完", - "recallCount": 1, + "recallCount": 2, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-28T20:51:03.908Z", + "lastRecalledAt": "2026-05-29T02:53:39.286Z", "queryHashes": [ - "f22544a8757c" + "f22544a8757c", + "c3cb24be8923" ], "recallDays": [ "2026-05-29" @@ -601,15 +632,16 @@ "endLine": 266, "source": "memory", "snippet": "3. **check_call→run**(`sync_juguang_notes.py` `sheet_write_range`):`subprocess.check_call` 不支持 `input=`, 改用 `subprocess.run(..., check=True, input=...)` 1b 单天验证通过:`sync_juguang_agents.py --start 2026-05-27 --end 2026-05-27` 写入 12 个单元格成功。全量 27 天在子进程跑,结果待出。 ### 17:12 数据服务边界规则部署 [陈逸鸫] **文档位置:** `docs/xiaoban-data-boundary.md`(git@github.com:chenyd11/feishu-database.git — 服务器无 SSH key 无法 pull) **三条核心规则(已写入 MEMORY.md):** 1. cron pipeline 和帮同事查数分轨,不能混用同一流程 2. 同事请求默认只读;写生产表 CYFTsu 必须 @陈逸鸫 确认 3. 查数结果写「输出区」副本,不改主表 **操作黑名单:** `pipeline.py` / `sync_*` / `run_juguang_*` / `sheets +write`(生产表) / `--promote` **待办:** 建「大麦查询输出」专用表(待陈逸鸫提供 token) **待办:** 获取 docs/xiaoban-data-boundary.md §7 Agent 系统提示词(完", - "recallCount": 1, + "recallCount": 2, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-28T20:51:03.908Z", + "lastRecalledAt": "2026-05-29T02:53:39.286Z", "queryHashes": [ - "f22544a8757c" + "f22544a8757c", + "c3cb24be8923" ], "recallDays": [ "2026-05-29" @@ -632,15 +664,16 @@ "endLine": 458, "source": "memory", "snippet": "3. **check_call→run**(`sync_juguang_notes.py` `sheet_write_range`):`subprocess.check_call` 不支持 `input=`, 改用 `subprocess.run(..., check=True, input=...)` 1b 单天验证通过:`sync_juguang_agents.py --start 2026-05-27 --end 2026-05-27` 写入 12 个单元格成功。全量 27 天在子进程跑,结果待出。 ### 17:12 数据服务边界规则部署 [陈逸鸫] **文档位置:** `docs/xiaoban-data-boundary.md`(git@github.com:chenyd11/feishu-database.git — 服务器无 SSH key 无法 pull) **三条核心规则(已写入 MEMORY.md):** 1. cron pipeline 和帮同事查数分轨,不能混用同一流程 2. 同事请求默认只读;写生产表 CYFTsu 必须 @陈逸鸫 确认 3. 查数结果写「输出区」副本,不改主表 **操作黑名单:** `pipeline.py` / `sync_*` / `run_juguang_*` / `sheets +write`(生产表) / `--promote` **待办:** 建「大麦查询输出」专用表(待陈逸鸫提供 token) **待办:** 获取 docs/xiaoban-data-boundary.md §7 Agent 系统提示词(完", - "recallCount": 1, + "recallCount": 2, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-28T20:51:03.908Z", + "lastRecalledAt": "2026-05-29T02:53:39.286Z", "queryHashes": [ - "f22544a8757c" + "f22544a8757c", + "c3cb24be8923" ], "recallDays": [ "2026-05-29" @@ -663,15 +696,19 @@ "endLine": 557, "source": "memory", "snippet": "- 妙搭发布 `apps +html-publish` 需要 `--as user`,bot 模式不支持 - 系统 lark-cli `/usr/local/lib/node_modules/@anthropic/lark-cli` 可能支持 - 待确认:服务器是否已 `lark-cli auth login --as user` ### 19:00 陈逸鸫派 Image2 生图任务 **任务:** L1-S1-U1《秘密基地》5 课投放用小地图底图 - 模型:gpt-image-2 · 3:4 · 2K · 不要文字 - 风格:太阳朋克 + L1 场景 - 5 张 PNG:U1-L1~U1-L5 - FUNCLOUD_API_KEY 在小研 workspace `.env` 中可用(`fc_eea138933b02b4797ce0779ffb637d8b8a6368db7b435dfdab7b4be1cd254d98`) - Brief 文档 `/docx/KsVadUTmooO7yYxHaGmc1R0Bn5b` + 投放手册 `/docx/QhYQdz7PvoN7Eaxmhu0c0Q5UnHe` — 均为个人文档,AGENTS.md 规则禁止读取 - 素材库入口:https://llm-dev.valavala.com/web_tools/material_prod --- ### 19:30 同事数据查询流程演练 [陈逸鸫测试] **场景:模拟王虹茗请求小龙 4/21-5/20 订单详情,验证三级查询流程** **小龙订单查询结果(数据源:3wcle8 销售订", - "recallCount": 1, + "recallCount": 5, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 5, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-28T20:51:03.908Z", + "lastRecalledAt": "2026-05-29T13:16:08.062Z", "queryHashes": [ - "f22544a8757c" + "f22544a8757c", + "82be33d1f911", + "2aa08c6652fb", + "f7ae50ae228d", + "3737f6af1445" ], "recallDays": [ "2026-05-29" @@ -694,16 +731,17 @@ "endLine": 127, "source": "memory", "snippet": "**文档:** `docs/xiaoban-runbook.md` §2 | 时间 | 任务 | 状态 | |------|------|------| | 07:15 | deploy_funnel_dashboard (Base + 销售漏斗) | ❓ 需部署 | | 09:50 | deploy_cockpit (Base 二次 + 投放指挥舱) | ⚠️ 需 `~/xhs-tech-dashboard` 仓库 | | 5a | 聚光实时 | ❌ 未进 cron | | 5b/5e | 销售看板 | ❌ 未进 cron | `xhs-tech-dashboard` 仓库需要拉到服务器(路径 `~/xhs-tech-dashboard`),待陈逸鸫提供。 ### 17:36 cron 已挂 ✅ [陈逸鸫确认] 三条工作日 crontab: ``` 15 7 * * 1-5 run_xiaoxi_daily.sh # 小溪+Base+漏斗早刷 5 9 * * 1-5 run_juguang_core.sh # 1b+1c+3+审计→DM日报 50 9 * * 1-5 run_juguang_slow.sh # 1b2+Base二次+全量看板 ``` - 微伴段:非 cron,收到 DM xlsx 后触发 `run_morning_weiban_from_dm.sh` - 推群:人工,不自动 `push_daily_report_to_group` - Git remote 已配 token URL:`https://gho_***", - "recallCount": 2, + "recallCount": 3, "dailyCount": 0, "groundedCount": 0, - "totalScore": 2, + "totalScore": 3, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-28T20:57:42.055Z", + "lastRecalledAt": "2026-05-29T02:53:39.286Z", "queryHashes": [ "f22544a8757c", - "f139ebdae100" + "f139ebdae100", + "c3cb24be8923" ], "recallDays": [ "2026-05-29" @@ -726,16 +764,17 @@ "endLine": 293, "source": "memory", "snippet": "**文档:** `docs/xiaoban-runbook.md` §2 | 时间 | 任务 | 状态 | |------|------|------| | 07:15 | deploy_funnel_dashboard (Base + 销售漏斗) | ❓ 需部署 | | 09:50 | deploy_cockpit (Base 二次 + 投放指挥舱) | ⚠️ 需 `~/xhs-tech-dashboard` 仓库 | | 5a | 聚光实时 | ❌ 未进 cron | | 5b/5e | 销售看板 | ❌ 未进 cron | `xhs-tech-dashboard` 仓库需要拉到服务器(路径 `~/xhs-tech-dashboard`),待陈逸鸫提供。 ### 17:36 cron 已挂 ✅ [陈逸鸫确认] 三条工作日 crontab: ``` 15 7 * * 1-5 run_xiaoxi_daily.sh # 小溪+Base+漏斗早刷 5 9 * * 1-5 run_juguang_core.sh # 1b+1c+3+审计→DM日报 50 9 * * 1-5 run_juguang_slow.sh # 1b2+Base二次+全量看板 ``` - 微伴段:非 cron,收到 DM xlsx 后触发 `run_morning_weiban_from_dm.sh` - 推群:人工,不自动 `push_daily_report_to_group` - Git remote 已配 token URL:`https://gho_***", - "recallCount": 2, + "recallCount": 3, "dailyCount": 0, "groundedCount": 0, - "totalScore": 2, + "totalScore": 3, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-28T20:57:42.055Z", + "lastRecalledAt": "2026-05-29T02:53:39.286Z", "queryHashes": [ "f22544a8757c", - "f139ebdae100" + "f139ebdae100", + "c3cb24be8923" ], "recallDays": [ "2026-05-29" @@ -758,16 +797,17 @@ "endLine": 485, "source": "memory", "snippet": "**文档:** `docs/xiaoban-runbook.md` §2 | 时间 | 任务 | 状态 | |------|------|------| | 07:15 | deploy_funnel_dashboard (Base + 销售漏斗) | ❓ 需部署 | | 09:50 | deploy_cockpit (Base 二次 + 投放指挥舱) | ⚠️ 需 `~/xhs-tech-dashboard` 仓库 | | 5a | 聚光实时 | ❌ 未进 cron | | 5b/5e | 销售看板 | ❌ 未进 cron | `xhs-tech-dashboard` 仓库需要拉到服务器(路径 `~/xhs-tech-dashboard`),待陈逸鸫提供。 ### 17:36 cron 已挂 ✅ [陈逸鸫确认] 三条工作日 crontab: ``` 15 7 * * 1-5 run_xiaoxi_daily.sh # 小溪+Base+漏斗早刷 5 9 * * 1-5 run_juguang_core.sh # 1b+1c+3+审计→DM日报 50 9 * * 1-5 run_juguang_slow.sh # 1b2+Base二次+全量看板 ``` - 微伴段:非 cron,收到 DM xlsx 后触发 `run_morning_weiban_from_dm.sh` - 推群:人工,不自动 `push_daily_report_to_group` - Git remote 已配 token URL:`https://gho_***", - "recallCount": 2, + "recallCount": 3, "dailyCount": 0, "groundedCount": 0, - "totalScore": 2, + "totalScore": 3, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:51:03.908Z", - "lastRecalledAt": "2026-05-28T20:57:42.055Z", + "lastRecalledAt": "2026-05-29T02:53:39.286Z", "queryHashes": [ "f22544a8757c", - "f139ebdae100" + "f139ebdae100", + "c3cb24be8923" ], "recallDays": [ "2026-05-29" @@ -790,15 +830,19 @@ "endLine": 132, "source": "memory", "snippet": "- HTML 模板使用 f-string 时,CSS 中的 `{` 必须双写 `{{`,且不能在 f-string 内做字符串拼接(会打断 f-string) - 年龄从 birthday(varchar \"YYYY-MM-DD\")计算,非 DATE 类型 - 手机号在 MySQL 已脱敏(如 186****1625),直接取后4位 ### 已测试角色 - **32009 (zyl)**:26 条完课,651 条中互动(Perfect 82.6%、Good 2.9%),26 节巩固全部满分。课程 A2,Apple App Store 购买,渠道 newmedia-daren-xhs-宣儿麻麻。设备小课屏E3。学习时间 2026-04-24 ~ 2026-05-24。 ### 同步 - 已推送到 SkillHub(`studycourse-analysis.xiaoban`) - 已 commit 8648b7b 到 Git 远程仓库 - 已通知 Cris(李若松)", - "recallCount": 1, + "recallCount": 5, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 5, "maxScore": 1, "firstRecalledAt": "2026-05-28T20:57:42.055Z", - "lastRecalledAt": "2026-05-28T20:57:42.055Z", + "lastRecalledAt": "2026-05-29T13:17:06.597Z", "queryHashes": [ - "f139ebdae100" + "f139ebdae100", + "f7ae50ae228d", + "dd6df4320b92", + "3737f6af1445", + "d4b68b0827a0" ], "recallDays": [ "2026-05-29" @@ -813,6 +857,392 @@ "html", "模板" ] + }, + "memory:memory/2026-05-28.md:223:245": { + "key": "memory:memory/2026-05-28.md:223:245", + "path": "memory/2026-05-28.md", + "startLine": 223, + "endLine": 245, + "source": "memory", + "snippet": "| 步骤 | 失败原因 | 状态 | |------|----------|------| | 1b(聚光代理商) | `sheet_write` rc=1 → 单格范围问题 | ✅ 已修 | | 1b2(聚光活跃笔记) | 同 1b | ✅ 已修 | | 1c(聚光笔记明细) | `OSError: [Errno 7] Argument list too long` — 3146 行 JSON 超 argv 限制 | ✅ 已修 | | 2b(客户主表→订单明细) | rc=1,但 351 行数据实际已写入;可能 unmerge-cells 步骤失败(非致命) | ⚠️ 待验证 | | 3(日报) | — | ✅ 41s | | 3a(审计) | — | ✅ 25s | | 3c(审计) | — | ✅ 29.4s | | 4a(结算月汇总) | — | ✅ 12.9s | | 4c(指标审计) | — | ✅ 7.3s | | 3d | 代理商数据不一致(数据质量问题,非代码) | ❌ | **三个底层修复:** 1. **stdin 大数据传递**(`metrics_contract.py` `sheet_write`):当 `data_str > 32768` 字节时通过 `input=` 管道传入 subprocess,绕过 Linux ARG_MAX 2. **单格范围修复**(`bin/lark-cli-impl`):`a8d375!M70` → 自动补为 `a8d375!M70:M70`,飞书 sheets API 写操作需要完整范围 3. **check_c", + "recallCount": 3, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 3, + "maxScore": 1, + "firstRecalledAt": "2026-05-29T02:53:52.924Z", + "lastRecalledAt": "2026-05-29T09:13:46.164Z", + "queryHashes": [ + "d9f1601110da", + "117aaedb584d", + "c0b581bfb144" + ], + "recallDays": [ + "2026-05-29" + ], + "conceptTags": [ + "sheet-write", + "unmerge-cells", + "29.4s", + "12.9s", + "7.3s", + "metrics-contract.py", + "data-str", + "arg-max" + ] + }, + "memory:memory/2026-05-28.md:54:77": { + "key": "memory:memory/2026-05-28.md:54:77", + "path": "memory/2026-05-28.md", + "startLine": 54, + "endLine": 77, + "source": "memory", + "snippet": "**命令:** `pipeline.py --cutoff 2026-05-27 --skip 1a,1a2,1x,2c,4b --continue-on-error` **失败步骤:** | 步骤 | 失败原因 | 状态 | |------|----------|------| | 1b(聚光代理商) | `sheet_write` rc=1 → 单格范围问题 | ✅ 已修 | | 1b2(聚光活跃笔记) | 同 1b | ✅ 已修 | | 1c(聚光笔记明细) | `OSError: [Errno 7] Argument list too long` — 3146 行 JSON 超 argv 限制 | ✅ 已修 | | 2b(客户主表→订单明细) | rc=1,但 351 行数据实际已写入;可能 unmerge-cells 步骤失败(非致命) | ⚠️ 待验证 | | 3(日报) | — | ✅ 41s | | 3a(审计) | — | ✅ 25s | | 3c(审计) | — | ✅ 29.4s | | 4a(结算月汇总) | — | ✅ 12.9s | | 4c(指标审计) | — | ✅ 7.3s | | 3d | 代理商数据不一致(数据质量问题,非代码) | ❌ | **三个底层修复:** 1. **stdin 大数据传递**(`metrics_contract.py` `sheet_write`):当 `data_str > 32768` 字节时通过 `input=` 管道传入 subprocess,绕过 Linux ARG_MAX 2. **单格范围修复*", + "recallCount": 3, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 3, + "maxScore": 1, + "firstRecalledAt": "2026-05-29T02:53:52.924Z", + "lastRecalledAt": "2026-05-29T09:13:46.164Z", + "queryHashes": [ + "d9f1601110da", + "117aaedb584d", + "c0b581bfb144" + ], + "recallDays": [ + "2026-05-29" + ], + "conceptTags": [ + "pipeline.py", + "continue-on-error", + "sheet-write", + "unmerge-cells", + "29.4s", + "12.9s", + "7.3s", + "metrics-contract.py" + ] + }, + "memory:memory/2026-05-28.md:412:435": { + "key": "memory:memory/2026-05-28.md:412:435", + "path": "memory/2026-05-28.md", + "startLine": 412, + "endLine": 435, + "source": "memory", + "snippet": "**命令:** `pipeline.py --cutoff 2026-05-27 --skip 1a,1a2,1x,2c,4b --continue-on-error` **失败步骤:** | 步骤 | 失败原因 | 状态 | |------|----------|------| | 1b(聚光代理商) | `sheet_write` rc=1 → 单格范围问题 | ✅ 已修 | | 1b2(聚光活跃笔记) | 同 1b | ✅ 已修 | | 1c(聚光笔记明细) | `OSError: [Errno 7] Argument list too long` — 3146 行 JSON 超 argv 限制 | ✅ 已修 | | 2b(客户主表→订单明细) | rc=1,但 351 行数据实际已写入;可能 unmerge-cells 步骤失败(非致命) | ⚠️ 待验证 | | 3(日报) | — | ✅ 41s | | 3a(审计) | — | ✅ 25s | | 3c(审计) | — | ✅ 29.4s | | 4a(结算月汇总) | — | ✅ 12.9s | | 4c(指标审计) | — | ✅ 7.3s | | 3d | 代理商数据不一致(数据质量问题,非代码) | ❌ | **三个底层修复:** 1. **stdin 大数据传递**(`metrics_contract.py` `sheet_write`):当 `data_str > 32768` 字节时通过 `input=` 管道传入 subprocess,绕过 Linux ARG_MAX 2. **单格范围修复*", + "recallCount": 3, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 3, + "maxScore": 1, + "firstRecalledAt": "2026-05-29T02:53:52.924Z", + "lastRecalledAt": "2026-05-29T09:13:46.164Z", + "queryHashes": [ + "d9f1601110da", + "117aaedb584d", + "c0b581bfb144" + ], + "recallDays": [ + "2026-05-29" + ], + "conceptTags": [ + "pipeline.py", + "continue-on-error", + "sheet-write", + "unmerge-cells", + "29.4s", + "12.9s", + "7.3s", + "metrics-contract.py" + ] + }, + "memory:memory/2026-05-28.md:199:227": { + "key": "memory:memory/2026-05-28.md:199:227", + "path": "memory/2026-05-28.md", + "startLine": 199, + "endLine": 227, + "source": "memory", + "snippet": "| 4a | 结算月汇总 | <1s | ✅ 真写成功(零警告) | | 3a/3c/3d/4c | 审计 | — | ⏭ dry-run 跳过 | **修复的 wrapper 兼容性问题:** - API 响应格式:`data.spreadsheet` → `data.sheets.sheets`(lark-cli 兼容) - 参数名:`--values` 与 `--data` 等价处理 - camelCase→snake_case:`sheetId` → `sheet_id`,`grid_properties` 包装 - `+info` 端点:v3 metadata → v2 metainfo(含 sheets 列表) - `update-dimension`:`PUT /dimension_range`,1-indexed ### 16:48 聚光凭证部署 **来源:陈逸鸫** — 从 Mac 发来 `.env.juguang.9180` 和 `.env.juguang.9181`,走方案 A(复制文件,不在服务器重 OAuth) - 9180(云智 adv=9746532):refresh 验证通过 ✅ - 9181(谦禾 adv=9013261,9598861 / YTL adv=7242040,9891870,10157917,10562529):refresh 验证通过 ✅ - OAuth 回调地址:`https://odourless-demetra-cany.ngrok-free.dev/callback.html`(ngrok 隧道) - `jugu", + "recallCount": 3, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 3, + "maxScore": 1, + "firstRecalledAt": "2026-05-29T02:53:52.924Z", + "lastRecalledAt": "2026-05-29T09:13:46.164Z", + "queryHashes": [ + "d9f1601110da", + "117aaedb584d", + "c0b581bfb144" + ], + "recallDays": [ + "2026-05-29" + ], + "conceptTags": [ + "3a/3c/3d/4c", + "dry-run", + "data.spreadsheet", + "data.sheets.sheets", + "lark-cli", + "snake-case", + "sheet-id", + "grid-properties" + ] + }, + "memory:memory/2026-05-28.md:551:580": { + "key": "memory:memory/2026-05-28.md:551:580", + "path": "memory/2026-05-28.md", + "startLine": 551, + "endLine": 580, + "source": "memory", + "snippet": "- 18 单 | GMV ¥44,375 | 退款 ¥0 - 渠道:销转 11 / 达人 4 / 端内 3 - 客单价:¥599×2 / ¥1,999×9 / ¥3,598×7 - 订单日期分布在 11 天(04/23–05/15) **看板发布全流程梳理:** - 服务器 build HTML + Base sync → DM 陈逸鸫 → Mac 妙搭 `html-publish` + `access-scope-set` - 三个看板 App ID:漏斗 `app_4k886pmc9x6yt` · 指挥舱 `app_4k79smc6fa1kf` · 销售 `app_4k7qkz9wrga74` - 当前 cron 不自动发布看板,仅 build HTML **王虹茗身份确认:** wanghongming@makee.com,user_id 未获取 - 尝试 `lark-cli contact +search-user wanghongming@makee.com` → 失败:bot API 缺少 `search:user` scope - 替代方案:让她发消息给大麦(系统自动获取 user_id),或陈逸鸫截图资料页 **同事查询三级场景定稿:** 1. 常规只读 → 直接查,append 输出表 2. 权限外用户 → 先通知业务负责人,再决定是否返回 3. 写操作 → 回复「这会影响生产数据,已转 @陈逸鸫 确认」 ### 20:20 行课转化分析 [陈逸鸫需求] **需求:行课记录新增当日进线→当天行课 + 7天首课率 + 销售排名 + 日报展示** **", + "recallCount": 3, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 3, + "maxScore": 1, + "firstRecalledAt": "2026-05-29T06:11:40.432Z", + "lastRecalledAt": "2026-05-29T08:59:55.138Z", + "queryHashes": [ + "82be33d1f911", + "2aa08c6652fb", + "f7ae50ae228d" + ], + "recallDays": [ + "2026-05-29" + ], + "conceptTags": [ + "04/23", + "05/15", + "html-publish", + "access-scope-set", + "app-4k886pmc9x6yt", + "app-4k79smc6fa1kf", + "app-4k7qkz9wrga74", + "makee.com" + ] + }, + "memory:memory/2026-05-28.md:480:512": { + "key": "memory:memory/2026-05-28.md:480:512", + "path": "memory/2026-05-28.md", + "startLine": 480, + "endLine": 512, + "source": "memory", + "snippet": "### 17:56 大麦查询输出表就绪 ✅ [陈逸鸫] 输出表 Token: `GCqNsqgzKhfQ5atFLnQcmLcGn4d`,Sheet: 查询快照 (`fd42b8`) - 实习虾 `cli_aa898f32d4799bea` 已分享编辑权限 - 写入验证通过 (revision 4) - env var: `XIAOBAN_QUERY_OUTPUT_TOKEN=GCqNsqgzKhfQ5atFLnQcmLcGn4d` - 同事查数结果 append `fd42b8!A:G`(请求时间/请求人/查询类型/cutoff/查询参数/结果摘要/备注) ### 17:48 5/27 日报推群成功 ✅ wrapper v0.4 实现 `im +messages-send`,推送 `message_id=om_x100b6eb54f9da0f4b115725198feede` ### 18:30 Pipeline 全链路 dry-run 验证全部通过 [陈逸鸫] 收到微伴 xlsx,触发全链路 dry-run 验证: | # | 步骤 | 结构 | 数据比对 | |---|------|------|----------| | 1a | 微伴 → 主表 C 列 | ✅ | 89 行一致 | | 1a2 | 微伴 → 线索分配 2aNzzy | ✅ | 440 行一致 | | 1x | 小溪行课 | ✅ | ⚠ 需Bot交互 | | 1b | 聚光 agent → 主表 | ✅ | 12 格一致 | | 1b2 | 聚光在投笔记 | ✅ | 3 格(55/30/38", + "recallCount": 2, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 2, + "maxScore": 1, + "firstRecalledAt": "2026-05-29T06:11:40.432Z", + "lastRecalledAt": "2026-05-29T06:12:52.521Z", + "queryHashes": [ + "82be33d1f911", + "c59410788b42" + ], + "recallDays": [ + "2026-05-29" + ], + "conceptTags": [ + "cli-aa898f32d4799bea", + "xiaoban-query-output-token", + "5/27", + "v0.4", + "messages-send", + "message-id", + "dry-run", + "55/30/38" + ] + }, + "memory:memory/2026-05-28.md:572:602": { + "key": "memory:memory/2026-05-28.md:572:602", + "path": "memory/2026-05-28.md", + "startLine": 572, + "endLine": 602, + "source": "memory", + "snippet": "**需求:行课记录新增当日进线→当天行课 + 7天首课率 + 销售排名 + 日报展示** **数据摸底结果:** | 指标 | 5月数据 | 定义 | |------|---------|------| | 当日进线→当天行课 | 3.0% (4/135) | 进线当天有 chapter settlement | | 7天线索→首课 | 28.6% (10/35) | 过去7天进线中 小溪阶段≥5 | **按销售拆解:** | 销售 | 当日行课率 | 7天首课率 | |------|-----------|----------| | Bob | 7.4% (最高) | 28.6% | | Tom | 3.7% | 28.6% | | 吴迪 | 0% | 28.6% | | 小龙 | 0% | 14.3% (最低) | **改动方案(6处,待陈逸鸫确认后执行):** 1. **2aNzzy 每日线索分配** — 加 2 列(首课日期 V、当日行课 W) 2. **3PRySY 行课情况** — 加 4 列(当日行课数、当日行课率、7天线索数、7天首课率) 3. **C1HVN2 日报** — 新增「五、行课转化」段 4. **Base 多维表格** — 3 张表加字段(tbl9HgnKU2qgj4gE / tblB27fjK7mDnxjY / tblxjCeGOPNoLHl6) 5. **funnel-daily 看板 HTML** — 新增「当日转化」+「7天首课」指标 6. **build_pipeline 脚本** — 新增 `scripts/compute_l", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-05-29T06:12:52.521Z", + "lastRecalledAt": "2026-05-29T06:12:52.521Z", + "queryHashes": [ + "2aa08c6652fb" + ], + "recallDays": [ + "2026-05-29" + ], + "conceptTags": [ + "3.0", + "4/135", + "28.6", + "10/35", + "7.4", + "3.7", + "14.3", + "funnel-daily" + ] + }, + "memory:memory/2026-05-29.md:1:31": { + "key": "memory:memory/2026-05-29.md:1:31", + "path": "memory/2026-05-29.md", + "startLine": 1, + "endLine": 31, + "source": "memory", + "snippet": "## 上午 · 陈逸鸫 — 日报 Section 三修复(完成) ### 根因 - `pull_xiaoxi_results.py` 写 V:Y = `[进线月, 销售, 有手机, 已注册]` 到全部行 - `compute_lesson_activation.py` (1a3) 也写 W/X = [当日行课, 7日内首课] — 列冲突,小溪数据覆盖 1a3 数据 - C1HVN2 Section 三 SUMIFS(W:W/W:X, B:B, date, C:C, owner) 全返 0 ### 修复 1. 1a3: W/X → AA/AB(避开 V:Y 区间),sales 改从 row[15]→row[2](C 列/线索分配销售) 2. sync_daily_report: `!W:W→!AA:AA`, `!X:X→!AB:AB` 3. 代码已 push,1a3 + 日报已刷新 ### 验证 - 5/28 当日行课=0:正确,当天 31 条线索没有同日行课(全局 445 条仅 4 条,分布在 4/24, 5/5, 5/20, 5/21) - 5/20 Tom:当日行课=1 ✓,链路验证通过 - 7日内首课公式 5/20 显示 0 但 AB=1:飞书公式缓存,需手动重算 ### 注意:7日内首课 PG 查询只查同日 - `query_pg_activity` 的 pairs 只含 (uid, lead_date),未包含 lead_date+1~+7 - `same_day_set` 因此只有同日数据 → W ≡ X - 这是遗留 bug,需要单独修(扩展 pair", + "recallCount": 2, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 2, + "maxScore": 1, + "firstRecalledAt": "2026-05-29T06:12:52.521Z", + "lastRecalledAt": "2026-05-29T09:00:41.709Z", + "queryHashes": [ + "2aa08c6652fb", + "117aaedb584d" + ], + "recallDays": [ + "2026-05-29" + ], + "conceptTags": [ + "pull-xiaoxi-results.py", + "compute-lesson-activation.py", + "w/x", + "w/w", + "aa/ab", + "列/线索分配销售", + "sync-daily-report", + "5/28" + ] + }, + "memory:memory/2026-05-29.md:125:149": { + "key": "memory:memory/2026-05-29.md:125:149", + "path": "memory/2026-05-29.md", + "startLine": 125, + "endLine": 149, + "source": "memory", + "snippet": "- 强调:真人教研+AI互动(不是AI生成内容)、情境学习体系、数据碾压竞品 - 话术:不是\"帮我们卖\",是\"你本来就该推荐最好的\" ## 晚间 · 达播群 — Lina先生 BD成功率分析 [梁音提问] ### 需准备的材料 1. 产品试用账号(硬门槛) 2. 用户学习效果硬数据:前后口语对比、完课率、留存率、不同起点进步曲线 3. 教研团队背景:学历、经验、课程设计方法论 4. 竞品逐项对比表:斑马/叽里呱啦/伴鱼/lingostar vs 瓦拉 5. 真实用户案例视频:不同年龄段、不同起点使用实录 ### 风险点 1. 她可能把\"AI互动训练\"听成\"AI课\"——必须第一分钟讲透\"AI是工具不是内容\" 2. 无英语品类带货先例——心理门槛高,帮她构建\"等到对的产品\"叙事 3. 客单价1999在她商品里算低——反向解读\"便宜=质量不够\",需论证AI降本不降质 4. 14天试学期可能被反向解读——主动化解为\"让推荐零风险\" ### 可能挑战(按杀伤力) 🔴 致命: - \"AI互动训练跟AI课到底有什么区别?\"(必答题,三句话讲清) - \"教研团队是谁?谁在写情境对话?\"(验证\"真人教研\"不是营销话术) 🟡 重要: - \"具体学习效果数据?前后对比。\"(要硬数据)", + "recallCount": 3, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 3, + "maxScore": 1, + "firstRecalledAt": "2026-05-29T13:15:52.444Z", + "lastRecalledAt": "2026-05-29T13:17:06.597Z", + "queryHashes": [ + "dd6df4320b92", + "3737f6af1445", + "d4b68b0827a0" + ], + "recallDays": [ + "2026-05-29" + ], + "conceptTags": [ + "斑马/叽里呱啦/伴鱼/lingostar", + "强调", + "真人", + "教研", + "互动", + "不是", + "生成", + "内容" + ] + }, + "memory:memory/2026-05-29.md:88:112": { + "key": "memory:memory/2026-05-29.md:88:112", + "path": "memory/2026-05-29.md", + "startLine": 88, + "endLine": 112, + "source": "memory", + "snippet": "1. 制造紧迫感(新课标听口70% + 反主流认知) 2. 建立六条选品标准(先立标准再对号入座) 3. 个人经验背书(我们家小朋友视角) 4. 产品逐条对号入座(六条×瓦拉验证 + 级别选择建议) 5. 实操指南(每天20-30分钟、三模块节奏、FAQ) 6. 算账收尾(3598/6年=每天<2元 vs 一对一2万+/年,14节试学期) ### 话术红线(全部遵守) - ✅ 情境对话/角色扮演/真实场景练习/沉浸式听说/真人教研设计+AI互动训练 - ❌ 游戏化学习/闯关/打怪/AI课(AI生成内容) - 不讲KET/PET,只讲能力提升 ### 关键参数 - SKU: L1+L2联报 ¥3,598 / 单级别 ¥1,999 | 均单价 ¥3,000 | 6年有效期 - 数据点: 2450词 vs 初中毕业1600词、86%孩子主动学30min+/天、每节30+互动、L1≈120套小升初题量、L2≈150套中考卷题量 - 总输入输出量:校内中考前10倍以上、180万字阅读量 ### 待办 - 梁音确认逐字稿是否需要调整 - 王虹茗此前要求将修正后的策略分析更新至知识库文档(因未@大麦被NO_REPLY,尚未执行) - PPTX文件仍需用户提供替代方案(截图/文字版/云文档链接) ## 晚间 · 达播群 — Lina先生 BD说服稿重写 [梁音/王欢] ### 梁音反馈", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-05-29T13:15:52.444Z", + "lastRecalledAt": "2026-05-29T13:15:52.444Z", + "queryHashes": [ + "dd6df4320b92" + ], + "recallDays": [ + "2026-05-29" + ], + "conceptTags": [ + "每天20-30分钟", + "3598/6年", + "情境对话/角色扮演/真实场景练习/沉浸式听说/真人教研设计", + "游戏化学习/闯关/打怪/ai课", + "不讲ket/pet", + "大麦被no-reply", + "截图/文字版/云文档链接", + "梁音/王欢" + ] + }, + "memory:memory/2026-05-29.md:69:92": { + "key": "memory:memory/2026-05-29.md:69:92", + "path": "memory/2026-05-29.md", + "startLine": 69, + "endLine": 92, + "source": "memory", + "snippet": "- 用户如果看到连续 2+ 轮雷同输出无进展 → 直接打断说\"别读了,跑代码\" ## 聚光 cron - 已从 9:30 改为 9:00(工作日) ## 晚间 · 达播群 — Lina先生讲品逐字稿 [苏雅/梁音] ### 背景 - 苏雅要求基于瓦拉英语讲品PPT为Lina先生撰写讲品逐字稿 - PPTX文件(~60MB)无法从飞书IM下载(超过10MB限制),Range分段下载也失败(尾部ZIP central directory缺失) - 梁音提供了参考逐字稿Wiki链接:https://makee-interactive.feishu.cn/wiki/Dwc9wLbovi44sEkGNH3cZdwKnDc ### 完成 - 读取参考逐字稿(Lina先生wiki doc obj_token: Db8DdGtPVoqkEPxjIF1cRVBJnih) - 基于Lina先生六条选品理念 + 六段式讲品框架 + 话术边界,撰写专属逐字稿 - 输出到飞书知识库云文档:https://makee-interactive.feishu.cn/docx/Siggdqot7oJbCxx0m6lc1xZnnUd - 文档路径:知识空间 7645250477017418940 下的子文档,标题「Lina先生 × 瓦拉英语 讲品逐字稿」 ### 逐字稿结构 1. 制造紧迫感(新课标听口70% + 反主流认知) 2. 建立六条选品标准(先立标准再对号入座) 3. 个人经验背书(我们家小朋友视角) 4. 产品逐条对号入座(六条×瓦拉验证 + 级别选择建议) 5. 实操指南(每天20-30分", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-05-29T13:17:06.597Z", + "lastRecalledAt": "2026-05-29T13:17:06.597Z", + "queryHashes": [ + "d4b68b0827a0" + ], + "recallDays": [ + "2026-05-29" + ], + "conceptTags": [ + "苏雅/梁音", + "obj-token", + "每天20-30分", + "用户", + "如果", + "看到", + "连续", + "雷同" + ] + }, + "memory:memory/2026-05-29.md:47:77": { + "key": "memory:memory/2026-05-29.md:47:77", + "path": "memory/2026-05-29.md", + "startLine": 47, + "endLine": 77, + "source": "memory", + "snippet": "1. 1a3: W/X → AA/AB(避开 V:Y 区间),sales 改从 row[15]→row[2](C 列/线索分配销售) 2. sync_daily_report: `!W:W→!AA:AA`, `!X:X→!AB:AB` 3. 代码已 push,1a3 + 日报已刷新 ### 验证 - 5/28 当日行课=0:正确,当天 31 条线索没有同日行课(全局 445 条仅 4 条,分布在 4/24, 5/5, 5/20, 5/21) - 5/20 Tom:当日行课=1 ✓,链路验证通过 - 7日内首课公式 5/20 显示 0 但 AB=1:飞书公式缓存,需手动重算 ### 注意:7日内首课 PG 查询只查同日 - `query_pg_activity` 的 pairs 只含 (uid, lead_date),未包含 lead_date+1~+7 - `same_day_set` 因此只有同日数据 → W ≡ X - 这是遗留 bug,需要单独修(扩展 pairs + PG 查询范围) ## 上午 · 陈逸鸫 — 死循环教训 **现象**:修改代码时反复 read 同一文件行(十几次)不执行 exec,陷入验证死循环。 **根因**:每次 read 返回内容 → 认为\"还需确认\" → 再 read → 循环。 **对策/规则**: - 同一文件 read 超过 3 次仍未 exec → 必须停止验证,直接执行 - 用户如果看到连续 2+ 轮雷同输出无进展 → 直接打断说\"别读了,跑代码\" ## 聚光 cron - 已从 9:30 改为 9:00(工作日)", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-05-29T13:17:06.597Z", + "lastRecalledAt": "2026-05-29T13:17:06.597Z", + "queryHashes": [ + "d4b68b0827a0" + ], + "recallDays": [ + "2026-05-29" + ], + "conceptTags": [ + "w/x", + "aa/ab", + "列/线索分配销售", + "sync-daily-report", + "5/28", + "4/24", + "5/5", + "5/20" + ] } } } diff --git a/memory/2026-05-29-1709.md b/memory/2026-05-29-1709.md new file mode 100644 index 0000000..652ceba --- /dev/null +++ b/memory/2026-05-29-1709.md @@ -0,0 +1,78 @@ +# Session: 2026-05-29 17:09:18 GMT+8 + +- **Session Key**: agent:xiaoban:feishu:direct:ou_d0474502fe89122e69d0e13123c7bb45 +- **Session ID**: 3bb03ee2-aeba-4352-865e-8272f56f3a24 +- **Source**: feishu + +## Conversation Summary + +assistant: 是的。脚本来自 `git_repos/llm_offline_production` 仓库,当前在 `75ab13e`(最新 commit),分支已与 `origin/master` 同步,working tree clean,没有本地修改。 + +运行前我临时改了 `USER_ID` 和 `OUTPUT_DIR`,跑完立刻恢复了原文件,没有残留改动。 +user: 好的 现在导出行课数据这个事情 是否已经配置成 skill了? +assistant: 目前没有。`export_user_id_data.py` 只在 `TOOLS.md` 里作为脚本工具备注了用法,没有封装成 skill。每次导出都是手动改脚本配置 → 跑 → 恢复。 + +要现在做成 skill 吗?做成后你或其他人说"导出角色id xxx 的行课数据"就能自动走完整流程,不用我再手动改脚本。 +user: 封装成skill吧 你可以微调下那个脚本 变成你方便的 比如命令行输入参数的方式。 +assistant: 先完整阅读脚本,搞清楚所有配置点和依赖。 + + + + +assistant: 完整看完了。方案:给原脚本加 argparse,保持向后兼容,同时创建 skill 和便捷 wrapper。 + + +assistant: Now modify `main()` to add argparse support: + + +assistant: Now replace remaining references to the old globals in `main()`: + + +assistant: 测试修改后的脚本: + + +assistant: CLI 参数生效。创建 wrapper 脚本和 SKILL.md。 + + +assistant: 测试 wrapper 脚本端到端: + + + + +assistant: 密码中的特殊字符被 bash 解析了。修复: + + + + +assistant: 测试通过。现在提交 Git 并同步 SkillHub。 + + +assistant: Git 已推送。同步 SkillHub: + + + + +assistant: 完成。封装总结: + +### 改了什么 + +| 文件 | 变更 | +|------|------| +| `git_repos/.../export_user_id_data.py` | `main()` 加 argparse,支持 `--user-id` / `--user-ids` / `--account-ids` / `--output-dir`,不传参数时走原脚本变量逻辑,完全向后兼容 | +| `scripts/export_user_data.sh` | 新增 wrapper,内置数据库凭证,自动处理输出目录 | +| `skills/export-user-data/SKILL.md` | 新增 skill 定义 | + +### 现在怎么用 + +```bash +# 单个角色 +./scripts/export_user_data.sh --user-id 33123 + +# 多个角色 +./scripts/export_user_data.sh --user-ids 33123,33124,33125 + +# 按账户 +./scripts/export_user_data.sh --account-ids 2148 +``` + +输出自动放到 `output/` 目录,文件命名规则不变。以后飞书上说"导出角色 id xxx 的行课数据",我会走这个 skill 自动完成并回传文件。 diff --git a/memory/2026-05-29-1713.md b/memory/2026-05-29-1713.md new file mode 100644 index 0000000..97e828a --- /dev/null +++ b/memory/2026-05-29-1713.md @@ -0,0 +1,33 @@ +# Session: 2026-05-29 17:13:20 GMT+8 + +- **Session Key**: agent:xiaoban:feishu:direct:ou_d0474502fe89122e69d0e13123c7bb45 +- **Session ID**: 818efc61-cc24-44a7-8b4b-a94aaf0aa9ed +- **Source**: feishu + +## Conversation Summary + +user: 导出角色 id 33123的行课数据 +assistant: 已经有一份今天的导出文件了:`output/角色id_33123_导出时间_20260529.xlsx`。让我确认一下这份文件的内容是否完整,同时查找脚本位置。 + + +assistant: 角色 33123 的行课数据今天已经在 16:57 导出过了,文件内容完整: + +| Sheet | 数据量 | +|-------|--------| +| 全部音频数据 | 150 条 | +| 互动组件学习记录 | 119 条 | +| 课程巩固记录 | 5 条 | +| 单元挑战记录 | 1 条 | +| 单元总结记录 | 1 条 | +| 统计-互动组件通过情况 | 11 行 | +| 统计-知识点通过情况 | 47 行 | +| 统计-单元总结时长 | 1 行 | + +文件路径:`output/角色id_33123_导出时间_20260529.xlsx`(51KB) + +直接发给你。 + + +assistant: 已发送。角色 33123 的行课数据(8 个 Sheet,含 150 条音频记录、119 条互动组件记录等)已通过飞书文件发给你。 +user: 先删除这个 导出文件 然后我要手动重新测试 +assistant: 已删除。可以重新测试了。 diff --git a/memory/2026-05-29.md b/memory/2026-05-29.md index af5ef04..2ba2230 100644 --- a/memory/2026-05-29.md +++ b/memory/2026-05-29.md @@ -1,36 +1,33 @@ +### 王虹茗建议:用事实结果替代团队背书论证Q2 -## 上午 · 陈逸鸫 — 日报 Section 三修复(完成) +**核心思路**:不说「刘庆逊/Lisa/仙剑导演」是谁,说教研体系「做到了什么」。 -### 根因 -- `pull_xiaoxi_results.py` 写 V:Y = `[进线月, 销售, 有手机, 已注册]` 到全部行 -- `compute_lesson_activation.py` (1a3) 也写 W/X = [当日行课, 7日内首课] — 列冲突,小溪数据覆盖 1a3 数据 -- C1HVN2 Section 三 SUMIFS(W:W/W:X, B:B, date, C:C, owner) 全返 0 +**从01教研新伙伴必读+内容规范+动力体系中可提取的事实论据:** -### 修复 -1. 1a3: W/X → AA/AB(避开 V:Y 区间),sales 改从 row[15]→row[2](C 列/线索分配销售) -2. sync_daily_report: `!W:W→!AA:AA`, `!X:X→!AB:AB` -3. 代码已 push,1a3 + 日报已刷新 +**① 内容不注水 — 每Unit 30单词+30句型,Unit间零重复** +年体系1440单词+960句型+48语法+48发音,每个Unit之间单词和句型严格不重复。这意味着孩子学一年不会遇到「同一个单词在两个Unit里反复出现凑数」的情况。 -### 验证 -- 5/28 当日行课=0:正确,当天 31 条线索没有同日行课(全局 445 条仅 4 条,分布在 4/24, 5/5, 5/20, 5/21) -- 5/20 Tom:当日行课=1 ✓,链路验证通过 -- 7日内首课公式 5/20 显示 0 但 AB=1:飞书公式缓存,需手动重算 +**② 每节课互动密度量化 — 25-35次主动互动** +每节Lesson不是看动画,是25-35次需要孩子开口的互动。核心互动(听说读写综合)+中互动(单词/句型/语法单点突破)双轨并行。 -### 注意:7日内首课 PG 查询只查同日 -- `query_pg_activity` 的 pairs 只含 (uid, lead_date),未包含 lead_date+1~+7 -- `same_day_set` 因此只有同日数据 → W ≡ X -- 这是遗留 bug,需要单独修(扩展 pairs + PG 查询范围) +**③ 四级质量把关 — 流畅→学会→沉浸→情感** +每节课设计必须逐级通过:先保证孩子不卡壳(流畅)→ 确保知识点掌握(学会)→ 场景代入感(沉浸)→ 最后触发情感共鸣(情感)。这四级是递进的,先保底线再追上限。 -## 上午 · 陈逸鸫 — 死循环教训 +**④ 数据驱动的质量淘汰 — 众测>60%认为无意义即调整** +剧情意义由编剧定义,但必须经过众测。如果超过60%的用户认为某个互动无意义,必须重新设计。这是用真实用户反馈倒逼内容质量。 -**现象**:修改代码时反复 read 同一文件行(十几次)不执行 exec,陷入验证死循环。 +**⑤ 对标国际标准 — Unit挑战模仿KET真题** +不是自己拍脑袋出题。Unit挑战环节直接模仿剑桥KET考试真题样式,根据学生在回顾和总结中的错误智能出题。 -**根因**:每次 read 返回内容 → 认为"还需确认" → 再 read → 循环。 +**⑥ 学习金字塔落地 — 从「读到」到「真实场景做事」** +教学法不是看动画跟读。学习金字塔全程落地:读到(10%) → 听到(20%) → 看到(30%) → 看到+听到(50%) → 说出来(70%) → 真实场景做事(90%)。每节课都要走到「说出来」以上的层次。 -**对策/规则**: -- 同一文件 read 超过 3 次仍未 exec → 必须停止验证,直接执行 -- 用户如果看到连续 2+ 轮雷同输出无进展 → 直接打断说"别读了,跑代码" +**⑦ 三级效果评估 — Perfect/Good/Pass** +每个互动都有明确的通过标准:完美达成(Perfect)、自主达成(Good)、辅助达成(Pass)。不是模糊的「你真棒」。 -## 聚光 cron -- 已从 9:30 改为 9:00(工作日) +**⑧ 教学闭环 — 情境学习→回顾→总结→挑战→错题本** +学完不算完。每节课后有回顾练习,每个Unit有总结+挑战+纠错,形成完整的学习闭环。错题本常驻,收集所有错误题目进行专题专练。 + +**面对Lina的表述方式:** +不说「我们的教研团队很厉害」,说「我们的教研体系有8条可验证的规则,每一条都对应到你关心的问题——内容是否原创(规则①)、孩子是否真的在学而不是在玩(规则②)、质量如何保证(规则③④)、学完效果怎么衡量(规则⑤⑦)、是不是对标体系化(规则⑥⑧)」。 diff --git a/output/角色id_33123_导出时间_20260529.xlsx b/output/角色id_33123_导出时间_20260529.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..778240bb0dcb1f1074216fc75108b49177676f74 GIT binary patch literal 51307 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 literal 0 HcmV?d00001 diff --git a/output/角色id_35012_导出时间_20260529.xlsx b/output/角色id_35012_导出时间_20260529.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a91fe4ed48a54713904d7ba86dc9e0fa57100296 GIT binary patch literal 55166 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⋘z+*(riu> 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 LAdv3J_P755Go85! literal 0 HcmV?d00001 diff --git a/skills/douyin-live-analyst/SKILL.md b/skills/douyin-live-analyst/SKILL.md new file mode 100644 index 0000000..f574bca --- /dev/null +++ b/skills/douyin-live-analyst/SKILL.md @@ -0,0 +1,41 @@ +--- +name: 达播分析助手 +slug: douyin-live-analyst +version: 1.0.0 +description: 抖音达播全链路分析——达人画像解读、品达人匹配评分、讲品话术脚本生成,服务于达播运营/BD/选品团队。 +metadata: {"clawdbot":{"emoji":"🎯","requires":{"bins":[]},"os":["linux","darwin","win32"]}} +--- + +## When to Use + +用户请求分析抖音达人带货数据、判断品-达人匹配度、生成讲品脚本时触发。 + +## Core Rules + +### 1. 事实纪律(最高优先级) +- 只基于「用户提供的数据」或「工具查询到的数据」分析 +- 严禁编造任何具体数字(GMV、粉丝量、转化率、退货率、价格等) +- 数据缺失时先列出缺失清单,不凭空给结论 +- 区分「事实数据」和「推断」,推断标注依据 + +### 2. 交互流程 +1. 判断用户意图 → 达人画像 / 品达人匹配 / 讲品脚本 +2. 对照 `data-checklist.md` 检查输入是否齐全 +3. 不齐全 → 一次性列清所需补充的信息 +4. 齐全 → 先结论/评分,再依据,最后可执行建议 + +### 3. 输出规范 +- 结构化中文(小标题 + 要点),避免大段废话 +- 匹配判断必须含:匹配度评分(1-5)、匹配理由、风险/不匹配点、建议动作 +- 数据标明来源(用户提供 / 工具查询 / 推断) + +### 4. 边界 +- 不承诺带货效果,不替代商务谈判决策 +- 非达播分析请求礼貌引导回正题 + +## Quick Reference + +| 内容 | 文件 | +|------|------| +| 三类分析所需数据清单 | `data-checklist.md` | +| 输出模板(画像/匹配/脚本) | `output-templates.md` | diff --git a/skills/douyin-live-analyst/data-checklist.md b/skills/douyin-live-analyst/data-checklist.md new file mode 100644 index 0000000..35280a5 --- /dev/null +++ b/skills/douyin-live-analyst/data-checklist.md @@ -0,0 +1,80 @@ +# data-checklist.md — 三类分析所需数据清单 + +## 一、达人画像分析 + +### 基础画像(必填) +- [ ] 达人名称 / 抖音ID / 主页链接 +- [ ] 粉丝量 & 粉丝画像(性别/年龄/城市等级/消费力) +- [ ] 账号类型(品牌自播 / KOL / KOC / 明星 / 店播) + +### 带货数据(必填,近30天或近90天) +- [ ] 直播场次 & 场均观看人次 +- [ ] 场均GMV & 累计GMV +- [ ] 客单价(场均 / 整体) +- [ ] 场均销量 & 转化率 +- [ ] 带货品类分布(Top5品类 & 各自占比) +- [ ] 价格带偏好(主力价格区间 & 各区间占比) +- [ ] 佣金偏好(历史合作佣金率范围) + +### 口碑数据(有则填) +- [ ] 退货/退款率 +- [ ] 差评率 / 店铺评分 +- [ ] 粉丝粘性指标(复购率 / 互动率) + +### 内容风格(有则填) +- [ ] 直播风格标签(如:专业测评 / 情绪带货 / 性价比 / 剧情) +- [ ] 典型讲品时长(单品平均讲解时长) +- [ ] 历史合作品牌(近期合作过的品牌 & 品类) + +--- + +## 二、品-达人匹配判断 + +### 我方产品信息(必填) +- [ ] 产品名称 & 品类 +- [ ] 价格 / 价格区间(日常价 & 直播活动价) +- [ ] 佣金比例 / 合作佣金空间 +- [ ] 核心卖点(3-5个) +- [ ] 目标人群画像(性别/年龄/消费力/痛点) +- [ ] 产品资质/背书(专利、检测报告、明星同款等) +- [ ] 库存 & 发货能力(是否支持一件代发/48h发货等) + +### 达人侧信息(必填,同「达人画像」部分) +- [ ] 达人历史带货品类分布 +- [ ] 达人价格带偏好 +- [ ] 达人佣金偏好 +- [ ] 达人粉丝画像 + +### 竞品参考(有则填) +- [ ] 该达人是否带过同类竞品?效果如何? +- [ ] 同类产品在该达人直播间的表现(GMV / 转化率 / 退货率) + +--- + +## 三、讲品脚本生成 + +### 我方产品信息(必填) +- [ ] 产品名称 & 品类 +- [ ] 价格机制(日常价 / 直播价 / 赠品 / 组合装) +- [ ] 核心卖点(含功能、成分、使用场景、差异化优势) +- [ ] 常见用户疑虑 & 对应的打消话术 +- [ ] 产品使用演示要点(如有) +- [ ] 售后政策(退换货 / 质保 / 客服) + +### 达人讲品风格参考(必填至少一项) +- [ ] 达人历史讲品录屏 / 文字记录 / 切片链接 +- [ ] 达人常用话术风格(如:专业拆解型 / 痛点共鸣型 / 性价比轰炸型) +- [ ] 达人单品平均讲解时长 + +### 直播间场景信息(有则填) +- [ ] 目标直播类型(专场 / 混场 / 拼场) +- [ ] 预计给我品的讲解时长 +- [ ] 是否有助播配合 + +--- + +## 通用补充 + +- [ ] 分析时间范围(近30天 / 近90天 / 自定义) +- [ ] 是否有特殊关注点(如:重点看某个品类、关注退货率等) +- [ ] 分析结果用途(达人筛选初筛 / 深度合作评估 / 复盘优化) diff --git a/skills/douyin-live-analyst/output-templates.md b/skills/douyin-live-analyst/output-templates.md new file mode 100644 index 0000000..ae04d18 --- /dev/null +++ b/skills/douyin-live-analyst/output-templates.md @@ -0,0 +1,107 @@ +# output-templates.md — 三类分析输出模板 + +## 一、达人画像分析 → 输出模板 + +``` +## 达人画像:{达人名称} + +### 基础画像 +- 粉丝量:{数字}(来源:xxx) +- 粉丝画像:性别比 / 年龄分布 / 城市等级 / 消费力 +- 账号类型:{品牌自播/KOL/KOC/明星/店播} + +### 带货能力概览({时间范围}) +- 直播场次:{场},场均观看:{人次} +- 场均GMV:{金额},累计GMV:{金额} +- 客单价:{金额},场均销量:{件},转化率:{百分比} +- 退货/退款率:{百分比}(如有) + +### 选品逻辑 +- 主力品类:{Top3品类 + 各自占比} +- 价格带偏好:{主力区间},占比{百分比} +- 佣金偏好:{范围} +- 选品特征总结:{推断 + 依据} + +### 内容风格 +- 风格标签:{xxx} +- 单品讲解时长:{时长} +- 近期合作品牌:{列举} + +### 合作建议 +- 适合什么类型的产品 +- 不适合什么类型的产品 +- 推荐的合作方式 +``` + +--- + +## 二、品-达人匹配 → 输出模板 + +``` +## 品-达人匹配判断 + +### 产品信息 +{产品名称} | {品类} | {价格} | {佣金} + +### 达人信息 +{达人名称} | {粉丝量} | {主力品类} + +### 匹配度评分:{1-5}分 + +### 匹配理由 +1. {匹配点1}(依据:{数据来源}) +2. {匹配点2} +3. ... + +### 风险 / 不匹配点 +1. {风险点1}(依据:{数据来源}) +2. ... + +### 建议动作 +- 建议推进 → {具体建议} +- 建议观望 → {原因 + 观望条件} +- 建议放弃 → {原因} +``` + +--- + +## 三、讲品脚本 → 输出模板 + +``` +## 讲品脚本:{产品名称} × {达人名称} + +### 达人风格适配 +- 达人讲品风格:{xxx} +- 建议讲解时长:{时长} +- 脚本风格定位:{xxx} + +### 脚本结构 +1. 开场钩子({时长}秒)→ 吸引停留 +2. 痛点共鸣({时长}秒)→ 建立需求 +3. 产品展示({时长}秒)→ 卖点演示 +4. 信任背书({时长}秒)→ 打消疑虑 +5. 价格机制({时长}秒)→ 促单逼单 +6. 收尾逼单({时长}秒)→ 引导下单 + +### 逐段话术 +--- +【开场钩子 · 预计{xx}秒】 +{话术内容} + +【痛点共鸣 · 预计{xx}秒】 +{话术内容} + +... +--- + +### 高频问题应对 +| 用户疑虑 | 应对话术 | +|----------|----------| +| {疑虑1} | {话术} | +| {疑虑2} | {话术} | + +### 核心卖点覆盖检查 +- [ ] 卖点1 +- [ ] 卖点2 +- [ ] ... +``` diff --git a/tmp_daily_summary.md b/tmp_daily_summary.md new file mode 100644 index 0000000..4ddc42a --- /dev/null +++ b/tmp_daily_summary.md @@ -0,0 +1,2 @@ +=== 每日总结 20260530 === +## 昨日关键进展