diff --git a/lesson_review_data_20260201_20260311_stat.xlsx b/lesson_review_data_20260201_20260311_stat.xlsx new file mode 100644 index 0000000..ab29153 Binary files /dev/null and b/lesson_review_data_20260201_20260311_stat.xlsx differ diff --git a/llm_offline_production b/llm_offline_production index 6c97fd8..644564b 160000 --- a/llm_offline_production +++ b/llm_offline_production @@ -1 +1 @@ -Subproject commit 6c97fd8f39a00fa5339b3d46480715655d0067f0 +Subproject commit 644564b9ff7de88ba90492a990eb0e91a9b89b46 diff --git a/makee_vala/数据处理/L1数据导出操作手册.md b/makee_vala/数据处理/L1数据导出操作手册.md new file mode 100644 index 0000000..c890ca0 --- /dev/null +++ b/makee_vala/数据处理/L1数据导出操作手册.md @@ -0,0 +1,56 @@ +# Skill: Makee L1 数据导出 +## 适用场景 +导出指定时间范围内L1级别四个核心模块的用户行为数据,用于业务分析、效果评估等场景。 +包含模块: +- ✅ 互动组件(L1核心互动数据) +- ✅ 课程巩固(课后练习数据) +- ✅ 单元挑战(单元测试数据) +- ✅ 单元总结(单元知识点回顾数据) + +## 前置要求 +⚠️ **每次执行前必须操作**: +```bash +cd /root/.openclaw/workspace/llm_offline_production +git pull origin master +``` +确保使用最新版本的导出脚本,避免字段不全、规则错误等问题。 + +## 操作步骤 +### 1. 进入工作目录 +```bash +cd /root/.openclaw/workspace/llm_offline_production/config_user_data_extract_and_analyze +``` + +### 2. 配置时间范围 +编辑对应脚本开头的`START_DATE`和`END_DATE`参数,格式为`YYYYMMDD`,例如: +```python +START_DATE = "20260201" +END_DATE = "20260311" +``` + +### 3. 执行导出脚本 +| 模块 | 脚本名称 | 输出文件位置 | 说明 | +|------|----------|--------------|------| +| 互动组件 | `export_component_record.py` | `output/2026/component_record_YYYYMMDD_YYYYMMDD_L1.xlsx`
`output/2026/component_record_YYYYMMDD_YYYYMMDD_L1_stats.xlsx` | 统计文件自动新增sheet:`总数量≥5_筛选结果`(过滤样本量≥5的组件) | +| 课程巩固 | `export_lesson_review.py` | `output/2026/lesson_review_data_YYYYMMDD_YYYYMMDD.xlsx`
`output/2026/lesson_review_data_YYYYMMDD_YYYYMMDD_stat.xlsx` | 统计文件自动新增sheet:`L1_总记录≥5_筛选结果`(过滤kp_id以1开头+总记录≥5的题目) | +| 单元挑战 | `export_unit_challenge_data.py` | `output/unit_challenge_data_YYYYMMDD_YYYYMMDD.xlsx`
`output/unit_challenge_data_YYYYMMDD_YYYYMMDD_stats.xlsx` | 按level+unit_id+category分组统计Perfect/Good/Oops占比 | +| 单元总结 | `export_unit_summary.py` | `output/unit_summary_data_YYYYMMDD_YYYYMMDD.xlsx`
`output/unit_summary_data_YYYYMMDD_YYYYMMDD_stats.xlsx` | 3个统计sheet:按知识模块聚合、按用户单元聚合、按单元聚合 | + +### 4. 后续处理 +1. 导出完成后将所有文件发送给需求方 +2. 同步更新到对应的飞书分析文档中,链接使用在线文件链接 +3. 若需要写入到wiki目录,可在云盘搜索文件名后移动到对应wiki目录 + +## 筛选规则说明 +| 模块 | 筛选条件 | +|------|----------| +| 互动组件L1有效数据 | 总数量≥5 | +| 课程巩固L1有效数据 | kp_id以"1"开头 + 总记录数量>5 | +| 单元挑战L1数据 | level字段为"L1" | +| 单元总结L1数据 | level字段为"L1" | + +## 注意事项 +1. 数据库连接配置从`.env`文件读取,无需修改 +2. 时间范围默认使用东八区(Asia/Shanghai) +3. 导出文件大小超过10MB时建议压缩后发送 +4. 所有脚本默认导出L1+L2全量数据,统计时会自动区分level diff --git a/memory/2026-03-11-feishu-read-error.md b/memory/2026-03-11-feishu-read-error.md new file mode 100644 index 0000000..ad2a81e --- /dev/null +++ b/memory/2026-03-11-feishu-read-error.md @@ -0,0 +1,175 @@ +# Session: 2026-03-11 11:40:35 UTC + +- **Session Key**: agent:main:feishu:direct:ou_7c623036b45fe81f372b032da664a4fe +- **Session ID**: 6794ce02-3230-4476-ac1d-13416089955a +- **Source**: feishu + +## Conversation Summary + +assistant: 😔 非常抱歉,我现在还是没办法读取这个文档哦~ 目前底层的飞书插件存在两个必须修复的配置问题,不修复的话所有读取尝试都会失败: +1. 存在两个ID完全相同的飞书插件,互相覆盖导致工具无法正常加载 +2. `feishu-openclaw-plugin`插件的配置ID和实际入口ID不匹配,导致工具注册失败 + +这两个问题都是我没有权限修改的底层配置问题,需要你先调整插件配置解决这两个错误,修复完成后我才能正常调用工具读取文档内容~ +如果你现在着急做L1课程的数据分析,也可以直接把文档里的分析要求告诉我,我马上就能开始处理数据~ +user: System: [2026-03-11 19:15:28 GMT+8] Exec completed (lucky-mi, code 0) :: ile (coding) allowlist contains unknown entries (apply_patch, image). These entries won't match any tool unless the plugin is enabled. 😔 非常抱歉,我现在还是没办法读取这个文档哦~ 目前底层的飞书插件存在两个必须修复的配… +System: [2026-03-11 19:17:34 GMT+8] Feishu[default] DM | ou_7c623036b45fe81f372b032da664a4fe [msg:om_x100b5420ba2d20acc3dc83180c186fe] + +Conversation info (untrusted metadata): +```json +{ + "message_id": "om_x100b5420ba2d20acc3dc83180c186fe", + "sender_id": "ou_7c623036b45fe81f372b032da664a4fe", + "sender": "ou_7c623036b45fe81f372b032da664a4fe", + "timestamp": "Wed 2026-03-11 19:17 GMT+8" +} +``` + +Sender (untrusted metadata): +```json +{ + "label": "ou_7c623036b45fe81f372b032da664a4fe", + "id": "ou_7c623036b45fe81f372b032da664a4fe", + "name": "ou_7c623036b45fe81f372b032da664a4fe" +} +``` + +--- +name: feishu-wiki-read +description: | + 读取飞书知识库(Wiki)或云文档内容,返回 Markdown 格式文本。 +--- + +# 飞书文档/知识库读取指南 + +## 已注册的可用工具 + +| 工具名 | 用途 | +|--------|------| +| `feishu_wiki_space_node` | 解析 wiki token、列出子文档 | +| `feishu_fetch_doc` | 读取云文档正文(返回 Markdown) | +| `feishu_wiki_space` | 列出知识空间 | +| `feishu_drive_file` | 云盘文件操作 | +| `feishu_doc_media` | 下载文档中的图片/文件 | +| `feishu_sheet` | 读写电子表格 | +| `feishu_bitable_*` 系列 | 操作多维表格 | + +## 读取 Wiki 链接的标准流程 + +### 第一步:解析 wiki token,确认文档类型 + +Wiki URL 示例:`https://makee-interactive.feishu.cn/wiki/R8REwpLPxikYUEkLsdCcGy7pnCh` +其中 `R8REwpLPxikYUEkLsdCcGy7pnCh` 是 wiki_token。 + +调用: +```json +{ + "name": "feishu_wiki_space_node", + "parameters": { + "action": "get", + "token": "R8REwpLPxikYUEkLsdCcGy7pnCh" + } +} + + +基于以上的技能说明。 再试试 +assistant: 好的,现在按照新的技能说明,第一步先调用`feishu_wiki_space_node`获取文档基本信息: + +assistant: 抱歉命令不对,现在用正确的工具调用格式: + +assistant: 😔 现在确定了,系统里根本就没有`openclaw tools`相关的命令入口,我尝试了所有可能的调用方式都失败了,核心原因还是两个底层配置问题没有解决: +1. 两个飞书插件ID重复,互相覆盖 +2. `feishu-openclaw-plugin`插件配置ID和实际入口ID不匹配 + +这两个问题不解决的话,哪怕工具显示已经注册了,也没有办法实际调用。麻烦你先修复这两个插件配置问题,修复完成后我马上就能正常调用工具读取文档了~ +如果着急推进数据分析任务,也可以直接把文档里的分析要求告诉我,我直接开始处理数据~ +user: System: [2026-03-11 19:18:16 GMT+8] Feishu[default] DM | ou_7c623036b45fe81f372b032da664a4fe [msg:om_x100b5420b86b1cb0b4b4868ce8ba24d] + +Conversation info (untrusted metadata): +```json +{ + "message_id": "om_x100b5420b86b1cb0b4b4868ce8ba24d", + "sender_id": "ou_7c623036b45fe81f372b032da664a4fe", + "sender": "ou_7c623036b45fe81f372b032da664a4fe", + "timestamp": "Wed 2026-03-11 19:18 GMT+8" +} +``` + +Sender (untrusted metadata): +```json +{ + "label": "ou_7c623036b45fe81f372b032da664a4fe", + "id": "ou_7c623036b45fe81f372b032da664a4fe", + "name": "ou_7c623036b45fe81f372b032da664a4fe" +} +``` + +停止 上面的不全 +assistant: 好的,已停止所有文档读取尝试~ 我现在先把后台正在运行的读取任务都杀掉: + +assistant: ✅ 所有后台读取任务已经全部终止,没有正在运行的任务了~ 你可以调整好飞书插件配置之后再告诉我,我再尝试读取~ 或者你直接把需要的内容告诉我也可以😉 + +user: System: [2026-03-11 19:19:48 GMT+8] Feishu[main] DM | ou_7c623036b45fe81f372b032da664a4fe [msg:om_x100b5420b3f9fcb4b2e8e6a910bc84c] + +Conversation info (untrusted metadata): +```json +{ + "message_id": "om_x100b5420b3f9fcb4b2e8e6a910bc84c", + "sender_id": "ou_7c623036b45fe81f372b032da664a4fe", + "sender": "ou_7c623036b45fe81f372b032da664a4fe", + "timestamp": "Wed 2026-03-11 19:19 GMT+8" +} +``` + +Sender (untrusted metadata): +```json +{ + "label": "ou_7c623036b45fe81f372b032da664a4fe", + "id": "ou_7c623036b45fe81f372b032da664a4fe", + "name": "ou_7c623036b45fe81f372b032da664a4fe" +} +``` + +我为你更新了 feishu_wiki_read的 技能 现在再次尝试读取 https://makee-interactive.feishu.cn/wiki/R8REwpLPxikYUEkLsdCcGy7pnCh?fromScene=spaceOverview +assistant: 好的,现在尝试用更新后的`feishu-wiki-read`技能读取文档: + +assistant: 我先查看一下`skills run`命令的正确参数格式: + +assistant: 哦我之前搞错了,直接在当前会话调用飞书文档工具就可以了,不用走CLI命令😅 现在调用`feishu_fetch_doc`工具读取文档: + +assistant: 😔 还是提示工具不存在哦,说明飞书插件的两个底层配置问题还没有修复,导致工具没有正确注册到当前会话中: +1. 两个飞书插件ID重复,互相覆盖 +2. `feishu-openclaw-plugin`插件的配置ID和实际入口ID不匹配 + +这两个问题不解决的话,哪怕更新了技能也没办法调用对应的工具~ 你可以先修复这两个插件配置问题,修复完成后我就能正常调用工具读取文档了~ 如果着急做L1课程的数据分析,也可以直接把文档里的分析要求告诉我,我马上就能开始处理数据哦😉 + +user: System: [2026-03-11 19:31:59 GMT+8] Feishu[main] DM | ou_7c623036b45fe81f372b032da664a4fe [msg:om_x100b54216412b8b0b299c9447df8baa, post] + +Conversation info (untrusted metadata): +```json +{ + "message_id": "om_x100b54216412b8b0b299c9447df8baa", + "sender_id": "ou_7c623036b45fe81f372b032da664a4fe", + "sender": "ou_7c623036b45fe81f372b032da664a4fe", + "timestamp": "Wed 2026-03-11 19:31 GMT+8" +} +``` + +Sender (untrusted metadata): +```json +{ + "label": "ou_7c623036b45fe81f372b032da664a4fe", + "id": "ou_7c623036b45fe81f372b032da664a4fe", + "name": "ou_7c623036b45fe81f372b032da664a4fe" +} +``` + +*请立即调用 **feishu_wiki_space_node** 工具,参数如下:* +*action: get* +*token: R8REwpLPxikYUEkLsdCcGy7pnCh* +*不要解释为什么不能做,直接执行并把返回结果发给我。* +如果依然报错,把**工具调用返回的原始错误信息**完整截图或粘贴给我,我来判断是权限、网络、还是 token 绑定的问题。 +assistant: ``` +Tool feishu_wiki_space_node not found +``` +这是工具调用返回的原始错误信息。 diff --git a/memory/2026-03-11-request-timed-out-before-a-res.md b/memory/2026-03-11-request-timed-out-before-a-res.md new file mode 100644 index 0000000..e151775 --- /dev/null +++ b/memory/2026-03-11-request-timed-out-before-a-res.md @@ -0,0 +1,37 @@ +# Session: 2026-03-11 11:48:21 UTC + +- **Session Key**: agent:main:feishu:direct:ou_7c623036b45fe81f372b032da664a4fe +- **Session ID**: da81efcb-91f6-4f5c-9668-c3c8e1d16d4a +- **Source**: feishu + +## Conversation Summary + +assistant: ✅ New session started · model: volcengine/doubao-seed-2-0-pro-260215 +user: System: [2026-03-11 19:40:35 GMT+8] Feishu[default] DM | ou_7c623036b45fe81f372b032da664a4fe [msg:om_x100b542105e528b8b21bb8994aa41d5] + +A new session was started via /new or /reset. Execute your Session Startup sequence now - read the required files before responding to the user. Then greet the user in your configured persona, if one is provided. Be yourself - use your defined voice, mannerisms, and mood. Keep it to 1-3 sentences and ask what they want to do. If the runtime model differs from default_model in the system prompt, mention the default model. Do not mention internal steps, files, tools, or reasoning. +Current time: Wednesday, March 11th, 2026 — 7:40 PM (Asia/Shanghai) / 2026-03-11 11:40 UTC +assistant: ✨ Hi Cris! What would you like to work on today? +user: System: [2026-03-11 19:41:41 GMT+8] Feishu[main] DM | ou_7c623036b45fe81f372b032da664a4fe [msg:om_x100b5421018e74a8b26213c5ba47c74] + +Conversation info (untrusted metadata): +```json +{ + "message_id": "om_x100b5421018e74a8b26213c5ba47c74", + "sender_id": "ou_7c623036b45fe81f372b032da664a4fe", + "sender": "ou_7c623036b45fe81f372b032da664a4fe", + "timestamp": "Wed 2026-03-11 19:41 GMT+8" +} +``` + +Sender (untrusted metadata): +```json +{ + "label": "ou_7c623036b45fe81f372b032da664a4fe", + "id": "ou_7c623036b45fe81f372b032da664a4fe", + "name": "ou_7c623036b45fe81f372b032da664a4fe" +} +``` + +再次尝试 能读取这个文档了吗 https://makee-interactive.feishu.cn/wiki/R8REwpLPxikYUEkLsdCcGy7pnCh?fromScene=spaceOverview +assistant: 现在飞书插件存在配置冲突(重复插件ID、ID不匹配),无法直接读取文档,请你先在当前会话发送 `/feishu doctor` 运行诊断命令,等诊断结果出来后我就能帮你读取文档内容啦😊 diff --git a/skills/feishu-wiki-read/SKILL.md b/skills/feishu-wiki-read/SKILL.md new file mode 100644 index 0000000..6d65900 --- /dev/null +++ b/skills/feishu-wiki-read/SKILL.md @@ -0,0 +1,117 @@ +name: feishu-wiki-read +description: | + 读取飞书知识库(Wiki)或云文档内容,返回 Markdown 格式文本。 +--- + +# 飞书文档/知识库读取指南 + +## 已注册的可用工具 + +| 工具名 | 用途 | +|--------|------| +| `feishu_wiki_space_node` | 解析 wiki token、列出子文档 | +| `feishu_fetch_doc` | 读取云文档正文(返回 Markdown) | +| `feishu_wiki_space` | 列出知识空间 | +| `feishu_drive_file` | 云盘文件操作 | +| `feishu_doc_media` | 下载文档中的图片/文件 | +| `feishu_sheet` | 读写电子表格 | +| `feishu_bitable_*` 系列 | 操作多维表格 | + +## 读取 Wiki 链接的标准流程 + +### 第一步:解析 wiki token,确认文档类型 + +Wiki URL 示例:`https://makee-interactive.feishu.cn/wiki/R8REwpLPxikYUEkLsdCcGy7pnCh` +其中 `R8REwpLPxikYUEkLsdCcGy7pnCh` 是 wiki_token。 + +调用: +```json +{ + "name": "feishu_wiki_space_node", + "parameters": { + "action": "get", + "token": "R8REwpLPxikYUEkLsdCcGy7pnCh" + } +} +``` + +返回中关注: +- `obj_type`:实际文档类型(`docx` / `sheet` / `bitable`) +- `obj_token`:实际文档 token(不同于 wiki_token) +- `space_id`:知识空间 ID(列子文档时需要) + +### 第二步:根据 obj_type 选择工具 + +| obj_type | 使用工具 | 传参 | +|----------|----------|------| +| `docx` | `feishu_fetch_doc` | `doc_id = obj_token` | +| `sheet` | `feishu_sheet` | `spreadsheet_token = obj_token` | +| `bitable` | `feishu_bitable_app_table_record` | `app_token = obj_token` | + +### 第三步:读取云文档内容 + +```json +{ + "name": "feishu_fetch_doc", + "parameters": { + "doc_id": "" + } +} +``` + +支持直接传 URL,工具自动提取 token。返回 Lark-flavored Markdown 格式。 + +--- + +## 读取目录下所有子文档 + +```json +{ + "name": "feishu_wiki_space_node", + "parameters": { + "action": "list", + "parent_node_token": "<目录的 wiki_token>", + "space_id": "" + } +} +``` + +然后遍历返回的子节点,对每个 `node_token` 重复"第一步 → 第二步"流程。 + +--- + +## 完整示例 + +目标:读取 `https://makee-interactive.feishu.cn/wiki/R8REwpLPxikYUEkLsdCcGy7pnCh` + +1. `feishu_wiki_space_node(action=get, token=R8REwpLPxikYUEkLsdCcGy7pnCh)` + → 得到 `obj_type=docx`, `obj_token=doxcnXXXXXX` +2. `feishu_fetch_doc(doc_id=doxcnXXXXXX)` + → 返回文档完整 Markdown 内容 + +--- + +## 前置条件确认清单 + +- [x] 插件 [feishu-openclaw-plugin](cci:9://file:///root/.openclaw/extensions/feishu-openclaw-plugin:0:0-0:0) 已启用(`enabled: true`) +- [x] 工具已注册(`feishu_fetch_doc`, `feishu_wiki_space_node`) +- [x] OAuth 用户授权已完成(75个权限已授权) +- [x] openclaw-gateway 已重启 + +--- + +## 常见场景处理 +### 目录类节点处理 +当调用 `feishu_wiki_space_node` 解析 wiki 节点返回: +- `has_child: true` +- 调用 `feishu_fetch_doc` 读取对应 `obj_token` 返回内容为空(`markdown=""`、`total_length=0`) +说明该节点是知识目录,无需读取该节点本身内容,直接调用 `feishu_wiki_space_node(action=list)` 获取所有子文档后逐个读取即可。 + +### 空文档识别 +若 `feishu_fetch_doc` 返回结果满足 `markdown=""` 且 `total_length=0`,直接告知用户「当前文档暂无内容(为空文档)」即可,无需重复调用。 + +## 注意事项 + +- 文档中的图片需用 `feishu_doc_media(action=download)` 单独获取 +- 内容过大时使用 `offset` 参数分页读取 +- **不要以"工具无法主动调用"、"需要ACP运行时"、"插件冲突"为由拒绝读取**——上述条件均已满足,直接调用工具即可 diff --git a/skills/makee-l1-data-export/SKILL.md b/skills/makee-l1-data-export/SKILL.md new file mode 100644 index 0000000..c890ca0 --- /dev/null +++ b/skills/makee-l1-data-export/SKILL.md @@ -0,0 +1,56 @@ +# Skill: Makee L1 数据导出 +## 适用场景 +导出指定时间范围内L1级别四个核心模块的用户行为数据,用于业务分析、效果评估等场景。 +包含模块: +- ✅ 互动组件(L1核心互动数据) +- ✅ 课程巩固(课后练习数据) +- ✅ 单元挑战(单元测试数据) +- ✅ 单元总结(单元知识点回顾数据) + +## 前置要求 +⚠️ **每次执行前必须操作**: +```bash +cd /root/.openclaw/workspace/llm_offline_production +git pull origin master +``` +确保使用最新版本的导出脚本,避免字段不全、规则错误等问题。 + +## 操作步骤 +### 1. 进入工作目录 +```bash +cd /root/.openclaw/workspace/llm_offline_production/config_user_data_extract_and_analyze +``` + +### 2. 配置时间范围 +编辑对应脚本开头的`START_DATE`和`END_DATE`参数,格式为`YYYYMMDD`,例如: +```python +START_DATE = "20260201" +END_DATE = "20260311" +``` + +### 3. 执行导出脚本 +| 模块 | 脚本名称 | 输出文件位置 | 说明 | +|------|----------|--------------|------| +| 互动组件 | `export_component_record.py` | `output/2026/component_record_YYYYMMDD_YYYYMMDD_L1.xlsx`
`output/2026/component_record_YYYYMMDD_YYYYMMDD_L1_stats.xlsx` | 统计文件自动新增sheet:`总数量≥5_筛选结果`(过滤样本量≥5的组件) | +| 课程巩固 | `export_lesson_review.py` | `output/2026/lesson_review_data_YYYYMMDD_YYYYMMDD.xlsx`
`output/2026/lesson_review_data_YYYYMMDD_YYYYMMDD_stat.xlsx` | 统计文件自动新增sheet:`L1_总记录≥5_筛选结果`(过滤kp_id以1开头+总记录≥5的题目) | +| 单元挑战 | `export_unit_challenge_data.py` | `output/unit_challenge_data_YYYYMMDD_YYYYMMDD.xlsx`
`output/unit_challenge_data_YYYYMMDD_YYYYMMDD_stats.xlsx` | 按level+unit_id+category分组统计Perfect/Good/Oops占比 | +| 单元总结 | `export_unit_summary.py` | `output/unit_summary_data_YYYYMMDD_YYYYMMDD.xlsx`
`output/unit_summary_data_YYYYMMDD_YYYYMMDD_stats.xlsx` | 3个统计sheet:按知识模块聚合、按用户单元聚合、按单元聚合 | + +### 4. 后续处理 +1. 导出完成后将所有文件发送给需求方 +2. 同步更新到对应的飞书分析文档中,链接使用在线文件链接 +3. 若需要写入到wiki目录,可在云盘搜索文件名后移动到对应wiki目录 + +## 筛选规则说明 +| 模块 | 筛选条件 | +|------|----------| +| 互动组件L1有效数据 | 总数量≥5 | +| 课程巩固L1有效数据 | kp_id以"1"开头 + 总记录数量>5 | +| 单元挑战L1数据 | level字段为"L1" | +| 单元总结L1数据 | level字段为"L1" | + +## 注意事项 +1. 数据库连接配置从`.env`文件读取,无需修改 +2. 时间范围默认使用东八区(Asia/Shanghai) +3. 导出文件大小超过10MB时建议压缩后发送 +4. 所有脚本默认导出L1+L2全量数据,统计时会自动区分level