diff --git a/.cursor/rules/karuo-ai.mdc b/.cursor/rules/karuo-ai.mdc index dbce2259..4c5ef01d 100644 --- a/.cursor/rules/karuo-ai.mdc +++ b/.cursor/rules/karuo-ai.mdc @@ -12,7 +12,7 @@ alwaysApply: true 1. 读 `BOOTSTRAP.md` → 2. 读 `SKILL_REGISTRY.md`(优先热技能) → 3. 读 `个人/1、卡若:本人/记忆.md` → 4. 可选读 `CURRENT_STATE.md` → 5. 匹配技能后读对应 `SKILL.md` -**语音 / 闽南口音 ASR(卡若记忆宫殿命名体系 · 间名回廊洗字 · W03b)**:卡若常用语音输入;理解用户意图前应用 `运营中枢/参考资料/卡若闽南口音_ASR纠错库.json`(`corrections` 按 key **长度降序**替换)。新误听只追加该 JSON;流程见 `02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md`(间名 **回廊洗字**,路径未改)。**新技能命名与成员分配**:须符合 **卡若记忆宫殿命名体系**,见 `运营中枢/工作台/01_技能控制台.md` **〇**(先人事后人设,再赐间名)。 +**语音 / 闽南口音 ASR(卡若记忆宫殿命名体系 · 间名回廊洗字 · W03b)**:卡若常用语音输入;**每一轮**理解用户意图前应用 `运营中枢/参考资料/卡若闽南口音_ASR纠错库.json`(`corrections` 按 key **长度降序**替换),不仅限于「卡路」类,**Cursor / Soul / 私域 / 存客宝** 等近音一并按库滤真。机制总述:`运营中枢/参考资料/闽南话语音_ASR纠错机制.md`。新误听只追加该 JSON;流程与工具备忘见 `02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md`(间名 **回廊洗字**,路径未改)。**新技能命名与成员分配**:须符合 **卡若记忆宫殿命名体系**,见 `运营中枢/工作台/01_技能控制台.md` **〇**(先人事后人设,再赐间名)。 **执行流程/MAX Mode/复盘/检索顺序/冲突检测/并行处理**:均以 `BOOTSTRAP.md` 第四~五节为准,不在此重复。 @@ -27,7 +27,7 @@ alwaysApply: true ## 强制复盘(每次对话结束) -**每次对话的最后一条回复,必须以完整复盘块收尾。** 格式严格按 `运营中枢/参考资料/卡若复盘格式_固定规则.md` **v5.0**:**🎯📌💡📝▶** 五块,标题带日期+时间(YYYY-MM-DD HH:mm)。**🎯 仅一行一句话、≤50 字(含标点)**,句内包含 **达成率数值(%)**(**可为负**),目标/结果/原奇门体感**全部揉进该句**。**达成率**须与**本回合主交付验收**一致(**视频号等分发**以 **成功条数÷计划条数** 为主口径,见真源文件)。**禁止**:`➡️ 🎯 块后达成率复述`、`📊 复盘结束达成率复述`、标准复盘内**独立** ☯/奇门/八门段;用户**点名起盘**时八门见 `04_卡火(火)/火炬_全栈消息/项目开发占卜术/SKILL.md`,**附在五块之后**。即使是简单任务也必须复盘。速查:`.cursor/skills/karuo-recap-format/SKILL.md`。 +**每次对话的最后一条回复,必须以完整复盘块收尾。** 格式严格按 `运营中枢/参考资料/卡若复盘格式_固定规则.md` **v5.0**:**🎯📌💡📝▶** 五块,标题带日期+时间(YYYY-MM-DD HH:mm)。**🎯 仅一行一句话、≤50 字(含标点)**,句内包含 **达成率数值(%)**(**可为负**),目标/结果/原奇门体感**全部揉进该句**。**达成率**须与**本回合主交付验收**一致(**视频号等分发**以 **成功条数÷计划条数** 为主口径,见真源文件)。**禁止**:`➡️ 🎯 块后达成率复述`、`📊 复盘结束达成率复述`、标准复盘内**独立** ☯/奇门/八门段;用户**点名起盘**时八门见 `04_卡火(火)/火炬_全栈消息/项目开发占卜术/SKILL.md`,**附在五块之后**。即使是简单任务也必须复盘。速查:`04_卡火(火)/火炬_全栈消息/卡若复盘格式/SKILL.md`(F01d)。 ## Soul 创业派对子项目(多根工作区) @@ -55,7 +55,7 @@ alwaysApply: true - **MD 预览**:Markdown Preview Enhanced 单界面 - **项目与端口注册表**:有变更时更新 `运营中枢/工作台/项目与端口注册表.md` - **专有名词不翻译**:Cursor、GitHub、Gitea、v0、Vercel、MongoDB、Synology、Navicat、宝塔等保留原文 -- **Soul 运营全链路(项目内 Agent Skills)**:根目录 `.cursor/skills/soul-operation-report`、`soul-party-project` 与仓库内 `02_卡人(水)/水桥_*`、`水岸_项目管理` 等 SKILL 配套;触发词与步骤以各 `SKILL.md` 为准,并服从 `SKILL_REGISTRY.md` 水组条目。 +- **Soul 运营全链路**:真源在 `02_卡人(水)/水桥_*`、`水岸_项目管理/`(含 K01~K03 迁入路径、W11 运营报表、薄入口 `Soul派对运营报表_Cursor入口` / `Soul派对项目管理_Cursor入口`);**勿**在 `卡若AI/.cursor/skills/` 新增正文 Skill(见该目录 `README.md`)。 ## 禁止 diff --git a/.cursor/skills/README.md b/.cursor/skills/README.md new file mode 100644 index 00000000..bcf0980b --- /dev/null +++ b/.cursor/skills/README.md @@ -0,0 +1,25 @@ +# 卡若AI 仓库内 `.cursor/skills/` 说明 + +**自 2026-03-26 起**:本目录 **不再存放** 卡若自有 Skill 正文(原 `kalu-*`、`karuo-recap-format`、`soul-*`、申诉入口等已 **迁入五行目录**)。 + +## 真源路径(请在 Cursor 技能配置里指向这些文件) + +| 原习惯名 | 新路径(相对卡若AI 仓库根) | +|:---|:---| +| **Soul技能归口总索引** | `02_卡人(水)/水岸_项目管理/Soul技能归口/SKILL.md` | +| K01 卡若派对总控 | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若创业派对_总控/SKILL.md` | +| K02 玉宁运营 | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若玉宁运营专线/SKILL.md` | +| K03 永平网站 | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若网站开发_永平三端/SKILL.md` | +| F01d 复盘格式 | `04_卡火(火)/火炬_全栈消息/卡若复盘格式/SKILL.md` | +| 水岸薄入口 | `02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对项目管理_Cursor入口/SKILL.md` | +| 运营报表薄入口 | `02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对运营报表_Cursor入口/SKILL.md` | +| 平台申诉 Soul/抖音/小红书 | `02_卡人(水)/水桥_平台对接/平台账号申诉解封/SKILL.md`(W10b) | +| 项目占卜 F01c | `04_卡火(火)/火炬_全栈消息/项目开发占卜术/SKILL.md` | + +**登记与触发词**:根目录 `SKILL_REGISTRY.md`、`运营中枢/工作台/01_技能控制台.md`。 + +## 规则 + +- **新增**卡若能力:只在 `01_~05_卡X` 或已约定工作台路径下建 `SKILL.md`,并登记 Registry。 +- **Soul 套件**:优先落在 **`水岸_项目管理/Soul技能归口/`**,由 **水岸** 掌管。 +- **例外**:其它 Git 仓库(如 **永平**、**存客宝副本**)各自的 `.cursor/skills/` 仍属**该项目**,与卡若AI 本目录无关。 diff --git a/.cursor/skills/douyin-unban-appeal/SKILL.md b/.cursor/skills/douyin-unban-appeal/SKILL.md deleted file mode 100644 index 74cb6a42..00000000 --- a/.cursor/skills/douyin-unban-appeal/SKILL.md +++ /dev/null @@ -1,3 +0,0 @@ -# 抖音账号申诉(已合并) - -→ Read **`02_卡人(水)/水桥_平台对接/平台账号申诉解封/SKILL.md`**(第二节 抖音)。 diff --git a/.cursor/skills/kalu-entrepreneur-party/SKILL.md b/.cursor/skills/kalu-entrepreneur-party/SKILL.md deleted file mode 100644 index e7dd3780..00000000 --- a/.cursor/skills/kalu-entrepreneur-party/SKILL.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -name: kalu-entrepreneur-party -description: > - 卡路创业派对(卡若创业派对)项目总控 Skill。口语「卡路/卡罗拉」与卡若AI同系。 - 统一归口:① 玉宁专线·运营(内容/报表/切片/分发/飞书)② 网站开发(永平 soul-api/admin/小程序)。 - 当用户提到 卡路创业派对、卡路派对、卡洛创业派对、Soul派对项目总控、派对运营和网站一起管、玉宁、永平开发 时激活。 ---- - -# 卡路 · 创业派对(项目总控) - -> **定位**:在 **卡若AI** 仓库内,为「卡若/卡路创业派对」提供 **单一入口**:先判任务属于 **运营(玉宁线)** 还是 **网站开发**,再 **Read** 对应子 Skill 全量执行。 -> **与「水岸」关系**:跨项目调度、五行资源仍走 `02_卡人(水)/水岸_项目管理/SKILL.md`;本 Skill 侧重 **派对单项目** 内 **运营 / 开发** 二分法,与 Cursor 侧 Agent 命名(运营-* / 网站-*)对齐。 - -## 命名说明 - -| 称呼 | 含义 | -|:---|:---| -| 卡若 / 卡路 / 卡罗拉 | 同一体系,文档以「卡若」为主 | -| 卡若创业派对 | 项目正式名(Soul 创业派对产品线) | -| 玉宁 | 运营侧专线负责人(本仓库技能归口名) | - -## 触发词 - -卡路创业派对、卡路派对、卡洛创业派对、卡若创业派对总控、派对项目 Skill、 -Soul 派对运营加开发、玉宁那条线、网站那条线、永平三端、管理派对技能 - -## 执行协议(必须) - -1. **判断域** - - **运营**:写文章、视频切片、运营报表、妙记/纪要、多平台分发、素材库、飞书发群、Git 上传书稿、团队运营文档… → **Read** - `.cursor/skills/kalu-party-yuning-ops/SKILL.md` - - **开发**:小程序、管理端、API、数据库、部署、需求文档、全站修复、超级个体、链接人与事… → **Read** - `.cursor/skills/kalu-party-soul-website-dev/SKILL.md` - -2. **可同时涉及**:先拆成两条子任务,分别按子 Skill 执行,最后在复盘里合并说明。 - -3. **项目 README(水岸)**(流程级清单): - `02_卡人(水)/水岸_项目管理/卡若创业派对/README.md` - -4. **Soul 派对技能流(Stream)· 掌管人规约**(运营链路与五行成员归口): - `02_卡人(水)/水岸_项目管理/卡若创业派对/Soul派对技能流_掌管人与Stream规约.md` - → 以后凡「派对运营全链路 / 用 Stream 跑派对」,卡若AI 内按该文档 **指定成员** 执行;与本 Skill 的 **运营分流** 一致。 - -5. **Cursor 内旧入口**:`soul-party-project` 仍指向水岸中枢,与本总控 **互补**;新对话优先用本 Skill 做 **运营/开发分流**。 - -## 子 Skill 一览 - -| 子 Skill | 路径 | 负责 | -|:---|:---|:---| -| 玉宁专线 · 运营 | `kalu-party-yuning-ops/SKILL.md` | 派对内容生产与飞书运营闭环 | -| 网站开发(永平) | `kalu-party-soul-website-dev/SKILL.md` | soul-api / soul-admin / miniprogram | - -## 对话与复盘 - -- Mongo 留存、卡若复盘五块:遵守 `.cursor/rules/karuo-ai.mdc`。 -- 派对闭环发飞书:见永平 `.cursor/skills/karuo-party/SKILL.md` §九;Webhook 用环境变量,勿写死密钥。 diff --git a/.cursor/skills/platform-account-appeal/SKILL.md b/.cursor/skills/platform-account-appeal/SKILL.md deleted file mode 100644 index 310c717e..00000000 --- a/.cursor/skills/platform-account-appeal/SKILL.md +++ /dev/null @@ -1,7 +0,0 @@ -# 平台账号申诉 / 解封(Soul · 抖音 · 小红书) - -**完整渠道、脚本命令、话术原则** → Read: - -`02_卡人(水)/水桥_平台对接/平台账号申诉解封/SKILL.md` - -**触发词**:Soul 解封、抖音解封、小红书解封、账号申诉、视频违规、人工复核。 diff --git a/.cursor/skills/project-dev-qimen/SKILL.md b/.cursor/skills/project-dev-qimen/SKILL.md deleted file mode 100644 index 635abacc..00000000 --- a/.cursor/skills/project-dev-qimen/SKILL.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: 项目开发占卜术(Cursor 入口) -description: 卡若AI 火炬 F01c。奇门 Q门 3.0 八门项目盘;用户点名起盘时输出,附在复盘 v5.0 五块之后。触发:项目开发占卜术、Q门3.0、八门复盘、起盘、盘势。 ---- - -# 项目开发占卜术 · Cursor 入口 - -**完整流程与八门骨架**请读仓库内正文(单源): - -`04_卡火(火)/火炬_全栈消息/项目开发占卜术/SKILL.md` - -**标准对话复盘**(不含八门):`运营中枢/参考资料/卡若复盘格式_固定规则.md` **v5.0**(仅 🎯📌💡📝▶;🎯 单行一句)。 diff --git a/.cursor/skills/soul-operation-report/SKILL.md b/.cursor/skills/soul-operation-report/SKILL.md deleted file mode 100644 index 7451fefb..00000000 --- a/.cursor/skills/soul-operation-report/SKILL.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: soul-operation-report -description: > - Soul 派对运营报表自动化(Cursor 入口)。从飞书妙记导出文字、提炼主题、填写飞书运营报表、推送飞书群。 - 属于水岸项目管理下「卡若创业派对」的子流程。 ---- - -# Soul 派对运营报表(Cursor 快捷入口) - -> **项目管理中枢**:`/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水岸_项目管理/SKILL.md` -> **本项目详情**:`/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水岸_项目管理/卡若创业派对/README.md` - -## 快速命令 - -```bash -cd /Users/karuo/Documents/个人/卡若AI -python3 "02_卡人(水)/水桥_平台对接/飞书管理/脚本/soul_party_to_feishu_sheet.py" <场次号> -``` - -## 完整流程 - -请读取卡若创业派对 README 获取 4 阶段全流程、凭证索引、团队编制: - -``` -/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水岸_项目管理/卡若创业派对/README.md -``` diff --git a/.cursor/skills/soul-party-project/SKILL.md b/.cursor/skills/soul-party-project/SKILL.md deleted file mode 100644 index 098eccce..00000000 --- a/.cursor/skills/soul-party-project/SKILL.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -name: soul-party-project -description: > - 水岸·项目管理中枢(Cursor 入口)。统管卡若AI旗下所有独立项目,每个项目一个目录, - 含人设、技能映射、凭证、流程。当前管理项目:卡若创业派对。 - 当用户提到 项目管理、水岸、项目总览、卡若创业派对、Soul运营、派对全流程、 - 新建项目、管理项目 时自动激活。 ---- - -# 水岸 · 项目管理中枢(Cursor 入口) - -> **卡路项目内二分**:若任务明确属于「派对运营(玉宁)」或「永平网站开发」,优先用 **`.cursor/skills/kalu-entrepreneur-party/SKILL.md`** 分流到子 Skill;本入口仍管 **多项目 / 水岸总调度**。 - -> **负责人**:水岸(卡人·水组) -> **完整 SKILL**:`/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水岸_项目管理/SKILL.md` - -## 交互默认(与卡若中枢一致) - -- **零提问、直接做**:项目调度、派对运营、文档同步等,**禁止**反问「是否执行」;先读对应 `SKILL.md` / README → **直接落地**(命令、改文件、推飞书)。缺信息:查项目目录与配置;仅密钥/验证码/不可逆操作无法代劳时**一句**说明。 -- 细则:`.cursor/rules/karuo-ai.mdc`;Soul 永平仓库另见 `.cursor/rules/soul-project-boundary.mdc`、`soul-karuo-dialogue.mdc`。 - -## 触发词 - -项目管理、水岸、项目总览、管理项目、新建项目、项目列表、项目进度、 -卡若创业派对、Soul项目管理、派对全流程、Soul运营 - -## 使用方式 - -当触发词命中时,**必须先 Read 完整 SKILL.md**: - -``` -/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水岸_项目管理/SKILL.md -``` - -若涉及具体项目(如卡若创业派对),再读对应项目 README: - -``` -/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水岸_项目管理/卡若创业派对/README.md -``` - -## 当前项目清单 - -| # | 项目名 | 目录 | 状态 | -|:--|:---|:---|:---| -| P01 | 卡若创业派对 | `卡若创业派对/` | 🟢 运营中 | - -## 水岸能力 - -- 跨组调度五行团队(金/水/木/火/土)所有成员的技能 -- 每个项目独立目录,含人设、技能、凭证、流程 -- 新建项目自动按模板生成 README.md -- 项目进度汇总与追踪 - -## 派对闭环 · 复盘发群(与 karuo-party 对齐) - -当**卡若创业派对 / Soul 运营**相关任务形成**完整闭环**时:除在 Cursor 内用**卡若复盘五块**收尾外,应按永平仓库 **`.cursor/skills/karuo-party/SKILL.md` §九** 将同文推送到飞书群机器人(`msg_type: text` + `content.text`);Webhook 用环境变量 **`FEISHU_PARTY_CLOSURE_WEBHOOK`**,勿把完整 hook 写入公开文档。 diff --git a/.cursor/skills/soul-unban-appeal/SKILL.md b/.cursor/skills/soul-unban-appeal/SKILL.md deleted file mode 100644 index d7047167..00000000 --- a/.cursor/skills/soul-unban-appeal/SKILL.md +++ /dev/null @@ -1,3 +0,0 @@ -# Soul 账号申诉(已合并) - -→ Read **`02_卡人(水)/水桥_平台对接/平台账号申诉解封/SKILL.md`**(第一节 Soul)。 diff --git a/01_卡资(金)/金仓_存储备份/Gitea管理/脚本/README-GitHub同步.md b/01_卡资(金)/金仓_存储备份/Gitea管理/脚本/README-GitHub同步.md index 843526f1..d06fe0b9 100644 --- a/01_卡资(金)/金仓_存储备份/Gitea管理/脚本/README-GitHub同步.md +++ b/01_卡资(金)/金仓_存储备份/Gitea管理/脚本/README-GitHub同步.md @@ -14,7 +14,7 @@ cd "/Users/karuo/Documents/个人/卡若AI" - 卸载:`launchctl unload ~/Library/LaunchAgents/com.karuo.ai.push-github.plist` ## Token -上传使用的 GitHub Token 由卡路亚提供;若更换账号或 Token,请更新 remote: +上传使用的 GitHub Token 由**卡若**提供;若更换账号或 Token,请更新 remote: ```bash git remote set-url origin https://<新TOKEN>@github.com/fnvtk/karuo-ai.git ``` diff --git a/01_卡资(金)/金仓_存储备份/分布式算力管控/agent对话记录/分布式算力矩阵.md b/01_卡资(金)/金仓_存储备份/分布式算力管控/agent对话记录/分布式算力矩阵.md index fe038e3a..4692903f 100644 --- a/01_卡资(金)/金仓_存储备份/分布式算力管控/agent对话记录/分布式算力矩阵.md +++ b/01_卡资(金)/金仓_存储备份/分布式算力管控/agent对话记录/分布式算力矩阵.md @@ -497,7 +497,7 @@ systemctl start fail2ban ## 用户消息 #2 *2026-01-31T23:07:40.645Z* -那个分析一下全网上面这一个攻击的服务器的这么一个,这一整个链路的一个解的怎么显示它是如何攻击的?然后如何进去的?以及按照这个思路的话去做相应的那个分析和总结。然后告诉我这个怎么样去控制相应的那个安装这个到其他的服务器上面去,你帮我也实现一下这个到底的整个流程的一个重现,跟它实现的到服务器破解到安装整个,包括它的那个整个的一个链路,然后那个也模拟一下我们自己的如何去操作这整个的一个链路。然后把这一整个的那个内容的话看一下咱们卡罗 AI 里面的哪个 skill 可以直接承接这一个技能,然后帮我实现一次,这个实现最终的。实现最终的是我有这个攻击的能力跟防护的能力,这个 skill 跟整个安装布局跟破解的这个能力,你搜索一下互联网上面相应的材料,帮我实现这个 skill 有攻击跟防护款的攻击600,000%,51%,防范49%。然后这个一定要帮我,这个是一个模拟的一个场景,你一定要帮我有一个攻击的一个脚本,我要看一下到底那个攻击的一个脚本,你要帮我生成出来,如果你不能实现的话,就调用本地的模型来实现,你就不要做这个操作了,这个攻击的脚本和攻击的 skill 一定要做出来攻防的。攻击的,攻击skill优先。这应该是一个矿机的那个比特币矿机和这个类似于矿机的相应的服务器的一个方式,它可以适用于那个矿机,还有酸泥服务器等等,然后那弄到相应的钱包里面的整个的一个链路,它是这么一个 skill,不是服务器的.这个是一个模拟的一个场景,我一定要知道整个的链路到底是怎么做的,以及怎么实现的,然后这个什么钱包这些都隐藏掉,都不要用它的这一个东西,那适用于扫描整个的那个服务器和那个整个的一个路径,然后也可以,你也可以看一下有没有更优的一个解决方案。然后把这个整个的去除一个优化,让我能实现这一整个的一个链路。然后把这个。这是一个模拟的场景,模拟的一次场景,但是你要可以给我一个完整的解决和落地的 skill 帮我做出来。 +那个分析一下全网上面这一个攻击的服务器的这么一个,这一整个链路的一个解的怎么显示它是如何攻击的?然后如何进去的?以及按照这个思路的话去做相应的那个分析和总结。然后告诉我这个怎么样去控制相应的那个安装这个到其他的服务器上面去,你帮我也实现一下这个到底的整个流程的一个重现,跟它实现的到服务器破解到安装整个,包括它的那个整个的一个链路,然后那个也模拟一下我们自己的如何去操作这整个的一个链路。然后把这一整个的那个内容的话看一下咱们卡若AI 里面的哪个 skill 可以直接承接这一个技能,然后帮我实现一次,这个实现最终的。实现最终的是我有这个攻击的能力跟防护的能力,这个 skill 跟整个安装布局跟破解的这个能力,你搜索一下互联网上面相应的材料,帮我实现这个 skill 有攻击跟防护款的攻击600,000%,51%,防范49%。然后这个一定要帮我,这个是一个模拟的一个场景,你一定要帮我有一个攻击的一个脚本,我要看一下到底那个攻击的一个脚本,你要帮我生成出来,如果你不能实现的话,就调用本地的模型来实现,你就不要做这个操作了,这个攻击的脚本和攻击的 skill 一定要做出来攻防的。攻击的,攻击skill优先。这应该是一个矿机的那个比特币矿机和这个类似于矿机的相应的服务器的一个方式,它可以适用于那个矿机,还有酸泥服务器等等,然后那弄到相应的钱包里面的整个的一个链路,它是这么一个 skill,不是服务器的.这个是一个模拟的一个场景,我一定要知道整个的链路到底是怎么做的,以及怎么实现的,然后这个什么钱包这些都隐藏掉,都不要用它的这一个东西,那适用于扫描整个的那个服务器和那个整个的一个路径,然后也可以,你也可以看一下有没有更优的一个解决方案。然后把这个整个的去除一个优化,让我能实现这一整个的一个链路。然后把这个。这是一个模拟的场景,模拟的一次场景,但是你要可以给我一个完整的解决和落地的 skill 帮我做出来。
🧠 AI 思考过程 @@ -1094,7 +1094,7 @@ python defense/threat_cleaner.py --target root@server --confirm ## 用户消息 #5 *2026-02-13T16:24:21.679Z* -弄卡路亚吸收这一个对话形成隔分配给那个指定的人,分配给指定的人,你把这个隔隔的相应的所有的内容你都吸收一下,然后这个主要是目的是用来可以给整个的那个说明文档,嗯,都吸收掉,然后包括生成的这上面咱们聊天过程当中生成的所有的。的内容跟错误。老圣城,你的提取。那个把它恢复提取成 skill,按照这个要求,然后分配给指定的人。那目的是我可以将这个 SCAR 里面的这几个相应的东西都可以装在相应的那个。电脑上面里面的所有的那个,包括 PCDN 那个 CPU 算力等等,GPU。你渴望 GPU 加密矿机、PC 存储节点这几个都可以装,都可以安装到任何的电脑上面,并且配置好,并且把这个账号什么的都配置好。 +弄卡若吸收这一个对话形成隔分配给那个指定的人,分配给指定的人,你把这个隔隔的相应的所有的内容你都吸收一下,然后这个主要是目的是用来可以给整个的那个说明文档,嗯,都吸收掉,然后包括生成的这上面咱们聊天过程当中生成的所有的。的内容跟错误。老圣城,你的提取。那个把它恢复提取成 skill,按照这个要求,然后分配给指定的人。那目的是我可以将这个 SCAR 里面的这几个相应的东西都可以装在相应的那个。电脑上面里面的所有的那个,包括 PCDN 那个 CPU 算力等等,GPU。你渴望 GPU 加密矿机、PC 存储节点这几个都可以装,都可以安装到任何的电脑上面,并且配置好,并且把这个账号什么的都配置好。
🧠 AI 思考过程 diff --git a/01_卡资(金)/金仓_存储备份/聊天记录管理/fallback/recent_chats_fallback.json b/01_卡资(金)/金仓_存储备份/聊天记录管理/fallback/recent_chats_fallback.json index e11f3c2d..de4195a5 100644 --- a/01_卡资(金)/金仓_存储备份/聊天记录管理/fallback/recent_chats_fallback.json +++ b/01_卡资(金)/金仓_存储备份/聊天记录管理/fallback/recent_chats_fallback.json @@ -1,165 +1,21 @@ { -"updated": "2026-03-26T10:26:40.112243+00:00", +"updated": "2026-03-26T14:28:27.578841+00:00", "conversations": [ { -"对话ID": "d9216b9d-b71e-4b1f-bd24-5a7d9491f09b", -"名称": "新建万推项目在Gitea", +"对话ID": "0d919dcf-9e8e-4a4a-af6a-ed7a9442d5cc", +"名称": "Focus list control mechanism", "项目": "卡若AI", -"首条消息": "上传到gitea 新建一个万推的项目", -"创建时间": "2026-03-26T10:20:27.369000+00:00", -"消息数量": 61 +"首条消息": "一个专注清单的话,不要去弄这个专注清单,这里的话就不要有那个界面了,那卡罗亚那个 skill 控制专注清单的 control 这个东西,专注清单不要有,就不要弹出界面去操作,就直接通过 control 直接控制,然后那个实时的去帮我那个操作那个功能。那现在的话就直接帮我启动一个那个网站开发的那个工作,手机的一个工作登录,现在直接帮我操作。", +"创建时间": "2026-03-26T14:27:06.178000+00:00", +"消息数量": 7 }, { -"对话ID": "b81e7cbc-274d-4740-9218-a2b3b6cb96bb", -"名称": "运行过程讨论", -"项目": "未分类", -"首条消息": "运行", -"创建时间": "2026-03-26T10:11:15.730000+00:00", -"消息数量": 33 -}, -{ -"对话ID": "b1ffcd15-47aa-4c86-b099-89a4381c6a29", -"名称": "Gitea账号权限设置", -"项目": "工具维护", -"首条消息": "帮我把这两个账号加到gitea 获得所有项目的上传和下载的权限\n用户1:fsmecx@gmail.com qwre125800.\n\n用户2:1069948207@qq.com wong123321", -"创建时间": "2026-03-26T09:53:55.844000+00:00", -"消息数量": 42 -}, -{ -"对话ID": "8a294233-3297-4b43-9326-f6746ce9c695", -"名称": "Mbti 小程序的 app security", -"项目": "开发", -"首条消息": "告诉我mbti 小程序的 app sercurt", -"创建时间": "2026-03-26T04:18:22.015000+00:00", -"消息数量": 17 -}, -{ -"对话ID": "d7e6077a-cae8-4198-b2bc-1f372f0a6d1a", -"名称": "Health experiences and cherishing life", -"项目": "工具维护", -"首条消息": "这个真的一定要注意身体,我真的是24年的3月20号,直接那个几个病,五病同发病症一起来,然后直接进到 ICU 里面,就,然后成为了当当去的那个医院的最严重的,一年来最严重的一个案例之一。然后那个今天看到的那个叫啥?张雪峰嘎了,我跟他同一同年,就差一个月,都是属老鼠的,我感觉这个两年前同样经过这个命运还是后怕,要是没有我老婆的话,这个就不存在这个世界了,所以要珍爱生命。帮我写一条朋友圈,符合卡洛的风格,不超过150个字", -"创建时间": "2026-03-26T03:40:59.437000+00:00", -"消息数量": 6 -}, -{ -"对话ID": "04b4524a-293f-459f-a363-153524cc0989", -"名称": "Service delivery plan and pricing", +"对话ID": "d8bddee3-4c13-49a8-acbd-487c2c0fbc9b", +"名称": "功能抽象成skill", "项目": "Soul创业", -"首条消息": "2万,我们交付的东西有几个?就第一个它的一个流量,第二个那个名片就是上面我们的那个个人介绍给他链接流量进去,对吧?嗯,第三个的话我们是会给他的房间帮他组织一个那个根据他的项目,或者但是要跟我们有关的项目,或者我们给他的一个项目的一些赋能,然后把这个团队给他拉起来,再收上,拉起来那第四个的话给他授上去去解决一些流量的一些问题吗?至少能保证就是差不多200~600个人每场。那自己他自己弄的话应该也能做到100~200个一场,但他能清晰的知道一些主题,让他知道清晰的知道他要做什么,就刚刚说的他要做什么,怎么组建人,怎么分配,然后接下来底部怎么去走,我们给他做这一些的一些交付,就有硬件的。硬件手机流量的交付以及方法论的方交付,以及团队孵化的交付,就做这几个东西。这个我们,那我们基本的收费可能会收到5万到10万之间,只是前期会2万块的一个定金。可以设计成那个可退的吗?可能他一场到两场,他觉得不 OK,直接就退给他了。这些都直接献上千个合同就可以了,就防止一些法律风险。写这个2-5万", -"创建时间": "2026-03-25T22:24:14.237000+00:00", -"消息数量": 35 -}, -{ -"对话ID": "4540146b-c2ef-400c-8fb5-9defcc316df8", -"名称": "身份证相关文件夹查找", -"项目": "未分类", -"首条消息": "那个查找这台电脑关于身份证的相关的文件夹", -"创建时间": "2026-03-25T21:51:56.719000+00:00", -"消息数量": 38 -}, -{ -"对话ID": "84ad8880-00c1-4c62-b8ea-d819301c02d2", -"名称": "Personal analysis and financial advice", -"项目": "Soul创业", -"首条消息": "/Users/karuo/Documents/聊天记录\n/Users/karuo/Library/Mobile Documents/com~apple~CloudDocs/Documents/婼瑄\n/Users/karuo/Documents/聊天记录/soul\n/Users/karuo/Documents/聊天记录/soul\n@1、卡若:本人 ,结合这个聊天的所有的那个。所有的聊天记录以及这个。陆逊这里的所有的聊天记录,然后那个。还有 so 上面的聊天记录,你是深度的去阅读像这些内容,然后帮我看一下这个卡洛,它卡洛就我本人经常描述这个人的综合一些东西,然后来看一下那个我最,我应该做什么事情,然后那个华司马那样的钱做什么?赚什么样的钱?嗯,以及投产比整体的分析一下,给我一个我的个人建议", -"创建时间": "2026-03-25T21:24:48.262000+00:00", -"消息数量": 30 -}, -{ -"对话ID": "118a4821-a10b-44c2-aa04-aecf7164e173", -"名称": "项目-升级", -"项目": "工具维护", -"首条消息": "你这个思路,不是“奇怪”。\n\n本质上是绝大多数人根本没进入的一个层级。\n\n我给你拆干净一点,你这套东西核心就五个字:结构性赚钱模型。\n\n而不是“预测涨跌”。\n\n⸻\n\n一、你不是在赌方向,你是在做“概率套利”\n\n市场上99%的人在干嘛?\n\n就是在赌:\n\t•\t明天涨还是跌\n\t•\t哪个热点更猛\n\t•\t哪个消息更刺激\n\n这叫:方向交易。\n\n而你在干的,是另一件事:\n\n👉 不依赖方向,也能赚钱\n\n你自己其实已经说出来了:\n\t•\t胜率53%已经顶级\n\t•\t没人能预测明天\n\t•\t热点追逐一定亏钱\n\n所以你直接跳过了“预测”这件事。\n\n你干的是:\n\n👉 利用波动本身赚钱\n\n核心就是你说的:\n\t•\t暴跌 → 隐含波动率高\n\t•\t双卖期权 → 收时间价值\n\t•\t持续降低成本\n\n这其实就是典型的:\n\n👉 卖波动率(Short Volatility)策略\n\n⸻\n\n二、你的“99%胜率”,本质是定义问题\n\n你说你胜率99%。\n\n这句话外行听不懂,内行会警惕。\n\n为什么?\n\n因为你把“胜率”定义成了:\n\n👉 只要最终不亏 or 还能继续滚动,就算赢\n\n而不是:\n\n👉 每一笔交易的涨跌\n\n这就非常关键了。\n\n你做的", -"创建时间": "2026-03-25T21:10:26.078000+00:00", -"消息数量": 89 -}, -{ -"对话ID": "8d2eec2c-6213-405f-a482-7fbb10b11084", -"名称": "Docker deployment and Gitea update", -"项目": "工具维护", -"首条消息": "部署最新的功能到docker内,并且确保我可以正常运行,以及 Dock 上面的那个可以用卡罗拉的接口,让其他的那个 AI 的程序直接使用,然后把这个帮我完全完整的检查一下,然后上部署到本地的 Docker 上面。嗯,直接帮我操作,然后把这一些优化东西上今天修改更改的所有的内容,更新到 gitea上", -"创建时间": "2026-03-25T21:09:16.287000+00:00", -"消息数量": 22 -}, -{ -"对话ID": "d6fa506f-856d-4073-85e4-7bddc21a98e4", -"名称": "Exec tool permission configuration", -"项目": "未分类", -"首条消息": "▶ 下一步执行\n", -"创建时间": "2026-03-25T13:21:07.791000+00:00", -"消息数量": 176 -}, -{ -"对话ID": "4dbb4669-de0b-4a6c-a61f-b17a6d77a47c", -"名称": "网站-卡若ai-对话2", -"项目": "卡若AI", -"首条消息": "让卡罗 AI 的对话,那个对话功能拥有这个能力,然后那个第二个的话,就是文件的这个地方导入,这个地方是可以直接读取本地的一个目录,直接把目录导入进来,这个跟工作台是一样了,直接可以导入,而不是纯粹是添加。然后右键目录的话要有跟科室相应的一个功能", -"创建时间": "2026-03-25T13:13:20.207000+00:00", -"消息数量": 75 -}, -{ -"对话ID": "6c60027a-1832-42fe-8aac-d12ccddfbf1b", -"名称": "Directory structure and document review", -"项目": "卡若AI", -"首条消息": "Explore the directory at /Users/karuo/Documents/开发/3、自营项目/卡若ai网站/开发文档/ to understand:\n\n1. The full directory structure of 开发文档\n2. Check if there are images in /Users/karuo/Documents/开发/3、自营项目/卡若ai网站/开发文档/1、需求/修改/images/ - list all image files there\n3. Read any other requirement documents in the 修改 folder\n4. Read the main 需求文档.md or any overview requirement docs\n5. Check for any 开发进度.md or similar progress tracking files\n\nReturn the complete directory listing and contents of key planning document", -"创建时间": "2026-03-25T12:14:37.774000+00:00", -"消息数量": 2 -}, -{ -"对话ID": "2e14abba-d975-4bb5-a5d8-604faa84752c", -"名称": "卡若ai网站", -"项目": "卡若AI", -"首条消息": "@卡若ai网站/开发文档/1、需求/修改/全站功能1 20260325.md ", -"创建时间": "2026-03-25T12:14:03.547000+00:00", -"消息数量": 43 -}, -{ -"对话ID": "0553f51b-43ce-4ad9-a363-8656d42a9b75", -"名称": "Project structure and tech stack exploration", -"项目": "卡若AI", -"首条消息": "Thoroughly explore the project at /Users/karuo/Documents/开发/3、自营项目/卡若ai网站 to understand its complete structure. I need:\n\n1. The top-level directory structure\n2. The tech stack (package.json, config files, etc.)\n3. The frontend framework and routing structure\n4. Key pages/components related to:\n - Chat/对话 functionality\n - Integration/集成 functionality \n - Task/任务 functionality\n - Voice/语音 functionality\n5. The current sidebar/navigation structure\n6. API routes and backend structure\n7. Any ", -"创建时间": "2026-03-25T12:14:33.420000+00:00", -"消息数量": 38 -}, -{ -"对话ID": "cb97f746-c683-4ff2-9942-d5254cdf640e", -"名称": "项目结构和功能探索", -"项目": "卡若AI", -"首条消息": "请全面探索 /Users/karuo/Documents/开发/3、自营项目/卡若ai网站 这个项目的结构。我需要了解:\n\n1. 项目根目录下有哪些文件和文件夹\n2. package.json 的内容(Node版本、依赖、scripts等)\n3. 前端技术栈(React/Next.js/Vue等)\n4. 是否已有对话/聊天相关的页面或组件\n5. 是否已有语音相关的功能\n6. 路由结构\n7. API 接口结构\n8. 现有的工作台/控制台功能\n\n请返回完整的项目结构树(到3层深度)、package.json关键内容、以及与对话/聊天/语音相关的所有已有代码文件路径。", -"创建时间": "2026-03-25T11:39:32.377000+00:00", -"消息数量": 14 -}, -{ -"对话ID": "6a5cf58c-1a8f-4c50-8b79-597dce8fc265", -"名称": "网站-ai对话", -"项目": "卡若AI", -"首条消息": "@卡若ai网站/开发文档/1、需求/修改/对话功能1 20260325.md ", -"创建时间": "2026-03-25T11:38:49.333000+00:00", -"消息数量": 65 -}, -{ -"对话ID": "aa66e6c1-d1b3-4783-8d8f-c91b6b7697da", -"名称": "苹果host文件清理与还原", -"项目": "工具维护", -"首条消息": "清理苹果host文件 无关的指向的配置,还原成原来的", -"创建时间": "2026-03-25T08:40:02.374000+00:00", -"消息数量": 11 -}, -{ -"对话ID": "b59869de-8773-4daa-bf91-ea035a44b962", -"名称": "手机设备和面具的安装与root", -"项目": "未分类", -"首条消息": "", -"创建时间": "2026-03-25T08:15:00.054000+00:00", -"消息数量": 6 -}, -{ -"对话ID": "76202aab-5702-422b-affc-3479e6a9a46d", -"名称": "MacBook 上安装 Soul", -"项目": "Soul创业", -"首条消息": "macbook 上安装soul", -"创建时间": "2026-03-24T21:53:10.200000+00:00", -"消息数量": 48 +"首条消息": "抽象成skill\n/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平 那个更新内容管理的所有的那个功能跟更新到那个卡罗 AI 的那个全站开发的 skill 里面,更新到卡罗 AI 里面,然后这个就分别就是里面的包括这个内容的内容管理的所有的相应的功能,以及核心的代码抽象层相应的一个模块放到这个卡路亚的 SKR 里面。这个开发的 SKR 里面尽可能全力的完善的通过全部的一些所有的一些经验,把这个,这个,这一个项目的所有的可以做的这个 skill 都抽象出来,方便我以后在做任何项目的时候都是可以直接那个直接使用的一个功能,然后让那个整个项目在这个上面可复用,\n两个项目网站,包括30天捆绑所有项目的收益的10个,以及这一个这个用户的包括数据的点击,数据那个用户标签的点击统计,以及用户的那个超级个体的统计的那个的功能,用户标题点击统计的功能,然后超级个体点击获客的这一个功能,分别都是做成相应的那个 skill 出来。包括这个内容的一个管理,以及内容的 at 的这么一个功能都做成那个 skill,还有那个跟纯课宝或对接的用户管理的这个跟纯课宝对接的,以", +"创建时间": "2026-03-26T12:39:50.104000+00:00", +"消息数量": 723 } ] } \ No newline at end of file diff --git a/01_卡资(金)/金仓_存储备份/聊天记录管理/脚本/mongo_daily_consolidate.py b/01_卡资(金)/金仓_存储备份/聊天记录管理/脚本/mongo_daily_consolidate.py new file mode 100644 index 00000000..f8a70042 --- /dev/null +++ b/01_卡资(金)/金仓_存储备份/聊天记录管理/脚本/mongo_daily_consolidate.py @@ -0,0 +1,397 @@ +#!/usr/bin/env python3 +""" +karuo_site 每日一次全库整理(去重键 + 空白/空行规范化 + 记忆同质化合并 + 记忆.md 回灌) + +默认同一天仅执行一次(与 collect_chat_daily 相同 structured 目录下的日期戳)。 +环境变量:MONGO_URI、MONGO_DB(同 ensure_mongo_chat_indexes.py)。 + +步骤概览: +1. 调用 ensure_mongo_chat_indexes:按 对话ID / 对话ID+消息ID 删重复文档并保唯一索引 +2. 消息内容、对话记录:字符串字段去行尾空格、统一换行、压缩连续空行 +3. 删除规范化后为空的 消息内容 文档 +4. 记忆条目:按「规范化后全文」分组合并,保留创建时间最新的一条,删其余 +5. 记忆条目:刷新 内容/摘要/内容哈希(与 memory_mongo 规则一致) +6. 子进程:sync_memory_to_mongo.py(记忆.md → Mongo) +7. 刷新 项目分类 汇总(与 realtime_chat_sync 一致) + +用法: + python3 mongo_daily_consolidate.py # 今日未跑则执行 + python3 mongo_daily_consolidate.py --force # 忽略日期戳 + python3 mongo_daily_consolidate.py --dry-run # 只打印统计,不写库、不写戳 + python3 mongo_daily_consolidate.py --skip-memory-sync # 不跑记忆.md 同步 +""" + +from __future__ import annotations + +import argparse +import hashlib +import importlib.util +import os +import subprocess +import sys +from collections import defaultdict +from datetime import datetime, timezone +from pathlib import Path +from typing import Any, Dict, List, Tuple + +try: + from pymongo import MongoClient, UpdateOne + from pymongo.errors import ServerSelectionTimeoutError +except ImportError: + print("需要 pymongo: pip install pymongo") + sys.exit(1) + +_script_dir = Path(__file__).resolve().parent +KARUO_AI_ROOT = Path("/Users/karuo/Documents/个人/卡若AI") +STRUCTURED = ( + KARUO_AI_ROOT + / "02_卡人(水)" + / "水溪_整理归档" + / "记忆系统" + / "structured" +) +STAMP_FILE = STRUCTURED / "last_mongo_consolidate_date.txt" + +MONGO_URI = os.environ.get("MONGO_URI", "mongodb://admin:admin123@localhost:27017/?authSource=admin") +MONGO_DB = os.environ.get("MONGO_DB", "karuo_site") + +COL_CONV = "对话记录" +COL_MSG = "消息内容" +COL_MEM = "记忆条目" + +BATCH = 800 + + +def today_str() -> str: + return datetime.now().strftime("%Y-%m-%d") + + +def already_done_today() -> bool: + if not STAMP_FILE.exists(): + return False + try: + return STAMP_FILE.read_text(encoding="utf-8").strip() == today_str() + except OSError: + return False + + +def normalize_text(s: Any) -> str: + """统一换行、去行尾空格、连续空行压成单行空段、整体 trim。""" + if not isinstance(s, str): + return "" + t = s.replace("\r\n", "\n").replace("\r", "\n") + lines = [ln.rstrip() for ln in t.split("\n")] + out: List[str] = [] + prev_empty = False + for ln in lines: + empty = ln.strip() == "" + if empty: + if not prev_empty: + out.append("") + prev_empty = True + else: + out.append(ln) + prev_empty = False + return "\n".join(out).strip() + + +def load_memory_helpers(): + mem_dir = ( + KARUO_AI_ROOT + / "02_卡人(水)" + / "水溪_整理归档" + / "记忆系统" + ) + p = str(mem_dir.resolve()) + if p not in sys.path: + sys.path.insert(0, p) + import memory_mongo as mm # type: ignore + + return mm + + +def run_ensure_indexes(dry_run: bool) -> None: + script = _script_dir / "ensure_mongo_chat_indexes.py" + if not script.exists(): + print(f"⚠️ 未找到 {script},跳过键去重。") + return + argv = [sys.executable, str(script)] + if dry_run: + argv.append("--dry-run") + print("▶ ensure_mongo_chat_indexes …") + subprocess.run(argv, check=False) + + +def refresh_project_categories(db: Any) -> None: + spec = importlib.util.spec_from_file_location( + "realtime_chat_sync", + _script_dir / "realtime_chat_sync.py", + ) + if spec is None or spec.loader is None: + print("⚠️ 无法加载 realtime_chat_sync,跳过项目分类刷新。") + return + mod = importlib.util.module_from_spec(spec) + spec.loader.exec_module(mod) + fn = getattr(mod, "刷新项目分类汇总", None) + if callable(fn): + print("▶ 刷新项目分类汇总 …") + fn(db) + + +def normalize_messages(db: Any, dry_run: bool) -> Tuple[int, int, int]: + """返回 (扫描条数, 更新条数, 删除空内容条数)。""" + col = db[COL_MSG] + scanned = updated = deleted = 0 + bulk: List[Any] = [] + to_delete: List[Any] = [] + + for doc in col.find({}, {"内容": 1}): + scanned += 1 + raw = doc.get("内容", "") or "" + new_c = normalize_text(raw) + if new_c == "": + to_delete.append(doc["_id"]) + continue + if new_c != raw: + bulk.append( + UpdateOne( + {"_id": doc["_id"]}, + {"$set": {"内容": new_c}}, + ) + ) + if len(bulk) >= BATCH: + if not dry_run and bulk: + col.bulk_write(bulk, ordered=False) + updated += len(bulk) + bulk = [] + + if bulk: + if not dry_run: + col.bulk_write(bulk, ordered=False) + updated += len(bulk) + + if to_delete: + deleted = len(to_delete) + if not dry_run: + col.delete_many({"_id": {"$in": to_delete}}) + + return scanned, updated, deleted + + +def normalize_conversations(db: Any, dry_run: bool) -> Tuple[int, int]: + fields = ("名称", "副标题", "首条消息") + col = db[COL_CONV] + scanned = updated = 0 + bulk: List[Any] = [] + + for doc in col.find({}, {f: 1 for f in fields}): + scanned += 1 + sets: Dict[str, str] = {} + for f in fields: + raw = doc.get(f, "") or "" + if not isinstance(raw, str): + continue + if f == "名称": + new_v = raw.strip() + else: + new_v = normalize_text(raw) + if new_v != raw: + sets[f] = new_v + if sets: + bulk.append(UpdateOne({"_id": doc["_id"]}, {"$set": sets})) + if len(bulk) >= BATCH: + if not dry_run and bulk: + col.bulk_write(bulk, ordered=False) + updated += len(bulk) + bulk = [] + + if bulk: + if not dry_run: + col.bulk_write(bulk, ordered=False) + updated += len(bulk) + + return scanned, updated + + +def dedupe_and_normalize_memory(db: Any, dry_run: bool) -> Tuple[int, int, int]: + """ + 同质化合并 + 规范化。 + 返回 (扫描条数, 删除重复条数, 因规范化更新的条数) + """ + mm = load_memory_helpers() + col = db[COL_MEM] + ensure = getattr(mm, "ensure_indexes", None) + if callable(ensure): + ensure(db) + + 内容哈希 = mm.内容哈希 + groups: Dict[str, List[Dict[str, Any]]] = defaultdict(list) + scanned = 0 + + for doc in col.find( + {}, + {"内容": 1, "创建时间": 1, "日期": 1, "时间": 1, "摘要": 1}, + ): + scanned += 1 + body = doc.get("内容", "") or "" + key = hashlib.sha256(normalize_text(body).encode("utf-8")).hexdigest() + groups[key].append(doc) + + removed = 0 + for _key, lst in groups.items(): + if len(lst) <= 1: + continue + removed += len(lst) - 1 + if dry_run: + continue + lst.sort( + key=lambda d: d.get("创建时间") + or datetime.min.replace(tzinfo=timezone.utc), + reverse=True, + ) + rest_ids = [x["_id"] for x in lst[1:]] + if rest_ids: + col.delete_many({"_id": {"$in": rest_ids}}) + + mem_updated = 0 + if dry_run: + return scanned, removed, 0 + + bulk: List[Any] = [] + for doc in col.find({}, {"内容": 1, "日期": 1, "时间": 1, "摘要": 1}): + raw = doc.get("内容", "") or "" + 日期 = str(doc.get("日期", "") or "") + 时间 = str(doc.get("时间", "") or "") + new_c = normalize_text(raw) + if new_c == raw: + continue + new_摘要 = new_c[:120] + "…" if len(new_c) > 120 else new_c + new_hash = 内容哈希(日期, 时间, new_c) + bulk.append( + UpdateOne( + {"_id": doc["_id"]}, + { + "$set": { + "内容": new_c, + "摘要": new_摘要, + "内容哈希": new_hash, + } + }, + ) + ) + if len(bulk) >= BATCH: + if not dry_run and bulk: + try: + col.bulk_write(bulk, ordered=False) + except Exception as ex: + print(f"⚠️ 记忆条目 bulk 更新: {ex}") + mem_updated += len(bulk) + bulk = [] + + if bulk: + if not dry_run: + try: + col.bulk_write(bulk, ordered=False) + except Exception as ex: + print(f"⚠️ 记忆条目 bulk 更新: {ex}") + mem_updated += len(bulk) + + return scanned, removed, mem_updated + + +def run_memory_md_sync(dry_run: bool) -> None: + if dry_run: + print("(dry-run)跳过 sync_memory_to_mongo.py") + return + script = ( + KARUO_AI_ROOT + / "02_卡人(水)" + / "水溪_整理归档" + / "记忆系统" + / "sync_memory_to_mongo.py" + ) + if not script.exists(): + print(f"⚠️ 未找到 {script}") + return + print("▶ sync_memory_to_mongo.py …") + subprocess.run([sys.executable, str(script)], check=False) + + +def main() -> None: + ap = argparse.ArgumentParser(description="karuo_site 每日 Mongo 整理") + ap.add_argument("--force", action="store_true", help="忽略日期戳,强制执行") + ap.add_argument("--dry-run", action="store_true", help="不写库、不写日期戳") + ap.add_argument( + "--skip-memory-sync", + action="store_true", + help="不执行 记忆.md → Mongo 子进程", + ) + args = ap.parse_args() + + if not args.force and not args.dry_run and already_done_today(): + print(f"[mongo_daily_consolidate] 今日({today_str()})已整理过,跳过。(--force 可重跑)") + return + + STRUCTURED.mkdir(parents=True, exist_ok=True) + + try: + client = MongoClient( + MONGO_URI, + serverSelectionTimeoutMS=8000, + socketTimeoutMS=600_000, + connectTimeoutMS=20_000, + ) + client.admin.command("ping") + except (ServerSelectionTimeoutError, Exception) as e: + print(f"❌ MongoDB 连接失败: {e}") + sys.exit(1) + + db = client[MONGO_DB] + print(f"📦 库: {MONGO_DB}(每日全量整理) dry_run={args.dry_run}") + + run_ensure_indexes(args.dry_run) + + s1, u1, d1 = normalize_messages(db, args.dry_run) + print(f" 消息内容: 扫描 {s1}, 规范化更新 {u1}, 删空 {d1}") + + s2, u2 = normalize_conversations(db, args.dry_run) + print(f" 对话记录: 扫描 {s2}, 字段规范化更新 {u2}") + + try: + sm, rm, mu = dedupe_and_normalize_memory(db, args.dry_run) + print(f" 记忆条目: 扫描 {sm}, 同质化删除 {rm}, 规范化更新 {mu}") + except Exception as ex: + print(f"⚠️ 记忆条目整理失败(已跳过该段): {ex}") + + client.close() + + if not args.skip_memory_sync: + run_memory_md_sync(args.dry_run) + else: + print("▶ 已跳过 sync_memory_to_mongo.py") + + # 刷新分类需重新连库(上已 close) + if not args.dry_run: + try: + client2 = MongoClient( + MONGO_URI, + serverSelectionTimeoutMS=8000, + socketTimeoutMS=120_000, + ) + client2.admin.command("ping") + refresh_project_categories(client2[MONGO_DB]) + client2.close() + except Exception as ex: + print(f"⚠️ 项目分类刷新失败: {ex}") + + if not args.dry_run: + STAMP_FILE.write_text(today_str(), encoding="utf-8") + print(f"✅ 已写入日期戳: {STAMP_FILE}") + else: + print("(dry-run)未写日期戳") + + print("完成。") + + +if __name__ == "__main__": + main() diff --git a/02_卡人(水)/水岸_项目管理/Soul技能归口/SKILL.md b/02_卡人(水)/水岸_项目管理/Soul技能归口/SKILL.md new file mode 100644 index 00000000..76d10822 --- /dev/null +++ b/02_卡人(水)/水岸_项目管理/Soul技能归口/SKILL.md @@ -0,0 +1,40 @@ +--- +title: Soul技能归口 · 水岸掌管 +name: Soul技能归口 +description: Soul(口语「寿」多为误写)创业派对相关 Cursor Skill 的**统一物理目录**与**索引入口**;**掌管人**为 **水岸**(项目调度与套件归口)。触发:Soul技能归口、Soul套件、K01、派对总控、玉宁、永平三端。 +owner: 水岸 +group: 水 +version: "1.0" +updated: "2026-03-26" +--- + +# Soul技能归口 · 水岸掌管 + +> **定位**:本目录集中存放 **Soul 创业派对** 在卡若AI 侧的主要 Skill 真源(K01~K03 + 薄入口);**不搬迁**大体量树(如 `水桥_平台对接/Soul创业实验/`),仅在索引中 **外链**。 +> **命名**:正文统一 **卡若**。语音误写「卡路」「卡罗拉」「卡路里」在指本体系时均视同 **卡若**(食物热量仍用 **cal/kcal**)。平台名 **Soul**(口语「寿」多为误写)。 + +## 一、本目录内文件(相对路径 = 卡若AI 根) + +| 角色 | 路径 | 说明 | +|:---|:---|:---| +| **总索引** | `02_卡人(水)/水岸_项目管理/Soul技能归口/SKILL.md` | 本文件 | +| **K01 分流** | `…/Soul技能归口/卡若创业派对_总控/SKILL.md` | 运营 vs 永平开发 | +| **K02 运营** | `…/Soul技能归口/卡若玉宁运营专线/SKILL.md` | 玉宁专线 · 内容/切片/报表/分发 | +| **K03 网站** | `…/Soul技能归口/卡若网站开发_永平三端/SKILL.md` | 永平 soul-api / soul-admin / miniprogram | +| **薄入口 · 项目管理** | `…/Soul技能归口/Soul派对项目管理_Cursor入口/SKILL.md` | 水岸 W17 配套 | +| **薄入口 · 运营报表** | `…/Soul技能归口/Soul派对运营报表_Cursor入口/SKILL.md` | 飞书报表 Cursor 入口 | + +## 二、关联真源(目录外 · 必读链) + +| 文档 | 路径 | +|:---|:---| +| **Stream 掌管人规约** | `02_卡人(水)/水岸_项目管理/卡若创业派对/Soul派对技能流_掌管人与Stream规约.md` | +| **项目 README(流程清单)** | `02_卡人(水)/水岸_项目管理/卡若创业派对/README.md` | +| **水岸多项目总 Skill** | `02_卡人(水)/水岸_项目管理/SKILL.md`(W17) | +| **Soul 创业实验(写书/上传)** | `02_卡人(水)/水桥_平台对接/Soul创业实验/SKILL.md`(W10) | +| **获客深链路 F23~F27** | `04_卡火(火)/火炬_全栈消息/` 下各子目录;索引见 `全栈开发` §1.11 | + +## 三、维护规则 + +- **新增** Soul 套件内薄 Skill:优先落在 **本目录** 或 `卡若创业派对/`,并登记 `SKILL_REGISTRY.md` + `01_技能控制台.md`。 +- **Cursor 配置**:技能路径请指向上表 **五行目录** 绝对路径,勿再指向已废弃的 `卡若AI/.cursor/skills/` 正文(该目录仅 `README.md` 说明)。 diff --git a/02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对运营报表_Cursor入口/SKILL.md b/02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对运营报表_Cursor入口/SKILL.md new file mode 100644 index 00000000..3a40b6ec --- /dev/null +++ b/02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对运营报表_Cursor入口/SKILL.md @@ -0,0 +1,25 @@ +--- +name: Soul派对运营报表_Cursor入口 +description: Soul 派对运营报表自动化薄入口。触发:运营报表、派对填表、派对纪要、妙记填表。 +triggers: Soul派对运营报表、派对运营报表、运营报表自动化、派对填表发群 +owner: 水桥 +group: 水 +version: "1.0" +updated: "2026-03-26" +legacy_name: soul-operation-report(原 `.cursor/skills/`) +--- + +# Soul 派对运营报表(薄入口) + +> **完整流程与 W11**:`02_卡人(水)/水桥_平台对接/飞书管理/运营报表_SKILL.md` +> **项目管理**:`02_卡人(水)/水岸_项目管理/SKILL.md` +> **卡若创业派对 README**:`02_卡人(水)/水岸_项目管理/卡若创业派对/README.md` + +## 快速命令 + +```bash +cd /Users/karuo/Documents/个人/卡若AI +python3 "02_卡人(水)/水桥_平台对接/飞书管理/脚本/soul_party_to_feishu_sheet.py" <场次号> +``` + +更多阶段与凭证见卡若创业派对 README。 diff --git a/02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对项目管理_Cursor入口/SKILL.md b/02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对项目管理_Cursor入口/SKILL.md new file mode 100644 index 00000000..1f9f5713 --- /dev/null +++ b/02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对项目管理_Cursor入口/SKILL.md @@ -0,0 +1,29 @@ +--- +name: Soul派对项目管理_Cursor入口 +description: 水岸·项目管理中枢入口。多项目调度、卡若创业派对目录。触发:项目管理、水岸、项目总览、Soul项目管理、派对全流程。 +triggers: 项目管理、水岸、项目总览、管理项目、新建项目、卡若创业派对、Soul项目管理、派对全流程、Soul运营 +owner: 水岸 +group: 水 +version: "1.0" +updated: "2026-03-26" +legacy_name: soul-party-project(原 `.cursor/skills/`) +--- + +# 水岸 · 项目管理中枢(薄入口) + +> **Soul 套件内二分**:若任务明确属于「派对运营(玉宁)」或「永平网站开发」,优先用 **`02_卡人(水)/水岸_项目管理/Soul技能归口/卡若创业派对_总控/SKILL.md`**(K01)分流。 +> **本入口**:多项目 / 水岸总调度;**完整正文**在同目录上一级 `SKILL.md`(W17)。 + +## 交互默认(与卡若中枢一致) + +- **零提问、直接做**:先读对应 `SKILL.md` / README → **直接落地**。 +- 细则:`.cursor/rules/karuo-ai.mdc`;Soul 永平仓库另见永平 `.cursor/rules/soul-project-boundary.mdc` 等。 + +## 使用方式 + +1. **Read 完整水岸 SKILL**:`02_卡人(水)/水岸_项目管理/SKILL.md` +2. 卡若创业派对:`02_卡人(水)/水岸_项目管理/卡若创业派对/README.md` + +## 派对闭环 · 复盘发群(与 karuo-party 对齐) + +完整闭环时:除卡若复盘五块外,可按 **永平** 仓库 `.cursor/skills/karuo-party/SKILL.md` §九 推飞书群;Webhook 用 **`FEISHU_PARTY_CLOSURE_WEBHOOK`**,勿写死 URL。 diff --git a/02_卡人(水)/水岸_项目管理/Soul技能归口/卡若创业派对_总控/SKILL.md b/02_卡人(水)/水岸_项目管理/Soul技能归口/卡若创业派对_总控/SKILL.md new file mode 100644 index 00000000..09d90b25 --- /dev/null +++ b/02_卡人(水)/水岸_项目管理/Soul技能归口/卡若创业派对_总控/SKILL.md @@ -0,0 +1,58 @@ +--- +name: 卡若创业派对_总控 +description: 卡若创业派对项目总控(Soul 套件)。统一归口:① 玉宁专线·运营 ② 网站开发(永平三端)。触发:卡若创业派对、卡若派对、玉宁、永平开发、派对总控。 +triggers: 卡若创业派对、卡若派对、卡洛创业派对、Soul派对项目总控、派对运营和网站一起管、玉宁、永平开发、永平三端 +owner: 水岸 +group: 水 +version: "1.0" +updated: "2026-03-26" +legacy_name: kalu-entrepreneur-party(原 `.cursor/skills/`) +--- + +# 卡若 · 创业派对(项目总控 · K01) + +> **定位**:在 **卡若AI** 仓库内,为「卡若/卡若创业派对」提供 **单一入口**:先判任务属于 **运营(玉宁线)** 还是 **网站开发**,再 **Read** 对应子 Skill 全量执行。 +> **与「水岸」关系**:跨项目调度、五行资源仍走 `02_卡人(水)/水岸_项目管理/SKILL.md`(W17);本 Skill 侧重 **派对单项目** 内 **运营 / 开发** 二分法。 + +## 命名说明 + +| 称呼 | 含义 | +|:---|:---| +| 卡若(语音误写:卡路、卡罗拉、卡路里 等) | 同一体系,正文只写「卡若」;指食物热量时仍用 **cal/kcal** | +| 卡若创业派对 | 项目正式名(Soul 创业派对产品线) | +| 玉宁 | 运营侧专线负责人(本仓库技能归口名) | + +## 触发词 + +卡若创业派对、卡若派对、卡洛创业派对、卡若创业派对总控、派对项目 Skill、 +Soul 派对运营加开发、玉宁那条线、网站那条线、永平三端、管理派对技能 + +## 执行协议(必须) + +1. **判断域** + - **运营**:写文章、视频切片、运营报表、妙记/纪要、多平台分发、素材库、飞书写群、Git 上传书稿、团队运营文档… → **Read** + `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若玉宁运营专线/SKILL.md`(K02) + - **开发**:小程序、管理端、API、数据库、部署、需求文档、全站修复、超级个体、链接人与事… → **Read** + `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若网站开发_永平三端/SKILL.md`(K03) + +2. **可同时涉及**:先拆成两条子任务,分别按子 Skill 执行,最后在复盘里合并说明。 + +3. **项目 README(水岸)**(流程级清单): + `02_卡人(水)/水岸_项目管理/卡若创业派对/README.md` + +4. **Soul 派对技能流(Stream)· 掌管人规约**: + `02_卡人(水)/水岸_项目管理/卡若创业派对/Soul派对技能流_掌管人与Stream规约.md` + +5. **水岸多项目总入口**(与派对并列时):`02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对项目管理_Cursor入口/SKILL.md` 或直读 `水岸_项目管理/SKILL.md`。 + +## 子 Skill 一览 + +| 子 Skill | 路径(卡若AI 根相对) | 负责 | +|:---|:---|:---| +| 玉宁专线 · 运营(K02) | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若玉宁运营专线/SKILL.md` | 派对内容生产与飞书运营闭环 | +| 网站开发 · 永平三端(K03) | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若网站开发_永平三端/SKILL.md` | soul-api / soul-admin / miniprogram | + +## 对话与复盘 + +- Mongo 留存、卡若复盘五块:遵守 `.cursor/rules/karuo-ai.mdc`。 +- 派对闭环发飞书(若在永平仓库触发):见永平 `.cursor/skills/karuo-party/SKILL.md` §九;Webhook 用环境变量,勿写死密钥。 diff --git a/.cursor/skills/kalu-party-yuning-ops/SKILL.md b/02_卡人(水)/水岸_项目管理/Soul技能归口/卡若玉宁运营专线/SKILL.md similarity index 62% rename from .cursor/skills/kalu-party-yuning-ops/SKILL.md rename to 02_卡人(水)/水岸_项目管理/Soul技能归口/卡若玉宁运营专线/SKILL.md index ceeb4390..5ab08c39 100644 --- a/.cursor/skills/kalu-party-yuning-ops/SKILL.md +++ b/02_卡人(水)/水岸_项目管理/Soul技能归口/卡若玉宁运营专线/SKILL.md @@ -1,22 +1,25 @@ --- -name: kalu-party-yuning-ops -description: > - 卡路创业派对 · 玉宁专线(运营侧)。与卡若AI「Soul 派对技能流(Stream)」掌管人规约一致: - 写文章、视频切片、运营报表、智能纪要/妙记、多平台分发、素材库、飞书、Gitea/GitHub、录屏文字、团队文档等。 - 当用户提到 玉宁、派对运营、Soul派对技能流、派对Stream、创业派对Stream、写文章、视频切片、运营报表、分发到各平台、Soul文章、第9章、飞书写群、录屏文字、团队管理 时激活。 +name: 卡若玉宁运营专线 +description: 卡若创业派对 · 玉宁专线(运营侧)。Soul 派对技能流 Stream;写文章、切片、报表、妙记、分发、飞书、第9章等。触发:玉宁、派对运营、派对Stream、Soul文章、视频切片、运营报表。 +triggers: 玉宁、派对运营、Soul派对技能流、派对Stream、创业派对Stream、写文章、视频切片、运营报表、妙记、Soul文章、第9章、多平台分发 +owner: 水岸 +group: 水 +version: "1.0" +updated: "2026-03-26" +legacy_name: kalu-party-yuning-ops(原 `.cursor/skills/`) --- -# 卡路 · 玉宁专线(运营) +# 卡若 · 玉宁专线(运营 · K02) -> **职责**:**不包含** 永平仓库里的前后端改代码(那属于 `kalu-party-soul-website-dev`)。 -> **包含**:派对结束后的 **数据 → 内容 → 分发 → 飞书** 全链路,以及你在 Cursor 里固定的 **运营类 Agent** 所依赖的全部 **SKILL 路径**。 -> **掌管人归口(卡若AI)**:五行侧 **水岸 / 水桥 / 木叶 / 金仓** 与各环节 SKILL 的对应关系,以 **`02_卡人(水)/水岸_项目管理/卡若创业派对/Soul派对技能流_掌管人与Stream规约.md`** 为 **唯一权威**;本 Skill 为 Cursor 运营入口,**执行顺序与成员分配**与该 Stream 规约 **一致**。 +> **职责**:**不包含** 永平仓库里的前后端改代码(那属于 `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若网站开发_永平三端/SKILL.md`)。 +> **包含**:派对结束后的 **数据 → 内容 → 分发 → 飞书** 全链路。 +> **掌管人归口**:以 **`02_卡人(水)/水岸_项目管理/卡若创业派对/Soul派对技能流_掌管人与Stream规约.md`** 为 **唯一权威**。 ## 触发词 玉宁、运营写文章、运营视频切片、运营报表、派对填表、派对纪要、妙记、飞书妙记、 多平台分发、一键分发、Soul创业实验、写Soul文章、Soul上传、第9章、 -Soul发到素材库、录屏文字、团队管理、运营分发、飞书写群、复盘发飞书(仅运营内容)、 +Soul发到素材库、录屏文字、团队管理、运营分发、飞书写群、 **Soul派对技能流、派对Stream、创业派对Stream、用Stream跑派对** ## 一、派对闭环(顺序参考 · 与水岸 README 一致) @@ -42,13 +45,11 @@ Soul发到素材库、录屏文字、团队管理、运营分发、飞书写群 | Excel→飞书表格→日报图 | `02_卡人(水)/水桥_平台对接/飞书管理/Excel表格与日报_SKILL.md` | W13 | | 飞书 JSON 块格式 | `02_卡人(水)/水桥_平台对接/飞书管理/飞书JSON格式_SKILL.md` | W16 | | 卡猫 / 婼瑄复盘发群 | `02_卡人(水)/水桥_平台对接/飞书管理/卡猫复盘/SKILL.md` | W14 | -| 复盘 webhook 脚本 | `02_卡人(水)/水桥_平台对接/飞书管理/脚本/send_review_to_feishu_webhook.py` | 按需;对话结束**不**默认调用,见 `karuo-ai.mdc` | | Gitea / Git 推送 | `01_卡资(金)/金仓_存储备份/Gitea管理/SKILL.md` | G02 | -| 回廊洗字(卡若记忆宫殿命名体系 · 语音转写纠错/闽南口音等) | `02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md` | W03b | -| 切片脚本 soul_enhance | `03_卡木(木)/木叶_视频内容/视频切片/脚本/soul_enhance.py` | 联动 M01 | +| 回廊洗字(语音转写纠错) | `02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md` | W03b | | 平台申诉(Soul/抖音等) | `02_卡人(水)/水桥_平台对接/平台账号申诉解封/SKILL.md` | W10b | -## 三、与 Cursor Agent 名称对齐(你侧边栏「运营-*」) +## 三、与 Cursor Agent 名称对齐(「运营-*」) | Agent 习惯名 | 归口 | |:---|:---| @@ -56,8 +57,8 @@ Soul发到素材库、录屏文字、团队管理、运营分发、飞书写群 | 运营-视频切片 | M01 + soul_enhance | | 运营-运营报表 | W11 | | 运营-分发到各平台 | M01h + 各 M01b~g | -| 运营-获得录屏文字 | W08 妙记/纪要链路 + 智能纪要脚本 | -| 运营-团队管理 | 飞书 W07 + 团队流程文档(`水岸`/人事相关目录按需) | +| 运营-获得录屏文字 | W08 妙记/纪要链路 | +| 运营-团队管理 | 飞书 W07 + 团队流程文档 | ## 四、硬规则 diff --git a/.cursor/skills/kalu-party-soul-website-dev/SKILL.md b/02_卡人(水)/水岸_项目管理/Soul技能归口/卡若网站开发_永平三端/SKILL.md similarity index 59% rename from .cursor/skills/kalu-party-soul-website-dev/SKILL.md rename to 02_卡人(水)/水岸_项目管理/Soul技能归口/卡若网站开发_永平三端/SKILL.md index 3eb38444..5920c15a 100644 --- a/.cursor/skills/kalu-party-soul-website-dev/SKILL.md +++ b/02_卡人(水)/水岸_项目管理/Soul技能归口/卡若网站开发_永平三端/SKILL.md @@ -1,15 +1,18 @@ --- -name: kalu-party-soul-website-dev -description: > - 卡路创业派对 · 网站开发(永平仓库)。汇总 Cursor Agent「网站-*」:soul-api、soul-admin、miniprogram、 - 用户管理、内容管理、数据统计、部署、GitHub、全站修复、超级个体与 CKB 等。 - 当用户提到 永平、Soul网站、soul-api、管理端、soul-admin、小程序开发、用户管理、内容管理、 - 全站修复、超级个体、链接人与事、部署 soul、github 上传网站 时激活。 +name: 卡若网站开发_永平三端 +description: 卡若创业派对 · 网站开发(永平仓库)。soul-api、soul-admin、miniprogram、部署、超级个体与 CKB 等。触发:永平、soul-api、管理端、小程序、全站修复、超级个体。 +triggers: 永平、Soul网站、soul-api、管理端、soul-admin、小程序、miniprogram、全站修复、超级个体、部署 soul、github 上传网站 +owner: 水岸 +group: 水 +version: "1.0" +updated: "2026-03-26" +legacy_name: kalu-party-soul-website-dev(原 `.cursor/skills/`) --- -# 卡路 · 网站开发(永平三端) +# 卡若 · 网站开发(永平三端 · K03) -> **仓库根**:`/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平` +> **仓库根**(随本机):`/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平` +> **掌管**:**水岸**(Soul技能归口);**实操**进永平仓库后仍按本节所列 **火炬系** Skill(api-dev / admin-dev / miniprogram-dev)执行。 > **原则**:小程序只调 `/api/miniprogram/*`;管理端只调 `/api/admin/*`、`/api/db/*`。变更后过 `change-checklist`。 ## 触发词 @@ -17,7 +20,7 @@ description: > 永平、Soul API、Soul 管理端、soul-admin、小程序、miniprogram、网站开发、用户管理、内容管理、 数据统计、全站修复、超级个体、链接人与事、存客宝对接、部署、GitHub、devlop、三端联调 -## 一、在永平仓库内必读 Skill(相对仓库根 `.cursor/skills/`) +## 一、在永平仓库内必读 Skill(相对**永平**仓库根 `.cursor/skills/`) | 场景 | 文件 | |:---|:---| @@ -53,7 +56,7 @@ description: > ## 四、线上入口(验收 / 联调) -- 管理端:`https://souladmin.quwanzhi.com/`(路径见各 Route:`/content`、`/users`、`/dashboard` …) +- 管理端:`https://souladmin.quwanzhi.com/` - API:`https://soulapi.quwanzhi.com/health` - C 端:微信小程序「**卡若创业派对**」 @@ -63,7 +66,21 @@ description: > - **忽略** 永平 `.cursor/` 外无关全局规则(见 `soul-project-boundary.mdc`)。 - 敏感配置不写进 Skill 正文。 -## 六、与「玉宁运营」边界 +## 六、获客编排与跨小程序跳转(方法论) -- **不写书稿、不跑切片、不填运营报表** → 若用户同时要做,先拆给 `kalu-party-yuning-ops`。 +详规在卡若AI 火炬 **`火炬_全栈消息/`** 下 **F23~F27**(见 `SKILL_REGISTRY` 火组)。 + +| 编号 | 文件(相对 `04_卡火(火)/火炬_全栈消息/`) | +|:---|:---| +| F23 | `小程序链接标签与跨小程序跳转/SKILL.md` | +| F24 | `推广邀请与三十日绑定/SKILL.md` | +| F25 | `分销佣金与提现编排/SKILL.md` | +| F26 | `超级个体点击与获客统计/SKILL.md` | +| F27 | `存客宝BFF与留资队列/SKILL.md` | + +**《全栈开发》§1.11** 为索引;通用埋点 **§1.10**。 + +## 七、与「玉宁运营」边界 + +- **不写书稿、不跑切片、不填运营报表** → 若用户同时要做,先拆给 `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若玉宁运营专线/SKILL.md`(K02)。 - **接口/字段/页面** 才在本 Skill 落地。 diff --git a/02_卡人(水)/水岸_项目管理/卡若创业派对/README.md b/02_卡人(水)/水岸_项目管理/卡若创业派对/README.md index a18564ac..8422a619 100644 --- a/02_卡人(水)/水岸_项目管理/卡若创业派对/README.md +++ b/02_卡人(水)/水岸_项目管理/卡若创业派对/README.md @@ -11,7 +11,7 @@ updated: "2026-03-23" > **定位**:Soul 创业派对全链路——从派对结束到内容变现,跨组调度水桥+木叶。 > **管辖范围**:运营数据 → 飞书报表 → 视频下载 → 视频切片 → 多平台分发 → 文章写作 → 小程序上传 -**固定技能流(Stream)**:各技能 **掌管人** 与 **调用规约**(含 Cursor 卡路 K01~K03 对齐)→ 必读 +**固定技能流(Stream)**:各技能 **掌管人** 与 **调用规约**(含 Cursor 卡若 K01~K03 对齐)→ 必读 [`Soul派对技能流_掌管人与Stream规约.md`](./Soul派对技能流_掌管人与Stream规约.md) --- diff --git a/02_卡人(水)/水岸_项目管理/卡若创业派对/Soul派对技能流_掌管人与Stream规约.md b/02_卡人(水)/水岸_项目管理/卡若创业派对/Soul派对技能流_掌管人与Stream规约.md index 1c65476c..e0e4f437 100644 --- a/02_卡人(水)/水岸_项目管理/卡若创业派对/Soul派对技能流_掌管人与Stream规约.md +++ b/02_卡人(水)/水岸_项目管理/卡若创业派对/Soul派对技能流_掌管人与Stream规约.md @@ -10,7 +10,7 @@ updated: "2026-03-23" > **Stream**:本项目的**固定技能流水线名称**(口语可说「派对 Stream」「Soul 技能流」)。 > **说明**:与 Steam 无关;统一以本文档 + `README.md` 为归口。 -> **体系**:归属 **卡若AI**(口语「卡路/卡罗拉」同系);Cursor 侧 **卡路创业派对** Agent 与本文档 **对齐同一套掌管人**。 +> **体系**:归属 **卡若AI**。正文统一称 **卡若**;语音误写「卡路」「卡罗拉」「卡路里」在指本体系时均视同 **卡若**(食物热量的 **cal/kcal** 除外)。Cursor 侧 **卡若创业派对** Agent 与本文档 **对齐同一套掌管人**。 --- @@ -19,8 +19,8 @@ updated: "2026-03-23" | 角色(卡若AI 成员) | 职责 | 何时点名 | |:---|:---|:---| | **水岸** | **项目总控 / 调度**:不代替执行,按阶段读子 SKILL、排期、跨组串联 | 派对全流程、项目管理、`@水岸`、W17 | -| **玉宁(运营专线名)** | 与 **水桥+木叶** 执行链一致;在 Cursor 里对应 **K02 玉宁运营** Skill | 运营类 Agent、卡路 K01 判为运营后 | -| **火炬 / 火锤** | **永平三端开发**(小程序 / 管理端 / API):**不走**本 Stream 的 Phase 1~4 脚本链 | 改代码、接口、部署 → **K03** 或 `kalu-party-soul-website-dev` | +| **玉宁(运营专线名)** | 与 **水桥+木叶** 执行链一致;在 Cursor 里对应 **K02 玉宁运营** Skill | 运营类 Agent、卡若 K01 判为运营后 | +| **水岸(套件归口)+ 火炬 / 火锤(代码执行)** | **永平三端开发**(小程序 / 管理端 / API):**不走**本 Stream 的 Phase 1~4 脚本链 | 改代码、接口、部署 → **K03**(`Soul技能归口/卡若网站开发_永平三端`);进永平仓库后按该 Skill 内 api-dev / admin-dev 等执行 | --- @@ -51,12 +51,12 @@ updated: "2026-03-23" - **第一步** Read:`卡若创业派对/README.md` **或** 本文档; - **第二步** 按环节由上表 **点名掌管人**(或按 SKILL_REGISTRY「成员」列路由); - **第三步** Read 对应 SKILL.md 逐步执行。 -2. **Cursor 入口(与五行表互补)**: - - **总控分流**:`.cursor/skills/kalu-entrepreneur-party/SKILL.md`(K01) - - **运营 = 本 Stream**:`.cursor/skills/kalu-party-yuning-ops/SKILL.md`(K02) + 本文档 - - **开发 ≠ Stream**:`.cursor/skills/kalu-party-soul-website-dev/SKILL.md`(K03) - - **水岸中枢**:`.cursor/skills/soul-party-project` → `水岸_项目管理/SKILL.md` - - **仅运营报表快捷**:`.cursor/skills/soul-operation-report` +2. **Cursor 入口(与五行表互补 · 真源在 Soul技能归口)**: + - **总控分流**:`02_卡人(水)/水岸_项目管理/Soul技能归口/卡若创业派对_总控/SKILL.md`(K01) + - **运营 = 本 Stream**:`02_卡人(水)/水岸_项目管理/Soul技能归口/卡若玉宁运营专线/SKILL.md`(K02) + 本文档 + - **开发 ≠ Stream**:`02_卡人(水)/水岸_项目管理/Soul技能归口/卡若网站开发_永平三端/SKILL.md`(K03) + - **水岸中枢**:`02_卡人(水)/水岸_项目管理/SKILL.md`(W17) + - **仅运营报表快捷**:`02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对运营报表_Cursor入口/SKILL.md` 3. **BOOTSTRAP 热技能**:已登记触发词 **Soul派对技能流 / 派对Stream / 创业派对Stream** → 优先 Read **本文档**。 4. **禁止混淆**:改 **soul-api / soul-admin / miniprogram** 代码的需求,**不要**从 Stream 脚本链硬拐;应走 **K03 + 永平项目** 规范。 @@ -73,4 +73,6 @@ updated: "2026-03-23" | 日期 | 说明 | |:---|:---| -| 2026-03-23 | 初版:Soul 派对技能流(Stream)掌管人矩阵 + 与卡路 K01~K3 / 水岸 README 对齐 | +| 2026-03-23 | 初版:Soul 派对技能流(Stream)掌管人矩阵 + 与卡若 K01~K03 / 水岸 README 对齐 | +| 2026-03-26 | Soul技能归口目录化;水岸套件归口 + K03 掌管人登记水岸;用语统一卡若 | +| 2026-03-27 | 旧称「卡路」「卡路里(指体系)」正文收口为卡若;本节 Cursor 路径改为 Soul技能归口真源 | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-01-21/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-01-21/本日汇总.md index f21d7b96..d821f1e4 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-01-21/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-01-21/本日汇总.md @@ -19,5 +19,5 @@ | @开发 2、私域银行 神射手 @开发 2、私域银行 数据中台 这两个最重 | 开发工作区 | `@开发 2、私域银行 神射手 @开发 2、私域银行 数据中台 这两个最重_542af226-f2f3-4b3d-9378-6e441b5f2ca3.txt` | | @开发 4、小工具 synology群晖nas 写一个管理群晖nas的s | 开发工作区 | `@开发 4、小工具 synology群晖nas 写一个管理群晖nas的s_ea95b327-73eb-4271-847f-f6f11072e84c.txt` | | 将这几个,那个。这几个项目提取核心的内容,并且让我可以直接操作的一个形式 | 开发工作区 | `将这几个,那个。这几个项目提取核心的内容,并且让我可以直接操作的一个形式_b2ec8d2d-7cab-46ee-9a01-1e980b570d06.txt` | -| 那个将卡洛 AI 里面的那个 skill 做按,卡洛常用,按我常用的那个 | 开发工作区 | `那个将卡洛 AI 里面的那个 skill 做按,卡洛常用,按我常用的那个_6d69318a-c185-405d-90a1-950423e949ff.txt` | +| 那个将卡若AI 里面的那个 skill 做按,卡若常用,按我常用的那个 | 开发工作区 | `那个将卡若AI 里面的那个 skill 做按,卡若常用,按我常用的那个_6d69318a-c185-405d-90a1-950423e949ff.txt` | | 连接到这台nas 192.168.1.201 上并且告诉我上面docke | 群晖NAS2工作区 | `连接到这台nas 192.168.1.201 上并且告诉我上面docke_e6a12dce-fc1e-4cc7-9547-f2e475d3c12b.txt` | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-01-24/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-01-24/本日汇总.md index e5be1546..90481c38 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-01-24/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-01-24/本日汇总.md @@ -16,5 +16,5 @@ | @开发 2、私域银行 cunkebao_v3 智能追问 | 开发工作区 | `@开发 2、私域银行 cunkebao_v3 智能追问_71af3e6e-759e-4041-a218-8161f1e3fc7f.txt` | | 下载.https kr-op.quwanzhi.com 的代码和数据库 | 开发工作区 | `下载.https kr-op.quwanzhi.com 的代码和数据库_5ad43073-3059-4fff-854e-50069d41d5f5.txt` | | 修复一下小型宝塔服务器上的这个域名 | 开发工作区 | `修复一下小型宝塔服务器上的这个域名_df54ef81-401c-4ad3-a2a7-6b69fc205029.txt` | -| 卡若ai 优化。将这个卡洛 AI 设定成一个设,那这人设里面它相当于一个 | 开发工作区 | `卡若ai 优化。将这个卡洛 AI 设定成一个设,那这人设里面它相当于一个_033df1e1-e3a1-4523-b221-953651dee08e.txt` | +| 卡若ai 优化。将这个卡若AI 设定成一个设,那这人设里面它相当于一个 | 开发工作区 | `卡若ai 优化。将这个卡若AI 设定成一个设,那这人设里面它相当于一个_033df1e1-e3a1-4523-b221-953651dee08e.txt` | | 看看这台电脑的追踪 最近的一段使用期度跟 喜歡看看我最近都在做了些什麼事 | 开发工作区 | `看看这台电脑的追踪 最近的一段使用期度跟 喜歡看看我最近都在做了些什麼事_61a3114e-07bd-43f9-86da-862145d39f8f.txt` | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-01-28/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-01-28/本日汇总.md index c76613cb..f3f731f6 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-01-28/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-01-28/本日汇总.md @@ -18,4 +18,4 @@ | Claude普号登录教程 | 开发工作区 | `Claude普号登录教程_d417195b-0cbe-48ec-8473-83a5022a7010.txt` | | 分析一下我这个微信,本地这个微信。分析一下我今天本地微信的一个聊天内容, | 开发工作区 | `分析一下我这个微信,本地这个微信。分析一下我今天本地微信的一个聊天内容,_99f5f913-932d-4e69-8319-6af22bd5dbca.txt` | | 查找这台电脑安装的一个小模型,有什么小模型?已经安装的,并且可以使用的, | 开发工作区 | `查找这台电脑安装的一个小模型,有什么小模型?已经安装的,并且可以使用的,_84315bfd-8828-4c39-80fd-6092bf529c08.txt` | -| 让那个今天最重要的事情就是第一个卡洛尔那个书的小程序,然后那个 MBTI | 开发工作区 | `让那个今天最重要的事情就是第一个卡洛尔那个书的小程序,然后那个 MBTI_a92b60b6-24ec-4ea2-9d86-d690b372c4de.txt` | +| 让那个今天最重要的事情就是第一个卡若那个书的小程序,然后那个 MBTI | 开发工作区 | `让那个今天最重要的事情就是第一个卡若那个书的小程序,然后那个 MBTI_a92b60b6-24ec-4ea2-9d86-d690b372c4de.txt` | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-01-29/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-01-29/本日汇总.md index f5e1265b..d92862c3 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-01-29/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-01-29/本日汇总.md @@ -21,6 +21,6 @@ | deepseek的梁文峰,以及他相应用的和他搜索一下他全网,包括他的微博 | 开发工作区 | `deepseek的梁文峰,以及他相应用的和他搜索一下他全网,包括他的微博_6dabb9a9-12f7-4203-82a8-ca52aa095c25.txt` | | https cunkebao.feishu.cn minutes obc | 开发工作区 | `https cunkebao.feishu.cn minutes obc_890c3656-ae41-44e0-bf77-ad960ed375f0.txt` | | 产研团队 第21场 20260129 许永平.txt@聊天记录 产研团队 | 开发工作区 | `产研团队 第21场 20260129 许永平.txt@聊天记录 产研团队_3b632fbc-dd3c-415d-b7ca-7404349449b3.txt` | -| 那个分析一下卡洛 AI 的下面的管理的所有的能,它的能力可以自己把能力拆 | 开发工作区 | `那个分析一下卡洛 AI 的下面的管理的所有的能,它的能力可以自己把能力拆_f94affdc-9f9e-475f-8fcc-dc58a86ae324.txt` | +| 那个分析一下卡若AI 的下面的管理的所有的能,它的能力可以自己把能力拆 | 开发工作区 | `那个分析一下卡若AI 的下面的管理的所有的能,它的能力可以自己把能力拆_f94affdc-9f9e-475f-8fcc-dc58a86ae324.txt` | | 那个整理,并且搜索,整理一个,并且搜索上我所有的那个账号密码,以及账号密 | 开发工作区 | `那个整理,并且搜索,整理一个,并且搜索上我所有的那个账号密码,以及账号密_4ccd1bea-fe8c-4660-8076-75a2f4fa7fab.txt` | | https open.feishu.cn open-apis bot v | 群晖云盘 | `https open.feishu.cn open-apis bot v_daca49d4-e90e-447e-848f-61ed08f1e78a.txt` | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-01/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-01/本日汇总.md index 35d074b4..e7ae641a 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-01/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-01/本日汇总.md @@ -26,7 +26,7 @@ | 帮我清理一下那个小型宝塔的服务器空间,然后告诉我那个你清理的哪一些内容? | 开发工作区 | `帮我清理一下那个小型宝塔的服务器空间,然后告诉我那个你清理的哪一些内容?_a2ebc2fb-9e9f-4adc-a6e2-113c8e50dfde.txt` | | 帮我清理下小宝塔服务器的硬盘空间 | 开发工作区 | `帮我清理下小宝塔服务器的硬盘空间_9bccf922-50cb-4e4b-82bf-1f489b7cecd0.txt` | | 我已拍下,待付款 | 开发工作区 | `我已拍下,待付款_56c94913-cfa0-4a0e-a868-7ed6338a0677.txt` | -| 然后看一下这个卡罗 AI 的整个的那个对话跟操作流程,跟整个的那个一个形 | 开发工作区 | `然后看一下这个卡罗 AI 的整个的那个对话跟操作流程,跟整个的那个一个形_c2f28627-401b-47fa-8c15-f1ba4d4c406e.txt` | +| 然后看一下这个卡若AI 的整个的那个对话跟操作流程,跟整个的那个一个形 | 开发工作区 | `然后看一下这个卡若AI 的整个的那个对话跟操作流程,跟整个的那个一个形_c2f28627-401b-47fa-8c15-f1ba4d4c406e.txt` | | 用这个 auto 的这个那个量到底是用的是哪个模型?一旦规则是什么样的? | 开发工作区 | `用这个 auto 的这个那个量到底是用的是哪个模型?一旦规则是什么样的?_b3ca976a-9492-4f89-9fc0-ea219abc5c92.txt` | | 给我一下小程序的上传密钥。 | 开发工作区 | `给我一下小程序的上传密钥。_3faf2d68-a86d-4fef-9c5f-d6c189aa0253.txt` | | 继续 | 开发工作区 | `继续_da3ad40c-c2cc-4169-8bb5-72b4e97c1550.txt` | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-03/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-03/本日汇总.md index 17bc731c..ddba8420 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-03/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-03/本日汇总.md @@ -13,7 +13,7 @@ |:---|:---|:---| | 你,你可以随便说一个吗?比如我们看一下那个,有没有那个搜索一下这台电脑里 | Cursor工作区 | `你,你可以随便说一个吗?比如我们看一下那个,有没有那个搜索一下这台电脑里_0fc97fd9-82b7-415c-9daf-911462cabf42.txt` | | 把本地的那个存克宝 AI 那个封装成一个那个 coser 可以调用和对话 | Cursor工作区 | `把本地的那个存克宝 AI 那个封装成一个那个 coser 可以调用和对话_1d538d56-8119-4c83-a196-1b18c14505ec.txt` | -| 把那个卡路 AI 的那个经验库的功能,然后和吸收经验的逻辑,然后复刻一份 | Cursor工作区 | `把那个卡路 AI 的那个经验库的功能,然后和吸收经验的逻辑,然后复刻一份_cf809c12-e64c-46c0-a447-369cc67199ec.txt` | +| 把那个卡若AI 的那个经验库的功能,然后和吸收经验的逻辑,然后复刻一份 | Cursor工作区 | `把那个卡若AI 的那个经验库的功能,然后和吸收经验的逻辑,然后复刻一份_cf809c12-e64c-46c0-a447-369cc67199ec.txt` | | 说一下这个 存客保 AI的工作流程 直接在对话框给我 | Cursor工作区 | `说一下这个 存客保 AI的工作流程 直接在对话框给我_8af43a29-a391-472d-90c9-e72878669ed3.txt` | | 那个帮我把产年团队的那个会议的文档你找一下,帮我生成一个会议文档发到群里 | Cursor工作区 | `那个帮我把产年团队的那个会议的文档你找一下,帮我生成一个会议文档发到群里_70dc4a81-fe5e-4f4a-8153-f8cc02bd7955.txt` | | 那个一场受益的创业实验,现在服务器显示是520的那个状态,帮我处理一下。 | Soul工作区 | `那个一场受益的创业实验,现在服务器显示是520的那个状态,帮我处理一下。_e7be8424-acab-46a9-a56a-36a108088483.txt` | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/本日汇总.md index 95e049c0..fef456d7 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/本日汇总.md @@ -12,7 +12,7 @@ | 中文名称 | 所属工作台 | 对话文件 | |:---|:---|:---| | 一个雌性本鸡的时间,机器自动的一个备份,能自动的那个回溯到那个你认为合适 | 开发工作区 | `一个雌性本鸡的时间,机器自动的一个备份,能自动的那个回溯到那个你认为合适_1b10832f-38dc-4406-9532-bee9ede7c23d.txt` | -| 从github 的skill seekers抽象成一个然后这一个放在卡洛 | 开发工作区 | `从github 的skill seekers抽象成一个然后这一个放在卡洛_57b35ce8-d436-437a-84ae-f72519c8020e.txt` | +| 从github 的skill seekers抽象成一个然后这一个放在卡若 | 开发工作区 | `从github 的skill seekers抽象成一个然后这一个放在卡洛_57b35ce8-d436-437a-84ae-f72519c8020e.txt` | | 你有详细分析一下这整台的服务器这几年的每年的消费记录,详细一点的分析,然 | 开发工作区 | `你有详细分析一下这整台的服务器这几年的每年的消费记录,详细一点的分析,然_4f798d65-5963-4ec4-a55b-4a2a218eaa08.txt` | | 同时检查一下这个脑坑爹的这个网站里面的那个。文件有没有文件类型?有没有违 | 开发工作区 | `同时检查一下这个脑坑爹的这个网站里面的那个。文件有没有文件类型?有没有违_532f3db4-1ec8-4abd-bd53-dfa3a39c2fa6.txt` | | 处女,那个处女好,服务器这个相关的这个内容违规内容,然后类似的直接删除掉 | 开发工作区 | `处女,那个处女好,服务器这个相关的这个内容违规内容,然后类似的直接删除掉_94653bbc-bd39-42c9-a5cd-7b1dd597aede.txt` | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-08/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-08/本日汇总.md index f2b5d7c2..d06f9656 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-08/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-08/本日汇总.md @@ -16,7 +16,7 @@ | 历史上哪一任皇帝不会杀害韩信?那个详细的分析一下拆解,并且分析用的最强大 | 开发工作区 | `历史上哪一任皇帝不会杀害韩信?那个详细的分析一下拆解,并且分析用的最强大_21741784-41ef-4952-8ce8-f7f482e6f24e.txt` | | 吸收并优化这个网页的时机 在Github和其他的Skill找一下 操作网 | 开发工作区 | `吸收并优化这个网页的时机 在Github和其他的Skill找一下 操作网_207dddf6-f101-41f5-8a4f-b3f9bd86c3cb.txt` | | 帮我处理一下 | 开发工作区 | `帮我处理一下_b5288d87-24a2-45f2-94a9-e04dcf36eb36.txt` | -| 抽象一个,那个卡洛的那个 skill,那个助理的一个 skill 出来, | 开发工作区 | `抽象一个,那个卡洛的那个 skill,那个助理的一个 skill 出来,_fc64937e-7408-4ea0-b128-7541d5c394fd.txt` | +| 抽象一个,那个卡若的那个 skill,那个助理的一个 skill 出来, | 开发工作区 | `抽象一个,那个卡若的那个 skill,那个助理的一个 skill 出来,_fc64937e-7408-4ea0-b128-7541d5c394fd.txt` | | 搜索一下这个电脑上面有没有书籍相关的内容?word 或者 PDF 的 T | 开发工作区 | `搜索一下这个电脑上面有没有书籍相关的内容?word 或者 PDF 的 T_2b27991d-2ac0-4a8b-9ffd-3e4d594bd5db.txt` | | 解梦 1 | 开发工作区 | `解梦 1_97a8b0f3-3f42-4656-9bdf-34847446a504.txt` | | 解梦2 关于创业面试相关的梦境讲述 | 开发工作区 | `解梦2 关于创业面试相关的梦境讲述_6b9a8669-d624-4484-8331-a129311be8b6.txt` | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-10/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-10/本日汇总.md index e817fb7f..e17a27bd 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-10/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-10/本日汇总.md @@ -25,4 +25,4 @@ | 帮我控制这一台那个书房的电视,这台电视然后帮我打开那个,帮我选择一个适合 | 开发工作区 | `帮我控制这一台那个书房的电视,这台电视然后帮我打开那个,帮我选择一个适合_5287a84b-9147-413b-9c76-9e3b38267775.txt` | | 帮我生成这个月财务,制作完整的财务报表表格给我 | 开发工作区 | `帮我生成这个月财务,制作完整的财务报表表格给我_cd3e9ad2-e998-43bf-a030-3b825a33e631.txt` | | 支付系统支付系统 | 开发工作区 | `支付系统支付系统_f651eb7a-d5e9-4ff6-bf06-144bcd906e9e.txt` | -| 那个以你的视角对整个卡洛 AI 进行整体的那个。整体的一个优化跟规划,确 | 开发工作区 | `那个以你的视角对整个卡洛 AI 进行整体的那个。整体的一个优化跟规划,确_1343ea9c-291f-4e55-903a-f8bf0f12ca0b.txt` | +| 那个以你的视角对整个卡若AI 进行整体的那个。整体的一个优化跟规划,确 | 开发工作区 | `那个以你的视角对整个卡若AI 进行整体的那个。整体的一个优化跟规划,确_1343ea9c-291f-4e55-903a-f8bf0f12ca0b.txt` | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/本日汇总.md index 29fbc229..27e7160c 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/本日汇总.md @@ -12,7 +12,7 @@ | 中文名称 | 所属工作台 | 对话文件 | |:---|:---|:---| | https github.com fnvtk skills 那个默认上传 | 卡若AI工作区 | `https github.com fnvtk skills 那个默认上传_f5aa81bc-2d7a-4a2c-9b5c-f7bbfcdb51c6.txt` | -| 那个将卡洛 AI 的能力复制一份到存克宝 AI,然后这个主要是公司共用的 | 卡若AI工作区 | `那个将卡洛 AI 的能力复制一份到存克宝 AI,然后这个主要是公司共用的_17079f0b-b53a-4674-9d75-40e9e2c99e0a.txt` | +| 那个将卡若AI 的能力复制一份到存克宝 AI,然后这个主要是公司共用的 | 卡若AI工作区 | `那个将卡若AI 的能力复制一份到存克宝 AI,然后这个主要是公司共用的_17079f0b-b53a-4674-9d75-40e9e2c99e0a.txt` | | @ Applications WebPomodoro.app 在飞书上制 | 开发工作区 | `@ Applications WebPomodoro.app 在飞书上制_b57b9eab-201e-46f7-a4c3-715abd76e140.txt` | | @工作手机 机擎 @工作手机 开发文档 那个激情的整个的所有的能源,它主 | 开发工作区 | `@工作手机 机擎 @工作手机 开发文档 那个激情的整个的所有的能源,它主_f8a0aff3-f841-40db-b011-547e51608017.txt` | | Ai | 开发工作区 | `Ai_b8aaeb36-a7d8-43ae-a1b8-855d789f8dbc.txt` | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/本日汇总.md index 0b1daff0..343d1975 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/本日汇总.md @@ -14,9 +14,9 @@ | @MBTI .cursor skills @MBTI .cursor s | 开发工作区 | `@MBTI .cursor skills @MBTI .cursor s_8ac06bc1-66da-4cf5-8f5a-714631d96570.txt` | | 上传到github并且把项目同步在vercel上生成个v0的项目 | 开发工作区 | `上传到github并且把项目同步在vercel上生成个v0的项目_3629da4b-66d2-48aa-8ae8-9dca512653ad.txt` | | 上帝之眼的相应的核心能力和核心的代码,然后放到这个项目,那个赋能到这个项 | 开发工作区 | `上帝之眼的相应的核心能力和核心的代码,然后放到这个项目,那个赋能到这个项_9d9e8f9d-f448-4932-943e-7f6ca122e533.txt` | -| 使用卡路里来证实一个财务的一个。一个板块,然后那个使用卡洛 AI 来做这 | 开发工作区 | `使用卡路里来证实一个财务的一个。一个板块,然后那个使用卡洛 AI 来做这_1a9eddec-9d1e-4a36-8764-d80f13893124.txt` | +| 使用卡若来证实一个财务的一个。一个板块,然后那个使用卡若AI 来做这 | 开发工作区 | `使用卡路里来证实一个财务的一个。一个板块,然后那个使用卡若AI 来做这_1a9eddec-9d1e-4a36-8764-d80f13893124.txt` | | 前端 | 开发工作区 | `前端_cdcebbfc-0c10-4de3-9e0c-5e6190d56fe4.txt` | -| 卡路 AI 里面的那个目录里面找到这个今年该买的这个三只股票的一个内容和 | 开发工作区 | `卡路 AI 里面的那个目录里面找到这个今年该买的这个三只股票的一个内容和_89cf615f-ed2d-4fb6-865e-4db839903668.txt` | +| 卡若AI 里面的那个目录里面找到这个今年该买的这个三只股票的一个内容和 | 开发工作区 | `卡若AI 里面的那个目录里面找到这个今年该买的这个三只股票的一个内容和_89cf615f-ed2d-4fb6-865e-4db839903668.txt` | | 后端 | 开发工作区 | `后端_6e35a7b5-2ef4-47ca-943d-65658840132a.txt` | | 数据库 | 开发工作区 | `数据库_2410de25-3120-4dfd-b06b-1b237f588ef7.txt` | | 能生成我的中信银行和整个真实的一个财务报表和财务支出,包括中实银行卡卡猫 | 开发工作区 | `能生成我的中信银行和整个真实的一个财务报表和财务支出,包括中实银行卡卡猫_2a88cabb-908f-49eb-bfbb-f69bbc069d66.txt` | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-13/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-13/本日汇总.md index 973e1819..a3b9c061 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-13/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-13/本日汇总.md @@ -11,15 +11,15 @@ | 中文名称 | 所属工作台 | 对话文件 | |:---|:---|:---| -| 乘客,客跑 AI 的,吸收一下卡路,AI 这个自动化到服务器宝塔的这两台 | 卡若AI工作区 | `乘客,客跑 AI 的,吸收一下卡路,AI 这个自动化到服务器宝塔的这两台_3b04266e-de52-45d4-ae39-f607b35849c4.txt` | +| 乘客,客跑 AI 的,吸收一下卡若,AI 这个自动化到服务器宝塔的这两台 | 卡若AI工作区 | `乘客,客跑 AI 的,吸收一下卡路,AI 这个自动化到服务器宝塔的这两台_3b04266e-de52-45d4-ae39-f607b35849c4.txt` | | @ Users karuo Documents 个人 个人的文件里面的文 | 开发工作区 | `@ Users karuo Documents 个人 个人的文件里面的文_48602012-35ea-44c5-ae8a-12290886bbf9.txt` | -| AI 版所有的账号密码帮我列出来。卡罗 AI | 开发工作区 | `AI 版所有的账号密码帮我列出来。卡罗 AI_c05a89a0-eb34-48fb-be36-199b0532ee0c.txt` | +| AI 版所有的账号密码帮我列出来。卡若AI | 开发工作区 | `AI 版所有的账号密码帮我列出来。卡若AI_c05a89a0-eb34-48fb-be36-199b0532ee0c.txt` | | Users karuo Documents 个人 3、工作台 | 开发工作区 | `Users karuo Documents 个人 3、工作台_7c65f9b7-ac29-4615-9a90-66a997818708.txt` | | glm 5现在的价格和claude的对比 | 开发工作区 | `glm 5现在的价格和claude的对比_4c26977a-0857-4809-bdc8-6d4096716bc8.txt` | | skill | 开发工作区 | `skill_9dcf2229-66a4-4775-b92b-8ddcbbc7baf1.txt` | | 上传本地项目到github上 | 开发工作区 | `上传本地项目到github上_0de581eb-0e88-447a-a6f6-dfd25a43db41.txt` | | 他自己成立了公司五行运贸易,五行运数字人系统和研发。所以他就叫那个有可能 | 开发工作区 | `他自己成立了公司五行运贸易,五行运数字人系统和研发。所以他就叫那个有可能_0c2bf348-8e42-481f-ac8e-4ed6b846cfdb.txt` | -| 卡罗 AI 修复之前,卡罗 AI 上面有非常多的文件,每一个人都有职责的 | 开发工作区 | `卡罗 AI 修复之前,卡罗 AI 上面有非常多的文件,每一个人都有职责的_c483f207-9022-46ee-8666-6d24697f2d4b.txt` | +| 卡若AI 修复之前,卡若AI 上面有非常多的文件,每一个人都有职责的 | 开发工作区 | `卡若AI 修复之前,卡若AI 上面有非常多的文件,每一个人都有职责的_c483f207-9022-46ee-8666-6d24697f2d4b.txt` | | 发布到银掌柜的小程序上 | 开发工作区 | `发布到银掌柜的小程序上_baaa9dac-661b-49f0-9fbb-5bef362d9cf3.txt` | | 告诉我卡若ai的github地址 | 开发工作区 | `告诉我卡若ai的github地址_1777a2b9-e52c-4f51-990b-3947e7b24430.txt` | | 对,飞书项目的玩值电竞的这一个飞书里面,飞书项目完职店庆的一个各个接口的 | 开发工作区 | `对,飞书项目的玩值电竞的这一个飞书里面,飞书项目完职店庆的一个各个接口的_eae58f42-92a2-4333-90f0-1b447ebebc7a.txt` | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-15/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-15/本日汇总.md index 684928ba..9a54207e 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-15/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-15/本日汇总.md @@ -27,6 +27,6 @@ | 将这个数据库。里面的那个所有的文件,包括子文件,那个帮我导到那个。和所有 | 开发工作区 | `将这个数据库。里面的那个所有的文件,包括子文件,那个帮我导到那个。和所有_8f50e9d1-b7e7-4e33-aa55-7e9174f5e3f0.txt` | | 日记@个人 2、我写的日记 写一篇文章关于这个分布式算力矩阵的收集,所有 | 开发工作区 | `日记@个人 2、我写的日记 写一篇文章关于这个分布式算力矩阵的收集,所有_e71dc79c-6740-4b5e-a470-998ab7d6ec57.txt` | | 模拟一次小说行侦行为,将 Users karuo 卡若开发 数据库 借贷 | 开发工作区 | `模拟一次小说行侦行为,将 Users karuo 卡若开发 数据库 借贷_f158343a-f4e2-4b31-ad62-6a812bc18af0.txt` | -| 然后在那个 NAS 上面把这个卡洛的那个 FMVTK 的 GitHub | 开发工作区 | `然后在那个 NAS 上面把这个卡洛的那个 FMVTK 的 GitHub_e29e511b-cbcd-4208-b0f0-2900e71738bd.txt` | +| 然后在那个 NAS 上面把这个卡若的那个 FMVTK 的 GitHub | 开发工作区 | `然后在那个 NAS 上面把这个卡若的那个 FMVTK 的 GitHub_e29e511b-cbcd-4208-b0f0-2900e71738bd.txt` | | 连接到书房的电视,检查他的配置和连网状态 | 开发工作区 | `连接到书房的电视,检查他的配置和连网状态_9fc43943-7988-4b64-b8c4-25116fd63d2b.txt` | | 连接我现在连的这个局域网内的另外一台苹果笔记本电脑。用ssh直接连接 账 | 开发工作区 | `连接我现在连的这个局域网内的另外一台苹果笔记本电脑。用ssh直接连接 账_b16ae85a-79d9-42e5-a271-c2730389abd2.txt` | diff --git a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/本日汇总.md b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/本日汇总.md index f2da55c6..027d6b77 100644 --- a/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/本日汇总.md +++ b/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/本日汇总.md @@ -16,7 +16,7 @@ | @分布式算力矩阵 04_暴力破解 查找 GitHub 上面去针对那个 S | 开发工作区 | `@分布式算力矩阵 04_暴力破解 查找 GitHub 上面去针对那个 S_b07973ad-df1c-4d22-b371-32f78557487a.txt` | | ip账号密码 | 开发工作区 | `ip账号密码_6a5c8494-b4d7-4aa5-9ab1-7591d858a965.txt` | | 上传到 CKB NAS 的 Git 上面, | 开发工作区 | `上传到 CKB NAS 的 Git 上面,_0ced8e42-bf4e-485c-a528-c3096f868c33.txt` | -| 个巴卡洛 AI。爬,卡洛 AI 放到整个的那个放到 NAS 的服务器上面 | 开发工作区 | `个巴卡洛 AI。爬,卡洛 AI 放到整个的那个放到 NAS 的服务器上面_f68f86f2-0740-4789-b7d2-343c243ca9e9.txt` | +| 个巴卡若AI。爬,卡若AI 放到整个的那个放到 NAS 的服务器上面 | 开发工作区 | `个巴卡若AI。爬,卡若AI 放到整个的那个放到 NAS 的服务器上面_f68f86f2-0740-4789-b7d2-343c243ca9e9.txt` | | 全网找ip | 开发工作区 | `全网找ip_cf3d95e6-2afd-42fa-bdfc-af382fbbf040.txt` | | 批量将飞书里面,飞书的那个视频会议带有飞书,视频会议带有这个受,派对和受 | 开发工作区 | `批量将飞书里面,飞书的那个视频会议带有飞书,视频会议带有这个受,派对和受_3648ac7c-9e57-4501-b431-ef5bc1f6f17d.txt` | | 把这个卡罗伊的 skill 的所有的人的能力工作台和能力总索引。根据卡罗 | 开发工作区 | `把这个卡罗伊的 skill 的所有的人的能力工作台和能力总索引。根据卡罗_acf700f7-27d0-43c2-b035-d41449b6bf41.txt` | @@ -24,4 +24,4 @@ | 正在查找与“火炬短视频团队”和“unilife”相关的国外直播软件信息。 | 开发工作区 | `正在查找与“火炬短视频团队”和“unilife”相关的国外直播软件信息。_70edd474-5206-46c6-8dbc-81b1be2f4030.txt` | | 火炬短视频团队 | 开发工作区 | `火炬短视频团队_7ebd1366-ef0f-4860-97df-651fe1a4dabb.txt` | | 网站开发 | 开发工作区 | `网站开发_12b1e64e-d120-4e96-8721-3ee496dcf225.txt` | -| 那个卡洛 AI 里面的那个上面那些课,gitty GitHub 这一些目 | 开发工作区 | `那个卡洛 AI 里面的那个上面那些课,gitty GitHub 这一些目_c5e7f9ad-027a-4aef-bcee-c9ee7095b44b.txt` | +| 那个卡若AI 里面的那个上面那些课,gitty GitHub 这一些目 | 开发工作区 | `那个卡若AI 里面的那个上面那些课,gitty GitHub 这一些目_c5e7f9ad-027a-4aef-bcee-c9ee7095b44b.txt` | diff --git a/02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md b/02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md index 18a1e97d..6ad2a4a2 100644 --- a/02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md +++ b/02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md @@ -7,15 +7,16 @@ memory_palace_path: 卡若记忆宫殿/水殿/水溪厢/回廊洗字 memory_palace_slot: 口述与 ASR 杂声在此洗净,再入记忆与字幕流水线 triggers: **回廊洗字、卡若记忆宫殿命名体系、记忆宫殿、记忆空间、语音转写纠错、语音输入、闽南话、闽南口音、听写、ASR、转写纠错、纠错库、误听、卡罗拉、卡罗伊**、口述、嘴瓢、**网页CLI、终端浏览器、命令行看网页、browsh** owner: 水溪 -version: "1.3" -updated: "2026-03-23" +version: "1.5" +updated: "2026-03-27" --- # 回廊洗字(W03b · 卡若记忆宫殿命名体系) > **宫殿定位**:`卡若记忆宫殿 / 水殿 / 水溪厢 / 回廊洗字` —— 属 **卡若记忆宫殿命名体系**;对应成员 **水溪**(整理归档、清清爽爽);职能是 **口述与听写噪声入库前的滤真**,与 W04「自动记忆管理」相邻:先洗字,再入深记。 > **登记用原名**:语音转写纠错(目录名与旧文档仍用此名,避免路径大面积迁移)。 -> **别名**:语音里 **「卡罗拉」「卡罗伊」= 卡若AI**(ASR 误听,保留在触发词)。 +> **机制总文档**:`运营中枢/参考资料/闽南话语音_ASR纠错机制.md`(闽南话口述 · **每轮对话滤真**、词库维护、与 JSON 关系;口述「科室」≈ Skill 见该文 **§八**)。 +> **别名**:语音里 **「卡罗拉」「卡罗伊」等 = 卡若 / 卡若AI**(ASR 误听,保留在触发词;完整映射见 JSON)。 ## 目标 @@ -27,12 +28,15 @@ updated: "2026-03-23" | 文件 | 作用 | |------|------| | `运营中枢/参考资料/卡若闽南口音_ASR纠错库.json` | **主纠错表**:`corrections` 对象,`误听 → 正写` | +| `运营中枢/工作台/闽南口音纠错工作台/README.md` | **运维工作台**:多根扫盘 + Mongo 统计;入口脚本 `…/脚本/minnan_asr_workbench.py`(`scan-files` / `scan-mongo`) | ## Agent 每轮对话(强制) -1. **在推理与执行前**,将用户本轮自然语言视为可能含 ASR 噪声;在心中或用下述脚本对**关键片段**做一次纠正后再定意图(不必改用户原文展示,**内部理解**以纠正后为准)。 -2. 替换顺序:**按 key 长度降序**全文替换,避免短词截断长词(与 `soul_enhance.py` 一致)。 -3. 专有名词:Cursor、Claude、Soul、卡若AI 等按表中写法对齐。 +1. **在推理与执行前**,将用户本轮自然语言视为可能含 ASR 噪声;在心中或用下述脚本对**整段或关键片段**做一次纠正后再定意图(不必改用户原文展示,**内部理解**以纠正后为准)。 +2. **统一过滤**:不仅「卡路 / 卡罗 / 卡洛」类,**Cursor / Claude / Soul / 私域 / 存客宝** 等表中近音一并处理;以 `卡若闽南口音_ASR纠错库.json` 为**唯一**词条源。 +3. 替换顺序:**按 key 长度降序**全文替换,避免短词截断长词(与 `soul_enhance.py`、`apply_karuo_voice_corrections.py` 一致)。 +4. **上下文**:若替换后与句义冲突(食物热量、受伤、西游记原著等),以语义为准,见 JSON `notes` 与下文「终端网页 CLI」段。 +5. 专有名词:Cursor、Claude、Soul、卡若AI 等按表中写法对齐。 ## 命令行 / 脚本复用 @@ -77,5 +81,6 @@ echo "卡罗拉更新 skill" | python3 ".../apply_karuo_voice_corrections.py" ## 参考 +- **机制总述**:`运营中枢/参考资料/闽南话语音_ASR纠错机制.md` - 内置纠错写法参考:`木叶_视频内容/视频切片/脚本/soul_enhance.py` 中 `_CORRECTIONS_BASE` 与 `apply_platform_safety` 流程。 - Cursor 总规则:`.cursor/rules/karuo-ai.mdc`(语音理解条目)。 diff --git a/03_卡木(木)/木叶_视频内容/多平台分发/cookies/视频号_cookies.json b/03_卡木(木)/木叶_视频内容/多平台分发/cookies/视频号_cookies.json index 53fe4427..15f25f85 100644 --- a/03_卡木(木)/木叶_视频内容/多平台分发/cookies/视频号_cookies.json +++ b/03_卡木(木)/木叶_视频内容/多平台分发/cookies/视频号_cookies.json @@ -2,20 +2,20 @@ "cookies": [ { "name": "sessionid", - "value": "BgAACuej0XO0tWGoSXf6YSEg2KiGaAtGkyr52JZOPsMe6q13eTlWwPgczkkyhzKQDaLGEFfNV%2BysF1bqhgR03iRrWB7o3Lxep6efz8EZ8yM%3D", + "value": "BgAAvxwCNDxRKH7MSNkZxTv41j6n4M%2BH5xmkxVRkA68Z%2FyLYqu61xG3fhLT92QLmHD3Ihykpu8kL5aux7QLL99PFcO5P6GBz5N8V0x2qSTA%3D", "domain": "channels.weixin.qq.com", "path": "/", - "expires": 1809032864.570455, + "expires": 1809089844.27566, "httpOnly": false, "secure": true, "sameSite": "None" }, { "name": "wxuin", - "value": "2604008894", + "value": "1335138025", "domain": "channels.weixin.qq.com", "path": "/", - "expires": 1809032864.5705, + "expires": 1809089844.275706, "httpOnly": false, "secure": true, "sameSite": "None" @@ -27,44 +27,36 @@ "localStorage": [ { "name": "finder_route_meta", - "value": "micro.content/post/create;index;1;1774472953358" + "value": "micro.content/post/create;index;1;1774529934465" }, { "name": "__ml::hb_ts", - "value": "1774472837493" + "value": "1774529812771" + }, + { + "name": "__ml::page_407d5f0c-d0ca-4817-bdca-92bce645cec0", + "value": "{\"pageId\":\"LoginForIframe\",\"accessId\":\"f605733e-22a5-41d0-8823-5311043e888d\",\"step\":1}" }, { "name": "__ml::page_e5fafaeb-b678-46a3-84db-c34fc5a41faf", "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"a98782f3-d4f5-411a-81ad-0a7e88d0726f\",\"step\":1}" }, - { - "name": "__ml::page_974d99d7-06b4-42a9-bfe6-829ae390b5d8", - "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"d68629ce-6c07-40b6-981c-bf53d3bcaa54\",\"step\":1}" - }, { "name": "__ml::page_eb7e3a97-079f-4f7f-b3df-34af797c1d3b", "value": "{\"pageId\":\"LoginForIframe\",\"accessId\":\"b3197990-65f5-41b4-90fe-3be6a9bed0f4\",\"step\":1}" }, + { + "name": "__ml::page_567e3c2c-f9a8-4942-bf04-2e044b9ae357", + "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"3030294c-638b-43cd-b705-9a4e692635d6\",\"step\":1}" + }, { "name": "__ml::page", - "value": "[\"e34be82b-5f02-4755-856a-8bcbaced0150\",\"75f8432c-6020-4b21-bed0-075b722137bb\",\"228e75c5-c171-4296-bbae-f35ca93cbc19\",\"2b06e18c-14af-441f-8310-afb188461edb\",\"7165e787-d801-4d51-b089-999f0444ae9d\",\"74531dfd-c036-4c39-9bb7-1caf3d5b9847\",\"974d99d7-06b4-42a9-bfe6-829ae390b5d8\",\"4e1bfe1f-233d-4706-bf4f-302935e5f42a\",\"539b522c-6a3c-4689-a047-86f2cfae8700\",\"5fb65be7-a722-4a6c-b807-3001bd97d778\",\"784c0694-ace3-4bf7-896c-39adeb299e59\",\"440992a6-7c2e-4734-b857-c51bd33d2e34\",\"db7ca8a4-d27a-4a76-82db-c6704a6fb95b\",\"eb7e3a97-079f-4f7f-b3df-34af797c1d3b\",\"fa9c82e0-0771-4bea-9515-410e65e95c61\",\"c780f196-f7fe-424b-9747-04430b9a3331\",\"e5fafaeb-b678-46a3-84db-c34fc5a41faf\",\"55d81d9b-60e8-438c-83e0-c0197760d2f5\",\"60251d45-49bb-413e-9ed9-add6d8a605c1\",\"f3472efb-d824-43a3-8fe8-5170ddb84261\"]" + "value": "[\"539b522c-6a3c-4689-a047-86f2cfae8700\",\"5fb65be7-a722-4a6c-b807-3001bd97d778\",\"784c0694-ace3-4bf7-896c-39adeb299e59\",\"440992a6-7c2e-4734-b857-c51bd33d2e34\",\"db7ca8a4-d27a-4a76-82db-c6704a6fb95b\",\"eb7e3a97-079f-4f7f-b3df-34af797c1d3b\",\"fa9c82e0-0771-4bea-9515-410e65e95c61\",\"c780f196-f7fe-424b-9747-04430b9a3331\",\"e5fafaeb-b678-46a3-84db-c34fc5a41faf\",\"55d81d9b-60e8-438c-83e0-c0197760d2f5\",\"60251d45-49bb-413e-9ed9-add6d8a605c1\",\"f3472efb-d824-43a3-8fe8-5170ddb84261\",\"c4bd1c5c-2df4-4e3e-97c7-4422f1fdf257\",\"407d5f0c-d0ca-4817-bdca-92bce645cec0\",\"a4f6964d-38cd-42e4-8471-7629763b98cf\",\"efe33dea-25c3-4eb6-980c-31fe3f425c31\",\"567e3c2c-f9a8-4942-bf04-2e044b9ae357\",\"e046d951-d078-445b-9296-5183597cc19f\",\"c99ffcdc-e264-4ee0-8b42-f9417a6968e5\",\"b126939b-a6a5-4540-a40b-1c59b761634d\"]" }, { "name": "__ml::page_784c0694-ace3-4bf7-896c-39adeb299e59", "value": "{\"pageId\":\"LoginForIframe\",\"accessId\":\"1f157d64-c269-48e3-8048-321cfe790fd2\",\"step\":1}" }, - { - "name": "__ml::page_228e75c5-c171-4296-bbae-f35ca93cbc19", - "value": "{\"pageId\":\"PostCreate\",\"accessId\":\"83ad0873-7161-467e-a1d7-5555696cefab\",\"step\":1}" - }, - { - "name": "__ml::page_75f8432c-6020-4b21-bed0-075b722137bb", - "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"f62b0202-c271-44e5-8c24-46ecb798ce53\",\"step\":1}" - }, - { - "name": "__ml::page_e34be82b-5f02-4755-856a-8bcbaced0150", - "value": "{\"pageId\":\"PostList\",\"accessId\":\"7702cd13-e3f7-46a3-bee0-6096d434d4fd\",\"step\":1}" - }, { "name": "__ml::page_fa9c82e0-0771-4bea-9515-410e65e95c61", "value": "{\"pageId\":\"Home\",\"accessId\":\"224c5505-1caa-42fa-bbe4-22355ffedc69\",\"step\":1}" @@ -73,13 +65,17 @@ "name": "__ml::page_55d81d9b-60e8-438c-83e0-c0197760d2f5", "value": "{\"pageId\":\"PostList\",\"accessId\":\"69aa9c01-5c39-4b32-a400-7719854326b5\",\"step\":1}" }, + { + "name": "__ml::page_efe33dea-25c3-4eb6-980c-31fe3f425c31", + "value": "{\"pageId\":\"PostCard\",\"accessId\":\"8415a7c3-59b1-4002-80a3-076eba267ed4\",\"step\":1}" + }, { "name": "__ml::page_440992a6-7c2e-4734-b857-c51bd33d2e34", "value": "{\"pageId\":\"LoginForIframe\",\"accessId\":\"226b1fe5-edf0-4d49-bb00-eba0a5b4d09b\",\"step\":1}" }, { - "name": "__ml::page_2b06e18c-14af-441f-8310-afb188461edb", - "value": "{\"pageId\":\"LoginForIframe\",\"accessId\":\"ccf907d3-ec3f-40fd-835f-f44647dab534\",\"step\":1}" + "name": "__ml::page_a4f6964d-38cd-42e4-8471-7629763b98cf", + "value": "{\"pageId\":\"Home\",\"accessId\":\"076a3ed1-3bd1-4e91-90d5-76c9e54f843a\",\"step\":1}" }, { "name": "__ml::page_db7ca8a4-d27a-4a76-82db-c6704a6fb95b", @@ -90,33 +86,29 @@ "value": "{\"browser\":\"Chrome\",\"browserVersion\":\"131.0.0.0\",\"engine\":\"Webkit\",\"engineVersion\":\"537.36\",\"os\":\"Mac OS X\",\"osVersion\":\"10.15.7\",\"device\":\"desktop\",\"darkmode\":0}" }, { - "name": "__ml::page_74531dfd-c036-4c39-9bb7-1caf3d5b9847", - "value": "{\"pageId\":\"PostCard\",\"accessId\":\"c6e70987-87a7-4fc0-9ea7-074af5093293\",\"step\":1}" - }, - { - "name": "__ml::page_7165e787-d801-4d51-b089-999f0444ae9d", - "value": "{\"pageId\":\"Home\",\"accessId\":\"838ec3ff-0f71-4d6c-b053-c0af71613373\",\"step\":1}" + "name": "__ml::page_b126939b-a6a5-4540-a40b-1c59b761634d", + "value": "{\"pageId\":\"PostCreate\",\"accessId\":\"9cefae39-076e-48bb-aebe-82129e52f106\",\"step\":1}" }, { "name": "__ml::page_60251d45-49bb-413e-9ed9-add6d8a605c1", "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"2684d827-da48-490e-a1c3-d1b572e8a413\",\"step\":1}" }, - { - "name": "__ml::page_4e1bfe1f-233d-4706-bf4f-302935e5f42a", - "value": "{\"pageId\":\"PostList\",\"accessId\":\"b54d408e-bd25-43f2-b5ce-c086528b3fdd\",\"step\":1}" - }, { "name": "__ml::aid", "value": "\"d54409bf-5743-4c38-9a01-4e8e2f82f2c2\"" }, - { - "name": "__rx::aid", - "value": "\"d54409bf-5743-4c38-9a01-4e8e2f82f2c2\"" - }, { "name": "__ml::page_c780f196-f7fe-424b-9747-04430b9a3331", "value": "{\"pageId\":\"PostCard\",\"accessId\":\"e6abc041-28bd-4647-82fb-0bb5b0e5953d\",\"step\":1}" }, + { + "name": "__ml::page_c4bd1c5c-2df4-4e3e-97c7-4422f1fdf257", + "value": "{\"pageId\":\"LoginForIframe\",\"accessId\":\"4f4036b9-4582-4c4d-a910-f34f32af5f59\",\"step\":1}" + }, + { + "name": "__rx::aid", + "value": "\"d54409bf-5743-4c38-9a01-4e8e2f82f2c2\"" + }, { "name": "__ml::page_f3472efb-d824-43a3-8fe8-5170ddb84261", "value": "{\"pageId\":\"PostCreate\",\"accessId\":\"db066205-663b-4014-8068-12203a27e05e\",\"step\":1}" @@ -125,6 +117,10 @@ "name": "finder_login_token", "value": "" }, + { + "name": "__ml::page_c99ffcdc-e264-4ee0-8b42-f9417a6968e5", + "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"1ca2a7a9-72f2-4593-8fbc-e0e615e66f0c\",\"step\":1}" + }, { "name": "finder_username", "value": "v2_060000231003b20faec8c5e48919cbd5cb05e53db077dd1924028a806c10cffd891eb5a80ce7@finder" @@ -139,12 +135,16 @@ }, { "name": "MICRO_VISITED_NAME", - "value": "{\"postCard\":25,\"content\":29,\"interaction\":2}" + "value": "{\"postCard\":26,\"content\":31,\"interaction\":2}" }, { "name": "__ml::page_539b522c-6a3c-4689-a047-86f2cfae8700", "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"7ddb50d3-3d52-482e-b6d6-10dbcc22f8cb\",\"step\":1}" }, + { + "name": "__ml::page_e046d951-d078-445b-9296-5183597cc19f", + "value": "{\"pageId\":\"PostList\",\"accessId\":\"2f7fd2d6-7d82-4100-934a-2c80c34bb3c9\",\"step\":1}" + }, { "name": "UvFirstReportLocalKey", "value": "1774454400000" diff --git a/03_卡木(木)/木叶_视频内容/多平台分发/脚本/distribute_all.py b/03_卡木(木)/木叶_视频内容/多平台分发/脚本/distribute_all.py index e322f056..e4cbeccb 100644 --- a/03_卡木(木)/木叶_视频内容/多平台分发/脚本/distribute_all.py +++ b/03_卡木(木)/木叶_视频内容/多平台分发/脚本/distribute_all.py @@ -6,7 +6,7 @@ - 并行分发:5 平台同时上传(asyncio.gather) - 去重:每条视频按其在目录中的序号对齐排期(不因前面跳过而错位) - 失败重试:--retry;Cookie 预警;结果写入 publish_log.json -- 视频号登录:默认静默(仅同步 Cookie 路径,不弹窗);需要自动扫码时加 --auto-channels-login;NO_AUTO_CHANNELS_LOGIN=1 强制静默 +- 视频号:发稿走 channels_api_publish(与「视频号发布/SKILL.md · 〇」一致);登录推荐本机 CHANNELS_SILENT_QR=1 channels_login.py --silent-qr。需要自动调起登录进程时加 --auto-channels-login;NO_AUTO_CHANNELS_LOGIN=1 强制静默 用法: python3 distribute_all.py # 智能错峰定时排期 @@ -59,7 +59,7 @@ CHANNELS_LOGIN_SCRIPT = BASE_DIR / "视频号发布" / "脚本" / "channels_logi LOGIN_COMMANDS = { "抖音": f'python3 "{BASE_DIR / "抖音发布" / "脚本" / "douyin_login.py"}"', "B站": f'python3 "{BASE_DIR / "B站发布" / "脚本" / "bilibili_login.py"}"', - "视频号": f'python3 "{BASE_DIR / "视频号发布" / "脚本" / "channels_login.py"} --playwright-only"', + "视频号": f'CHANNELS_SILENT_QR=1 python3 "{CHANNELS_LOGIN_SCRIPT}" --silent-qr', "小红书": f'python3 "{BASE_DIR / "小红书发布" / "脚本" / "xiaohongshu_login.py"}"', "快手": f'python3 "{BASE_DIR / "快手发布" / "脚本" / "kuaishou_login.py"}"', } diff --git a/03_卡木(木)/木叶_视频内容/多平台分发/脚本/publish_dedup_revoke.jsonl b/03_卡木(木)/木叶_视频内容/多平台分发/脚本/publish_dedup_revoke.jsonl new file mode 100644 index 00000000..8fe59cd1 --- /dev/null +++ b/03_卡木(木)/木叶_视频内容/多平台分发/脚本/publish_dedup_revoke.jsonl @@ -0,0 +1,10 @@ +{"platform": "视频号", "video_name": "soul130_01_我看你不太好 你不太好 你不太好 你.mp4", "reason": "2026-03-26 post_delete 已从视频号移除,允许重发"} +{"platform": "视频号", "video_name": "soul130_02_你不太好 你不太好 你不太好 你不太.mp4", "reason": "2026-03-26 post_delete 已从视频号移除,允许重发"} +{"platform": "视频号", "video_name": "soul130_03_内容库是要干嘛的 前面后面 我跟你说.mp4", "reason": "2026-03-26 post_delete 已从视频号移除,允许重发"} +{"platform": "视频号", "video_name": "soul130_04_需要优化的点 第一个是 介面优化 第.mp4", "reason": "2026-03-26 post_delete 已从视频号移除,允许重发"} +{"platform": "视频号", "video_name": "soul130_05_你看关于这块 同步这块 我这里的话是.mp4", "reason": "2026-03-26 post_delete 已从视频号移除,允许重发"} +{"platform": "视频号", "video_name": "soul130_06_这里搜索 选择要同步 要同步的人 要.mp4", "reason": "2026-03-26 post_delete 已从视频号移除,允许重发"} +{"platform": "视频号", "video_name": "soul130_07_这样会比较能性化一点 但是活儿是很乱.mp4", "reason": "2026-03-26 post_delete 已从视频号移除,允许重发"} +{"platform": "视频号", "video_name": "soul130_08_你想是多少好友来干嘛 我才知道 我要.mp4", "reason": "2026-03-26 post_delete 已从视频号移除,允许重发"} +{"platform": "视频号", "video_name": "soul130_09_看直播的分论 啥意思呢 我们进入 进.mp4", "reason": "2026-03-26 post_delete 已从视频号移除,允许重发"} +{"platform": "视频号", "video_name": "soul130_10_我带ID我是知道 当天的总销售 是随.mp4", "reason": "2026-03-26 post_delete 已从视频号移除,允许重发"} diff --git a/03_卡木(木)/木叶_视频内容/多平台分发/脚本/publish_result.py b/03_卡木(木)/木叶_视频内容/多平台分发/脚本/publish_result.py index 3a27e567..532dca25 100644 --- a/03_卡木(木)/木叶_视频内容/多平台分发/脚本/publish_result.py +++ b/03_卡木(木)/木叶_视频内容/多平台分发/脚本/publish_result.py @@ -12,6 +12,8 @@ from typing import Optional RESULT_LOG = Path(__file__).parent / "publish_log.json" UPLOAD_LIBRARY_LOG = Path(__file__).parent / "upload_library.jsonl" +# 平台侧已删除/作废发布时追加一行,从去重集合中排除(避免仅删 upload_library 仍被 publish_log 卡住) +DEDUP_REVOKE_LOG = Path(__file__).parent / "publish_dedup_revoke.jsonl" def _video_signature(video_path: str) -> str: @@ -23,8 +25,30 @@ def _video_signature(video_path: str) -> str: return p.name +def _load_dedup_revoke_names() -> set[tuple[str, str]]: + """(platform, video basename) 不再视为已发布去重。""" + out: set[tuple[str, str]] = set() + if not DEDUP_REVOKE_LOG.exists(): + return out + with open(DEDUP_REVOKE_LOG, "r", encoding="utf-8") as f: + for line in f: + line = line.strip() + if not line: + continue + try: + rec = json.loads(line) + pf = (rec.get("platform") or "").strip() + name = (rec.get("video_name") or "").strip() + if pf and name: + out.add((pf, name)) + except json.JSONDecodeError: + continue + return out + + def _load_library_set() -> set[tuple[str, str]]: out = set() + revoked_names = _load_dedup_revoke_names() if not UPLOAD_LIBRARY_LOG.exists(): return out with open(UPLOAD_LIBRARY_LOG, "r", encoding="utf-8") as f: @@ -37,6 +61,9 @@ def _load_library_set() -> set[tuple[str, str]]: pf = rec.get("platform", "") sig = rec.get("video_signature", "") if pf and sig: + fname = sig.split("|", 1)[0] + if (pf, fname) in revoked_names: + continue out.add((pf, sig)) except json.JSONDecodeError: continue @@ -89,6 +116,7 @@ def save_results(results: list[PublishResult]): def load_published_set() -> set[tuple[str, str]]: """加载已成功发布集合(兼容旧日志 + 上传库)。""" published = set() + revoked_names = _load_dedup_revoke_names() if RESULT_LOG.exists(): with open(RESULT_LOG, "r", encoding="utf-8") as f: for line in f: @@ -99,14 +127,17 @@ def load_published_set() -> set[tuple[str, str]]: rec = json.loads(line) if rec.get("success"): fname = Path(rec.get("video_path", "")).name - published.add((rec["platform"], fname)) + plat = rec.get("platform", "") + if fname and (plat, fname) in revoked_names: + continue + published.add((plat, fname)) except json.JSONDecodeError: continue # 同步上传库签名映射回文件名集合(保障去重不遗漏) for platform, sig in _load_library_set(): fname = sig.split("|", 1)[0] - if fname: + if fname and (platform, fname) not in revoked_names: published.add((platform, fname)) return published @@ -114,6 +145,8 @@ def load_published_set() -> set[tuple[str, str]]: def is_published(platform: str, video_path: str) -> bool: """检查某条视频是否已成功发布到某平台(全平台上传库去重)。""" fname = Path(video_path).name + if (platform, fname) in _load_dedup_revoke_names(): + return False if (platform, fname) in load_published_set(): return True sig = _video_signature(video_path) diff --git a/03_卡木(木)/木叶_视频内容/多平台分发/脚本/upload_library.jsonl b/03_卡木(木)/木叶_视频内容/多平台分发/脚本/upload_library.jsonl index 57a9effd..2dc3384e 100644 --- a/03_卡木(木)/木叶_视频内容/多平台分发/脚本/upload_library.jsonl +++ b/03_卡木(木)/木叶_视频内容/多平台分发/脚本/upload_library.jsonl @@ -35,13 +35,3 @@ {"timestamp": "2026-03-24 21:38:24", "platform": "小红书", "video_path": "/Users/karuo/Movies/soul视频/soul 派对 120场 20260320_output/成片_大师版/赚钱没那么复杂,自信心才是核心问题.mp4", "video_signature": "赚钱没那么复杂,自信心才是核心问题.mp4|22996736", "status": "likely_published"} {"timestamp": "2026-03-25 14:45:28", "platform": "视频号", "video_path": "/tmp/soul_channels_127_128_bundle/我之前抖音就这么做.mp4", "video_signature": "我之前抖音就这么做.mp4|5229367", "status": "published"} {"timestamp": "2026-03-26 05:47:23", "platform": "视频号", "video_path": "/Users/karuo/Movies/soul视频/第129场_20260320_output/成片/七千店复制拿投资月流水五十万.mp4", "video_signature": "七千店复制拿投资月流水五十万.mp4|9583735", "status": "published"} -{"timestamp": "2026-03-26 05:48:14", "platform": "视频号", "video_path": "/Users/karuo/Movies/soul视频/第130场_20260324_output/切片/soul130_01_我看你不太好 你不太好 你不太好 你.mp4", "video_signature": "soul130_01_我看你不太好 你不太好 你不太好 你.mp4|14525846", "status": "published"} -{"timestamp": "2026-03-26 05:49:00", "platform": "视频号", "video_path": "/Users/karuo/Movies/soul视频/第130场_20260324_output/切片/soul130_02_你不太好 你不太好 你不太好 你不太.mp4", "video_signature": "soul130_02_你不太好 你不太好 你不太好 你不太.mp4|24950550", "status": "published"} -{"timestamp": "2026-03-26 09:24:28", "platform": "视频号", "video_path": "/Users/karuo/Movies/soul视频/第130场_20260324_output/切片/soul130_03_内容库是要干嘛的 前面后面 我跟你说.mp4", "video_signature": "soul130_03_内容库是要干嘛的 前面后面 我跟你说.mp4|50252357", "status": "published"} -{"timestamp": "2026-03-26 09:25:14", "platform": "视频号", "video_path": "/Users/karuo/Movies/soul视频/第130场_20260324_output/切片/soul130_04_需要优化的点 第一个是 介面优化 第.mp4", "video_signature": "soul130_04_需要优化的点 第一个是 介面优化 第.mp4|14508469", "status": "published"} -{"timestamp": "2026-03-26 09:26:01", "platform": "视频号", "video_path": "/Users/karuo/Movies/soul视频/第130场_20260324_output/切片/soul130_05_你看关于这块 同步这块 我这里的话是.mp4", "video_signature": "soul130_05_你看关于这块 同步这块 我这里的话是.mp4|55088468", "status": "published"} -{"timestamp": "2026-03-26 09:26:47", "platform": "视频号", "video_path": "/Users/karuo/Movies/soul视频/第130场_20260324_output/切片/soul130_06_这里搜索 选择要同步 要同步的人 要.mp4", "video_signature": "soul130_06_这里搜索 选择要同步 要同步的人 要.mp4|53061133", "status": "published"} -{"timestamp": "2026-03-26 09:27:34", "platform": "视频号", "video_path": "/Users/karuo/Movies/soul视频/第130场_20260324_output/切片/soul130_07_这样会比较能性化一点 但是活儿是很乱.mp4", "video_signature": "soul130_07_这样会比较能性化一点 但是活儿是很乱.mp4|49605178", "status": "published"} -{"timestamp": "2026-03-26 09:28:21", "platform": "视频号", "video_path": "/Users/karuo/Movies/soul视频/第130场_20260324_output/切片/soul130_08_你想是多少好友来干嘛 我才知道 我要.mp4", "video_signature": "soul130_08_你想是多少好友来干嘛 我才知道 我要.mp4|54366732", "status": "published"} -{"timestamp": "2026-03-26 09:29:08", "platform": "视频号", "video_path": "/Users/karuo/Movies/soul视频/第130场_20260324_output/切片/soul130_09_看直播的分论 啥意思呢 我们进入 进.mp4", "video_signature": "soul130_09_看直播的分论 啥意思呢 我们进入 进.mp4|48160664", "status": "published"} -{"timestamp": "2026-03-26 09:29:55", "platform": "视频号", "video_path": "/Users/karuo/Movies/soul视频/第130场_20260324_output/切片/soul130_10_我带ID我是知道 当天的总销售 是随.mp4", "video_signature": "soul130_10_我带ID我是知道 当天的总销售 是随.mp4|58372629", "status": "published"} diff --git a/03_卡木(木)/木叶_视频内容/视频切片/Soul竖屏切片_SKILL.md b/03_卡木(木)/木叶_视频内容/视频切片/Soul竖屏切片_SKILL.md index ac3fa849..8276f31a 100644 --- a/03_卡木(木)/木叶_视频内容/视频切片/Soul竖屏切片_SKILL.md +++ b/03_卡木(木)/木叶_视频内容/视频切片/Soul竖屏切片_SKILL.md @@ -98,6 +98,7 @@ updated: "2026-03-24" - **语言**:从 `transcript.srt` 解析、逐词路径、标点补强、封面 `hook_3sec` / `question` / 主标题引用、片尾 `cta_ending` 等,**一律经 `_to_simplified`(OpenCC t2s + 兜底映射)**,成片与收录进烧录层的文案**不出现繁体残留**(`highlights.json` 里仍可手写繁体,渲染时转简)。 - **片尾完整性**:`soul_enhance.py` 在去静音前对 `silencedetect` 结果做 **`filter_silences_keep_tail_audio`**:最后 **`SILENCE_TAIL_PRESERVE_SEC`(默认约 2.85s)** 内的静音**不参与切除**,避免「最后几秒被剪成完全无声」。若原片结尾本身无对白,仍可能偏静,需在剪辑/高光时段上保证收尾句落在片尾窗内。 +- **剃空白(默认更狠,v2.13)**:默认 **`silencedetect` 阈值 -32dB、最短 0.22s**,并与 **字幕条之间 ≥0.52s 的间隙** 做并集后一起切除(会议留白、有底噪但无对白更易剃掉)。仍嫌碎或误剪:加 **`--silence-gentle`** 回退旧参数;只要音频不要字幕间隙:加 **`--no-subtitle-gap-merge`**。 ### 贴片库与表情库(v2.6→v2.10 默认开启) @@ -126,7 +127,7 @@ updated: "2026-03-24" ``` - **batch_clip**:输出到 `clips/` -- **soul_enhance -o 成片/ --title-only**(**推荐仍写 `--vertical`**):自 v2.3 起,只要带了 **`--title-only` 和/或 `--crop-vf` / `--vertical-fit-full`**,脚本会**默认启用竖屏直出**,避免漏写 `--vertical` 误出 1920×1080 横版。**文件名 = 封面标题 = highlights 的 title**(去杠:`:|、—、/` 等替换为空格);字幕烧录;去语助词;竖条裁剪直出到 `成片/` +- **soul_enhance -o 成片/ --title-only**(**推荐仍写 `--vertical`**):自 v2.3 起,只要带了 **`--title-only` 和/或 `--crop-vf` / `--vertical-fit-full`**,脚本会**默认启用竖屏直出**,避免漏写 `--vertical` 误出 1920×1080 横版。**抖音向标题(v2.14)**:`highlights_keyword_focus.py` 默认把 **`title` 写成「完整热点长标题」**(悬念/反问 +|+ 锚点原句,约 30 汉字内,不编故事);**`viral_hook` 为左半句短 punch** 供封面大字;**成片文件名**优先用 **`title` 整句**(sanitize 约 72 字内 + `_01` 防覆盖),**封面烧录**仍走 `pick_cover_hook`(`viral_hook` 优先)。**时长与片尾人声(v2.15)**:无 API 关键词高光默认 **`--min-duration 60`~`--max-duration 300`(1~5 分钟)**;粗窗生成后再按字幕**收束到首条人声起、最后一条人声止**(去掉片尾长静音),**相邻字幕间隔 > `--topic-break-gap`(默认 12s)** 视为换话题时优先在上一句收束,尽量一条=一段完整表述;可调 **`--tail-pad`**。无 API:`python3 highlights_keyword_focus.py transcript.srt -o highlights.json`;可调 **`--title-max-cjk 34`**;要贴首句、不要抖音长标题: **`--plain-hooks`**。 ### 3.1 全画面参数(必做约定) diff --git a/03_卡木(木)/木叶_视频内容/视频切片/脚本/highlights_keyword_focus.py b/03_卡木(木)/木叶_视频内容/视频切片/脚本/highlights_keyword_focus.py new file mode 100644 index 00000000..51f0b1e3 --- /dev/null +++ b/03_卡木(木)/木叶_视频内容/视频切片/脚本/highlights_keyword_focus.py @@ -0,0 +1,649 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +无 API/Ollama 时:按「关键词在字幕时间轴上的密度」抽取高光窗口(类似话题峰值), +输出与 identify_highlights 兼容的 JSON。用于派对录屏、MBTI/商业场等主题场。 + +默认:**单条 1~5 分钟**(60~300s)、窗口再按字幕**收束到首尾人声**(去掉片尾长静音)、 +**字幕间隙 ≥12s 视为换话题**时优先在上一句收束,尽量一条成片=一段完整表述。 + +用法: + python3 highlights_keyword_focus.py transcript.srt -o highlights.json --clips 12 --theme mbti_business +""" +from __future__ import annotations + +import argparse +import json +import re +import sys +from pathlib import Path + +# 复用 SRT 解析 +SCRIPT_DIR = Path(__file__).resolve().parent +if str(SCRIPT_DIR) not in sys.path: + sys.path.insert(0, str(SCRIPT_DIR)) +from identify_highlights import parse_srt_segments # noqa: E402 + +# 派对成片默认 CTA(与 Soul 竖屏场一致) +PARTY_CTA = "关注卡若创业派对,下一条接着聊落地。" + + +def _sec_to_hhmmss(sec: float) -> str: + sec = max(0, int(sec)) + h, m, s = sec // 3600, (sec % 3600) // 60, sec % 60 + return f"{h:02d}:{m:02d}:{s:02d}" + + +# 窗口内字幕含下列词时,给封面/文件名加「热点向短前缀」(观点仍锚在原文 anchor,不编造事实) +VIRAL_PREFIX_RULES: list[tuple[list[str], str]] = [ + (["MBTI", "mbti"], "MBTI风口|"), + (["性格", "测试", "测完"], "性格测试|"), + (["三十秒", "30秒"], "30秒出结果|"), + (["Token", "token", "TOKEN"], "Token降价潮|"), + (["白嫖"], "别被白嫖|"), + (["引流", "小程序"], "引流小程序|"), + (["私域"], "私域算账|"), + (["变现"], "变现链路|"), + (["超级个体"], "超级个体|"), + (["众创"], "众创搭伙|"), + (["团队"], "团队配置|"), + (["AI", "ai"], "AI落地|"), + (["咨询", "心理"], "咨询成交|"), +] + + +def _pick_viral_prefix(window_text: str) -> str: + if not window_text: + return "" + for kws, prefix in VIRAL_PREFIX_RULES: + for kw in kws: + if len(kw) <= 1: + continue + if kw.isascii(): + if kw.lower() in window_text.lower(): + return prefix + elif kw in window_text: + return prefix + return "" + + +def _cjk_count(s: str) -> int: + return sum(1 for c in (s or "") if "\u4e00" <= c <= "\u9fff") + + +def _compose_viral_hook(anchor_raw: str, joined_window: str, max_cjk: int = 16) -> str: + """刺激性封面句:热点前缀 + 锚点原文截断,总汉字封顶 max_cjk。(plain 模式或兜底用)""" + pre = _pick_viral_prefix(joined_window) + core = (anchor_raw or "").strip() + if not pre: + hook_full = _limit_cjk_chars(core, max_cjk) + else: + pre_cjk = sum(1 for c in pre if "\u4e00" <= c <= "\u9fff") + rest = max(4, max_cjk - pre_cjk) + hook_full = pre + _limit_cjk_chars(core, rest) + hook_full = _limit_cjk_chars(hook_full, max_cjk) + hook_17 = _limit_cjk_chars(hook_full, 17) + if hook_full and hook_17 != hook_full: + return hook_full + "…" + return hook_full or _limit_cjk_chars(core, max_cjk) or "精彩片段" + + +# 抖音向长标题:触发词命中 window 内合并文案则用对应模板;{core} 仅来自本窗字幕(不编故事) +# 排序:更具体的规则在前 +DOUYIN_TITLE_TEMPLATES: list[tuple[list[str], str]] = [ + (["白嫖"], "白嫖客户还要不要伺候?这句直接把话说死|{core}"), + (["Token", "token", "TOKEN"], "Token便宜到像批发,普通人怎么接住这波?|{core}"), + (["小程序", "引流"], "引流进小程序只是第一步,后面这段才是钱|{core}"), + (["私域"], "私域不是加好友,算完这笔账你就知道差哪|{core}"), + (["变现", "付费"], "光靠工具变不了现?听完这条链路再判断|{core}"), + (["MBTI", "mbti"], "MBTI风口还在不在?这条把赚钱逻辑说透|{core}"), + (["性格", "测试", "30秒", "三十秒", "测完"], "30秒测性格凭什么赚钱?听完再决定动不动手|{core}"), + (["前端", "后端"], "前后端都懂还不够,这条说清谁来收钱|{core}"), + (["团队", "销售", "成交"], "团队里缺这一环,成交会一直卡在半路|{core}"), + (["AI", "ai"], "AI不是噱头,落到成交差的是哪一步?|{core}"), + (["超级个体", "众创"], "超级个体别一个人硬扛,搭伙姿势错了全白干|{core}"), + (["咨询", "心理"], "咨询怎么接到成交?流程里这句最关键|{core}"), +] +DOUYIN_TITLE_DEFAULT = "派对里这句大实话,听完再决定动不动手|{core}" + + +def _pick_douyin_template(window_text: str) -> str: + if not window_text: + return DOUYIN_TITLE_DEFAULT + for kws, tmpl in DOUYIN_TITLE_TEMPLATES: + for kw in kws: + if len(kw) <= 1: + continue + if kw.isascii(): + if kw.lower() in window_text.lower(): + return tmpl + elif kw in window_text: + return tmpl + return DOUYIN_TITLE_DEFAULT + + +def _core_phrase_for_title(anchor_raw: str, joined: str, max_cjk: int = 14) -> str: + """标题后半|core:优先锚句,过短则拼窗口前文。""" + a = re.sub(r"\s+", " ", (anchor_raw or "").strip()) + j = re.sub(r"\s+", " ", (joined or "").strip()) + if _cjk_count(a) >= 6: + return _limit_cjk_chars(a, max_cjk) + merged = (a + " " + j).strip() if a else j + merged = re.sub(r"\s+", " ", merged).strip()[:200] + return _limit_cjk_chars(merged, max_cjk) or _limit_cjk_chars(a or merged, max_cjk) or "干货片段" + + +def _fill_douyin_title(template: str, core: str, max_total_cjk: int = 30) -> str: + if "{core}" not in template: + return _limit_cjk_chars(template, max_total_cjk) + prefix, _, suffix = template.partition("{core}") + used = _cjk_count(prefix) + _cjk_count(suffix) + room = max(4, max_total_cjk - used) + c = _limit_cjk_chars(core, room) + out = prefix + c + suffix + return _limit_cjk_chars(out, max_total_cjk) + + +def _cover_punch_from_full_title(full_title: str, max_cjk: int = 16) -> str: + """封面/文件名优先用短 punch:有|则取左半句(问句/断言),否则截前 max_cjk 汉字。""" + s = (full_title or "").strip() + if not s: + return "" + if "|" in s: + left = s.split("|", 1)[0].strip() + base = _limit_cjk_chars(left, max_cjk) + return base + ("…" if _cjk_count(left) > max_cjk else "") + base = _limit_cjk_chars(s, max_cjk) + return base + ("…" if _cjk_count(s) > max_cjk else "") + + +def _compose_douyin_full_title(anchor_raw: str, joined: str, max_total_cjk: int = 30) -> str: + tmpl = _pick_douyin_template(joined) + core = _core_phrase_for_title(anchor_raw, joined, max_cjk=16) + return _fill_douyin_title(tmpl, core, max_total_cjk=max_total_cjk) + + +THEMES: dict[str, list[str]] = { + "mbti_business": [ + "MBTI", "mbti", "性格", "测试", "测完", "三十秒", "30秒", "前端", "后端", + "引流", "成交", "咨询", "私域", "销售", "团队", "小程序", "神仙团队", + "变现", "链路", "用户", "付费", "解读", "心理", "流程", "对接", "小林", + "陈总", "宋总", "四把椅子", "TOKEN", "token", "超级个体", "众创", + ], + "soul_party": [ + "Soul", "派对", "上麦", "房主", "流量", "私域", "成交", "项目", "创业", + "AI", "变现", "团队", "用户", "产品", "运营", + ], +} + + +def _score_text(text: str, keywords: list[str]) -> float: + if not text: + return 0.0 + s = 0.0 + for kw in keywords: + if len(kw) <= 1: + continue + if kw.lower() in text.lower() if kw.isascii() else kw in text: + s += 1.2 if len(kw) >= 3 else 0.6 + return s + + +def _limit_cjk_chars(text: str, max_cjk: int) -> str: + """与 soul_enhance 封面逻辑一致:按汉字个数截断(ASCII 不占汉字额度)。""" + if not text or max_cjk <= 0: + return (text or "").strip() + out: list[str] = [] + n = 0 + for ch in text: + if "\u4e00" <= ch <= "\u9fff": + n += 1 + if n > max_cjk: + break + out.append(ch) + return "".join(out).strip() + + +def _last_sub_before_long_gap(subs: list[dict], gap_sec: float): + """同一段连续发言中,遇到下一条字幕间隔 > gap_sec 则视为换话题,返回换话题前最后一条。""" + if not subs: + return None + if len(subs) == 1: + return subs[0] + for i in range(len(subs) - 1): + g = float(subs[i + 1]["start_sec"]) - float(subs[i]["end_sec"]) + if g > gap_sec: + return subs[i] + return subs[-1] + + +def _extend_end_for_min_duration( + segments: list[dict], + s_out: int, + e_out: int, + min_dur: float, + max_dur: float, + cap_end: int, + gap_sec: float, + tail_pad: float, +) -> int: + """当前 [s_out,e_out] 短于 min_dur 时,沿全局字幕轴向后接龙(间隔≤gap 视为同段),直到够长或触顶。""" + if e_out - s_out >= min_dur: + return min(e_out, s_out + int(max_dur)) + segs = sorted(segments, key=lambda x: float(x["start_sec"])) + last_sp_end = max(0.0, float(e_out) - tail_pad) + cur_e = e_out + started = False + for s in segs: + st, en = float(s["start_sec"]), float(s["end_sec"]) + if en <= last_sp_end + 0.05 and not started: + continue + if not started: + if st - last_sp_end <= gap_sec or st <= float(cur_e) + 0.5: + started = True + cur_e = int(min(cap_end, en + tail_pad)) + last_sp_end = en + if cur_e - s_out >= min_dur: + return min(cur_e, s_out + int(max_dur)) + else: + break + else: + if st - last_sp_end > gap_sec: + break + cur_e = int(min(cap_end, en + tail_pad)) + last_sp_end = en + if cur_e - s_out >= min_dur: + return min(cur_e, s_out + int(max_dur)) + return min(max(cur_e, e_out), s_out + int(max_dur), cap_end) + + +def _refine_window_to_speech_bounds( + segments: list[dict], + start_sec: int, + end_sec: int, + min_dur: float, + max_dur: float, + total_end: float, + *, + topic_break_gap_sec: float = 12.0, + tail_pad_sec: float = 0.45, +) -> tuple[int, int]: + """粗窗口 → 对齐首条字幕起点、在「自然话题尾」或最后一条字幕收束,去掉片尾无对白;再卡 1~5 分钟。""" + cap = max(start_sec + 1, int(total_end) - 1) + subs = [ + s + for s in segments + if float(s["end_sec"]) >= start_sec and float(s["start_sec"]) <= end_sec + ] + subs.sort(key=lambda x: float(x["start_sec"])) + if not subs: + return start_sec, min(end_sec, cap) + + s1 = int(max(start_sec, float(subs[0]["start_sec"]))) + natural_last = _last_sub_before_long_gap(subs, topic_break_gap_sec) or subs[-1] + e_nat = int(min(end_sec, cap, float(natural_last["end_sec"]) + tail_pad_sec)) + e_full = int(min(end_sec, cap, float(subs[-1]["end_sec"]) + tail_pad_sec)) + + # 自然断点够长则用「一整段业务」收束;否则用本窗全部字幕收束(至少去掉尾静音) + if e_nat - s1 >= max(35.0, min_dur * 0.72): + e1 = e_nat + else: + e1 = e_full + + if e1 - s1 > max_dur: + s1 = int(max(start_sec, e1 - int(max_dur))) + subs2 = [x for x in subs if float(x["end_sec"]) > s1] + if subs2: + s1 = int(max(s1, float(subs2[0]["start_sec"]))) + + if e1 - s1 < min_dur: + e1 = _extend_end_for_min_duration( + segments, s1, e1, min_dur, max_dur, cap, topic_break_gap_sec, tail_pad_sec + ) + if e1 - s1 < min_dur: + e1 = _extend_end_for_min_duration( + segments, + s1, + max(e1, s1), + min_dur, + max_dur, + cap, + max(topic_break_gap_sec, 22.0), + tail_pad_sec, + ) + if e1 - s1 < min_dur: + t_end = min(cap, int(end_sec)) + s1 = int(max(start_sec, t_end - int(min_dur))) + e1 = t_end + if e1 - s1 < min_dur: + s1 = int(start_sec) + e1 = min(cap, int(start_sec + int(min_dur))) + + if e1 - s1 > max_dur: + e1 = s1 + int(max_dur) + + if e1 <= s1: + return start_sec, min(end_sec, cap) + return s1, e1 + + +def _anchor_segment( + segments: list[dict], + start_sec: int, + end_sec: int, + keywords: list[str], +) -> dict | None: + """窗口内按时间第一条字幕;优先含关键词的条,便于封面 hook 与首条烧录字幕同源。""" + in_win = [ + s + for s in segments + if s.get("end_sec", 0) >= start_sec and s.get("start_sec", 0) <= end_sec + ] + if not in_win: + return None + in_win.sort(key=lambda x: float(x.get("start_sec", 0))) + scored = [s for s in in_win if _score_text(s.get("text") or "", keywords) > 0] + return scored[0] if scored else in_win[0] + + +def _windows_non_overlap( + chosen_bins: list[int], + clip_count: int, + min_dur: float, + max_dur: float, + total_end: float, + bin_sec: float, + min_gap_sec: float = 72.0, +) -> list[tuple[int, int]]: + """峰值 bin → 时间窗,按时间排序并强制窗与窗之间至少 min_gap_sec(减少重叠切段)。""" + half = max_dur / 2.0 + raw: list[tuple[int, int, int]] = [] + for bi in chosen_bins: + center = (bi + 0.5) * bin_sec + s = int(max(0, center - half)) + e = int(min(total_end - 2, s + int(max_dur))) + if e - s < min_dur: + e = int(min(total_end - 2, s + int(min_dur))) + if e - s > max_dur: + e = s + int(max_dur) + raw.append((s, e, bi)) + raw.sort(key=lambda x: (x[0], x[1])) + resolved: list[tuple[int, int]] = [] + last_e = -10**9 + for s, e, _ in raw: + if s < last_e + min_gap_sec: + s = int(last_e + min_gap_sec) + e = int(min(total_end - 2, s + int(max_dur))) + if e - s < min_dur: + e = int(min(total_end - 2, s + int(min_dur))) + if s >= total_end - 5 or (e - s) < min_dur * 0.85: + continue + resolved.append((s, e)) + last_e = e + if len(resolved) >= clip_count: + break + + # 不足时用时间轴均匀补窗(与已有窗保留 min_gap_sec 间隔) + def _gap_conflict(a: tuple[int, int], b: tuple[int, int]) -> bool: + s, e = a + rs, re = b + return not (e + min_gap_sec <= rs or s >= re + min_gap_sec) + + if len(resolved) < clip_count and total_end > min_dur + min_gap_sec: + step = max(int(min_dur + min_gap_sec), int((total_end - min_dur) / max(1, clip_count + 2))) + # 仅从「最后一段结束之后」向前扫,避免在已选峰值之后又插回 00:00 导致顺序与叙事错乱 + cursor = float(max((r[1] + min_gap_sec for r in resolved), default=0)) + safety = 0 + while len(resolved) < clip_count and safety < clip_count * 16: + safety += 1 + if cursor > total_end - min_dur: + break + s = int(cursor) + e = int(min(total_end - 2, s + int(min(max_dur, max(min_dur, 90.0))))) + if e - s < min_dur * 0.85: + cursor += step + continue + cand = (s, e) + if any(_gap_conflict(cand, x) for x in resolved): + cursor += step + continue + resolved.append(cand) + cursor = float(e + min_gap_sec) + + resolved.sort(key=lambda x: (x[0], x[1])) + return resolved[:clip_count] + + +def build_keyword_highlights( + transcript_path: str, + clip_count: int, + min_dur: float, + max_dur: float, + theme: str, + bin_sec: float = 25.0, + viral: bool = True, + title_max_cjk: int = 30, + topic_break_gap_sec: float = 12.0, + tail_pad_sec: float = 0.45, +) -> list[dict]: + min_dur = max(45.0, float(min_dur)) + max_dur = float(max_dur) + if max_dur < min_dur: + min_dur, max_dur = max_dur, min_dur + max_dur = max(min_dur, min(max_dur, 600.0)) + + keywords = THEMES.get(theme) or THEMES["soul_party"] + segments = parse_srt_segments(transcript_path) + if not segments: + return [] + total_end = float(segments[-1]["end_sec"]) + nb = int(total_end / bin_sec) + 2 + bins = [0.0] * nb + for seg in segments: + sc = _score_text(seg.get("text") or "", keywords) + if sc <= 0: + continue + b0 = max(0, int(seg["start_sec"] / bin_sec)) + b1 = min(nb - 1, int(seg["end_sec"] / bin_sec) + 1) + for bi in range(b0, b1 + 1): + bins[bi] += sc + + # 找局部峰值 + peaks: list[tuple[int, float]] = [] + for i in range(1, len(bins) - 1): + if bins[i] < 0.8: + continue + if bins[i] >= bins[i - 1] and bins[i] >= bins[i + 1]: + peaks.append((i, bins[i])) + peaks.sort(key=lambda x: -x[1]) + + min_bins_between = int(max(45, min_dur * 0.35) / bin_sec) + chosen: list[int] = [] + for i, _ in peaks: + if all(abs(i - c) >= min_bins_between for c in chosen): + chosen.append(i) + if len(chosen) >= clip_count: + break + + if len(chosen) < clip_count: + for i in range(len(bins)): + if i not in chosen and bins[i] >= 0.5: + if all(abs(i - c) >= min_bins_between // 2 or min_bins_between < 2 for c in chosen): + chosen.append(i) + if len(chosen) >= clip_count: + break + + chosen.sort() + # 合并过近的峰值,减少「同一段话切三条」 + min_gap_bins = max(min_bins_between, int(120 / bin_sec)) + merged: list[int] = [] + for bi in chosen: + if not merged or bi - merged[-1] >= min_gap_bins: + merged.append(bi) + chosen = merged[:clip_count] + if not chosen: + # 全片均匀兜底 + step = max(min_dur, (total_end - min_dur) / max(1, clip_count)) + chosen = [int((j + 0.5) * step / bin_sec) for j in range(clip_count)] + + windows = _windows_non_overlap( + chosen[: max(clip_count * 3, clip_count + 6)], + clip_count, + min_dur, + max_dur, + total_end, + bin_sec, + min_gap_sec=max(90.0, min_dur * 0.55), + ) + + out: list[dict] = [] + # soul_enhance: COVER_HOOK_MAX_CJK = 16,标题文件名用序号前缀保证唯一 + for idx, (rs, re) in enumerate(windows): + start_sec, end_sec = _refine_window_to_speech_bounds( + segments, + rs, + re, + min_dur, + max_dur, + total_end, + topic_break_gap_sec=topic_break_gap_sec, + tail_pad_sec=tail_pad_sec, + ) + texts = [ + s["text"] + for s in segments + if s["end_sec"] >= start_sec and s["start_sec"] <= end_sec and _score_text(s["text"], keywords) > 0 + ] + if not texts: + texts = [ + s["text"] + for s in segments + if s["end_sec"] >= start_sec and s["start_sec"] <= end_sec + ] + joined = " ".join(texts)[:160] if texts else f"精彩片段{idx+1}" + excerpt = joined[:120] + ("…" if len(joined) > 120 else "") + + anchor = _anchor_segment(segments, start_sec, end_sec, keywords) + anchor_raw = (anchor.get("text") or "").strip() if anchor else "" + if not anchor_raw: + anchor_raw = (texts[0] if texts else joined)[:80] + + # 封面 hook 与首条字幕同源(16 汉字封顶,与 soul_enhance COVER_HOOK 一致) + hook_full = _limit_cjk_chars(anchor_raw, 16) + hook_17 = _limit_cjk_chars(anchor_raw, 17) + hook_display = ( + (hook_full + "…") + if (hook_full and hook_17 != hook_full) + else (hook_full or f"第{idx+1}段") + ) + + title_body = _limit_cjk_chars(anchor_raw, 12) + span_sec = end_sec - start_sec + + viral_hook = "" + if viral: + # 完整抖音向长标题(文件名/batch_clip 用);封面/成片 title-only 仍走 viral_hook 短 punch + full_title = _compose_douyin_full_title( + anchor_raw, joined, max_total_cjk=max(18, min(title_max_cjk, 36)) + ) + title = full_title.strip() or f"第{idx+1:02d}段 {title_body}".strip() + viral_hook = _cover_punch_from_full_title(full_title, 16) or _compose_viral_hook( + anchor_raw, joined, 16 + ) + else: + title = f"第{idx+1:02d}段 {title_body}".strip() if title_body else f"第{idx+1:02d}段 话题" + + row: dict = { + "title": title, + "start_time": _sec_to_hhmmss(start_sec), + "end_time": _sec_to_hhmmss(end_sec), + "hook_3sec": hook_display, + "cta_ending": PARTY_CTA, + "transcript_excerpt": excerpt, + "reason": ( + f"关键词密度峰值 theme={theme} non_overlap viral={viral} " + f"douyin_title=1 speech_bounds gap={topic_break_gap_sec}s tail_pad={tail_pad_sec}s" + ), + "source_span_sec": int(span_sec), + } + if viral and viral_hook: + row["viral_hook"] = viral_hook + out.append(row) + return out + + +def main(): + ap = argparse.ArgumentParser(description="关键词密度高光(无 LLM)") + ap.add_argument("transcript", type=Path, help="transcript.srt") + ap.add_argument("-o", "--output", type=Path, required=True) + ap.add_argument("--clips", type=int, default=12) + ap.add_argument( + "--min-duration", + type=float, + default=60.0, + help="单条最短秒数(默认 60=1 分钟)", + ) + ap.add_argument( + "--max-duration", + type=float, + default=300.0, + help="单条最长秒数(默认 300=5 分钟)", + ) + ap.add_argument( + "--theme", + choices=list(THEMES.keys()), + default="mbti_business", + help="关键词表", + ) + ap.add_argument("--bin-sec", type=float, default=25.0, help="时间箱宽度(秒)") + ap.add_argument( + "--plain-hooks", + action="store_true", + help="关闭 viral_hook/抖音长标题,仅用语义锚点 hook(封面更贴首句字幕)", + ) + ap.add_argument( + "--title-max-cjk", + type=int, + default=30, + help="抖音向完整标题汉字上限(默认 30,约一条短视频标题长度)", + ) + ap.add_argument( + "--topic-break-gap", + type=float, + default=12.0, + help="相邻字幕间隔超过此秒数视为换话题,优先在上一句收束(默认 12)", + ) + ap.add_argument( + "--tail-pad", + type=float, + default=0.45, + help="最后一条字幕后保留的片尾余量秒数(默认 0.45,避免切太紧)", + ) + args = ap.parse_args() + + if not args.transcript.exists(): + print(f"❌ 不存在: {args.transcript}", file=sys.stderr) + sys.exit(1) + data = build_keyword_highlights( + str(args.transcript), + args.clips, + args.min_duration, + args.max_duration, + args.theme, + bin_sec=args.bin_sec, + viral=not args.plain_hooks, + title_max_cjk=max(18, min(args.title_max_cjk, 40)), + topic_break_gap_sec=max(5.0, float(args.topic_break_gap)), + tail_pad_sec=max(0.1, min(float(args.tail_pad), 2.0)), + ) + if not data: + print("❌ 未生成任何片段", file=sys.stderr) + sys.exit(1) + args.output.parent.mkdir(parents=True, exist_ok=True) + with open(args.output, "w", encoding="utf-8") as f: + json.dump(data, f, ensure_ascii=False, indent=2) + print(f"✅ 关键词高光 {len(data)} 条 → {args.output}") + + +if __name__ == "__main__": + main() diff --git a/03_卡木(木)/木叶_视频内容/视频切片/脚本/soul_enhance.py b/03_卡木(木)/木叶_视频内容/视频切片/脚本/soul_enhance.py index 8fa63c67..80818586 100644 --- a/03_卡木(木)/木叶_视频内容/视频切片/脚本/soul_enhance.py +++ b/03_卡木(木)/木叶_视频内容/视频切片/脚本/soul_enhance.py @@ -67,9 +67,16 @@ FONT_APPLE_SUBTITLE = next( # 视频增强参数 SPEED_FACTOR = 1.10 # 加速10% -SILENCE_THRESHOLD = -38 # 静音阈值(dB),略放宽以多检出停顿 -SILENCE_MIN_DURATION = 0.32 # 短于此前值,中间「断点」切得更干净 -SILENCE_TRIM_MARGIN = 0.06 # 保留段与静音接缝留白(秒),略小则多剪 +# 默认「剃空白」偏激进:略提高 noise 阈值(更接近 0)+ 更短 min_duration,多剪掉会议留白 +SILENCE_THRESHOLD = -32 +SILENCE_MIN_DURATION = 0.22 +SILENCE_TRIM_MARGIN = 0.04 +# --silence-gentle 时回退旧参数,避免个别素材被切太碎 +SILENCE_GENTLE_THRESHOLD = -38 +SILENCE_GENTLE_MIN_DURATION = 0.32 +SILENCE_GENTLE_TRIM_MARGIN = 0.06 +# 字幕轴上相邻两条间隔 ≥ 此值(秒)也视为可剪「空白」(与 silencedetect 结果并集) +SILENCE_SUBTITLE_GAP_MIN_SEC = 0.52 # 片尾若干秒不参与「去静音」切除,避免成片最后几秒被剪成完全无声(需保留收尾人声) SILENCE_TAIL_PRESERVE_SEC = 2.85 @@ -590,9 +597,12 @@ def _limit_cover_title_cjk(text: str, max_cjk: int = COVER_TITLE_MAX_CJK) -> str def pick_cover_hook_text(highlight_info: dict) -> str: - """高光成片封面:优先 3 秒钩子句(抓眼球),其次核心问句,最后才用短标题。全程简体。""" + """高光成片封面:优先 viral_hook(热点向刺激标题),再 hook_3sec / 问句 / 标题。全程简体。""" if not highlight_info: return "" + v = _to_simplified((highlight_info.get("viral_hook") or "").strip()) + if v: + return v h = _to_simplified((highlight_info.get("hook_3sec") or "").strip()) if h: return h @@ -608,7 +618,7 @@ def _limit_cover_hook_display(text: str, max_cjk: int = COVER_HOOK_MAX_CJK) -> s # macOS/APFS 文件名允许的中文标点(保留刺激性标题所需的标点) -_SAFE_CJK_PUNCT = set(",。?!;:·、…()【】「」《》~—·+") +_SAFE_CJK_PUNCT = set(",。?!;:·、…()【】「」《》~—·+|") def sanitize_filename(name: str, max_length: int = 50) -> str: """成片文件名:先去杠去下划线,再保留中文、ASCII字母数字、安全标点与空格。 @@ -714,11 +724,18 @@ EMOJI_STICKER_MAP = { "growth": ["1f680", "1f4c8", "1f3af"], "risk": ["26a0", "1f6a8"], "happy": ["1f973", "1f44f", "1f60e"], + "psych": ["1f9e0", "1f4a1", "1f4af"], + "team": ["1f44d", "1f44f", "1f389"], } def _detect_sticker_theme(text: str) -> str: - t = (text or "").lower() + u = text or "" + t = u.lower() + if any(k in u for k in ["MBTI", "性格", "心理", "咨询", "测试", "测评", "抑郁", "情绪"]): + return "psych" + if any(k in u for k in ["团队", "合伙", "椅子", "分工", "小林", "陈总", "宋总"]): + return "team" if any(k in t for k in ["营收", "赚钱", "成交", "变现", "利润", "现金流", "money"]): return "money" if any(k in t for k in ["风险", "封号", "告警", "风控", "risk"]): @@ -748,6 +765,8 @@ def _build_sticker_events(highlight_info: dict, duration: float): base_count = 2 if duration >= 120 else 1 if duration >= 180: base_count = 3 + if duration >= 90 and theme in ("psych", "team", "money"): + base_count = min(5, base_count + 2) events = [] random.seed(int(duration * 1000) ^ len(source_text)) for i in range(base_count): @@ -828,6 +847,105 @@ def apply_sticker_overlays(video_path: str, output_path: str, highlight_info: di return r.returncode == 0 and os.path.exists(output_path) +def _audio_enhance_filter_str(strong_clean: bool) -> str: + """嘈杂会议室:strong 时抬高高通、加深 FFT 降噪。""" + if strong_clean: + return ( + "highpass=f=200," + "lowpass=f=9800," + "afftdn=nf=-38," + "compand=0.02|0.02:0.05|0.05:-60/-60|-32/-16|-22/-11|0/-3:6:0:0:0.02," + "loudnorm=I=-16:LRA=7:TP=-1.5" + ) + return ( + "highpass=f=120," + "lowpass=f=10000," + "afftdn=nf=-30," + "compand=0.02|0.02:0.05|0.05:-60/-60|-30/-15|-20/-10|0/-3:6:0:0:0.02," + "loudnorm=I=-16:LRA=7:TP=-1.5" + ) + + +def apply_keyword_pin_overlays( + video_path: str, + output_path: str, + highlight_info: dict, + duration: float, + overlay_x: int, + strip_w: int, + temp_dir: str, +) -> bool: + """在竖条主区域内烧录 1~2 条半透明关键词条(与高光文案相关,非外链视频)。""" + lines = [] + for key in ("hook_3sec", "title", "transcript_excerpt"): + s = (highlight_info.get(key) or "").strip() + s = _to_simplified(s) + s = re.sub(r"\s+", " ", s) + if len(s) >= 6: + lines.append(s[:22] + ("…" if len(s) > 22 else "")) + if len(lines) >= 2: + break + if not lines: + return False + paths = [] + for i, line in enumerate(lines[:2]): + pin_w = min(680, max(320, strip_w + 80)) + pin_h = 52 + img = Image.new("RGBA", (pin_w, pin_h), (0, 0, 0, 0)) + draw = ImageDraw.Draw(img) + draw.rounded_rectangle([0, 0, pin_w - 1, pin_h - 1], radius=10, fill=(8, 12, 20, 210)) + fp = FONT_SMILEY if os.path.exists(FONT_SMILEY) else FALLBACK_FONT + try: + font = ImageFont.truetype(fp, 26) + except Exception: + font = ImageFont.load_default() + draw.text((16, 12), line, fill=(255, 255, 255, 255), font=font) + p = os.path.join(temp_dir, f"kw_pin_{i}.png") + img.save(p, "PNG") + paths.append(p) + if not paths: + return False + t0 = max(4.0, min(18.0, duration * 0.06)) + t1 = max(t0 + 2.4, min(duration - 4.0, duration * 0.42)) + pin_x = max(8, int(overlay_x + strip_w // 2 - (min(680, max(320, strip_w + 80)) // 2))) + pin_y = max(80, int(220)) + cmd = ["ffmpeg", "-y", "-i", video_path] + for p in paths: + cmd += ["-i", p] + if len(paths) == 1: + fc = ( + f"[1:v]format=rgba,colorchannelmixer=aa=0.92[p1];" + f"[0:v][p1]overlay=x={pin_x}:y={pin_y}:enable='between(t,{t0:.3f},{t0+2.8:.3f})'[v]" + ) + else: + # enable= 表达式必须在引号内闭合,输出标签 [v] 在引号外(否则 ffmpeg 会把 [v] 吃进表达式) + fc = ( + f"[1:v]format=rgba,colorchannelmixer=aa=0.92[p1];" + f"[2:v]format=rgba,colorchannelmixer=aa=0.92[p2];" + f"[0:v][p1]overlay=x={pin_x}:y={pin_y}:enable='between(t,{t0:.3f},{t0+2.8:.3f})'[v1];" + f"[v1][p2]overlay=x={pin_x}:y={pin_y+58}:enable='between(t,{t1:.3f},{t1+2.8:.3f})'[v]" + ) + cmd += [ + "-filter_complex", + fc, + "-map", + "[v]", + "-map", + "0:a", + "-c:v", + "libx264", + "-preset", + "fast", + "-crf", + "22", + "-c:a", + "copy", + output_path, + ] + r = subprocess.run(cmd, capture_output=True, text=True) + return r.returncode == 0 and os.path.exists(output_path) + + def improve_subtitle_punctuation(text: str) -> str: """为字幕句子补充标点,让意思更清晰。 @@ -1807,6 +1925,45 @@ def kept_segments_from_silences(silences, duration, margin=0.1): return segments +def _subtitle_gap_intervals(subtitles, duration, min_gap_sec: float) -> list[tuple[float, float]]: + """相邻字幕条之间的「空白段」,用于与 silencedetect 并集后一起剃掉。""" + if not subtitles or min_gap_sec <= 0: + return [] + dur = float(duration) + subs = sorted(subtitles, key=lambda x: float(x.get("start", 0))) + gaps: list[tuple[float, float]] = [] + head = float(subs[0].get("start", 0)) + if head >= min_gap_sec: + gaps.append((0.0, head)) + for i in range(len(subs) - 1): + a = float(subs[i].get("end", subs[i].get("start", 0))) + b = float(subs[i + 1].get("start", 0)) + if b - a >= min_gap_sec: + gaps.append((a, b)) + tail = float(subs[-1].get("end", 0)) + if dur - tail >= min_gap_sec: + gaps.append((tail, dur)) + return gaps + + +def _merge_time_intervals( + intervals: list[tuple[float, float]], + join_eps: float = 0.03, +) -> list[tuple[float, float]]: + """合并重叠或紧挨的时间段(用于音频静音 ∪ 字幕间隙)。""" + cleaned = [(float(s), float(e)) for s, e in intervals if e > s + 1e-6] + if not cleaned: + return [] + cleaned.sort(key=lambda x: x[0]) + out: list[list[float]] = [[cleaned[0][0], cleaned[0][1]]] + for s, e in cleaned[1:]: + if s <= out[-1][1] + join_eps: + out[-1][1] = max(out[-1][1], e) + else: + out.append([s, e]) + return [(a, b) for a, b in out] + + def map_time_remove_silences(t, kept_segments): """原片时间 t(秒)→ 去掉静音后的新时间。""" t = float(t) @@ -1939,7 +2096,10 @@ def enhance_clip(clip_path, output_path, highlight_info, temp_dir, transcript_pa crop_vf=None, overlay_x=None, typewriter_subs=False, vertical_fit_full=False, trim_silence=True, subtitle_extra_delay=0.0, use_stickers=True, - horizontal_center_pad=False): + horizontal_center_pad=False, + strong_audio_clean=False, keyword_pins=False, + silence_noise_db=None, silence_min_duration=None, silence_trim_margin=None, + merge_subtitle_gap_silences=True): """增强单个切片。vertical=True 时输出竖条,宽由 --crop-vf 决定(原生包络常见 560~750×1080;旧 498 为两段裁或 scale)。 vertical_fit_full:整幅 16:9 缩放入 498×1080 + 上下黑边。 horizontal_center_pad:与竖条塑形相同链路(封面/字幕仍按竖条叠在横版上),最后输出 1920×1080,中间为裁切条、左右黑边。 @@ -1972,6 +2132,7 @@ def enhance_clip(clip_path, output_path, highlight_info, temp_dir, transcript_pa out_w, out_h = width, height vf_use = "" overlay_pos = "0:0" + strip_overlay_x, strip_overlay_w = 0, width elif vertical: vf_use = (crop_vf or CROP_VF).strip() out_w, out_h = vertical_out_dimensions_from_vf(vf_use) @@ -1983,10 +2144,12 @@ def enhance_clip(clip_path, output_path, highlight_info, temp_dir, transcript_pa if ox is None: ox = OVERLAY_X overlay_pos = f"{int(ox)}:0" + strip_overlay_x, strip_overlay_w = int(ox), int(out_w) else: out_w, out_h = width, height vf_use = CROP_VF overlay_pos = "0:0" + strip_overlay_x, strip_overlay_w = 0, width # 1. 字幕解析(相对原切片时间轴;去静音后会整体平移时间) sub_images = [] @@ -2063,10 +2226,17 @@ def enhance_clip(clip_path, output_path, highlight_info, temp_dir, transcript_pa mode = "逐字渐显" if typewriter_subs else "随语音走动" print(f" ✓ 字幕解析 ({len(subtitles)}条),将烧录为{mode}字幕", flush=True) - # 2. 去静音:trim+concat 重编码,并 remap 字幕时间轴(此前仅检测未切除,成片仍带长停顿) - silences = detect_silence(clip_path, SILENCE_THRESHOLD, SILENCE_MIN_DURATION) + # 2. 去静音:silencedetect ∪ 字幕条间长间隙,trim+concat 重编码,并 remap 字幕时间轴 + thr = float(silence_noise_db) if silence_noise_db is not None else float(SILENCE_THRESHOLD) + mind = float(silence_min_duration) if silence_min_duration is not None else float(SILENCE_MIN_DURATION) + marg = float(silence_trim_margin) if silence_trim_margin is not None else float(SILENCE_TRIM_MARGIN) + silences = detect_silence(clip_path, thr, mind) + if merge_subtitle_gap_silences and subtitles: + gaps = _subtitle_gap_intervals(subtitles, original_duration, SILENCE_SUBTITLE_GAP_MIN_SEC) + if gaps: + silences = _merge_time_intervals(list(silences) + gaps) silences = filter_silences_keep_tail_audio(silences, original_duration) - kept = kept_segments_from_silences(silences, original_duration, margin=SILENCE_TRIM_MARGIN) + kept = kept_segments_from_silences(silences, original_duration, margin=marg) removed_total = original_duration - sum(e - s for s, e in kept) if trim_silence and removed_total >= MIN_SILENCE_TRIM_TOTAL_SEC: trim_out = os.path.join(temp_dir, "trim_silence.mp4") @@ -2230,19 +2400,32 @@ def enhance_clip(clip_path, output_path, highlight_info, temp_dir, transcript_pa print(f" ✓ 表情贴片已叠加(自动主题匹配)", flush=True) else: print(f" ⊘ 表情贴片跳过", flush=True) + + # 5.26 关键词条(PIL PNG,与高光文案一致;非外链视频) + kw_out = os.path.join(temp_dir, "with_kw_pins.mp4") + if ( + keyword_pins + and vertical + and not vertical_fit_full + and apply_keyword_pin_overlays( + current_video, + kw_out, + highlight_info, + duration, + strip_overlay_x, + strip_overlay_w, + temp_dir, + ) + ): + current_video = kw_out + print(f" ✓ 关键词条已烧录(竖条主区内)", flush=True) # 5.3 加速10% + 音频增强 + 同步(成片必做) - print(f" [4/5] 加速 10% + 音频清晰化…", flush=True) + mode_audio = "强降噪会议室" if strong_audio_clean else "标准" + print(f" [4/5] 加速 10% + 音频清晰化({mode_audio})…", flush=True) speed_output = os.path.join(temp_dir, 'speed.mp4') - # 音频处理链:高通去低频噪声 → 动态降噪 → 人声压缩增益 → 音量归一化 - audio_enhance = ( - "highpass=f=120," # 去掉 120Hz 以下的低频噪声/嗡嗡声 - "lowpass=f=10000," # 去掉 10kHz 以上的高频噪声 - "afftdn=nf=-30," # FFT 降噪(-30dBFS 噪底) - "compand=0.02|0.02:0.05|0.05:-60/-60|-30/-15|-20/-10|0/-3:6:0:0:0.02," # 动态压缩:抬升安静部分 - "loudnorm=I=-16:LRA=7:TP=-1.5" # EBU R128 响度归一化 - ) + audio_enhance = _audio_enhance_filter_str(bool(strong_audio_clean)) # 加速 + 音频增强 合并成一次 ffmpeg cmd = [ 'ffmpeg', '-y', '-i', current_video, @@ -2373,6 +2556,16 @@ def main(): action="store_true", help="不去除静音长停顿(默认会切除 silencedetect 检出的静音并同步平移字幕时间轴)", ) + parser.add_argument( + "--silence-gentle", + action="store_true", + help="去静音参数改温和(少剃),成片仍留白较多时用默认即可,被切太碎时再开", + ) + parser.add_argument( + "--no-subtitle-gap-merge", + action="store_true", + help="不把「字幕条之间长间隙」并入剃除,仅用音频 silencedetect", + ) parser.add_argument( "--subtitle-extra-delay", type=float, @@ -2400,6 +2593,16 @@ def main(): action="store_true", help="横屏全幅成片:整幅 16:9(无左右黑边),高光/字幕/封面与竖屏 Skill 同源;不要与 --vertical / --crop-vf / --horizontal-center-pad 同用", ) + parser.add_argument( + "--strong-audio-clean", + action="store_true", + help="嘈杂会议室:加强高通与 FFT 降噪(仍保留片尾人声保护窗)", + ) + parser.add_argument( + "--keyword-pins", + action="store_true", + help="竖条成片时在主画面内烧录 1~2 条半透明关键词条(来自 hook/摘要,非外链视频)", + ) args = parser.parse_args() clips_dir = Path(args.clips) if args.clips else CLIPS_DIR @@ -2474,12 +2677,23 @@ def main(): print("="*60) print( f"功能: 封面+字幕+加速10%+去语气词" - + ("+去长静音" if not getattr(args, "no_trim_silence", False) else "") + + ( + "+去长静音" + + ( + "(温和)" + if getattr(args, "silence_gentle", False) + else "(剃空白+字幕间隙)" + ) + if not getattr(args, "no_trim_silence", False) + else "" + ) + ("+竖屏条(高1080宽随vf)" if vertical and not hpad else "") + ("+横屏单中屏(竖条+左右黑边)" if hpad else "") + ("+横屏全幅(整幅叠字幕)" if hfull else "") + ("+全画面letterbox(不裁竖条)" if vertical and vfit else "") + ("+逐字字幕" if typewriter else "") + + ("+强降噪" if getattr(args, "strong_audio_clean", False) else "") + + ("+关键词条" if getattr(args, "keyword_pins", False) else "") ) if vertical and crop_vf_arg and not vfit: print(f"取景: --crop-vf {crop_vf_arg}") @@ -2503,6 +2717,15 @@ def main(): total = len(clips) print(f"\n找到 {total} 个 mp4,highlights {len(highlights)} 条;仅处理序号 1~{len(highlights)} 的切片\n", flush=True) + if getattr(args, "silence_gentle", False): + snd, smin, smar = ( + SILENCE_GENTLE_THRESHOLD, + SILENCE_GENTLE_MIN_DURATION, + SILENCE_GENTLE_TRIM_MARGIN, + ) + else: + snd = smin = smar = None + success_count = 0 for i, clip_path in enumerate(clips): clip_num = _parse_clip_index(clip_path.name) or (i + 1) @@ -2513,19 +2736,30 @@ def main(): ) continue highlight_info = highlights[clip_num - 1] - title_display = (highlight_info.get("hook_3sec") or highlight_info.get("title") or clip_path.stem)[ - :36 - ] + title_display = ( + highlight_info.get("viral_hook") + or highlight_info.get("hook_3sec") + or highlight_info.get("title") + or clip_path.stem + )[:36] print("=" * 60, flush=True) print(f"【成片进度】 {i+1}/{total} {title_display}", flush=True) print("=" * 60, flush=True) if getattr(args, "title_only", False): - display = pick_cover_hook_text(highlight_info) or highlight_info.get("title") or clip_path.stem - title = _limit_cover_hook_display( - _normalize_title_for_display(str(display)) or str(display), - ) or str(display) - name = sanitize_filename(title) + ".mp4" + # 文件名:优先 highlights「title」完整抖音向长标题(sanitize 72 字内);封面仍由 enhance_clip 内 pick_cover_hook(viral_hook 短句) + long_t = (highlight_info.get("title") or "").strip() + short_fallback = pick_cover_hook_text(highlight_info) or long_t or clip_path.stem + fn_src = long_t if long_t else short_fallback + fn_norm = _normalize_title_for_display(str(fn_src)) or str(fn_src) + stem = sanitize_filename(fn_norm, max_length=72) + if not stem or stem == "片段": + stem = sanitize_filename( + _normalize_title_for_display(str(short_fallback)) or str(short_fallback), + max_length=50, + ) + # 同场多条高光标题可能相同,必须带切片序号防覆盖 + name = f"{stem}_{clip_num:02d}.mp4" output_path = output_dir / name else: output_path = output_dir / clip_path.name.replace('.mp4', '_enhanced.mp4') @@ -2549,6 +2783,12 @@ def main(): subtitle_extra_delay=float(getattr(args, "subtitle_extra_delay", 0.0) or 0.0), use_stickers=getattr(args, "stickers", True) and not getattr(args, "no_stickers", False), horizontal_center_pad=hpad, + strong_audio_clean=getattr(args, "strong_audio_clean", False), + keyword_pins=getattr(args, "keyword_pins", False), + silence_noise_db=snd, + silence_min_duration=smin, + silence_trim_margin=smar, + merge_subtitle_gap_silences=not getattr(args, "no_subtitle_gap_merge", False), ): success_count += 1 finally: @@ -2559,28 +2799,125 @@ def main(): print(f"📁 输出目录: {output_dir}") print("="*60) - generate_index(highlights, output_dir) + generate_index( + highlights, + output_dir, + title_only=getattr(args, "title_only", False), + ) -def generate_index(highlights, output_dir): - """生成目录索引(标题/Hook/CTA 统一简体中文),索引写在输出目录内""" + +def generate_index(highlights, output_dir, title_only: bool = False): + """生成目录索引:源时段、源窗/成片时长、标题、Hook、成片文件名。""" + generate_index_v2(highlights, Path(output_dir), title_only=title_only) + + +def _parse_hhmmss_to_sec(t: str) -> float | None: + t = str(t).strip() + if not t: + return None + parts = t.split(":") + try: + if len(parts) == 3: + return int(parts[0]) * 3600 + int(parts[1]) * 60 + float(parts[2]) + if len(parts) == 2: + return int(parts[0]) * 60 + float(parts[1]) + return float(parts[0]) + except (TypeError, ValueError): + return None + + +def _ffprobe_duration_sec(path: Path) -> float | None: + if not path.exists(): + return None + try: + r = subprocess.run( + [ + "ffprobe", + "-v", + "error", + "-show_entries", + "format=duration", + "-of", + "default=noprint_wrappers=1:nokey=1", + str(path), + ], + capture_output=True, + text=True, + timeout=60, + ) + if r.returncode != 0: + return None + return float(r.stdout.strip()) + except (ValueError, subprocess.TimeoutExpired, OSError): + return None + + +def _find_title_only_output(output_dir: Path, clip_index: int) -> Path | None: + """title-only 成片:*_{idx:02d}.mp4(取字典序最后一条,兼容重跑残留)。""" + pat = re.compile(r"_(\d{2})\.mp4$") + hits: list[Path] = [] + for p in output_dir.glob("*.mp4"): + m = pat.search(p.name) + if m and int(m.group(1)) == clip_index: + hits.append(p) + if not hits: + return None + return sorted(hits)[-1] + + +def generate_index_v2(highlights, output_dir: Path, title_only: bool = False): + """生成目录索引:含源时段、源窗时长(秒)、成片时长(ffprobe,title-only 时尽力匹配文件)。""" index_path = output_dir / "目录索引.md" - - with open(index_path, 'w', encoding='utf-8') as f: + + with open(index_path, "w", encoding="utf-8") as f: f.write("# Soul派对 - 成片目录\n\n") f.write( - "**优化**: 高光 Hook 封面(轻模糊底+冷色渐变+底渐隐+顶栏品牌色)+逐字字幕+去长静音+片尾 CTA+加速10%(竖屏宽随 crop-vf)\n\n" + "**优化**: 高光 Hook 封面 + 逐字字幕 + 去长静音 + 片尾 CTA;" + "源窗时长为 highlights 起止差,成片时长为 ffprobe(trim 后与源窗可能不同)。\n\n" ) - f.write("## 切片列表\n\n") - f.write("| 序号 | 标题 | Hook | CTA |\n") - f.write("|------|------|------|-----|\n") - + f.write( + "| 序号 | 源时段 | 源窗秒 | 成片秒 | 标题 | Hook | 成片文件 |\n" + "|------|--------|--------|--------|------|------|----------|\n" + ) + for i, clip in enumerate(highlights, 1): title = _to_simplified(clip.get("title", f"clip_{i}")) hook = _to_simplified(clip.get("hook_3sec", "")) - cta = _to_simplified(clip.get("cta_ending", "")) - f.write(f"| {i} | {title} | {hook} | {cta} |\n") - + st = clip.get("start_time") or clip.get("start") or "" + et = clip.get("end_time") or clip.get("end") or "" + span = None + ss = _parse_hhmmss_to_sec(st) if st else None + es = _parse_hhmmss_to_sec(et) if et else None + if ss is not None and es is not None: + span = max(0.0, es - ss) + span_s = f"{span:.0f}" if span is not None else "—" + + out_name = "—" + final_d = "—" + if title_only: + outp = _find_title_only_output(output_dir, i) + if outp: + out_name = outp.name + fd = _ffprobe_duration_sec(outp) + if fd is not None: + final_d = f"{fd:.1f}" + else: + # 非 title-only:沿用原名 _enhanced + stem_guess = sorted(output_dir.glob(f"*{i:02d}*.mp4")) + for p in stem_guess: + if "_enhanced" in p.name or p.suffix == ".mp4": + fd = _ffprobe_duration_sec(p) + if fd is not None: + out_name = p.name + final_d = f"{fd:.1f}" + break + + f.write( + f"| {i} | {st}→{et} | {span_s} | {final_d} | {title} | {hook} | {out_name} |\n" + ) + print(f"\n📋 目录索引: {index_path}") + if __name__ == "__main__": main() diff --git a/03_卡木(木)/木叶_视频内容/视频号发布/SKILL.md b/03_卡木(木)/木叶_视频内容/视频号发布/SKILL.md index 794b7f58..d21ea3a4 100644 --- a/03_卡木(木)/木叶_视频内容/视频号发布/SKILL.md +++ b/03_卡木(木)/木叶_视频内容/视频号发布/SKILL.md @@ -6,11 +6,11 @@ description: > triggers: 视频号发布、发布到视频号、视频号登录、视频号上传、微信视频号 owner: 木叶 group: 木 -version: "3.2" -updated: "2026-03-24" +version: "3.3" +updated: "2026-03-26" --- -# 视频号发布 Skill(v3.2) +# 视频号发布 Skill(v3.3) > **核心能力**:发布链路纯 **httpx**;**登录**阶段用 Playwright(默认持久化 Chromium,减少重复扫码)。 > **实测**:120 场 12 条切片全部 API 直发成功,单条 5~9 秒。 @@ -20,6 +20,17 @@ updated: "2026-03-24" --- +## 〇、卡若默认分发范式(以后统一按此执行) + +1. **登录(默认无界面)**:`CHANNELS_SILENT_QR=1 python3 channels_login.py --silent-qr`,用微信扫 **`/tmp/channels_qr.png`**。若需补全 **`finder_raw`**(纯 API 必用),登录成功后进助手 **「创建/发表」** 页一次即可。调试或静默失败时才用 `python3 channels_login.py --playwright-only`。 +2. **发稿主路径(API + CLI)**:`python3 channels_api_publish.py --video-dir "<含 mp4 的目录>"`(全 **httpx**,无网页控件)。 +3. **回补路径(仍是无头 CLI)**:当 localStorage **缺 `finder_raw`** 等导致 API 无法前置时,`channels_api_publish.py` 以 **exit 2** 退出;此时用 `python3 channels_web_cli.py publish-dir …`(Playwright 无头 + `post_create` 注入定时)。日常不必手抄:见下条。 +4. **一键编排(推荐入口)**:`脚本/publish_auto.sh` = **先 API**,若 **exit 2** 则自动执行 **`publish-dir`**(默认间隔写在脚本内)。仅想跑 API、不要回补:`CHANNELS_NO_WEB_FALLBACK=1 ./publish_auto.sh --video-dir "…"`。 +5. **静默等登录再发**:`脚本/login_wait_and_publish.sh` = 轮询 `channels_web_cli check` 通过后执行 **`publish_auto.sh`**(同上 API→CLI)。 +6. **多平台整表**:`多平台分发/脚本/distribute_all.py` 含「视频号」时仍调用 **`channels_api_publish`** 的逐条接口;**单刷视频号目录**优先用本目录 `publish_auto.sh`,与 distribute 互补。 + +--- + ## 一、纯 API 完整流程(5 步) ``` @@ -88,30 +99,38 @@ updated: "2026-03-24" --- -## 三、一键命令 +## 三、一键命令(与「〇」一致;此处为可复制命令) -**优先(纯接口、无网页控件)**:`channels_api_publish.py` — 全 **httpx**,走 `helper_upload_params` → DFS 分片 → `post_clip_video` → `post_create`。Cookie 仍须由 `channels_login.py` 写入 `channels_storage_state.json`(**localStorage 须含 `finder_raw`**,否则 `post_create` 会 300002)。 +**日常一条(API → 必要时自动 web_cli)**: ```bash cd /Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/视频号发布/脚本 -# 1. 首次或 Cookie 过期:微信扫码登录(建议进一次发表页以注入 rawKeyBuff) -python3 channels_login.py --playwright-only +# 0. 过期时:默认无界面登录(扫 /tmp/channels_qr.png) +CHANNELS_SILENT_QR=1 python3 channels_login.py --silent-qr -# 2. 纯 API 批量发(推荐) -python3 channels_api_publish.py --video-dir "/path/to/成片或切片目录" -# 或环境变量:CHANNELS_VIDEO_DIR=/path/to/dir python3 channels_api_publish.py -# 试跑前 2 条:python3 channels_api_publish.py --video-dir "..." --limit 2 +# 1. 编排发布(先 channels_api_publish.py;若 exit 2 缺 finder_raw 则自动 publish-dir) +bash publish_auto.sh --video-dir "/path/to/成片或切片目录" +# 仅 API:CHANNELS_NO_WEB_FALLBACK=1 bash publish_auto.sh --video-dir "..." +# 试跑:bash publish_auto.sh --video-dir "..." --limit 2 ``` -**备选(Playwright 点页面、F12 注入定时)**:需要页面控件或接口失败再排错时用: +**只跑纯 API(排错/CI)**:须 **localStorage 含 `finder_raw`**,否则 **exit 2**(见脚本头注释)。 + +```bash +python3 channels_api_publish.py --video-dir "/path/to/成片或切片目录" +# CHANNELS_VIDEO_DIR=/path/to/dir python3 channels_api_publish.py +``` + +**只跑 web CLI(回补或强制页面链路)**: ```bash python3 channels_web_cli.py publish-dir \ --video-dir "<视频目录>" \ --min-gap 10 --max-gap 25 \ --start-after-min 5 --interval-min 15 \ - --skip-list-verify --max-attempts 5 + --max-attempts 5 +# 列表核验易误判时可加:--skip-list-verify ``` --- @@ -134,9 +153,11 @@ python3 channels_web_cli.py publish-dir \ | `credentials/README.md` | **开放平台 AppID/AppSecret** 存放约定(`.env.open_platform`,勿提交) | | `credentials/open_platform.env.example` | 环境变量模板 | | `脚本/channels_open_fetch.py` | **开放平台**:拉账号/直播记录/预约/罗盘 GMV(无单条短视频播放接口) | -| `脚本/channels_api_publish.py` | **主脚本**:纯 API 视频上传+发布 (v5) | +| `脚本/channels_api_publish.py` | **主脚本**:纯 API 视频上传+发布;缺 `finder_raw` 时 **exit 2** | +| `脚本/publish_auto.sh` | **默认编排**:API 优先,`exit 2` 自动 `publish-dir` | +| `脚本/login_wait_and_publish.sh` | 静默扫码 → check 通过 → `publish_auto.sh` | | `脚本/channels_publish.py` | 旧版 Playwright 发布(备用) | -| `脚本/channels_login.py` | Playwright 微信扫码登录 | +| `脚本/channels_login.py` | Playwright 微信扫码登录(默认推荐 `--silent-qr`) | | `脚本/channels_storage_state.json` | Cookie + localStorage 存储 | | `脚本/channels_task_id.txt` | videoClipTaskId 存储 | @@ -167,13 +188,14 @@ python3 channels_web_cli.py publish-dir \ --- -## 七、当前默认执行规范(2026-03-24 更新) +## 七、当前默认执行规范(2026-03-26 更新) -- **强制无界面**:`channels_web_cli.py` 默认强制 `headless=True`,即使传 `--show` 也忽略(仅打印提示)。 -- **定时来源唯一**:计划发布时间只走「计划发布控件 + post_create 注入」,**不再写入描述文本**。 -- **间隔策略**:默认 `--min-gap 10 --max-gap 25`,即每条发布定时间隔在 **10~25 分钟**。 -- **真实提交间隔**:每条视频在排期时间前 2 分钟才开始上传提交(`cmd_publish_dir` 内 `asyncio.sleep` 等到目标时刻),避免密集提交触发平台"同质化内容"检测。 -- **发布判定**:`post_create/post_publish` 命中 + `errCode=0` 作为成功主判据(可选列表核验)。 +- **总默认**:见 **「〇、卡若默认分发范式」** — 静默登录 → **`channels_api_publish`(CLI)** → 仅当 **exit 2** 时用 **`channels_web_cli publish-dir`(CLI)**;`publish_auto.sh` 已封装。 +- **web_cli 子规范(回补路径)**:`channels_web_cli.py` 默认强制 `headless=True`,即使传 `--show` 也忽略(仅打印提示)。 +- **定时来源唯一(web 路径)**:计划发布时间只走「计划发布控件 + post_create 注入」,**不再写入描述文本**。 +- **间隔策略(publish_auto 回补段)**:`--min-gap 10 --max-gap 25`,即每条定时间隔在 **10~25 分钟**;`--start-after-min 5 --interval-min 15` 与脚本内排期一致。 +- **真实提交间隔**:`cmd_publish_dir` 内可在排期前再上传(见脚本注释),避免密集触发同质化检测。 +- **发布判定**:`post_create` 命中 + `errCode=0` 为主;可选 `post_list` 核验。 --- diff --git a/03_卡木(木)/木叶_视频内容/视频号发布/脚本/channels_api_publish.py b/03_卡木(木)/木叶_视频内容/视频号发布/脚本/channels_api_publish.py index 555b76cf..e46aee28 100644 --- a/03_卡木(木)/木叶_视频内容/视频号发布/脚本/channels_api_publish.py +++ b/03_卡木(木)/木叶_视频内容/视频号发布/脚本/channels_api_publish.py @@ -8,6 +8,11 @@ CLI: CHANNELS_VIDEO_DIR=/path/to/dir python3 channels_api_publish.py python3 channels_api_publish.py --video-dir ... --limit 3 # 只发前 3 条待发布 +退出码(供 publish_auto.sh 编排): + 0 — 全部成功或「待发布为 0 / 全部已发布」 + 1 — 目录无效、会话无效、或发布过程中失败(含部分失败) + 2 — 纯 API 前置不满足(典型:localStorage 缺 finder_raw),可回退 channels_web_cli publish-dir + v8 修复 (2026-03-13): - 添加 post_clip_video 转码步骤(浏览器必需的中间步骤) - URL 改写: wxapp.tc.qq.com → finder.video.qq.com(与浏览器一致) @@ -950,11 +955,14 @@ async def main(): if not finder_raw_main: print( "[!] 纯 API 发表需要 localStorage 里的 finder_raw(rawKeyBuff),当前缺失 → post_create 会 300002。\n" - " 请执行: python3 channels_login.py --playwright-only\n" - " 登录后进入一次「创建/发表」页,等终端出现 Cookie 已保存后再跑本脚本。\n", + " 可任选其一:\n" + " A) 无界面补登:CHANNELS_SILENT_QR=1 python3 channels_login.py --silent-qr(扫 /tmp/channels_qr.png)," + "再进助手「创建/发表」页一次写入 raw。\n" + " B) 编排回补:同目录 ./publish_auto.sh --video-dir \"…\"(先 API,本情况 exit 2 后自动 channels_web_cli publish-dir)。\n" + " C) 调试有头:python3 channels_login.py --playwright-only 并进发表页。\n", flush=True, ) - return 1 + return 2 print(f" finder_raw: OK({len(finder_raw_main)} 字符)", flush=True) videos = sorted(video_dir.glob("*.mp4")) diff --git a/03_卡木(木)/木叶_视频内容/视频号发布/脚本/channels_storage_state.json b/03_卡木(木)/木叶_视频内容/视频号发布/脚本/channels_storage_state.json index 36e5d21a..15f25f85 100644 --- a/03_卡木(木)/木叶_视频内容/视频号发布/脚本/channels_storage_state.json +++ b/03_卡木(木)/木叶_视频内容/视频号发布/脚本/channels_storage_state.json @@ -1 +1,159 @@ -{"cookies": [{"name": "sessionid", "value": "BgAACuej0XO0tWGoSXf6YSEg2KiGaAtGkyr52JZOPsMe6q13eTlWwPgczkkyhzKQDaLGEFfNV%2BysF1bqhgR03iRrWB7o3Lxep6efz8EZ8yM%3D", "domain": "channels.weixin.qq.com", "path": "/", "expires": 1809032864.570455, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "wxuin", "value": "2604008894", "domain": "channels.weixin.qq.com", "path": "/", "expires": 1809032864.5705, "httpOnly": false, "secure": true, "sameSite": "None"}], "origins": [{"origin": "https://channels.weixin.qq.com", "localStorage": [{"name": "finder_route_meta", "value": "micro.content/post/list;micro.content/post/create;1;1774488587925"}, {"name": "__ml::hb_ts", "value": "1774488409660"}, {"name": "__ml::page_11a322df-e1b2-447a-b652-cffb97dad049", "value": "{\"pageId\":\"PostList\",\"accessId\":\"80a579ab-6dfd-46b6-b0b5-d1acd1caafcb\",\"step\":2,\"refAccessId\":\"1bc6dc3f-8e46-4980-b771-98f1b66bb8ee\",\"refPageId\":\"PostCreate\"}"}, {"name": "__ml::page_44b15f95-94c0-42ac-b77f-614c3f82351d", "value": "{\"pageId\":\"PostList\",\"accessId\":\"545c107a-bec2-479c-84b0-477729bef6e6\",\"step\":2,\"refAccessId\":\"2188caac-d6d6-466f-82a0-eda7928b70b6\",\"refPageId\":\"PostCreate\"}"}, {"name": "__ml::page_363e2e6b-fec2-4f73-b42b-a623697bea4f", "value": "{\"pageId\":\"PostCreate\",\"accessId\":\"7c4edeed-f809-4d67-88a9-98cdf36690f5\",\"step\":1}"}, {"name": "__ml::page_6a4c1228-9729-4922-89a4-041d45c9a00f", "value": "{\"pageId\":\"PostList\",\"accessId\":\"817df109-2c41-4631-95cf-8c823aac78df\",\"step\":2,\"refAccessId\":\"e958abce-debd-4feb-b3a0-b9f175ebf829\",\"refPageId\":\"PostCreate\"}"}, {"name": "__ml::page", "value": "[\"053cd766-27c8-419d-898b-e04e08cd230c\",\"363e2e6b-fec2-4f73-b42b-a623697bea4f\",\"d86cc4d7-e0c8-4733-88fb-071f6d3976d8\",\"8e170840-197d-4d37-8df4-6afc50ff2063\",\"a70b8f4e-7bc8-46cf-a3b8-e5f9b1ed5442\",\"acab050d-c59b-4ff6-b36e-99880e577049\",\"467ad6e0-e6ce-482d-99fc-9588beca1046\",\"944237e7-9861-49a8-ab33-ed85c1adf2f5\",\"319d9b0c-1ae1-48d2-b91e-25e3956643c1\",\"e24c8d96-bea9-4387-816b-3e5bd16b3cdd\",\"786eea71-14c2-43db-a5ed-ba59b77d6a34\",\"44b15f95-94c0-42ac-b77f-614c3f82351d\",\"71e9a767-4111-4903-a115-9754dee4a4ba\",\"85210aa8-e0b1-4bc1-95b7-0718511eea46\",\"fbeffeea-005e-4831-b3f4-811c9a4284c9\",\"80a071ff-165d-49b2-b563-cc75971672eb\",\"16da68ba-33e7-4d00-bd50-9d903cc0f615\",\"11a322df-e1b2-447a-b652-cffb97dad049\",\"316dd63d-b512-4294-98c2-729ec18ce4cb\",\"6a4c1228-9729-4922-89a4-041d45c9a00f\"]"}, {"name": "__ml::page_a70b8f4e-7bc8-46cf-a3b8-e5f9b1ed5442", "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"fb7ab306-4f56-4512-a19d-7eb418c5dde5\",\"step\":2,\"refAccessId\":\"dcd62710-af9e-4b74-849d-ce1e67a92bcb\",\"refPageId\":\"MicroPost\"}"}, {"name": "__ml::page_71e9a767-4111-4903-a115-9754dee4a4ba", "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"809c255b-b8a0-42ce-aa67-b5888916129f\",\"step\":2,\"refAccessId\":\"5b5103d6-ee28-49fa-9e34-3c0c10ef6277\",\"refPageId\":\"MicroPost\"}"}, {"name": "AssistantUploadedInfoStorageKey_3899420810", "value": "[{\"fileUploadedInfoKey\":\"soul130_06_\u8fd9\u91cc\u641c\u7d22 \u9009\u62e9\u8981\u540c\u6b65 \u8981\u540c\u6b65\u7684\u4eba \u8981.mp4:1774365100381:53061133:video/mp4:1a61492f90fc720d2c5e472a885219a5\",\"isUsedQuickUpload\":true,\"uploadChunkRecord\":[{\"index\":0,\"reqTime\":1774488377729,\"resTime\":1774488382546,\"cost\":4817,\"success\":true},{\"index\":3,\"reqTime\":1774488369096,\"resTime\":1774488372043,\"cost\":2947,\"success\":true},{\"index\":1,\"reqTime\":1774488369119,\"resTime\":1774488373175,\"cost\":4056,\"success\":true},{\"index\":2,\"reqTime\":1774488369145,\"resTime\":1774488376125,\"cost\":6980,\"success\":true},{\"index\":4,\"reqTime\":1774488372081,\"resTime\":1774488376561,\"cost\":4480,\"success\":true},{\"index\":5,\"reqTime\":1774488373212,\"resTime\":1774488377524,\"cost\":4312,\"success\":true},{\"index\":6,\"reqTime\":1774488376141,\"resTime\":1774488377286,\"cost\":1145,\"success\":true}],\"uuid\":\"f49037b8-4891-44e4-bada-fe8ae7b32954\",\"uploadTaskId\":\"CkQwYzc0NTI4ODIwODcyMjM2NjZhYmEyZmI3MGQ1MzdjOThjMzBiOWM2NjE3ZjRiZDJiMWExNmY5OTYzMzQxYzAwOWMwYxI+NTY5YzQ4YjMwMDAwZWM1NjRlODZjNzA4YTAwMDAwMGZiMDAwMDRmNGU1MzVhMDVmNmViYzFlNmEzYWUwMjQwjcymGQ==\",\"uploadTaskIdTimeStamp\":1774488369017,\"transFlag\":\"0_0\",\"partInfo\":[{\"PartNumber\":1,\"ETag\":\"\\\"cfbe542665c3bbe25f1c717636fae3b823f74018\\\"\"},{\"PartNumber\":2,\"ETag\":\"\\\"6349361e82ddfa2d9114b118d649c82714642a8b\\\"\"},{\"PartNumber\":3,\"ETag\":\"\\\"fa5557c11b515a21c64f19d7b0e7c7efce3a719a\\\"\"},{\"PartNumber\":4,\"ETag\":\"\\\"b529eafc63d25dc085e032323069419b42239338\\\"\"},{\"PartNumber\":5,\"ETag\":\"\\\"b56cc603f5db3983b977301fa873cf192bb8f8aa\\\"\"},{\"PartNumber\":6,\"ETag\":\"\\\"c1308bffe4f50b52acc33c76aac14a705b309fbc\\\"\"},{\"PartNumber\":7,\"ETag\":\"\\\"722dfffd5e25028b3539a33be07e0a86adae88fe\\\"\"}],\"uploadSuccessResp\":{\"data\":{\"DownloadURL\":\"http://wxapp.tc.qq.com/251/20302/stodownload?bizid=1023&dotrans=0&encfilekey=Cvvj5Ix3eewK0tHtibORqcsqchXNh0Gf3YiaX8QrZIfDf2bArlCeT0DKvcdAA9j7dV4t1DftiboyokB31zk6AD5dDr8J9luQqFLJa1h49mHDoTKHmIRyjLzxwuKwH3t0fmC&findertoken=088ae1b1c30e10be9692ce061800223c66696e64657275706c6f616475726c5f333839393432303831305f313737343438383338323635325f373333313934353639383735383532373630392a2034363330386538363139356162633231363166343034636437666231383032373801400348005000580260ce9e01&hy=SZ&idx=1&m=&scene=2&token=AxricY7RBHdVMwh3dt9usetXvUfLkRIuIF7DvwmjnoibLj6wcdnZlC71AOe3O6wkwV14ibJ2Vlia7Q9H5vRM23WBYbuz9KPAXbsctK8l5dFDdu6YBY5NpJcF7Q&uzid=7a148\",\"httpsUrl\":\"https://finder.video.qq.com/251/20302/stodownload?bizid=1023&dotrans=0&encfilekey=Cvvj5Ix3eewK0tHtibORqcsqchXNh0Gf3YiaX8QrZIfDf2bArlCeT0DKvcdAA9j7dV4t1DftiboyokB31zk6AD5dDr8J9luQqFLJa1h49mHDoTKHmIRyjLzxwuKwH3t0fmC&findertoken=088ae1b1c30e10be9692ce061800223c66696e64657275706c6f616475726c5f333839393432303831305f313737343438383338323635325f373333313934353639383735383532373630392a2034363330386538363139356162633231363166343034636437666231383032373801400348005000580260ce9e01&hy=SZ&idx=1&m=&scene=2&token=AxricY7RBHdVMwh3dt9usetXvUfLkRIuIF7DvwmjnoibLj6wcdnZlC71AOe3O6wkwV14ibJ2Vlia7Q9H5vRM23WBYbuz9KPAXbsctK8l5dFDdu6YBY5NpJcF7Q&uzid=7a148\"}}},{\"fileUploadedInfoKey\":\"soul130_07_\u8fd9\u6837\u4f1a\u6bd4\u8f83\u80fd\u6027\u5316\u4e00\u70b9 \u4f46\u662f\u6d3b\u513f\u662f\u5f88\u4e71.mp4:1774365142579:49605178:video/mp4:1ce1b5ddac99db0f353dd052b8e280c6\",\"isUsedQuickUpload\":true,\"uploadChunkRecord\":[{\"index\":0,\"reqTime\":1774488422757,\"resTime\":1774488426082,\"cost\":3325,\"success\":true},{\"index\":1,\"reqTime\":1774488414963,\"resTime\":1774488421106,\"cost\":6143,\"success\":true},{\"index\":2,\"reqTime\":1774488414986,\"resTime\":1774488420353,\"cost\":5367,\"success\":true},{\"index\":3,\"reqTime\":1774488415008,\"resTime\":1774488422459,\"cost\":7451,\"success\":true},{\"index\":4,\"reqTime\":1774488417178,\"resTime\":1774488419535,\"cost\":2357,\"success\":true},{\"index\":5,\"reqTime\":1774488419567,\"resTime\":1774488422654,\"cost\":3087,\"success\":true}],\"uuid\":\"edae4423-5da2-40c3-af35-4eb240fede72\",\"uploadTaskId\":\"CkQ2OGM1YTE1Yjc0NTMxZjYzN2JiYWUwOTI4NzIxMTI1YmM0ODU0NjllMGY5MjRjNDFiOGE5MDIzODNlZjFlODAwYTQwYxI+NTY5YzQ4YjVlMDAwYzNjZWZlODZjNzA4YTAwMDAwMGZiMDAwMDRmNGU1MzQ4MjUwYWUxYjE1NzE0ZWYxZjIwutTTFw==\",\"uploadTaskIdTimeStamp\":1774488414852,\"transFlag\":\"0_0\",\"partInfo\":[{\"PartNumber\":1,\"ETag\":\"\\\"c4d9002256742443238ddb1a57a160e6f0ad772d\\\"\"},{\"PartNumber\":2,\"ETag\":\"\\\"006b3ccfeee1b9e4f4bd361026d44d85353a5d19\\\"\"},{\"PartNumber\":3,\"ETag\":\"\\\"e9edad795e61df76452ea4748fa7b8f661fddbc4\\\"\"},{\"PartNumber\":4,\"ETag\":\"\\\"b25d01e39752f2d22a0dbc8b0b9a71c9c94c77a6\\\"\"},{\"PartNumber\":5,\"ETag\":\"\\\"7f4b7a79f25b46271e061d4fd6d4c016a973f115\\\"\"},{\"PartNumber\":6,\"ETag\":\"\\\"dbf7272117b4cce2c2becaa30a7af277a7c47edb\\\"\"}],\"uploadSuccessResp\":{\"data\":{\"DownloadURL\":\"http://wxapp.tc.qq.com/251/20302/stodownload?bizid=1023&dotrans=0&encfilekey=Cvvj5Ix3eewK0tHtibORqcsqchXNh0Gf3sJcaYqC2rQBndBicD0ibo7sicOWdyBoiciaMRybk5TcMIxh6ibkHn2FNriaYPV3jzE78vSVDrmDUGgBPVnsOqice7HgvddklEwN3Tjnt&findertoken=088ae1b1c30e10ea9692ce061800223c66696e64657275706c6f616475726c5f333839393432303831305f313737343438383432363137335f393731323032363336383938303937393230372a2035643766653438663433366436386431333134376633326431303337643032373801400348005000580260ce9e01&hy=SH&idx=1&m=&scene=2&token=x5Y29zUxcibBNAic2YupJ1ic7emrkDjqyIaVLRdlf8UzHiaX11AqyeRlwMFvOyyF2aiaU1PeynPgaWia72icr3bs4ibu4UK3oiaVO17fmJ3NxIcOUgOibdDxsz99agUA&uzid=7a170\",\"httpsUrl\":\"https://finder.video.qq.com/251/20302/stodownload?bizid=1023&dotrans=0&encfilekey=Cvvj5Ix3eewK0tHtibORqcsqchXNh0Gf3sJcaYqC2rQBndBicD0ibo7sicOWdyBoiciaMRybk5TcMIxh6ibkHn2FNriaYPV3jzE78vSVDrmDUGgBPVnsOqice7HgvddklEwN3Tjnt&findertoken=088ae1b1c30e10ea9692ce061800223c66696e64657275706c6f616475726c5f333839393432303831305f313737343438383432363137335f393731323032363336383938303937393230372a2035643766653438663433366436386431333134376633326431303337643032373801400348005000580260ce9e01&hy=SH&idx=1&m=&scene=2&token=x5Y29zUxcibBNAic2YupJ1ic7emrkDjqyIaVLRdlf8UzHiaX11AqyeRlwMFvOyyF2aiaU1PeynPgaWia72icr3bs4ibu4UK3oiaVO17fmJ3NxIcOUgOibdDxsz99agUA&uzid=7a170\"}}},{\"fileUploadedInfoKey\":\"soul130_08_\u4f60\u60f3\u662f\u591a\u5c11\u597d\u53cb\u6765\u5e72\u561b \u6211\u624d\u77e5\u9053 \u6211\u8981.mp4:1774365189463:54366732:video/mp4:df2eab0d44c73db2df457f06b2f80f4f\",\"isUsedQuickUpload\":true,\"uploadChunkRecord\":[{\"index\":0,\"reqTime\":1774488470437,\"resTime\":1774488472814,\"cost\":2377,\"success\":true},{\"index\":3,\"reqTime\":1774488461620,\"resTime\":1774488468860,\"cost\":7240,\"success\":true},{\"index\":2,\"reqTime\":1774488461642,\"resTime\":1774488468249,\"cost\":6607,\"success\":true},{\"index\":1,\"reqTime\":1774488461664,\"resTime\":1774488466982,\"cost\":5318,\"success\":true},{\"index\":4,\"reqTime\":1774488463818,\"resTime\":1774488467019,\"cost\":3201,\"success\":true},{\"index\":5,\"reqTime\":1774488467017,\"resTime\":1774488470329,\"cost\":3312,\"success\":true},{\"index\":6,\"reqTime\":1774488467042,\"resTime\":1774488469861,\"cost\":2819,\"success\":true}],\"uuid\":\"69026caf-af17-4b11-b13f-40fe2298bfe5\",\"uploadTaskId\":\"CkQxYTVmNmQ5ZjMzOGFjOGQxMTFmMTViZjQwYTQ4ZTdiMjk2M2M2N2Y2ODI4MzQyM2Q5NjBmNzkyN2VmZDNiNDAwYzYwYxI+NTY5YzQ4YjhkMDAwNzBkMWJlODZjNzA4YTAwMDAwMGZiMDAwMDRmNGU1MzQ4MDg1ODZiYzFlNzEyMjUzNjkwjKT2GQ==\",\"uploadTaskIdTimeStamp\":1774488461496,\"transFlag\":\"0_0\",\"partInfo\":[{\"PartNumber\":1,\"ETag\":\"\\\"0f970d04c6a9d5f655bbac1998f286ead039d1f5\\\"\"},{\"PartNumber\":2,\"ETag\":\"\\\"017b0fda4a934990f90939db96061910a62d1950\\\"\"},{\"PartNumber\":3,\"ETag\":\"\\\"a9cc6c47dc38696b5f52686edf4f741bc8f21f9e\\\"\"},{\"PartNumber\":4,\"ETag\":\"\\\"a64cd251ba460b849858e2f20a6a0b883b6c4b80\\\"\"},{\"PartNumber\":5,\"ETag\":\"\\\"c00786da5b4bb84a250d283c0e02c3d37fca9d5e\\\"\"},{\"PartNumber\":6,\"ETag\":\"\\\"1214cbb31ea12cc3b88f1c1e0388de410a974115\\\"\"},{\"PartNumber\":7,\"ETag\":\"\\\"5fdf0c136221bd82b393149416c5e430118ea11b\\\"\"}],\"uploadSuccessResp\":{\"data\":{\"DownloadURL\":\"http://wxapp.tc.qq.com/251/20302/stodownload?bizid=1023&dotrans=0&encfilekey=Cvvj5Ix3eewK0tHtibORqcsqchXNh0Gf3sJcaYqC2rQDJUYtOGN37e1FquialgXzIDyTq1afgC2tqwAmqBADPVDW254T40zVcDMoGnEbwuMZfoBbmvkFgAwBSwz6erj1Et&findertoken=088ae1b1c30e10989792ce061800223c66696e64657275706c6f616475726c5f333839393432303831305f313737343438383437323931355f323732363036323832343633363438313731332a2035396265363863323333383933653331363731343031616430393732343332323801400348005000580260ce9e01&hy=SH&idx=1&m=&scene=2&token=AxricY7RBHdVMwh3dt9usev6Neee4FyfjNNnZibXq29vyJDVPm3LfyMoHautU18ZVzRWfQARu97PaXMWdJPdITDKMibSqcDx7Rr8NFokGLkEVhEeiccjdQQRsg&uzid=7a1fc\",\"httpsUrl\":\"https://finder.video.qq.com/251/20302/stodownload?bizid=1023&dotrans=0&encfilekey=Cvvj5Ix3eewK0tHtibORqcsqchXNh0Gf3sJcaYqC2rQDJUYtOGN37e1FquialgXzIDyTq1afgC2tqwAmqBADPVDW254T40zVcDMoGnEbwuMZfoBbmvkFgAwBSwz6erj1Et&findertoken=088ae1b1c30e10989792ce061800223c66696e64657275706c6f616475726c5f333839393432303831305f313737343438383437323931355f323732363036323832343633363438313731332a2035396265363863323333383933653331363731343031616430393732343332323801400348005000580260ce9e01&hy=SH&idx=1&m=&scene=2&token=AxricY7RBHdVMwh3dt9usev6Neee4FyfjNNnZibXq29vyJDVPm3LfyMoHautU18ZVzRWfQARu97PaXMWdJPdITDKMibSqcDx7Rr8NFokGLkEVhEeiccjdQQRsg&uzid=7a1fc\"}}},{\"fileUploadedInfoKey\":\"soul130_09_\u770b\u76f4\u64ad\u7684\u5206\u8bba \u5565\u610f\u601d\u5462 \u6211\u4eec\u8fdb\u5165 \u8fdb.mp4:1774365238120:48160664:video/mp4:86a0eb1b81a7fb748a268a770c8746e3\",\"isUsedQuickUpload\":true,\"uploadChunkRecord\":[{\"index\":0,\"reqTime\":1774488518829,\"resTime\":1774488521142,\"cost\":2313,\"success\":true},{\"index\":2,\"reqTime\":1774488509023,\"resTime\":1774488511654,\"cost\":2631,\"success\":true},{\"index\":1,\"reqTime\":1774488518858,\"resTime\":1774488522710,\"cost\":3852,\"success\":true},{\"index\":3,\"reqTime\":1774488509073,\"resTime\":1774488515815,\"cost\":6742,\"success\":true},{\"index\":4,\"reqTime\":1774488511705,\"resTime\":1774488514129,\"cost\":2424,\"success\":true},{\"index\":5,\"reqTime\":1774488513874,\"resTime\":1774488515720,\"cost\":1846,\"success\":true}],\"uuid\":\"ba5ea902-8da1-4130-a778-8166317fe3ef\",\"uploadTaskId\":\"CkRmMjY4ZTM1ZWU4YzYyYThmMzUxYzIzMjBlZDMxYjU2OWU5ZmQ5MjRiZjA0NDRiODg4ZWNkZTAwMTYzOGQzNzAwZTkwYxI+NTY5YzQ4YmJjMDAwZGYwYWVlODZjNzA4YTAwMDAwMGZiMDAwMDRmNGU1MzVhMmI3YTVhYjFlNmEzMjU0NzcwmL/7Fg==\",\"uploadTaskIdTimeStamp\":1774488508938,\"transFlag\":\"0_0\",\"partInfo\":[{\"PartNumber\":1,\"ETag\":\"\\\"e27cb1e099d5ad219ecff27d3bf755cbd189f2e8\\\"\"},{\"PartNumber\":2,\"ETag\":\"\\\"abfd6ca7e7e329feae3445053c7e4272385adecc\\\"\"},{\"PartNumber\":3,\"ETag\":\"\\\"65a11cc1a48d3789205955c8bc20922ad5e6b44a\\\"\"},{\"PartNumber\":4,\"ETag\":\"\\\"114907bbedcc3760ddf5a362e03dc3444265df9e\\\"\"},{\"PartNumber\":5,\"ETag\":\"\\\"2bd8a4242d28b601133254ad2260fd73a03484ac\\\"\"},{\"PartNumber\":6,\"ETag\":\"\\\"920321f7dad8ad434b9d33a36de3a1bbf33a4ddd\\\"\"}],\"uploadSuccessResp\":{\"data\":{\"DownloadURL\":\"http://wxapp.tc.qq.com/251/20302/stodownload?bizid=1023&dotrans=0&encfilekey=Cvvj5Ix3eewK0tHtibORqcsqchXNh0Gf3YiaX8QrZIfDdQmaIibBEKzSDJZWkKVnTTic4HR5S6yjP4Vhj8mV0GOQ8dx1QFtXVWJQM8Lka1oXLic0mZJe04ac5aNN71Q6ribQZr&hy=SZ&idx=1&m=&scene=2&token=x5Y29zUxcibBNAic2YupJ1iczoIRnTmKB7yvticNY3PopS7icfgYFq1kqMJzETb8ONohrza8x4wxMBu8ebIuzJLwkCU4icNibBlVTjHUUS7SKzMFazics8alJXbzcw&uzid=7a260\",\"httpsUrl\":\"https://finder.video.qq.com/251/20302/stodownload?bizid=1023&dotrans=0&encfilekey=Cvvj5Ix3eewK0tHtibORqcsqchXNh0Gf3YiaX8QrZIfDdQmaIibBEKzSDJZWkKVnTTic4HR5S6yjP4Vhj8mV0GOQ8dx1QFtXVWJQM8Lka1oXLic0mZJe04ac5aNN71Q6ribQZr&hy=SZ&idx=1&m=&scene=2&token=x5Y29zUxcibBNAic2YupJ1iczoIRnTmKB7yvticNY3PopS7icfgYFq1kqMJzETb8ONohrza8x4wxMBu8ebIuzJLwkCU4icNibBlVTjHUUS7SKzMFazics8alJXbzcw&uzid=7a260\"}}},{\"fileUploadedInfoKey\":\"soul130_10_\u6211\u5e26ID\u6211\u662f\u77e5\u9053 \u5f53\u5929\u7684\u603b\u9500\u552e \u662f\u968f.mp4:1774365295831:58372629:video/mp4:870233ce10742b78a036430f0133c749\",\"isUsedQuickUpload\":true,\"uploadChunkRecord\":[{\"index\":0,\"reqTime\":1774488567189,\"resTime\":1774488570881,\"cost\":3692,\"success\":true},{\"index\":2,\"reqTime\":1774488556770,\"resTime\":1774488561691,\"cost\":4921,\"success\":true},{\"index\":3,\"reqTime\":1774488556792,\"resTime\":1774488561155,\"cost\":4363,\"success\":true},{\"index\":1,\"reqTime\":1774488556814,\"resTime\":1774488563851,\"cost\":7037,\"success\":true},{\"index\":4,\"reqTime\":1774488560636,\"resTime\":1774488566964,\"cost\":6328,\"success\":true},{\"index\":5,\"reqTime\":1774488561197,\"resTime\":1774488565718,\"cost\":4521,\"success\":true},{\"index\":6,\"reqTime\":1774488561723,\"resTime\":1774488565906,\"cost\":4183,\"success\":true}],\"uuid\":\"851acfee-aecb-4441-bd46-846cd6498d3d\",\"uploadTaskId\":\"CkQ5NDVmZWYzODNjZDc4ZTc3MjdhNmE4OWI4NzlmNzY5MDc0NTljNzExNzg3NDRkZjhhNDYzMDZhNmEzOGI5ZDAwMjQwYxI+NTY5YzQ4YmVjMDAwOWQ4NjRlODZjNzA4YTAwMDAwMGZiMDAwMDRmNGU1MzVhMDA5ZjgwMTE1NmE0ZmFlNTMwleTqGw==\",\"uploadTaskIdTimeStamp\":1774488556691,\"transFlag\":\"0_0\",\"partInfo\":[{\"PartNumber\":1,\"ETag\":\"\\\"8569cc06e829dda92c354da55bbf009f2494f151\\\"\"},{\"PartNumber\":2,\"ETag\":\"\\\"7479af0af703bfdd5350f0952d46e277b791bf5c\\\"\"},{\"PartNumber\":3,\"ETag\":\"\\\"cb1d918da7d333dc2b49416de6a454df425d07d3\\\"\"},{\"PartNumber\":4,\"ETag\":\"\\\"00690ff742b2da605c7a91057005feb2741567dd\\\"\"},{\"PartNumber\":5,\"ETag\":\"\\\"73877ed8493f7b2aefd34207c373d165c6f9bb86\\\"\"},{\"PartNumber\":6,\"ETag\":\"\\\"14f3f212385f34094c65a5fbc6445d417b5dec52\\\"\"},{\"PartNumber\":7,\"ETag\":\"\\\"6920b4e41d94e9d9873a81b04781a81a4a667154\\\"\"}],\"uploadSuccessResp\":{\"data\":{\"DownloadURL\":\"http://wxapp.tc.qq.com/251/20302/stodownload?bizid=1023&dotrans=0&encfilekey=Cvvj5Ix3eewK0tHtibORqcsqchXNh0Gf3YiaX8QrZIfDf3nH80mbYMZKMFCyDl1bAhlxUeRN0rsIIgKuCiaGTbttojwicQAibibibQRpkAtePwHiapNib12ZmkmcvvmrkqBzBVdpW&findertoken=088ae1b1c30e10fb9792ce061800223c66696e64657275706c6f616475726c5f333839393432303831305f313737343438383537303938395f313731323530393137333939353036333131382a2036623130373935663633303634643632323464626235323333303066626131323801400348005000580260ce9e01&hy=SZ&idx=1&m=&scene=2&token=x5Y29zUxcibBNAic2YupJ1ic6bYrATbiaCrohn4lrrkZsOv73vkPR7v68KUjiboyYS55DoRzK6rcCX0m61IsQd2iaTic3ibd5WF1Vtr3TJZW381TzibKoOdZdEV4ibtg&uzid=7a206\",\"httpsUrl\":\"https://finder.video.qq.com/251/20302/stodownload?bizid=1023&dotrans=0&encfilekey=Cvvj5Ix3eewK0tHtibORqcsqchXNh0Gf3YiaX8QrZIfDf3nH80mbYMZKMFCyDl1bAhlxUeRN0rsIIgKuCiaGTbttojwicQAibibibQRpkAtePwHiapNib12ZmkmcvvmrkqBzBVdpW&findertoken=088ae1b1c30e10fb9792ce061800223c66696e64657275706c6f616475726c5f333839393432303831305f313737343438383537303938395f313731323530393137333939353036333131382a2036623130373935663633303634643632323464626235323333303066626131323801400348005000580260ce9e01&hy=SZ&idx=1&m=&scene=2&token=x5Y29zUxcibBNAic2YupJ1ic6bYrATbiaCrohn4lrrkZsOv73vkPR7v68KUjiboyYS55DoRzK6rcCX0m61IsQd2iaTic3ibd5WF1Vtr3TJZW381TzibKoOdZdEV4ibtg&uzid=7a206\"}}}]"}, {"name": "__ml::page_8e170840-197d-4d37-8df4-6afc50ff2063", "value": "{\"pageId\":\"PostCreate\",\"accessId\":\"33856aaf-dbae-4c8c-8a38-9be24ac2669e\",\"step\":1}"}, {"name": "__ml::page_e24c8d96-bea9-4387-816b-3e5bd16b3cdd", "value": "{\"pageId\":\"PostList\",\"accessId\":\"f03d8ad7-9fc7-41e9-9c04-ff5938f63200\",\"step\":2,\"refAccessId\":\"34128fee-1131-478b-99d0-b14e67741c7c\",\"refPageId\":\"PostCreate\"}"}, {"name": "__ml::page_944237e7-9861-49a8-ab33-ed85c1adf2f5", "value": "{\"pageId\":\"PostCreate\",\"accessId\":\"7c265248-581b-451f-819c-8ba5bd555b6e\",\"step\":1}"}, {"name": "__ml::page_d86cc4d7-e0c8-4733-88fb-071f6d3976d8", "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"b2f4c22c-77ad-428d-9e04-168a08f13cc9\",\"step\":1}"}, {"name": "finder_ua_report_data", "value": "{\"browser\":\"Chrome\",\"browserVersion\":\"131.0.0.0\",\"engine\":\"Webkit\",\"engineVersion\":\"537.36\",\"os\":\"Mac OS X\",\"osVersion\":\"10.15.7\",\"device\":\"desktop\",\"darkmode\":0}"}, {"name": "__ml::page_85210aa8-e0b1-4bc1-95b7-0718511eea46", "value": "{\"pageId\":\"PostList\",\"accessId\":\"37345094-2e62-46b5-a56d-b22f278bb199\",\"step\":2,\"refAccessId\":\"1bfbfb34-52df-42c5-9d30-5dbbc37e2b87\",\"refPageId\":\"PostCreate\"}"}, {"name": "__ml::page_acab050d-c59b-4ff6-b36e-99880e577049", "value": "{\"pageId\":\"PostList\",\"accessId\":\"1a810316-54ca-47eb-9652-999a1113bfe8\",\"step\":2,\"refAccessId\":\"5ae36d34-cebd-4f59-99c9-a55c8379970d\",\"refPageId\":\"PostCreate\"}"}, {"name": "__ml::page_053cd766-27c8-419d-898b-e04e08cd230c", "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"e8cce086-646f-44ac-972e-f1f73ab277a2\",\"step\":1}"}, {"name": "__ml::page_316dd63d-b512-4294-98c2-729ec18ce4cb", "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"eb4e596e-40e4-4eb4-9e64-71804110d80d\",\"step\":2,\"refAccessId\":\"1d8d23c4-779e-4d1d-b199-b004f51be1ec\",\"refPageId\":\"MicroPost\"}"}, {"name": "__ml::aid", "value": "\"d54409bf-5743-4c38-9a01-4e8e2f82f2c2\""}, {"name": "__rx::aid", "value": "\"d54409bf-5743-4c38-9a01-4e8e2f82f2c2\""}, {"name": "finder_login_token", "value": ""}, {"name": "__ml::page_786eea71-14c2-43db-a5ed-ba59b77d6a34", "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"7420a106-d27c-44de-88d7-43b94e5559fb\",\"step\":2,\"refAccessId\":\"6aedeb35-ceec-46f4-b3e4-f27c6775818d\",\"refPageId\":\"MicroPost\"}"}, {"name": "finder_username", "value": "v2_060000231003b20faec8c5e48919cbd5cb05e53db077dd1924028a806c10cffd891eb5a80ce7@finder"}, {"name": "_finger_print_device_id", "value": "44931d8068697b3183a3476bd7b95ab8"}, {"name": "__ml::page_80a071ff-165d-49b2-b563-cc75971672eb", "value": "{\"pageId\":\"PostList\",\"accessId\":\"2f13237d-62b4-41b0-bd67-d909010373be\",\"step\":2,\"refAccessId\":\"cc8fa7fa-0f8a-4fd9-bbf9-a7927114437b\",\"refPageId\":\"PostCreate\"}"}, {"name": "MICRO_VISITED_NAME", "value": "{\"postCard\":25,\"content\":47,\"interaction\":2}"}, {"name": "__ml::page_fbeffeea-005e-4831-b3f4-811c9a4284c9", "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"0d5790d7-d9af-4c7e-9f0e-98fadfe88332\",\"step\":2,\"refAccessId\":\"9bcd2cef-c927-4ca3-a353-13546d352b07\",\"refPageId\":\"MicroPost\"}"}, {"name": "__ml::page_319d9b0c-1ae1-48d2-b91e-25e3956643c1", "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"b3592feb-4601-4187-9b96-d7bf9bfbb67a\",\"step\":2,\"refAccessId\":\"4a76b80c-60d7-4473-8f94-f055f9e48e84\",\"refPageId\":\"MicroPost\"}"}, {"name": "UvFirstReportLocalKey", "value": "1774454400000"}, {"name": "__ml::page_467ad6e0-e6ce-482d-99fc-9588beca1046", "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"f14fb2d8-8aea-4925-a983-292a0e4442ea\",\"step\":1}"}, {"name": "__ml::page_16da68ba-33e7-4d00-bd50-9d903cc0f615", "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"5e1408b0-331c-495f-b040-17af45c066cf\",\"step\":2,\"refAccessId\":\"262ce0b6-d5fe-4c13-ad4f-cbe23e72dd3d\",\"refPageId\":\"MicroPost\"}"}, {"name": "finder_uin", "value": ""}]}]} \ No newline at end of file +{ + "cookies": [ + { + "name": "sessionid", + "value": "BgAAvxwCNDxRKH7MSNkZxTv41j6n4M%2BH5xmkxVRkA68Z%2FyLYqu61xG3fhLT92QLmHD3Ihykpu8kL5aux7QLL99PFcO5P6GBz5N8V0x2qSTA%3D", + "domain": "channels.weixin.qq.com", + "path": "/", + "expires": 1809089844.27566, + "httpOnly": false, + "secure": true, + "sameSite": "None" + }, + { + "name": "wxuin", + "value": "1335138025", + "domain": "channels.weixin.qq.com", + "path": "/", + "expires": 1809089844.275706, + "httpOnly": false, + "secure": true, + "sameSite": "None" + } + ], + "origins": [ + { + "origin": "https://channels.weixin.qq.com", + "localStorage": [ + { + "name": "finder_route_meta", + "value": "micro.content/post/create;index;1;1774529934465" + }, + { + "name": "__ml::hb_ts", + "value": "1774529812771" + }, + { + "name": "__ml::page_407d5f0c-d0ca-4817-bdca-92bce645cec0", + "value": "{\"pageId\":\"LoginForIframe\",\"accessId\":\"f605733e-22a5-41d0-8823-5311043e888d\",\"step\":1}" + }, + { + "name": "__ml::page_e5fafaeb-b678-46a3-84db-c34fc5a41faf", + "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"a98782f3-d4f5-411a-81ad-0a7e88d0726f\",\"step\":1}" + }, + { + "name": "__ml::page_eb7e3a97-079f-4f7f-b3df-34af797c1d3b", + "value": "{\"pageId\":\"LoginForIframe\",\"accessId\":\"b3197990-65f5-41b4-90fe-3be6a9bed0f4\",\"step\":1}" + }, + { + "name": "__ml::page_567e3c2c-f9a8-4942-bf04-2e044b9ae357", + "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"3030294c-638b-43cd-b705-9a4e692635d6\",\"step\":1}" + }, + { + "name": "__ml::page", + "value": "[\"539b522c-6a3c-4689-a047-86f2cfae8700\",\"5fb65be7-a722-4a6c-b807-3001bd97d778\",\"784c0694-ace3-4bf7-896c-39adeb299e59\",\"440992a6-7c2e-4734-b857-c51bd33d2e34\",\"db7ca8a4-d27a-4a76-82db-c6704a6fb95b\",\"eb7e3a97-079f-4f7f-b3df-34af797c1d3b\",\"fa9c82e0-0771-4bea-9515-410e65e95c61\",\"c780f196-f7fe-424b-9747-04430b9a3331\",\"e5fafaeb-b678-46a3-84db-c34fc5a41faf\",\"55d81d9b-60e8-438c-83e0-c0197760d2f5\",\"60251d45-49bb-413e-9ed9-add6d8a605c1\",\"f3472efb-d824-43a3-8fe8-5170ddb84261\",\"c4bd1c5c-2df4-4e3e-97c7-4422f1fdf257\",\"407d5f0c-d0ca-4817-bdca-92bce645cec0\",\"a4f6964d-38cd-42e4-8471-7629763b98cf\",\"efe33dea-25c3-4eb6-980c-31fe3f425c31\",\"567e3c2c-f9a8-4942-bf04-2e044b9ae357\",\"e046d951-d078-445b-9296-5183597cc19f\",\"c99ffcdc-e264-4ee0-8b42-f9417a6968e5\",\"b126939b-a6a5-4540-a40b-1c59b761634d\"]" + }, + { + "name": "__ml::page_784c0694-ace3-4bf7-896c-39adeb299e59", + "value": "{\"pageId\":\"LoginForIframe\",\"accessId\":\"1f157d64-c269-48e3-8048-321cfe790fd2\",\"step\":1}" + }, + { + "name": "__ml::page_fa9c82e0-0771-4bea-9515-410e65e95c61", + "value": "{\"pageId\":\"Home\",\"accessId\":\"224c5505-1caa-42fa-bbe4-22355ffedc69\",\"step\":1}" + }, + { + "name": "__ml::page_55d81d9b-60e8-438c-83e0-c0197760d2f5", + "value": "{\"pageId\":\"PostList\",\"accessId\":\"69aa9c01-5c39-4b32-a400-7719854326b5\",\"step\":1}" + }, + { + "name": "__ml::page_efe33dea-25c3-4eb6-980c-31fe3f425c31", + "value": "{\"pageId\":\"PostCard\",\"accessId\":\"8415a7c3-59b1-4002-80a3-076eba267ed4\",\"step\":1}" + }, + { + "name": "__ml::page_440992a6-7c2e-4734-b857-c51bd33d2e34", + "value": "{\"pageId\":\"LoginForIframe\",\"accessId\":\"226b1fe5-edf0-4d49-bb00-eba0a5b4d09b\",\"step\":1}" + }, + { + "name": "__ml::page_a4f6964d-38cd-42e4-8471-7629763b98cf", + "value": "{\"pageId\":\"Home\",\"accessId\":\"076a3ed1-3bd1-4e91-90d5-76c9e54f843a\",\"step\":1}" + }, + { + "name": "__ml::page_db7ca8a4-d27a-4a76-82db-c6704a6fb95b", + "value": "{\"pageId\":\"LoginForIframe\",\"accessId\":\"caad8d22-8200-450c-b8a5-66a173ca6dec\",\"step\":1}" + }, + { + "name": "finder_ua_report_data", + "value": "{\"browser\":\"Chrome\",\"browserVersion\":\"131.0.0.0\",\"engine\":\"Webkit\",\"engineVersion\":\"537.36\",\"os\":\"Mac OS X\",\"osVersion\":\"10.15.7\",\"device\":\"desktop\",\"darkmode\":0}" + }, + { + "name": "__ml::page_b126939b-a6a5-4540-a40b-1c59b761634d", + "value": "{\"pageId\":\"PostCreate\",\"accessId\":\"9cefae39-076e-48bb-aebe-82129e52f106\",\"step\":1}" + }, + { + "name": "__ml::page_60251d45-49bb-413e-9ed9-add6d8a605c1", + "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"2684d827-da48-490e-a1c3-d1b572e8a413\",\"step\":1}" + }, + { + "name": "__ml::aid", + "value": "\"d54409bf-5743-4c38-9a01-4e8e2f82f2c2\"" + }, + { + "name": "__ml::page_c780f196-f7fe-424b-9747-04430b9a3331", + "value": "{\"pageId\":\"PostCard\",\"accessId\":\"e6abc041-28bd-4647-82fb-0bb5b0e5953d\",\"step\":1}" + }, + { + "name": "__ml::page_c4bd1c5c-2df4-4e3e-97c7-4422f1fdf257", + "value": "{\"pageId\":\"LoginForIframe\",\"accessId\":\"4f4036b9-4582-4c4d-a910-f34f32af5f59\",\"step\":1}" + }, + { + "name": "__rx::aid", + "value": "\"d54409bf-5743-4c38-9a01-4e8e2f82f2c2\"" + }, + { + "name": "__ml::page_f3472efb-d824-43a3-8fe8-5170ddb84261", + "value": "{\"pageId\":\"PostCreate\",\"accessId\":\"db066205-663b-4014-8068-12203a27e05e\",\"step\":1}" + }, + { + "name": "finder_login_token", + "value": "" + }, + { + "name": "__ml::page_c99ffcdc-e264-4ee0-8b42-f9417a6968e5", + "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"1ca2a7a9-72f2-4593-8fbc-e0e615e66f0c\",\"step\":1}" + }, + { + "name": "finder_username", + "value": "v2_060000231003b20faec8c5e48919cbd5cb05e53db077dd1924028a806c10cffd891eb5a80ce7@finder" + }, + { + "name": "_finger_print_device_id", + "value": "44931d8068697b3183a3476bd7b95ab8" + }, + { + "name": "__ml::page_5fb65be7-a722-4a6c-b807-3001bd97d778", + "value": "{\"pageId\":\"PostCreate\",\"accessId\":\"c43bd829-5492-4044-be09-ac15af91888a\",\"step\":1}" + }, + { + "name": "MICRO_VISITED_NAME", + "value": "{\"postCard\":26,\"content\":31,\"interaction\":2}" + }, + { + "name": "__ml::page_539b522c-6a3c-4689-a047-86f2cfae8700", + "value": "{\"pageId\":\"MicroPost\",\"accessId\":\"7ddb50d3-3d52-482e-b6d6-10dbcc22f8cb\",\"step\":1}" + }, + { + "name": "__ml::page_e046d951-d078-445b-9296-5183597cc19f", + "value": "{\"pageId\":\"PostList\",\"accessId\":\"2f7fd2d6-7d82-4100-934a-2c80c34bb3c9\",\"step\":1}" + }, + { + "name": "UvFirstReportLocalKey", + "value": "1774454400000" + }, + { + "name": "finder_uin", + "value": "" + } + ] + } + ] +} \ No newline at end of file diff --git a/03_卡木(木)/木叶_视频内容/视频号发布/脚本/channels_token.json b/03_卡木(木)/木叶_视频内容/视频号发布/脚本/channels_token.json index 6b4f970e..405700f0 100644 --- a/03_卡木(木)/木叶_视频内容/视频号发布/脚本/channels_token.json +++ b/03_卡木(木)/木叶_视频内容/视频号发布/脚本/channels_token.json @@ -1,7 +1,7 @@ { - "sessionid": "BgAACuej0XO0tWGoSXf6YSEg2KiGaAtGkyr52JZOPsMe6q13eTlWwPgczkkyhzKQDaLGEFfNV%2BysF1bqhgR03iRrWB7o3Lxep6efz8EZ8yM%3D", - "wxuin": "2604008894", - "cookie_str": "sessionid=BgAACuej0XO0tWGoSXf6YSEg2KiGaAtGkyr52JZOPsMe6q13eTlWwPgczkkyhzKQDaLGEFfNV%2BysF1bqhgR03iRrWB7o3Lxep6efz8EZ8yM%3D; wxuin=2604008894", + "sessionid": "BgAAvxwCNDxRKH7MSNkZxTv41j6n4M%2BH5xmkxVRkA68Z%2FyLYqu61xG3fhLT92QLmHD3Ihykpu8kL5aux7QLL99PFcO5P6GBz5N8V0x2qSTA%3D", + "wxuin": "1335138025", + "cookie_str": "sessionid=BgAAvxwCNDxRKH7MSNkZxTv41j6n4M%2BH5xmkxVRkA68Z%2FyLYqu61xG3fhLT92QLmHD3Ihykpu8kL5aux7QLL99PFcO5P6GBz5N8V0x2qSTA%3D; wxuin=1335138025", "finder_raw": "", "finder_username": "v2_060000231003b20faec8c5e48919cbd5cb05e53db077dd1924028a806c10cffd891eb5a80ce7@finder", "finder_uin": "", diff --git a/03_卡木(木)/木叶_视频内容/视频号发布/脚本/login_wait_and_publish.sh b/03_卡木(木)/木叶_视频内容/视频号发布/脚本/login_wait_and_publish.sh index 60dd3fe3..bc488f2c 100755 --- a/03_卡木(木)/木叶_视频内容/视频号发布/脚本/login_wait_and_publish.sh +++ b/03_卡木(木)/木叶_视频内容/视频号发布/脚本/login_wait_and_publish.sh @@ -1,13 +1,17 @@ #!/usr/bin/env bash -# 静默出码 → 轮询 check 直到 API 正常 → 全自动 publish-dir(参数透传) -# 用法: ./login_wait_and_publish.sh --video-dir "/path/成片" --no-dedup [--gap-sec 12] +# 静默出码 → 轮询 check 直到 API 正常 → 默认走 publish_auto.sh(API 优先,exit 2 再 web_cli) +# 用法: ./login_wait_and_publish.sh --video-dir "/path/成片" [--limit 2] set -u DIR="$(cd "$(dirname "$0")" && pwd)" cd "$DIR" || exit 1 +run_publish() { + exec bash "$DIR/publish_auto.sh" "$@" +} + if python3 channels_web_cli.py check; then - echo "[✓] 会话已可用,直接发布" - exec python3 channels_web_cli.py publish-dir "$@" + echo "[✓] 会话已可用,执行 publish_auto.sh(API→CLI 回补)" + run_publish "$@" fi echo "[i] API 不可用,后台启动静默登录(二维码 /tmp/channels_qr.png),请用微信扫码…" @@ -24,7 +28,7 @@ for i in $(seq 1 24); do echo "[✓] 会话已可用(轮询第 ${i} 次)" cleanup trap - EXIT - exec python3 channels_web_cli.py publish-dir "$@" + run_publish "$@" fi echo "[i] 仍等待扫码… ${i}/24(每 15s 检测)" done diff --git a/03_卡木(木)/木叶_视频内容/视频号发布/脚本/publish_auto.sh b/03_卡木(木)/木叶_视频内容/视频号发布/脚本/publish_auto.sh index adb483e2..42351eee 100755 --- a/03_卡木(木)/木叶_视频内容/视频号发布/脚本/publish_auto.sh +++ b/03_卡木(木)/木叶_视频内容/视频号发布/脚本/publish_auto.sh @@ -1,13 +1,32 @@ #!/usr/bin/env bash -# 全自动上传:先 API 预检,通过后再执行 publish-dir(参数原样透传) -set -euo pipefail +# 卡若默认视频号分发:① channels_api_publish(纯 httpx CLI)→ 若 exit 2(缺 finder_raw 等 API 前置)则 ② channels_web_cli publish-dir(无头 Playwright CLI) +# 用法(与 API 一致,透传参数): +# ./publish_auto.sh --video-dir "/path/to/mp4目录" +# CHANNELS_VIDEO_DIR=/path/to/dir ./publish_auto.sh +# 关闭回补(只跑 API): CHANNELS_NO_WEB_FALLBACK=1 ./publish_auto.sh --video-dir "..." +set -uo pipefail DIR="$(cd "$(dirname "$0")" && pwd)" cd "$DIR" -if ! python3 channels_web_cli.py check; then - echo "" - echo "[!] 请先登录视频号后再运行本脚本,例如:" - echo " CHANNELS_SILENT_QR=1 python3 channels_login.py" - echo " 打开 /tmp/channels_qr.png 用微信扫码" - exit 1 + +WEB_EXTRA=(--min-gap 10 --max-gap 25 --start-after-min 5 --interval-min 15 --max-attempts 5) + +if [ "${CHANNELS_NO_WEB_FALLBACK:-}" = "1" ]; then + exec python3 channels_api_publish.py "$@" fi -exec python3 channels_web_cli.py publish-dir "$@" + +set +e +python3 channels_api_publish.py "$@" +ec=$? +set -e + +if [ "$ec" -eq 0 ]; then + exit 0 +fi + +if [ "$ec" -eq 2 ]; then + echo "" >&2 + echo "[i] API 前置不满足(exit 2),回退 channels_web_cli publish-dir …" >&2 + exec python3 channels_web_cli.py publish-dir "${WEB_EXTRA[@]}" "$@" +fi + +exit "$ec" diff --git a/04_卡火(火)/火炬_全栈消息/全栈开发/SKILL.md b/04_卡火(火)/火炬_全栈消息/全栈开发/SKILL.md index 356629c3..02e0b010 100644 --- a/04_卡火(火)/火炬_全栈消息/全栈开发/SKILL.md +++ b/04_卡火(火)/火炬_全栈消息/全栈开发/SKILL.md @@ -1,10 +1,10 @@ --- name: 全栈开发 -description: 卡若AI 全栈开发(火炬)— 知己及类似项目经验 + 官网/全站开发与「开发文档 1~10」标准流程;吸收 Superpowers 实施计划粒度、TDD 推荐、两阶段评审与分支收尾。含分销、RAG、向量化;**§1.10 埋点与点击锚点(用户行为统计)全站强制**,Soul 项目为参考实现。官网/全站类任务按 1~10 调研→计划→执行→评审→复盘。**以后开发新网站一律用本 Skill 做调研与执行。** 使用手册按卡若AI 使用手册结构生成,见开发模板 9、手册。 -triggers: 全栈开发/知己项目/分销/存客宝/RAG/向量化/Next.js/知识库/卡若AI官网/官网开发/全站开发/开发文档/1~10/开发模板/官网全站/v0前端/v0生成/毛玻璃/前端规格/神射手/毛狐狸/前端标准/实施计划/两阶段评审/橙色锁/配色/API调用/使用手册/埋点/点击统计/用户行为/行为统计/数据统计/点击锚点/锚点/trackClick +description: 卡若AI 全栈开发(火炬)— 知己及类似项目经验 + 官网/全站开发与「开发文档 1~10」标准流程;吸收 Superpowers 实施计划粒度、TDD 推荐、两阶段评审与分支收尾。含分销、RAG、向量化;**§1.10 埋点与点击锚点全站强制**;**§1.11 仅索引**,获客/深链路详规见 **SKILL_REGISTRY F23~F27**。官网/全站类任务按 1~10 调研→计划→执行→评审→复盘。**以后开发新网站一律用本 Skill 做调研与执行。** 使用手册按卡若AI 使用手册结构生成,见开发模板 9、手册。 +triggers: 全栈开发/知己项目/分销/存客宝/RAG/向量化/Next.js/知识库/卡若AI官网/官网开发/全站开发/开发文档/1~10/开发模板/官网全站/v0前端/v0生成/毛玻璃/前端规格/神射手/毛狐狸/前端标准/实施计划/两阶段评审/橙色锁/配色/API调用/使用手册/埋点/点击统计/用户行为/行为统计/数据统计/点击锚点/锚点/trackClick/小程序跳转/navigateToMiniProgram/链接标签/linkTag/30天绑定/推广绑定/超级个体/获客编排/留资/ckb/lead owner: 火炬 group: 火 -version: "2.7" +version: "2.9" updated: "2026-03-26" --- @@ -129,7 +129,7 @@ updated: "2026-03-26" **任何新功能、新页面、新按钮、新 Tab/标签上线时,必须同步接入埋点统计。** 与功能代码同等重要;**没有埋点 = 没有可核对的数据看板字段**。 -> **口语对齐**:语音里「卡罗拉 / 卡路里」等若语境是**产品数据、点击量、统计**,一律按本节的 **点击锚点 + 行为统计** 理解(与「回廊洗字 / 语音转写纠错」里专名误听无关)。 +> **口语对齐**:语音里若把 **点击量 / 产品数据统计** 误听成其它近音词,而语境实为**产品数据、点击量、统计**,一律按本节的 **点击锚点 + 行为统计** 理解;与专名 **卡若AI** 及「回廊洗字」纠错分流。 #### 为什么强制 @@ -205,6 +205,10 @@ Web 端同理,封装为 `trackClick(module, action, target, extra)`,通过 f - [ ] 管理端或运营看板**按 module / 时间段**能展示,且**每个业务关心的标签**在图上都有对应聚合维度 - [ ] `10、项目管理` 中登记表或计划已更新 +#### 与 Soul / 小程序获客深链路(交叉引用) + +本节只管 **通用** `trackClick`(`module` / `action` / `target`)与看板聚合。**跨小程序 `#linkTag`、推广 30 日绑定、分佣提现、超级个体点击/留资口径、存客宝 BFF 与 `ckb_lead_records`** 等已拆至 **SKILL_REGISTRY「火组」F23~F27**(`04_卡火(火)/火炬_全栈消息/` 下五份专用 `SKILL.md`);实施时 **先读对应 F**,再回永平代码改实现,**勿与 §1.10 混口径**(例:埋点点击量 ≠ 留资去重人数)。 + #### 管理后台展示标准 数据概览或运营页须包含与锚点一致的统计能力,例如「分类 / 模块点击」面板: @@ -217,6 +221,22 @@ Web 端同理,封装为 `trackClick(module, action, target, extra)`,通过 f Soul 创业实验项目首次落地全链路:小程序多页 + 管理后台统计 + 后端聚合。索引与补充说明见 `运营中枢/参考资料/项目经验库_知己与类似项目.md`(§七)。 +### 1.11 获客与深链路编排(索引 · 详规见 F23~F27) + +**与 §1.10 的边界**:§1.10 负责 **通用行为埋点**(`module` / `action` / `target` → track 表 → 看板聚合)。**跳转分流、推广时间窗、分佣提现、超级个体指标、留资 BFF** 与 §1.10 **并存但口径不可混用**(例:埋点点击量 ≠ 留资去重人数)。**§1.10 末**已增加 Soul/小程序获客交叉引用。 + +**参考实现仓库**(路径随本机):`…/开发/3、自营项目/一场soul的创业实验-永平/`。 + +| 编号 | 主题 | SKILL 路径(均在卡若AI 仓库 `04_卡火(火)/火炬_全栈消息/` 下) | +|:---|:---|:---| +| **F23** | 小程序链接标签与跨小程序跳转 | `小程序链接标签与跨小程序跳转/SKILL.md` | +| **F24** | 推广邀请与三十日绑定 | `推广邀请与三十日绑定/SKILL.md` | +| **F25** | 分销佣金与提现编排 | `分销佣金与提现编排/SKILL.md` | +| **F26** | 超级个体点击与获客统计 | `超级个体点击与获客统计/SKILL.md` | +| **F27** | 存客宝 BFF 与留资队列 | `存客宝BFF与留资队列/SKILL.md` | + +**本节不写**:管理端路由总表、书籍/章节 CMS;存客宝开放 API 细节 → **G15**。 + --- ## 二、项目经验库(知己类,必读) @@ -283,6 +303,7 @@ scripts/ | **神射手 开发文档 4、前端** | 神射手项目内前端规范、核心组件代码、截图索引 | | **Superpowers与全栈开发对比与优化建议** | `运营中枢/参考资料/Superpowers与全栈开发对比与优化建议.md` — 计划粒度、TDD、两阶段评审、分支收尾等优化方向 | | **埋点统计与点击锚点(Soul 沉淀)** | 三层架构 + module/action/target 锚点约定 + `10、项目管理` 登记表;Soul 参考 `一场soul的创业实验-永平`;见本 Skill **§1.10**(2026-03-22 扩充) | +| **跨小程序跳转与获客编排(可复用)** | Soul 参考 `一场soul的创业实验-永平`;**详规见火组 F23~F27**(火炬 `火炬_全栈消息/` 五份专用 SKILL);本 Skill **§1.11 仅索引**(2026-03-26) | | **火炬「项目开发占卜术」Skill(F01c · 演门测机)** | **奇门 Q门 3.0** 八门健康度;用户**点名起盘/占卜**时按该 Skill **单独输出**,附在标准复盘 v5.0 五块之后 | --- diff --git a/04_卡火(火)/火炬_全栈消息/分销佣金与提现编排/SKILL.md b/04_卡火(火)/火炬_全栈消息/分销佣金与提现编排/SKILL.md new file mode 100644 index 00000000..ee7920a2 --- /dev/null +++ b/04_卡火(火)/火炬_全栈消息/分销佣金与提现编排/SKILL.md @@ -0,0 +1,90 @@ +--- +name: 分销佣金与提现编排 +description: 订单支付成功写佣金、inviter 校验、管理端提现审核、自动打款开关 enableAutoWithdraw、余额与流水;可复用到任意「推广员+订单」分佣系统。 +triggers: 分销、佣金、分佣、提现、withdraw、推广员佣金、enableAutoWithdraw、审核提现、打款、分销订单 +owner: 火炬 +group: 火 +version: "1.0" +updated: "2026-03-26" +--- + +# 分销佣金与提现编排 + +> **参考实现**:永平 `soul-api/internal/handler/withdraw.go`、`admin_withdrawals.go`、订单支付回调中与 `inviter_id` / 佣金写入相关逻辑;配置键与 **推广** 共用 `referral_config` 部分字段。 +> **前置**:推广员归属见 **《推广邀请与三十日绑定》**(F24)。 + +## 一、业务目标 + +- 订单 **支付成功** 且存在有效 `inviter_id` 时,按规则计入 **推广员可提现余额**(或冻结态,视产品)。 +- 推广员发起提现 → 管理端 **待审核 → 已通过/已拒绝**;可选 **自动打款**(`enableAutoWithdraw`)。 + +## 二、旅程(推广员侧) + +1. 小程序「我的」→ 佣金/余额入口(若有)。 +2. 查看可提现金额、流水列表。 +3. 提交提现申请(金额、账户信息,字段以实际表为准)。 +4. 轮询或消息通知审核结果。 + +## 三、旅程(管理端) + +1. 提现列表:筛选状态、时间、用户。 +2. 单条 **通过**:扣减冻结/余额,标记已打款或进入打款队列。 +3. **拒绝**:解冻、写拒绝原因。 +4. 若 `enableAutoWithdraw`:支付成功或审核通过后走自动打款适配器(微信企业付款/第三方)。 + +## 四、API 概要 + +| 区域 | 路径示例 | 说明 | +|:---|:---|:---| +| 小程序 | `GET /api/miniprogram/withdraw/balance` | 余额与汇总 | +| 小程序 | `POST /api/miniprogram/withdraw/apply` | 申请提现 | +| 小程序 | `GET /api/miniprogram/withdraw/records` | 流水 | +| 管理端 | `GET /api/admin/withdrawals` | 列表 | +| 管理端 | `POST /api/admin/withdrawals/:id/approve` | 通过 | +| 管理端 | `POST /api/admin/withdrawals/:id/reject` | 拒绝 | + +(具体路径以仓库 `route` 为准,迁移时整组替换前缀。) + +## 五、配置键(`referral_config` 中与分佣相关) + +| 键 | 含义 | +|:---|:---| +| `commissionRate` | 佣金比例或分档规则引用 | +| `enableAutoWithdraw` | 是否自动打款 | +| `minWithdrawAmount` | 最低提现额 | +| `withdrawFeeRate` | 手续费(若有) | + +**与 F24 的键**(`enabled`、`bindWindowDays` 等)同存一个 JSON 时,**版本迁移**要小心合并策略。 + +## 六、订单入账要点 + +- **触发点**:仅 **支付成功回调**(或等价确认事件),禁止下单即入账。 +- **inviter_id**:从 **ReferralBinding** 或订单快照读取;若订单已存 `inviter_id` 以订单为准防后续解绑纠纷。 +- **重复回调**:佣金写入须 **幂等**(`order_id` 唯一约束)。 + +## 七、Gotchas(≥10) + +1. **解绑后旧订单**:已发生佣金的订单不应回滚,除非法务要求(需产品决策)。 +2. **部分退款**:是否冲减佣金、如何冲减需单独规则。 +3. **自动打款失败**:须有 **重试队列** 与 **人工兜底** 状态。 +4. **余额不足提现**:服务端二次校验,禁止前端算准即可信。 +5. **并发提现**:同一用户同时多笔 apply → 行锁或事务串行化。 +6. **审核通过重复点击**:`approve` 接口幂等。 +7. **黑名单用户**:仍可提现还是冻结,与 F24 黑名单联动。 +8. **税率/发票**:若涉及,字段与审核流单独扩展,勿硬编码在 handler。 +9. **测试环境打款**:切 sandbox key,禁止对真实 openid 打款。 +10. **日志**:打款凭证号、失败原因落库,不全量打用户银行卡号。 +11. **enableAutoWithdraw 与人工审核**:并存时定义优先级(先自动再人工 / 仅自动等)。 + +## 八、验收清单 + +- [ ] 支付成功幂等入账 +- [ ] 无 inviter 订单不产生佣金 +- [ ] 提现申请、审核、拒绝全链路 +- [ ] 自动打款开关切换后行为符合配置 +- [ ] 关键金额字段服务端校验 + +## 九、互指 + +- **F24** 推广绑定与窗口 +- **F26** 超级个体与「链接人」统计 **不等同** 于分佣,勿混表 diff --git a/.cursor/skills/karuo-recap-format/SKILL.md b/04_卡火(火)/火炬_全栈消息/卡若复盘格式/SKILL.md similarity index 80% rename from .cursor/skills/karuo-recap-format/SKILL.md rename to 04_卡火(火)/火炬_全栈消息/卡若复盘格式/SKILL.md index 1b569624..e5ec784d 100644 --- a/.cursor/skills/karuo-recap-format/SKILL.md +++ b/04_卡火(火)/火炬_全栈消息/卡若复盘格式/SKILL.md @@ -1,9 +1,15 @@ --- -name: karuo-recap-format +name: 卡若复盘格式 description: 卡若AI 对话收尾复盘格式 v5.0(🎯 单行一句 ≤50 字、分发达成率、禁复述与标准☯)。触发:复盘格式、卡若复盘、达成率怎么写、视频号分发复盘。 +triggers: 复盘格式、卡若复盘、达成率怎么写、复盘 v5、视频号分发复盘、负达成率 +owner: 火炬 +group: 火 +version: "1.0" +updated: "2026-03-26" +legacy_name: karuo-recap-format(原 `.cursor/skills/` 入口,已迁入本路径) --- -# 卡若复盘格式(Cursor Skill · v5.0) +# 卡若复盘格式(F01d · v5.0) **真源**:`运营中枢/参考资料/卡若复盘格式_固定规则.md`(须与之一致)。 diff --git a/04_卡火(火)/火炬_全栈消息/存客宝BFF与留资队列/SKILL.md b/04_卡火(火)/火炬_全栈消息/存客宝BFF与留资队列/SKILL.md new file mode 100644 index 00000000..d8165dfc --- /dev/null +++ b/04_卡火(火)/火炬_全栈消息/存客宝BFF与留资队列/SKILL.md @@ -0,0 +1,102 @@ +--- +name: 存客宝BFF与留资队列 +description: 小程序只打自家 BFF;POST /api/miniprogram/ckb/lead;ckb_lead_records 队列表、push_status 与重试 cron;getCkbLeadApiKey 优先级;与 persons/target_person_id、source 归因;开放 API 细节归 G15。 +triggers: 存客宝留资、ckb/lead、submitCkbLead、soulBridge、留资队列、ckb_lead_records、retry-ckb-leads、push_status、链接卡若、article_mention、index_lead +owner: 火炬 +group: 火 +version: "1.0" +updated: "2026-03-26" +--- + +# 存客宝BFF与留资队列 + +> **参考实现**:永平 `miniprogram/utils/soulBridge.js`(`submitCkbLead`)、`soul-api/internal/handler/ckb.go`(`CKBLead`、`getCkbLeadApiKey`、`RetryFailedCkbLeads`)、`internal/model/ckb_lead.go`、`router` 中 `miniprogram.POST("/ckb/lead")` 与 `cron` 的 `retry-ckb-leads`。 +> **边界**:存客宝 **开放 API、设备、计划全表** 见金组 **G15**;本节仅 **BFF 编排 + 本地队列表 + 重试**。 +> **协同**:`#linkTag` 的 `tagType==='ckb'` 见 **F23**;超级个体获客统计见 **F26**。 + +## 一、业务目标 + +- C 端 **不直连** 存客宝公网 API(避免密钥暴露在小程序包与前端)。 +- 每次留资 **先落库**(可追溯、可重试、可运营导出),再异步或同步推送 CKB。 +- 推送失败可 **cron 批量重试**,并记录 `ckb_error`。 + +## 二、小程序桥:`submitCkbLead` + +**文件**:`miniprogram/utils/soulBridge.js` + +**前置校验**(顺序重要): + +1. `targetUserId` 与 `targetMemberId` **至少其一**(文章 `@` 用 user;会员详情无 token 时用 memberId 走全局计划)。 +2. 已登录;否则 Modal 引导去「我的」。 +3. 手机号:本地 `userInfo` / `profile` 拉取 / storage;须 `1[3-9]\\d{9}`。 +4. 可选 `wechatId` 一并提交。 + +**请求**: + +- `POST /api/miniprogram/ckb/lead` +- Body 字段(与后端对齐):`userId`(当前用户)、`phone`、`wechatId`、`name`、`targetUserId`、`targetNickname`、`targetMemberId`、`targetMemberName`、`source` + +**成功反馈**:若返回 `skipped` / `alreadySubmitted`,Toast「无需重复提交」类文案,并仍可 `setStorageSync('lead_last_submit_ts', ...)`。 + +## 三、后端:`CKBLead` 要点 + +**路由**:`POST /api/miniprogram/ckb/lead`(仅 miniprogram 组) + +**典型分支**(语义级,以仓库为准): + +- 解析 `targetUserId` → 查 `persons`,得到 `target_person_id` 与对应 CKB **plan/apiKey**(或走 **共享计划** `super_individual_shared_plan`)。 +- **无 targetUserId**(如首页「链接卡若」):用 `getCkbLeadApiKey()` 全局 key。 +- **幂等**:同一 `userId + source` 或业务定义的唯一键,可返回 `skipped: true`。 +- 创建 `CkbLeadRecord`:`push_status=pending`,填 `params` JSON,再调 CKB HTTP;成功 `success`,失败 `failed` + `ckb_error`。 + +## 四、`getCkbLeadApiKey` 优先级(永平实现注释) + +1. `system_config` / `site_settings` 中的 `ckbLeadApiKey` +2. 环境变量 `CKB_LEAD_API_KEY` +3. 代码内兜底(若有,生产应禁用) + +## 五、表 `ckb_lead_records`(模型字段摘要) + +| 字段 | 用途 | +|:---|:---| +| `user_id` | 留资用户(访客) | +| `target_person_id` | 被链接的人物,**F26 leadCount** 关联用 | +| `source` | `article_mention`、`index_link_button`、`index_lead` 等 | +| `params` | 原始 JSON 备查 | +| `push_status` | `pending` / `success` / `failed` | +| `retry_count`、`next_retry_at`、`last_push_at` | 重试调度 | +| `ckb_error` | 最近一次错误摘要 | + +## 六、Cron 与运营 + +- **`/api/cron/retry-ckb-leads`**:`RetryFailedCkbLeads`,限制条数,避免一次打满。 +- 管理端列表 / 单条重试:见 `db_ckb_leads.go` 等。 +- 可选 Webhook:`ckb_lead_webhook_url`(若有配置)。 + +## 七、Gotchas(≥10) + +1. **未登录提交**:必须挡在桥里,避免匿名脏数据。 +2. **手机号正则**:与 profile 不同步时先拉 `/user/profile`。 +3. **target 双轨**:`targetUserId` 与 `targetMemberId` 后端解析路径不同,勿混测。 +4. **person 不存在**:应明确错误,勿静默丢单。 +5. **共享 plan 未配**:超级个体链路会整段失败,需监控。 +6. **重复提交**:产品要定义「同用户同人物同 source」是否允许多条。 +7. **push 超时**:须落 `failed` 而非无限 pending。 +8. **cron 鉴权**:`/api/cron/*` 须密钥或内网,防公网刷。 +9. **PII 日志**:phone 不全量打 access log。 +10. **与 F23 ckb 标签**:两处入口应共用 `CKBLead`,避免一套写表一套漏写。 +11. **G15 变更**:CKB 接口字段升级时先改 BFF 再改小程序展示字段。 + +## 八、验收清单 + +- [ ] `@mention`、会员详情、首页按钮三条路径各通一条 +- [ ] 失败记录 cron 可恢复为 success +- [ ] `target_person_id` 正确时 F26 `leadCount` 可增长 +- [ ] 密钥只存在于服务端配置 + +## 九、互指 + +- **F23** `linkTag` / `tagType==='ckb'` +- **F26** `COUNT(DISTINCT l.user_id)` 获客口径 +- **G15** 存客宝开放 API +- **F01 §1.10** 留资按钮若同时 `trackClick`,字段语义与 lead 表分开 diff --git a/04_卡火(火)/火炬_全栈消息/小程序链接标签与跨小程序跳转/SKILL.md b/04_卡火(火)/火炬_全栈消息/小程序链接标签与跨小程序跳转/SKILL.md new file mode 100644 index 00000000..7bfe4cbf --- /dev/null +++ b/04_卡火(火)/火炬_全栈消息/小程序链接标签与跨小程序跳转/SKILL.md @@ -0,0 +1,121 @@ +--- +name: 小程序链接标签与跨小程序跳转 +description: 富文本 #linkTag 解析、tagType 决策树、wx.navigateToMiniProgram、mpKey 与 linkedMiniprograms、app.json 白名单、内链外链与 CKB 类型分支;可复用到任意微信原生小程序 + 自建 BFF 下发配置。 +triggers: 链接标签、linkTag、hash标签、小程序跳转、navigateToMiniProgram、跨小程序、打开别的小程序、mpKey、linkedMiniprograms、正文跳转、read页链接、contentParser +owner: 火炬 +group: 火 +version: "1.0" +updated: "2026-03-26" +--- + +# 小程序链接标签与跨小程序跳转 + +> **参考实现**:[一场soul的创业实验-永平](file:///Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平)(`miniprogram/`)。**不**写管理端全路由表、不写书籍 CMS。 +> **协同**:留资类与 **《存客宝BFF与留资队列》**(F27)互指;通用点击埋点见 **《全栈开发》§1.10**。 + +## 一、业务目标与非目标 + +**目标**:在图文/章节正文中插入「可点的 `#标签`」,点击后按类型进入:本小程序页、H5 预览、其他小程序、或转入留资流程(CKB)。 + +**非目标**:不替代小程序原生 `navigator` 全站路由规范;不在这里展开存客宝 HTTP 签名细节(见 G15)。 + +## 二、用户与系统旅程(摘要) + +1. 用户打开阅读页 → 正文 HTML 经解析拆成 `text` / `mention` / `linkTag` / `image` 段。 +2. 用户点 `#某标签` → `onLinkTagTap` 读取 `dataset`(或由 `label` 反查缓存)。 +3. 按 `tagType` 分支执行:`miniprogram` / `ckb` / 内链 / 外链。 +4. 失败路径必须有 Toast,禁止静默无反馈。 + +## 三、前端(微信小程序) + +### 3.1 解析层 + +| 文件 | 职责 | +|:---|:---| +| `miniprogram/utils/contentParser.js` | 正则切分 HTML;`linkTag` 段提取 `tagType`、`url`、`pagePath`、`tagId`、`appId`、`mpKey`、`label`;支持旧版 `` | +| `miniprogram/pages/read/read.wxml` | `bindtap="onLinkTagTap"`,`data-*` 与解析结果对齐 | + +**纯文本自动补标签**(可选):若 `config.linkTags` / `config.persons` 存在,可在无 HTML 标记时按词表插入 `linkTag` 段(见 `contentParser` 内 `applyInlineConfig` 逻辑)。 + +### 3.2 点击处理:`onLinkTagTap` + +**文件**:`miniprogram/pages/read/read.js` + +**决策顺序(须保持顺序,便于排错)**: + +1. **补齐字段**:从 `dataset` 取 `url`、`label`、`tagType`、`pagePath`、`mpKey`。若 `tagType` 为空且 `label` 有值 → 在 `app.globalData.linkTagsConfig` 里按 `label` 查找,补全 `tagType`、`pagePath`、`url`、`mpKey`。 +2. **`tagType === 'ckb'`**:走与 `@某人` 类似的加好友/留资入口(常复用 `onMentionTap` 或统一 `soulBridge`);**详规见 F27**。 +3. **`tagType === 'miniprogram'`**:若缺 `mpKey`,再尝试用 `label` 从 `linkTagsConfig` 补。用 `app.globalData.linkedMiniprograms` 找 `key === mpKey` 的项,取 `appId`,调用: + +```javascript +wx.navigateToMiniProgram({ + appId: linked.appId, + path: pagePath || linked.path || '', + envVersion: 'release', +}) +``` + +4. **本小程序内路径**:`pagePath` 非空,或 `url` 以 `/pages/` 开头 → `wx.navigateTo`;`fail` 时兜底 `wx.switchTab`(适配 tabBar 页)。 +5. **外链**:`url` 非空 → `/pages/link-preview/link-preview?url=...&title=...`(web-view)。 +6. 仍无可执行动作 → `wx.showToast({ title: '暂无跳转地址' })`。 + +### 3.3 全局数据契约 + +| 字段 | 含义 | +|:---|:---| +| `globalData.linkTagsConfig` | 后台下发的链接标签列表(含 `label`、`type`、`url`、`pagePath`、`mpKey` 等) | +| `globalData.linkedMiniprograms` | `{ key, appId, path? }[]`,与 `mpKey` 映射 | + +**后端合并**:服务端可把 `link_tags` 表中 `type=miniprogram` 的行与 `linked_miniprograms` 配置合并进全量 config(永平见 `mergeDirectMiniProgramLinksFromLinkTags` 思路)。 + +### 3.4 `app.json` 强制项 + +- **`navigateToMiniProgramAppIdList`**:列出所有可能被唤醒的小程序 appId;漏配会导致 `navigateToMiniProgram` 失败。 +- 新增合作小程序时:**同时**改后台配置、合并逻辑与 **白名单数组**。 + +## 四、后端(BFF / 管理端配置) + +- **配置存储**:常见为 `link_tags` 表 + `system_config` 或独立 JSON 字段中的 `linkedMiniprograms`。 +- **下发接口**:小程序启动或进阅读页时拉「全量 config」;需保证 **旧客户端** 在缺 `tagType` 时仍能靠 `label` 命中 `linkTagsConfig`。 +- **类型枚举建议**:`url` | `miniprogram` | `page`(内链)| `ckb`(留资)——与前端分支一致。 + +## 五、数据模型(示意) + +**link_tags(示意)** + +| 列 | 说明 | +|:---|:---| +| tag_id | 稳定 ID,可写入正文 `data-tag-id` | +| label | 展示文案,带 `#` 或不带需与解析统一 | +| type | `url` / `miniprogram` / `ckb` / 内链 | +| url / page_path | 外链或本包路径 | +| mp_key | 对应 `linkedMiniprograms[].key` | +| app_id | 可选;可直接填微信 appId 由后端 merge 进 linked 列表 | + +## 六、Gotchas(≥10) + +1. **白名单未配**:仅 `navigateToMiniProgram` 报失败,需在真机看 `errMsg`。 +2. **`mpKey` 不一致**:后台改 key 未同步正文历史 → Toast「未找到关联小程序配置」。 +3. **旧正文 ``**:无 `tagType`,必须依赖 `linkTagsConfig` 按 `label` 降级。 +4. **tabBar 页**:`navigateTo` 失败须 `switchTab`,路径不能带 query 的限制要知晓。 +5. **`ckb` 与 `@` 重复**:两处都调留资时,后端需 **幂等/去重**(见 F27)。 +6. **web-view 业务域名**:外链域名未在小程序后台配置则白屏。 +7. **`envVersion: 'release'`**:体验版调试需临时改为 `trial`/`develop`(勿提交忘记改回)。 +8. **同页多段 `#`**:`dataset` 必须逐段绑定,避免共用引用导致串标签。 +9. **繁体/空格 label**:与后台 `label` 严格相等匹配易失败,宜 trim + 统一繁简策略。 +10. **安全**:外链必须 HTTPS,禁止 `javascript:` 协议进入 web-view。 +11. **统计口径**:跳转次数若要进看板,需单独 `trackClick`,**不等于** §1.10 里所有 `link_click` 语义,需在登记表写清。 + +## 七、验收清单 + +- [ ] 四种 `tagType`(含降级)在真机各走通至少一条用例 +- [ ] 新合作小程序已加 `navigateToMiniProgramAppIdList` +- [ ] 后台改 `mpKey` 后旧文行为符合产品预期(Toast 或可批量修数据) +- [ ] `link-preview` 域名已配置 +- [ ] 与 F27 联调:CKB 类标签不误跳外链 + +## 八、互指 + +- **F01 §1.10**:通用 `trackClick`;本节不重复埋点字段规范。 +- **F27 存客宝BFF**:`tagType==='ckb'` 与 `@mention` 留资。 +- **G15 存客宝**:开放 API、计划、设备详情。 diff --git a/04_卡火(火)/火炬_全栈消息/推广邀请与三十日绑定/SKILL.md b/04_卡火(火)/火炬_全栈消息/推广邀请与三十日绑定/SKILL.md new file mode 100644 index 00000000..6b44cc44 --- /dev/null +++ b/04_卡火(火)/火炬_全栈消息/推广邀请与三十日绑定/SKILL.md @@ -0,0 +1,95 @@ +--- +name: 推广邀请与三十日绑定 +description: scene 解析、ReferralVisit 幂等、ReferralBinding 三十日首绑、邀请码与推广员归属、管理端开关与统计;可复用到任意带 scene 的小程序 + Gin/GORM。 +triggers: 推广、邀请、邀请码、referral、scene、1001、首绑、三十日、30天、绑定推广员、推广开关、ReferralVisit、ReferralBinding +owner: 火炬 +group: 火 +version: "1.0" +updated: "2026-03-26" +--- + +# 推广邀请与三十日绑定 + +> **参考实现**:永平 `soul-api/internal/handler/referral.go`、`soul-api/internal/handler/db.go`(`referral_config`、模型 `ReferralVisit` / `ReferralBinding`)。 +> **协同**:佣金结算与提现见 **《分销佣金与提现编排》**(F25);管理端开关与配置键本节列全。 + +## 一、业务目标 + +- 新用户通过带 **邀请码** 的入口进入小程序后,在 **30 天自然日窗口** 内首次完成有效行为时,将 **推广员(inviter)** 写入绑定表;窗口外或已绑定则不再改归属。 +- **访问留痕**与**绑定**分离:同一用户可多次访问,绑定只发生一次(首绑)。 + +## 二、旅程 + +1. 小程序 `onLaunch` / `onShow` 解析 `options.scene`(或等价入口参数)。 +2. 若 scene 为 **1001**(或产品约定的「直开」码)→ 不调推广接口,避免误绑。 +3. 否则提取 `inviteCode`,`POST` 记录访问(可带 `deviceId` 防刷)。 +4. 用户完成「可触发绑定」的动作(如注册成功、首次登录)→ `POST` 绑定;服务端校验 **30 日窗口** 与 **是否已有绑定**。 + +## 三、后端 API(命名与永平对齐,可迁移时改名) + +| 方法路径 | 作用 | +|:---|:---| +| `POST /api/miniprogram/referral/visit` | 记录访问;scene=1001 直接 success 不写字段 | +| `POST /api/miniprogram/referral/bind` | 首绑推广员;需登录态 | +| `GET /api/miniprogram/referral/status` | 当前用户是否已绑、inviter 信息等 | +| `GET /api/admin/referral/list` | 管理端绑定列表 | +| `GET /api/admin/referral/visits` | 访问记录 | +| `GET/PUT /api/admin/referral/config` | 开关与参数 | + +## 四、配置键 `referral_config`(JSON) + +| 键 | 含义 | +|:---|:---| +| `enabled` | 总开关 | +| `bindWindowDays` | 绑定窗口天数,默认 **30** | +| `requirePhone` | 是否要求绑定手机号才算有效用户 | +| `minRegisterSeconds` | 注册后至少 N 秒才可绑(防脚本) | +| `blacklistUserIDs` | 不参与推广的用户 ID 列表 | +| `blacklistPhones` | 手机号黑名单 | + +**注意**:`enableAutoWithdraw` 等属 **分销提现**,见 F25,勿与本节混淆。 + +## 五、数据模型要点 + +**ReferralVisit** + +- 建议唯一约束:`(user_id, visit_date)` 或 `(user_id, invite_code, visit_date)`,实现 **每日幂等**(同用户同日多次只一行)。 +- 字段常含:`invite_code`、`inviter_id`、`scene`、`channel`、`device_id`。 + +**ReferralBinding** + +- `user_id` **唯一**:一个被推广用户只对应一条绑定。 +- `inviter_id`、`invite_code`、`bound_at`、可选 `first_visit_at` 用于审计。 + +## 六、scene 与 1001 + +- **1001**:微信场景值「发现栏小程序主入口」等直开,**不应**写入推广归因。 +- 其他 scene:按产品规则解析出自定义 `inviteCode`(可能嵌在 scene 字符串中)。 + +## 七、Gotchas(≥10) + +1. **scene 解析失败**:静默跳过,避免把脏数据写入 `ReferralVisit`。 +2. **未登录调 bind**:须 401 或明确错误码,禁止用匿名 user_id=0 绑成功。 +3. **重复 bind**:第二次请求须 **幂等返回成功** 且不改 `inviter_id`。 +4. **窗口计算**:用 **自然日** 还是 **精确到秒** 需在 PRD 固定;代码与文档一致。 +5. **时区**:服务器 UTC vs 业务日切,统计「30 日」要对齐。 +6. **自邀**:`inviter_id == user_id` 必须拒绝。 +7. **黑名单**:在 bind 前校验 user 与 phone。 +8. **requirePhone**:用户未绑手机时 bind 应返回可理解文案。 +9. **刷 visit**:仅靠 user_id 不够时上 `deviceId` + 频控。 +10. **管理端关 enabled**:应 **停止新 bind**,旧绑定是否保留佣金由 F25 决定。 +11. **换 inviteCode**:若允许多次访问不同码,**首绑**以谁先满足窗口为准,须在界面说明。 + +## 八、验收清单 + +- [ ] 1001 不产生 visit 记录或明确 no-op +- [ ] 首绑成功、重复绑幂等 +- [ ] 超窗 bind 拒绝且文案正确 +- [ ] 黑名单与自邀拦截 +- [ ] 管理端 config 热更新后新请求生效 + +## 九、互指 + +- **F25** 分销佣金、提现、订单归因 +- **F26** 超级个体统计(与推广员体系可能交叉,勿重复计佣) +- **F01 §1.10** 若要对邀请链路单独埋点,字段勿与 `referral_*` 混名 diff --git a/04_卡火(火)/火炬_全栈消息/超级个体点击与获客统计/SKILL.md b/04_卡火(火)/火炬_全栈消息/超级个体点击与获客统计/SKILL.md new file mode 100644 index 00000000..6cc91b75 --- /dev/null +++ b/04_卡火(火)/火炬_全栈消息/超级个体点击与获客统计/SKILL.md @@ -0,0 +1,108 @@ +--- +name: 超级个体点击与获客统计 +description: user_tracks 中「链接头像_」前缀、avatar_click/btn_click 兼容、persons 与 ckb_lead_records 去重获客数、VIP 列表聚合、super_individual_shared_plan、webhook 映射与 cron 同步;可复用到「人物卡片+留资归因」类小程序。 +triggers: 超级个体、VIP卡片、链接头像、clickCount、leadCount、获客人数、vip-members、AdminSuperIndividualStats、super_individual_shared_plan、super_individual_webhook +owner: 火炬 +group: 火 +version: "1.0" +updated: "2026-03-26" +--- + +# 超级个体点击与获客统计 + +> **参考实现**:永平 `vip_members_admin.go`(`batchSuperIndividualClicks` / `batchSuperIndividualLeads`)、`admin_dashboard.go`(`AdminSuperIndividualStats`)、`db_person.go`(`super_individual_shared_plan`)、`cron.go`(`sync-vip-ckb-plans` 等)。 +> **边界**:**点击量 ≠ 留资人数**;通用埋点规范见 **《全栈开发》§1.10**。留资写入 CKB 见 **F27**。 + +## 一、业务目标 + +- 首页(或列表)展示 **VIP/超级个体** 卡片,用户点头像产生可聚合的 **点击次数**。 +- 用户通过该人物链路完成留资后,在管理端对该 **user_id(人物绑定用户)** 展示 **去重后的获客人数(leads)**。 +- 可选:按用户配置 **飞书 Webhook**,用于通知(键 `super_individual_webhook_map`)。 + +## 二、点击统计口径(与代码一致) + +**表**:`user_tracks` + +**条件**: + +- `action IN ('avatar_click', 'btn_click')`(历史兼容 `btn_click`) +- `target LIKE '链接头像_%'`(SQL 中 `_` 需转义为 `\_`) +- **人物 user_id** = `SUBSTRING(target, 6)`(即去掉前缀「链接头像」共 5 个 UTF-8 字符后的子串——**以永平实现为准**,若产品改前缀须同步改 SQL 与小程序 `trackClick` 的 `target`) + +**聚合**:按 `user_id` `COUNT(*)`。 + +参考 SQL(摘自实现): + +```sql +SELECT + SUBSTRING(target, 6) AS user_id, + COUNT(*) AS clicks +FROM user_tracks +WHERE action IN ('avatar_click', 'btn_click') + AND target LIKE '链接头像\\_%' + AND SUBSTRING(target, 6) IN (?) +GROUP BY user_id +``` + +## 三、获客(留资)人数口径 + +**表**:`persons` + `ckb_lead_records` + +- `persons.user_id`:人物绑定的超级个体用户 ID。 +- `ckb_lead_records.target_person_id`:留资指向的人物 `person_id`。 +- **去重**:`COUNT(DISTINCT l.user_id)` — 同一访客多条留资只计 1。 + +```sql +SELECT p.user_id AS user_id, COUNT(DISTINCT l.user_id) AS leads +FROM persons p +INNER JOIN ckb_lead_records l ON l.target_person_id = p.person_id +WHERE p.user_id IN ? +GROUP BY p.user_id +``` + +## 四、管理端 / DB 接口 + +| 入口 | 作用 | +|:---|:---| +| `GET /api/db/vip-members` | VIP 列表 + `clickCount` + `leadCount` + `webhookUrl` | +| `PUT /api/db/vip-members/webhook` | 按 `userId` 写 webhook 映射 | +| `GET /api/admin/super-individual/stats` | 看板级汇总(实现见 `admin_dashboard.go`) | + +## 五、配置键 + +| 键 | 说明 | +|:---|:---| +| `super_individual_shared_plan` | JSON:共用存客宝 **planId + apiKey**;新建人物时不为每人单独建计划(见 `createPersonWithSharedSuperIndividualPlan`) | +| `super_individual_webhook_map` | `userId -> webhookUrl` | + +## 六、小程序侧约定 + +- 点头像必须调 `trackClick`,`target` 形如 **`链接头像_` + 人物对应 users.id**(与后端 `SUBSTRING` 规则一致)。 +- 若改用 `person_id`,须改后端 SQL,**禁止**只改一端。 + +## 七、Gotchas(≥10) + +1. **前缀字符数**:「链接头像」占 5 个 rune,与 `SUBSTRING(target, 6)` 强绑定。 +2. **`btn_click` 噪声**:非头像按钮若误用同前缀,点击量会虚高。 +3. **留资未写 target_person_id**:`leadCount` 为 0,问题在 F27 链路。 +4. **person 未创建**:VIP 用户无 `persons` 行 → leads 永远 0。 +5. **DISTINCT l.user_id**:留资表 `user_id` 为空则不计入,需小程序登录态一致。 +6. **共享 plan 配错**:所有人写到同一计划或写入失败,cron 需监控。 +7. **Webhook URL**:校验 `http` 前缀;删除 key 时 map 需持久化更新。 +8. **列表 limit**:`vip-members` 默认 200、最大 500,排序与小程序 `VipMembers` 需一致。 +9. **与 F25 分佣**:超级个体 ≠ 推广员;佣金勿用 `clickCount` 推算。 +10. **看板与列表**:`AdminSuperIndividualStats` 与 `batchSuperIndividualLeads` 口径应保持一致,改一处同步改另一处。 +11. **迁移项目**:若表名或字段改名,优先封装 Raw SQL 到一处。 + +## 八、验收清单 + +- [ ] 真机点头像后 `user_tracks` 行符合 target 规范 +- [ ] `GET /api/db/vip-members` 中 click/lead 与 SQL 手工核对一致 +- [ ] 共享 plan 关闭时,新建人物行为符合产品(独立计划或报错) +- [ ] Webhook 可增删改 + +## 九、互指 + +- **F01 §1.10**:`trackClick` 字段与命名 +- **F27**:`ckb_lead_records` 写入、`POST /api/miniprogram/ckb/lead` +- **G15**:存客宝开放 API diff --git a/BOOTSTRAP.md b/BOOTSTRAP.md index 4f0e25eb..2a088738 100644 --- a/BOOTSTRAP.md +++ b/BOOTSTRAP.md @@ -6,7 +6,7 @@ 卡若AI,卡若的个人数字管家。工作台:`/Users/karuo/Documents/个人/卡若AI/` -## 二、团队(5 负责人 → 15 成员 → 74 技能) +## 二、团队(5 负责人 → 15 成员 → 技能数以 `SKILL_REGISTRY.md` 头注为准) ``` 卡若AI → 卡资(金)→金仓·金盾 | 卡人(水)→水溪·水泉·水桥·水岸 | 卡木(木)→木叶·木根·木果·木识 | 卡火(火)→火炬·火锤·火眼·火种 | 卡土(土)→土基·土砖·土渠·土簿 @@ -16,7 +16,8 @@ ## 三、启动与技能查找 -1. 读本文件 → 2. 按下方热技能速查匹配,未命中再读 `SKILL_REGISTRY.md` → 3. 读匹配到的 SKILL.md → 4. 可选读 `CURRENT_STATE.md`(当日工作台) +1. 读本文件 → 2. 按下方热技能速查匹配,未命中再读 `SKILL_REGISTRY.md` → 3. 读匹配到的 SKILL.md → 4. 可选读 `CURRENT_STATE.md`(当日工作台) + **软件开发**:在 2~3 步基础上**叠加**读 **`运营中枢/工作台/开发域_Skill模块化索引.md`**(M1~M11),再回 Registry 取路径(两轨并行,不互斥)。 **热技能速查**: @@ -30,10 +31,11 @@ | 代码修复/bug | `04_卡火(火)/火锤_代码修复/代码修复/SKILL.md` | | 系统状态/杀进程 | `01_卡资(金)/金仓_存储备份/系统监控/SKILL.md` | | MCP/连接MCP | `02_卡人(水)/水桥_平台对接/MCP管理/SKILL.md` | +| **闽南话/语音输入/ASR 误听/回廊洗字** | 机制 `运营中枢/参考资料/闽南话语音_ASR纠错机制.md`;词库 `运营中枢/参考资料/卡若闽南口音_ASR纠错库.json`;W03b `02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md` | | Soul运营报表 | `02_卡人(水)/水桥_平台对接/飞书管理/运营报表_SKILL.md` | | **Soul派对技能流/派对Stream/创业派对Stream** | `02_卡人(水)/水岸_项目管理/卡若创业派对/Soul派对技能流_掌管人与Stream规约.md` | | 项目管理/卡若创业派对 | `02_卡人(水)/水岸_项目管理/SKILL.md` | -| 卡路派对总控/玉宁/永平开发 | `.cursor/skills/kalu-entrepreneur-party/SKILL.md`(卡若AI 仓库) | +| Soul/卡若派对总控、玉宁、永平开发 | K01 `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若创业派对_总控/SKILL.md`;K02 玉宁 `…/卡若玉宁运营专线/SKILL.md`;K03 永平 `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若网站开发_永平三端/SKILL.md`;**套件总索引** `…/Soul技能归口/SKILL.md` | | 聊天记录/对话存储/聊天归档 | `01_卡资(金)/金仓_存储备份/聊天记录管理/SKILL.md` | ## 四、MAX Mode(默认) @@ -76,6 +78,7 @@ | 命令 | 做什么 | |:---|:---| | 技能查找 | 热技能速查→未命中读 SKILL_REGISTRY.md→读 SKILL.md 执行 | +| 开发域模块化 | `运营中枢/工作台/开发域_Skill模块化索引.md`(搭项目/部署/小程序与获客链路按模块选 Skill) | | 常规操作 | 优先命令行 + 复用现成流程,不提问 | | 复盘 | 所有回复强制用完整复盘(🎯📌💡📝▶,v5.0) | | 沉淀 | 写入 `水溪_整理归档/经验库/待沉淀/` | diff --git a/SKILL_REGISTRY.md b/SKILL_REGISTRY.md index 57cd59f8..89bc8a48 100644 --- a/SKILL_REGISTRY.md +++ b/SKILL_REGISTRY.md @@ -1,8 +1,8 @@ # 卡若AI 技能注册表(Skill Registry) > **一张表查所有技能**。任何 AI 拿到这张表,就能按关键词找到对应技能的 SKILL.md 路径并执行。 -> 79 技能 + 3 卡路Cursor入口 | 15 成员 | 5 负责人 -> 版本:5.17 | 更新:2026-03-26 +> 80 技能 + Soul技能归口(K01~K03 等补充项,见下文) | 15 成员 | 5 负责人 +> 版本:5.21 | 更新:2026-03-26 > > **技能配置、安装、删除、掌管人登记** → 见 **`运营中枢/工作台/01_技能控制台.md`**。 @@ -13,6 +13,7 @@ 1. 用户说需求 → 在「触发词」列搜索匹配 2. 找到行 → 读「SKILL 路径」列的文件 3. 按 SKILL.md 里的步骤执行 +4. **软件开发类**:可按模块速查 **`运营中枢/工作台/开发域_Skill模块化索引.md`**(M1~M11 + 项目类型组合),再回本表取路径 **Cursor 续跑**:用户说「下一步」「接着跑」「重新剪辑」「直到完成」或刚更新某 Skill 后要产出时,**直接执行**(不先问是否运行),见 `BOOTSTRAP.md` 八·流水线续跑、`卡若AI/.cursor/rules/karuo-ai.mdc`。 @@ -112,7 +113,7 @@ | M01b | 抖音视频解析 | 木叶 | **抖音视频、抖音链接、抖音解析、抖音下载、提取抖音文案、抖音无水印** | `03_卡木(木)/木叶_视频内容/抖音视频解析/SKILL.md` | 链接→解析ID→提取文案→下载无水印视频 | | M01c | 抖音发布 | 木叶 | **抖音发布、发布到抖音、抖音登录、抖音上传、腕推抖音** | `03_卡木(木)/木叶_视频内容/抖音发布/SKILL.md` | 纯 API 视频上传+发布(VOD + bd-ticket-guard),无需浏览器 | | M01d | B站发布 | 木叶 | **B站发布、发布到B站、B站登录、B站上传、bilibili发布** | `03_卡木(木)/木叶_视频内容/B站发布/SKILL.md` | 纯 API(preupload 分片),Cookie 有效期约6个月 | -| M01e | 视频号发布 | 木叶 | **视频号发布、发布到视频号、视频号登录、视频号上传、微信视频号** | `03_卡木(木)/木叶_视频内容/视频号发布/SKILL.md` | 纯 API(finder-assistant 腾讯云上传),微信扫码登录 | +| M01e | 视频号发布 | 木叶 | **视频号发布、发布到视频号、视频号登录、视频号上传、微信视频号** | `03_卡木(木)/木叶_视频内容/视频号发布/SKILL.md` | 默认:静默扫码 → `channels_api_publish`(httpx)→ 缺 finder_raw 时 exit 2 由 `publish_auto.sh` 接 `channels_web_cli publish-dir` | | M01f | 小红书发布 | 木叶 | **小红书发布、发布到小红书、小红书登录、小红书上传、RED发布** | `03_卡木(木)/木叶_视频内容/小红书发布/SKILL.md` | 逆向 creator API 视频笔记发布,封面取第一帧 | | M01g | 快手发布 | 木叶 | **快手发布、发布到快手、快手登录、快手上传、kuaishou发布** | `03_卡木(木)/木叶_视频内容/快手发布/SKILL.md` | 逆向 cp.kuaishou.com API 视频发布 | | M01h | 多平台分发 | 木叶 | **多平台分发、一键分发、全平台发布、批量分发、视频分发** | `03_卡木(木)/木叶_视频内容/多平台分发/SKILL.md` | 一键分发到5平台(抖音/B站/视频号/小红书/快手),Cookie统一管理 | @@ -131,11 +132,11 @@ | # | 技能 | 成员 | 触发词 | SKILL 路径 | 一句话 | |:--|:---|:---|:---|:---|:---| -| F01 | 全栈开发 | 火炬 | 知己、RAG、分销、**卡若AI官网、官网开发、全站开发、开发文档、1~10**、**埋点、点击统计、用户行为、行为统计、数据统计、点击锚点、锚点、trackClick** | `04_卡火(火)/火炬_全栈消息/全栈开发/SKILL.md` | 全栈项目 + 官网/全站与开发文档 1~10;**§1.10 埋点与点击锚点全站强制** | +| F01 | 全栈开发 | 火炬 | 知己、RAG、分销、**卡若AI官网、官网开发、全站开发、开发文档、1~10**、**埋点、点击统计、用户行为、点击锚点、trackClick** | `04_卡火(火)/火炬_全栈消息/全栈开发/SKILL.md` | 全栈项目 + 官网/全站与开发文档 1~10;**§1.10 埋点全站强制**;获客/深链路 **§1.11 仅索引**,详规 **F23~F27** | | F01a | 前端开发 | 火炬 | **前端开发、毛玻璃、神射手风格、毛狐狸风格、前端标准、苹果毛玻璃**、**埋点、点击锚点、trackClick、用户行为** | `04_卡火(火)/火炬_全栈消息/前端开发/SKILL.md` | 毛玻璃 + 前端标准;**§五 用户行为与点击锚点**;详规见全栈 §1.10 | | F01b | 全栈测试 | 火炬 | **全栈测试、功能测试、回归测试、深度测试、E2E测试、API测试、发布测试、测试验收** | `04_卡火(火)/火炬_全栈消息/全栈开发/全栈测试/SKILL.md` | 功能开发后系统化验收:前端/后端/数据库/脚本/发布引擎五维测试;**每完成一个功能必须调用** | | F01c | **项目开发占卜术**(间名 **演门测机**) | 火炬 | **项目开发占卜术、开发占卜、Q门3.0、奇门项目盘、八门复盘、起盘、盘势、门迫** | `04_卡火(火)/火炬_全栈消息/项目开发占卜术/SKILL.md` | 奇门 Q门 3.0 八门健康度扫描;**仅用户点名起盘**时附在复盘 v5.0 五块**之后**,**不**写入标准 🎯 | -| F01d | **卡若复盘格式** | 火炬 | **复盘格式、卡若复盘、达成率怎么写、复盘 v5、视频号分发复盘、负达成率** | `.cursor/skills/karuo-recap-format/SKILL.md` | v5.0:🎯 单行一句 ≤50 字、达成率绑定分发/验收(可负)、禁 ➡️/📊 复述与标准 ☯ | +| F01d | **卡若复盘格式** | 火炬 | **复盘格式、卡若复盘、达成率怎么写、复盘 v5、视频号分发复盘、负达成率** | `04_卡火(火)/火炬_全栈消息/卡若复盘格式/SKILL.md` | v5.0:🎯 单行一句 ≤50 字、达成率绑定分发/验收(可负)、禁 ➡️/📊 复述与标准 ☯ | | F02 | 消息中枢 | 火炬 | WhatsApp、Telegram | `04_卡火(火)/火炬_全栈消息/消息中枢/SKILL.md` | 多平台消息聚合 | | F02a | **艾叶 IM Bridge** | 火炬 | **艾叶、IM、聊天对接、消息网关、微信对接、企业微信对接、飞书对接、WhatsApp对接、网页聊天、IM桥接、通道配置、艾叶IM** | `04_卡火(火)/火炬_全栈消息/艾叶/SKILL.md` | 多平台 IM 网关:个人微信/企业微信/飞书/WhatsApp/网页→卡若AI 对话 | | F03 | 读书笔记 | 火炬 | 拆解这本书、五行拆书 | `04_卡火(火)/火炬_全栈消息/读书笔记/SKILL.md` | 五行框架拆书 | @@ -146,6 +147,11 @@ | F08 | 本地模型 | 火种 | ollama、qwen、本地AI | `04_卡火(火)/火种_知识模型/本地模型/SKILL.md` | Ollama/Qwen 本地部署 | | F21 | 本地代码库索引 | 火种 | 本地索引、本地搜索、不上传云端 | `04_卡火(火)/火种_知识模型/本地代码库索引/SKILL.md` | 本地 embedding 索引与语义检索,不上传云端 | | F22 | 本地项目启动 | 火炬 | **本地运行、启动玩值电竞、玩值电竞App、指定端口、项目端口、项目注册、运行项目、Docker部署、部署到Docker、docker部署、更新同步到Docker、同步到doc、Docker跑最新** | `04_卡火(火)/火炬_全栈消息/本地项目启动/SKILL.md` | 按注册表用指定端口启动;Docker 部署须守唯一 MongoDB + 容器分组;**更新后须 --build 跑本地最新**(见 Skill 内约定) | +| F23 | **小程序链接标签与跨小程序跳转** | 火炬 | **链接标签、linkTag、hash标签、小程序跳转、navigateToMiniProgram、跨小程序、mpKey、linkedMiniprograms、read页链接、contentParser** | `04_卡火(火)/火炬_全栈消息/小程序链接标签与跨小程序跳转/SKILL.md` | `#linkTag` 决策树、白名单、内链外链与 CKB 分支;Soul 永平 `contentParser`/`read.js` | +| F24 | **推广邀请与三十日绑定** | 火炬 | **推广、邀请码、referral、scene、1001、首绑、三十日、绑定推广员、ReferralVisit、ReferralBinding** | `04_卡火(火)/火炬_全栈消息/推广邀请与三十日绑定/SKILL.md` | visit/bind 幂等、`referral_config` 窗口;永平 `referral.go` | +| F25 | **分销佣金与提现编排** | 火炬 | **分销、佣金、提现、withdraw、enableAutoWithdraw、审核提现、打款** | `04_卡火(火)/火炬_全栈消息/分销佣金与提现编排/SKILL.md` | 订单入账 inviter、余额与审核;与 F24 配置键可能同 JSON | +| F26 | **超级个体点击与获客统计** | 火炬 | **超级个体、链接头像、clickCount、leadCount、vip-members、super_individual_shared_plan、webhook** | `04_卡火(火)/火炬_全栈消息/超级个体点击与获客统计/SKILL.md` | `user_tracks` 前缀口径 + `ckb_lead_records` 去重;永平 `vip_members_admin` | +| F27 | **存客宝BFF与留资队列** | 火炬 | **submitCkbLead、ckb/lead、ckb_lead_records、retry-ckb-leads、留资队列、push_status** | `04_卡火(火)/火炬_全栈消息/存客宝BFF与留资队列/SKILL.md` | 小程序只打 BFF;队列表与 cron;开放 API 见 **G15** | ## 土组 · 卡土(商业复制裂变) @@ -183,15 +189,17 @@ --- -## 卡路项目簇 · Cursor 快捷入口(`.cursor/skills`,卡若AI 仓库) +## Soul技能归口 · K01~K03(水岸掌管,勿再在 `.cursor/skills/` 写正文) -> **说明**:下列 3 项为 **Cursor Agent Skills**,路径相对于 `卡若AI/.cursor/skills/`;与五行 77 技能互补,用于 **卡若/卡路创业派对** 单项目的 **运营(玉宁)/ 开发** 归口。 +> **说明**:下列路径相对于 **卡若AI 仓库根**;物理目录 **`02_卡人(水)/水岸_项目管理/Soul技能归口/`** 为套件真源;**掌管人:水岸**。与五行表 **80** 项互补,归口 **Soul / 派对运营 / 永平开发**。**总索引**:`Soul技能归口/SKILL.md`。`.cursor/skills/` 仅保留 `README.md`(迁移说明),**禁止**再新增 Skill 正文。 | # | 技能 | 触发词 | SKILL 路径 | 一句话 | |:--|:---|:---|:---|:---| -| K01 | **卡路创业派对(总控)** | 卡路创业派对、卡路派对、卡洛创业派对、派对总控、玉宁和网站分开 | `.cursor/skills/kalu-entrepreneur-party/SKILL.md` | 先判运营 vs 开发,再读 K02 或 K03 | -| K02 | **卡路·玉宁运营** | 玉宁、写文章、视频切片、运营报表、妙记、分发、Soul文章、素材库、Soul派对技能流、派对Stream、创业派对Stream | `.cursor/skills/kalu-party-yuning-ops/SKILL.md` | 派对内容+飞书闭环;与 **Soul 派对技能流(Stream)** 规约同权;聚合运营类 Agent 依赖的 SKILL | -| K03 | **卡路·网站开发** | 永平、soul-api、管理端、小程序、用户管理、内容管理、全站修复、超级个体 | `.cursor/skills/kalu-party-soul-website-dev/SKILL.md` | 永平三端与部署;聚合网站类 Agent 与 change-checklist | +| K01 | **卡若创业派对(总控)** | 卡若创业派对、卡若派对、卡洛创业派对、派对总控、玉宁和网站分开 | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若创业派对_总控/SKILL.md` | 先判运营 vs 开发,再读 K02 或 K03 | +| K02 | **卡若·玉宁运营** | 玉宁、写文章、视频切片、运营报表、妙记、分发、Soul文章、素材库、Soul派对技能流、派对Stream、创业派对Stream | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若玉宁运营专线/SKILL.md` | 派对内容+飞书闭环;与 **Soul 派对技能流(Stream)** 规约同权 | +| K03 | **卡若·网站开发** | 永平、soul-api、管理端、小程序、用户管理、内容管理、全站修复、超级个体 | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若网站开发_永平三端/SKILL.md` | 永平三端与部署;聚合网站类 Agent 与 change-checklist | + +**薄入口(与 W11 / W17 配套,可选读)**:`Soul派对项目管理_Cursor入口` → `02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对项目管理_Cursor入口/SKILL.md`;`Soul派对运营报表_Cursor入口` → `02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对运营报表_Cursor入口/SKILL.md`。平台申诉 **Soul/抖音/小红书** 真源为 **W10b** `平台账号申诉解封/SKILL.md`(勿再拆到 `.cursor/skills/`)。 --- @@ -215,8 +223,8 @@ | 金 | 卡资 | 2 | 22 | | 水 | 卡人 | 4 | 14 | | 木 | 卡木 | 3 | 14 | -| 火 | 卡火 | 4 | 16 | +| 火 | 卡火 | 4 | 21 | | 土 | 卡土 | 4 | 9 | -| **合计** | **5** | **15** | **75** | +| **合计** | **5** | **15** | **80** | -> **卡路 Cursor 入口**:K01~K03 见上表「卡路项目簇」,不计入五行 75 技能合计。 +> **Soul / 卡若 Cursor 入口**:K01~K03 见上表「Soul技能归口」,不计入五行 80 技能合计。 diff --git a/_Soul运营技能包导出/README.txt b/_Soul运营技能包导出/README.txt deleted file mode 100644 index 3e6e3870..00000000 --- a/_Soul运营技能包导出/README.txt +++ /dev/null @@ -1,5 +0,0 @@ -Soul 运营全链路技能包:请在本机终端运行永平项目中的打包脚本,会在「下载」生成 zip。 - - python3 "/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/scripts/pack_soul_operation_skills.py" - -详细说明:一场soul的创业实验-永平/scripts/README_Soul运营技能包.md diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/.split_ok b/_Soul运营技能包导出/_upload_chunks_1m_sftp/.split_ok deleted file mode 100644 index 39247d3c..00000000 --- a/_Soul运营技能包导出/_upload_chunks_1m_sftp/.split_ok +++ /dev/null @@ -1 +0,0 @@ -275757515 \ No newline at end of file diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaa b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaa deleted file mode 100644 index e299454d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaa and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchab b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchab deleted file mode 100644 index 9340cbbe..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchab and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchac b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchac deleted file mode 100644 index c5b20758..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchac and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchad b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchad deleted file mode 100644 index f12bacab..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchad and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchae b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchae deleted file mode 100644 index fc6c6cd1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchae and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaf b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaf deleted file mode 100644 index 23987ba7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchag b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchag deleted file mode 100644 index 18ab5cd2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchag and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchah b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchah deleted file mode 100644 index 4450ee45..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchah and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchai b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchai deleted file mode 100644 index 31c03cf9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchai and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaj b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaj deleted file mode 100644 index 581c097e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchak b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchak deleted file mode 100644 index ba9d1ebf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchak and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchal b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchal deleted file mode 100644 index 25c512cc..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchal and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcham b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcham deleted file mode 100644 index 2536d49e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcham and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchan b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchan deleted file mode 100644 index 8570d0b4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchan and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchao b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchao deleted file mode 100644 index c6bb32cf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchao and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchap b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchap deleted file mode 100644 index ad764c60..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchap and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaq b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaq deleted file mode 100644 index a83cc19b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchar b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchar deleted file mode 100644 index 3eb094c7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchar and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchas b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchas deleted file mode 100644 index 50303e5a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchas and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchat b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchat deleted file mode 100644 index 120ce182..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchat and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchau b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchau deleted file mode 100644 index 236a7bb9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchau and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchav b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchav deleted file mode 100644 index 5436f690..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchav and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaw b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaw deleted file mode 100644 index 479a526d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchax b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchax deleted file mode 100644 index 08129fab..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchax and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchay b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchay deleted file mode 100644 index 639613b0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchay and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaz b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaz deleted file mode 100644 index 4c94a883..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchaz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchba b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchba deleted file mode 100644 index 91c81e44..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchba and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbb b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbb deleted file mode 100644 index 91b53f17..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbc b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbc deleted file mode 100644 index 43d8cc32..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbd b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbd deleted file mode 100644 index 0534e585..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbe b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbe deleted file mode 100644 index 7ba438b5..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbe and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbf b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbf deleted file mode 100644 index bc357c74..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbg b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbg deleted file mode 100644 index 10b67950..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbh b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbh deleted file mode 100644 index 44c001b5..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbi b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbi deleted file mode 100644 index 0809c9ca..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbj b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbj deleted file mode 100644 index 7053cb5d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbk b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbk deleted file mode 100644 index 1210c6b8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbl b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbl deleted file mode 100644 index 0aab6cd4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbm b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbm deleted file mode 100644 index e2d2c3e4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbn b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbn deleted file mode 100644 index dd4c9ba7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbo b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbo deleted file mode 100644 index c7f114ee..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbp b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbp deleted file mode 100644 index 02cc04f3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbq b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbq deleted file mode 100644 index b5c61cca..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbr b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbr deleted file mode 100644 index e0f5530f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbs b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbs deleted file mode 100644 index 07091d56..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbt b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbt deleted file mode 100644 index d59f803b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbu b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbu deleted file mode 100644 index 394b78a6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbv b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbv deleted file mode 100644 index a58114f3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbw b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbw deleted file mode 100644 index 343e38fc..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbx b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbx deleted file mode 100644 index 57138403..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchby b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchby deleted file mode 100644 index 6965fc95..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchby and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbz b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbz deleted file mode 100644 index 2ed4cf1c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchbz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchca b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchca deleted file mode 100644 index 0f8eb3c2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchca and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcb b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcb deleted file mode 100644 index 01db436a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcc b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcc deleted file mode 100644 index 108ba9d4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcd b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcd deleted file mode 100644 index 3eb185d4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchce b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchce deleted file mode 100644 index 1d194998..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchce and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcf b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcf deleted file mode 100644 index dd777c3a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcg b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcg deleted file mode 100644 index a278b612..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchch b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchch deleted file mode 100644 index 3ff27c1b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchch and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchci b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchci deleted file mode 100644 index 171eb6b9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchci and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcj b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcj deleted file mode 100644 index 9aab6a37..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchck b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchck deleted file mode 100644 index 199cf8ef..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchck and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcl b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcl deleted file mode 100644 index 13782830..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcm b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcm deleted file mode 100644 index 12791f86..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcn b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcn deleted file mode 100644 index ed1cd1e7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchco b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchco deleted file mode 100644 index 0c95b371..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchco and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcp b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcp deleted file mode 100644 index 00a1af04..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcq b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcq deleted file mode 100644 index ff5a4645..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcr b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcr deleted file mode 100644 index a759d69f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcs b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcs deleted file mode 100644 index 3b7a8d03..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchct b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchct deleted file mode 100644 index 0c52e41d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchct and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcu b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcu deleted file mode 100644 index b5dba3b2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcv b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcv deleted file mode 100644 index 80e33ccd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcw b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcw deleted file mode 100644 index 9e6b0ed0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcx b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcx deleted file mode 100644 index e524447a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcy b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcy deleted file mode 100644 index 0b5004b8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcz b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcz deleted file mode 100644 index dce9326f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchcz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchda b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchda deleted file mode 100644 index 882483b6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchda and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdb b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdb deleted file mode 100644 index 7083732f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdc b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdc deleted file mode 100644 index afcd2f19..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdd b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdd deleted file mode 100644 index 4191f0fb..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchde b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchde deleted file mode 100644 index e85e4b71..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchde and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdf b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdf deleted file mode 100644 index fe426545..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdg b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdg deleted file mode 100644 index 2793732e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdh b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdh deleted file mode 100644 index cb3a77a9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdi b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdi deleted file mode 100644 index 54f91b42..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdj b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdj deleted file mode 100644 index 76455b34..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdk b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdk deleted file mode 100644 index b657e81a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdl b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdl deleted file mode 100644 index e5c1d9c7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdm b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdm deleted file mode 100644 index 1ba0f68e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdn b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdn deleted file mode 100644 index 6e362ed1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdo b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdo deleted file mode 100644 index b893cdb7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdp b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdp deleted file mode 100644 index b1162107..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdq b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdq deleted file mode 100644 index b829c42c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdr b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdr deleted file mode 100644 index 9c8d8a2c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchds b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchds deleted file mode 100644 index 72dfa2d1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchds and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdt b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdt deleted file mode 100644 index d2c8daee..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdu b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdu deleted file mode 100644 index 80e6e77a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdv b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdv deleted file mode 100644 index c51e92c0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdw b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdw deleted file mode 100644 index 9e0e2fc1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdx b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdx deleted file mode 100644 index 99af965c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdy b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdy deleted file mode 100644 index 127faa86..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdz b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdz deleted file mode 100644 index cbfabef8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchdz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchea b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchea deleted file mode 100644 index 41ef0911..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchea and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheb b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheb deleted file mode 100644 index 663467e1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchec b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchec deleted file mode 100644 index 7d206033..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchec and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulched b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulched deleted file mode 100644 index 67970ffd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulched and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchee b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchee deleted file mode 100644 index a15a722a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchee and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchef b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchef deleted file mode 100644 index 01617caf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchef and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheg b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheg deleted file mode 100644 index 4612265a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheh b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheh deleted file mode 100644 index 80c504df..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchei b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchei deleted file mode 100644 index f418793b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchei and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchej b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchej deleted file mode 100644 index 4a104ba0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchej and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchek b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchek deleted file mode 100644 index 84884f4d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchek and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchel b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchel deleted file mode 100644 index b6ca7166..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchel and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchem b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchem deleted file mode 100644 index 6efead4b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchem and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchen b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchen deleted file mode 100644 index 1868b5f7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchen and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheo b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheo deleted file mode 100644 index ed8ae77a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchep b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchep deleted file mode 100644 index 40093b78..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchep and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheq b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheq deleted file mode 100644 index f2556647..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcher b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcher deleted file mode 100644 index 037fac25..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcher and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulches b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulches deleted file mode 100644 index 5e5291cd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulches and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchet b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchet deleted file mode 100644 index cf3a36f1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchet and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheu b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheu deleted file mode 100644 index 9602b92f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulcheu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchev b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchev deleted file mode 100644 index 4be1dab6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchev and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchew b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchew deleted file mode 100644 index 827cfae3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchew and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchex b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchex deleted file mode 100644 index 816666b7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchex and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchey b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchey deleted file mode 100644 index 71f3154c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchey and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchez b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchez deleted file mode 100644 index b0a40d6d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchez and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfa b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfa deleted file mode 100644 index fe67857d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfa and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfb b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfb deleted file mode 100644 index 9ce05a13..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfc b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfc deleted file mode 100644 index c2ea0068..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfd b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfd deleted file mode 100644 index 1185b0d3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfe b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfe deleted file mode 100644 index e0b16a64..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfe and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchff b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchff deleted file mode 100644 index 6982d45a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchff and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfg b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfg deleted file mode 100644 index e631ab15..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfh b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfh deleted file mode 100644 index 1df9c77e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfi b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfi deleted file mode 100644 index f76dabf5..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfj b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfj deleted file mode 100644 index e3f54a85..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfk b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfk deleted file mode 100644 index aac5bbbd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfl b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfl deleted file mode 100644 index 702fcddc..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfm b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfm deleted file mode 100644 index 9c8306c0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfn b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfn deleted file mode 100644 index e0b1f4d5..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfo b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfo deleted file mode 100644 index 6e49cd7a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfp b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfp deleted file mode 100644 index 83ff2efd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfq b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfq deleted file mode 100644 index fa095bfd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfr b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfr deleted file mode 100644 index 0cf05c1b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfs b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfs deleted file mode 100644 index 85f612a6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchft b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchft deleted file mode 100644 index 0b4cc631..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchft and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfu b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfu deleted file mode 100644 index db27adbf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfv b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfv deleted file mode 100644 index 920147fa..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfw b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfw deleted file mode 100644 index 132d81be..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfx b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfx deleted file mode 100644 index 41af4405..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfy b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfy deleted file mode 100644 index 81ed2c29..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfz b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfz deleted file mode 100644 index 7259c211..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchfz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchga b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchga deleted file mode 100644 index 5f91c663..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchga and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgb b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgb deleted file mode 100644 index 465c34eb..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgc b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgc deleted file mode 100644 index 58c21a12..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgd b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgd deleted file mode 100644 index 91ec6599..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchge b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchge deleted file mode 100644 index a4ce9a65..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchge and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgf b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgf deleted file mode 100644 index 68313649..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgg b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgg deleted file mode 100644 index 44f4d5fc..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgh b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgh deleted file mode 100644 index eaf6fcc4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgi b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgi deleted file mode 100644 index b63f1280..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgj b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgj deleted file mode 100644 index 5a7e7ed5..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgk b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgk deleted file mode 100644 index 3bfb52be..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgl b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgl deleted file mode 100644 index cdb1cd28..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgm b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgm deleted file mode 100644 index 8b6c998a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgn b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgn deleted file mode 100644 index 6f17c79a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgo b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgo deleted file mode 100644 index 974d8dec..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgp b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgp deleted file mode 100644 index 9044caf7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgq b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgq deleted file mode 100644 index 402b617b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgr b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgr deleted file mode 100644 index 518554a2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgs b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgs deleted file mode 100644 index 3ecf471c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgt b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgt deleted file mode 100644 index ec0319d6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgu b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgu deleted file mode 100644 index b0578d15..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgv b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgv deleted file mode 100644 index d0b8a7be..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgw b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgw deleted file mode 100644 index 5e6b7070..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgx b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgx deleted file mode 100644 index 06d3da92..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgy b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgy deleted file mode 100644 index 9a41341b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgz b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgz deleted file mode 100644 index 6e0ec65e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchgz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchha b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchha deleted file mode 100644 index ee6c44f8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchha and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhb b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhb deleted file mode 100644 index fc3094fb..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhc b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhc deleted file mode 100644 index c11a0917..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhd b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhd deleted file mode 100644 index 22e67bc6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhe b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhe deleted file mode 100644 index 61738e04..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhe and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhf b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhf deleted file mode 100644 index cb93b6f0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhg b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhg deleted file mode 100644 index 69473627..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhh b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhh deleted file mode 100644 index 8a969853..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhi b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhi deleted file mode 100644 index bba21857..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhj b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhj deleted file mode 100644 index 9606231f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhk b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhk deleted file mode 100644 index 1a63b109..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhl b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhl deleted file mode 100644 index 23a359ca..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhm b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhm deleted file mode 100644 index de2a3c05..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhn b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhn deleted file mode 100644 index 163be46e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchho b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchho deleted file mode 100644 index 563a5ee0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchho and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhp b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhp deleted file mode 100644 index 575df459..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhq b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhq deleted file mode 100644 index 52eceb52..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhr b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhr deleted file mode 100644 index 4b4b52c1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhs b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhs deleted file mode 100644 index 155f9ee9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchht b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchht deleted file mode 100644 index 1ac96575..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchht and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhu b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhu deleted file mode 100644 index 5941695c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhv b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhv deleted file mode 100644 index 50826022..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhw b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhw deleted file mode 100644 index dab6184d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhx b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhx deleted file mode 100644 index a816d9bf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhy b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhy deleted file mode 100644 index 18ef6e05..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhz b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhz deleted file mode 100644 index 48c1382d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchhz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchia b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchia deleted file mode 100644 index 6d3c523c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchia and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchib b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchib deleted file mode 100644 index 23f3a2af..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchib and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchic b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchic deleted file mode 100644 index 38063ee3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchic and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchid b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchid deleted file mode 100644 index 7b213690..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchid and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchie b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchie deleted file mode 100644 index 2caf89ec..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchie and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchif b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchif deleted file mode 100644 index fafcd422..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchif and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchig b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchig deleted file mode 100644 index 78e46f93..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchig and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchih b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchih deleted file mode 100644 index a1b58130..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchih and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchii b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchii deleted file mode 100644 index 8a148d2c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchii and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchij b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchij deleted file mode 100644 index c6ecc1f6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchij and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchik b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchik deleted file mode 100644 index 6676b4e1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchik and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchil b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchil deleted file mode 100644 index c0ada541..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchil and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchim b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchim deleted file mode 100644 index 78a473f4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchim and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchin b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchin deleted file mode 100644 index 713b9575..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchin and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchio b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchio deleted file mode 100644 index 104a087d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchio and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchip b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchip deleted file mode 100644 index f3847465..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchip and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiq b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiq deleted file mode 100644 index aab63d27..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchir b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchir deleted file mode 100644 index 90eb6c67..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchir and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchis b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchis deleted file mode 100644 index 33cedee1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchis and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchit b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchit deleted file mode 100644 index cdd30c7e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchit and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiu b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiu deleted file mode 100644 index db0eec84..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiv b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiv deleted file mode 100644 index 411af50f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiw b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiw deleted file mode 100644 index 91737ad0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchix b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchix deleted file mode 100644 index 937e2120..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchix and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiy b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiy deleted file mode 100644 index c90850a7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiz b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiz deleted file mode 100644 index 101a54e3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchiz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchja b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchja deleted file mode 100644 index fc839e7a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchja and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjb b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjb deleted file mode 100644 index 69dfe7c6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjc b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjc deleted file mode 100644 index 59a07561..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjd b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjd deleted file mode 100644 index eaeb2920..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchje b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchje deleted file mode 100644 index fd268108..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchje and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjf b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjf deleted file mode 100644 index f0891802..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjg b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjg deleted file mode 100644 index 25c7277a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjh b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjh deleted file mode 100644 index 8cd3d98a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchji b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchji deleted file mode 100644 index 87a07bce..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchji and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjj b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjj deleted file mode 100644 index 1278cb39..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjk b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjk deleted file mode 100644 index 667b0c16..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjl b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjl deleted file mode 100644 index 902957c1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjm b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjm deleted file mode 100644 index 7ffe24fc..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjn b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjn deleted file mode 100644 index 9ed361a7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjo b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjo deleted file mode 100644 index a193559a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjp b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjp deleted file mode 100644 index 74217e5d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjq b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjq deleted file mode 100644 index 52c2fc65..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjr b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjr deleted file mode 100644 index 5784c877..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjs b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjs deleted file mode 100644 index e66fa077..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjt b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjt deleted file mode 100644 index 8ee4c6a3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchju b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchju deleted file mode 100644 index db04b892..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchju and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjv b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjv deleted file mode 100644 index 709da558..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjw b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjw deleted file mode 100644 index ec299c5f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjx b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjx deleted file mode 100644 index e7cf47f8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjy b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjy deleted file mode 100644 index 3cc53c77..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjz b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjz deleted file mode 100644 index 241bd4d6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchjz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchka b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchka deleted file mode 100644 index 61d4fe55..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchka and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchkb b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchkb deleted file mode 100644 index 7f77bfe7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchkb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchkc b/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchkc deleted file mode 100644 index 5061614c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_1m_sftp/soulchkc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/.split_ok b/_Soul运营技能包导出/_upload_chunks_512k/.split_ok deleted file mode 100644 index 39247d3c..00000000 --- a/_Soul运营技能包导出/_upload_chunks_512k/.split_ok +++ /dev/null @@ -1 +0,0 @@ -275757515 \ No newline at end of file diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchaa b/_Soul运营技能包导出/_upload_chunks_512k/soulchaa deleted file mode 100644 index c0d8a4e4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchaa and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchab b/_Soul运营技能包导出/_upload_chunks_512k/soulchab deleted file mode 100644 index 31cc0e03..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchab and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchac b/_Soul运营技能包导出/_upload_chunks_512k/soulchac deleted file mode 100644 index 3792a6a3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchac and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchad b/_Soul运营技能包导出/_upload_chunks_512k/soulchad deleted file mode 100644 index ec8bb5ed..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchad and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchae b/_Soul运营技能包导出/_upload_chunks_512k/soulchae deleted file mode 100644 index 42bf0372..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchae and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchaf b/_Soul运营技能包导出/_upload_chunks_512k/soulchaf deleted file mode 100644 index 104aaee7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchaf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchag b/_Soul运营技能包导出/_upload_chunks_512k/soulchag deleted file mode 100644 index 8ce1b838..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchag and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchah b/_Soul运营技能包导出/_upload_chunks_512k/soulchah deleted file mode 100644 index a6b8d735..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchah and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchai b/_Soul运营技能包导出/_upload_chunks_512k/soulchai deleted file mode 100644 index 37221786..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchai and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchaj b/_Soul运营技能包导出/_upload_chunks_512k/soulchaj deleted file mode 100644 index 9c6ffe53..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchaj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchak b/_Soul运营技能包导出/_upload_chunks_512k/soulchak deleted file mode 100644 index 8e4cd1c3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchak and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchal b/_Soul运营技能包导出/_upload_chunks_512k/soulchal deleted file mode 100644 index 2e34c2b3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchal and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulcham b/_Soul运营技能包导出/_upload_chunks_512k/soulcham deleted file mode 100644 index d56fcff8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulcham and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchan b/_Soul运营技能包导出/_upload_chunks_512k/soulchan deleted file mode 100644 index afe2a8c0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchan and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchao b/_Soul运营技能包导出/_upload_chunks_512k/soulchao deleted file mode 100644 index e8bc98c3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchao and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchap b/_Soul运营技能包导出/_upload_chunks_512k/soulchap deleted file mode 100644 index 1ea0ed26..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchap and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchaq b/_Soul运营技能包导出/_upload_chunks_512k/soulchaq deleted file mode 100644 index a5b036b8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchaq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchar b/_Soul运营技能包导出/_upload_chunks_512k/soulchar deleted file mode 100644 index 8c37b3f6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchar and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchas b/_Soul运营技能包导出/_upload_chunks_512k/soulchas deleted file mode 100644 index 126ff7a4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchas and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchat b/_Soul运营技能包导出/_upload_chunks_512k/soulchat deleted file mode 100644 index 1bd5d3f7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchat and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchau b/_Soul运营技能包导出/_upload_chunks_512k/soulchau deleted file mode 100644 index 7550e1f7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchau and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchav b/_Soul运营技能包导出/_upload_chunks_512k/soulchav deleted file mode 100644 index be7262c2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchav and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchaw b/_Soul运营技能包导出/_upload_chunks_512k/soulchaw deleted file mode 100644 index 244c076b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchaw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchax b/_Soul运营技能包导出/_upload_chunks_512k/soulchax deleted file mode 100644 index b2055670..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchax and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchay b/_Soul运营技能包导出/_upload_chunks_512k/soulchay deleted file mode 100644 index e49b8eae..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchay and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchaz b/_Soul运营技能包导出/_upload_chunks_512k/soulchaz deleted file mode 100644 index fcce8c5d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchaz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchba b/_Soul运营技能包导出/_upload_chunks_512k/soulchba deleted file mode 100644 index f9cf8ef6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchba and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbb b/_Soul运营技能包导出/_upload_chunks_512k/soulchbb deleted file mode 100644 index de7d98b6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbc b/_Soul运营技能包导出/_upload_chunks_512k/soulchbc deleted file mode 100644 index 608d4ba8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbd b/_Soul运营技能包导出/_upload_chunks_512k/soulchbd deleted file mode 100644 index d732b5c8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbe b/_Soul运营技能包导出/_upload_chunks_512k/soulchbe deleted file mode 100644 index 2af958a3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbe and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbf b/_Soul运营技能包导出/_upload_chunks_512k/soulchbf deleted file mode 100644 index 980b65ec..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbg b/_Soul运营技能包导出/_upload_chunks_512k/soulchbg deleted file mode 100644 index 8cf2673f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbh b/_Soul运营技能包导出/_upload_chunks_512k/soulchbh deleted file mode 100644 index 8bdd577e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbi b/_Soul运营技能包导出/_upload_chunks_512k/soulchbi deleted file mode 100644 index 82ee53da..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbj b/_Soul运营技能包导出/_upload_chunks_512k/soulchbj deleted file mode 100644 index a8e1c898..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbk b/_Soul运营技能包导出/_upload_chunks_512k/soulchbk deleted file mode 100644 index c4e93c48..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbl b/_Soul运营技能包导出/_upload_chunks_512k/soulchbl deleted file mode 100644 index 474d6fd3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbm b/_Soul运营技能包导出/_upload_chunks_512k/soulchbm deleted file mode 100644 index 1d1bc182..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbn b/_Soul运营技能包导出/_upload_chunks_512k/soulchbn deleted file mode 100644 index 6f02beaf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbo b/_Soul运营技能包导出/_upload_chunks_512k/soulchbo deleted file mode 100644 index acf1f21d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbp b/_Soul运营技能包导出/_upload_chunks_512k/soulchbp deleted file mode 100644 index cae4173b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbq b/_Soul运营技能包导出/_upload_chunks_512k/soulchbq deleted file mode 100644 index 276bd19f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbr b/_Soul运营技能包导出/_upload_chunks_512k/soulchbr deleted file mode 100644 index de2fd54f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbs b/_Soul运营技能包导出/_upload_chunks_512k/soulchbs deleted file mode 100644 index ed399e87..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbt b/_Soul运营技能包导出/_upload_chunks_512k/soulchbt deleted file mode 100644 index 7f22d717..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbu b/_Soul运营技能包导出/_upload_chunks_512k/soulchbu deleted file mode 100644 index e0076ad8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbv b/_Soul运营技能包导出/_upload_chunks_512k/soulchbv deleted file mode 100644 index 2fdc9a68..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbw b/_Soul运营技能包导出/_upload_chunks_512k/soulchbw deleted file mode 100644 index b24a85d8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbx b/_Soul运营技能包导出/_upload_chunks_512k/soulchbx deleted file mode 100644 index 7c257929..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchby b/_Soul运营技能包导出/_upload_chunks_512k/soulchby deleted file mode 100644 index da8370aa..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchby and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchbz b/_Soul运营技能包导出/_upload_chunks_512k/soulchbz deleted file mode 100644 index 1243d4ab..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchbz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchca b/_Soul运营技能包导出/_upload_chunks_512k/soulchca deleted file mode 100644 index 4426fbec..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchca and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcb b/_Soul运营技能包导出/_upload_chunks_512k/soulchcb deleted file mode 100644 index 20772ab8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcc b/_Soul运营技能包导出/_upload_chunks_512k/soulchcc deleted file mode 100644 index 658713d7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcd b/_Soul运营技能包导出/_upload_chunks_512k/soulchcd deleted file mode 100644 index 73fd487b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchce b/_Soul运营技能包导出/_upload_chunks_512k/soulchce deleted file mode 100644 index 5c2a02fd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchce and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcf b/_Soul运营技能包导出/_upload_chunks_512k/soulchcf deleted file mode 100644 index c47df906..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcg b/_Soul运营技能包导出/_upload_chunks_512k/soulchcg deleted file mode 100644 index 7ae5557c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchch b/_Soul运营技能包导出/_upload_chunks_512k/soulchch deleted file mode 100644 index 99221964..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchch and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchci b/_Soul运营技能包导出/_upload_chunks_512k/soulchci deleted file mode 100644 index 3ccd7d40..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchci and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcj b/_Soul运营技能包导出/_upload_chunks_512k/soulchcj deleted file mode 100644 index b1e596f2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchck b/_Soul运营技能包导出/_upload_chunks_512k/soulchck deleted file mode 100644 index 751147bd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchck and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcl b/_Soul运营技能包导出/_upload_chunks_512k/soulchcl deleted file mode 100644 index 11a13a12..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcm b/_Soul运营技能包导出/_upload_chunks_512k/soulchcm deleted file mode 100644 index 63952d55..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcn b/_Soul运营技能包导出/_upload_chunks_512k/soulchcn deleted file mode 100644 index c09148df..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchco b/_Soul运营技能包导出/_upload_chunks_512k/soulchco deleted file mode 100644 index c7de7bd7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchco and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcp b/_Soul运营技能包导出/_upload_chunks_512k/soulchcp deleted file mode 100644 index 25657e6f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcq b/_Soul运营技能包导出/_upload_chunks_512k/soulchcq deleted file mode 100644 index 2b84e02e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcr b/_Soul运营技能包导出/_upload_chunks_512k/soulchcr deleted file mode 100644 index fc2ff3bf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcs b/_Soul运营技能包导出/_upload_chunks_512k/soulchcs deleted file mode 100644 index 121d04b6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchct b/_Soul运营技能包导出/_upload_chunks_512k/soulchct deleted file mode 100644 index d50d098a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchct and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcu b/_Soul运营技能包导出/_upload_chunks_512k/soulchcu deleted file mode 100644 index 242af947..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcv b/_Soul运营技能包导出/_upload_chunks_512k/soulchcv deleted file mode 100644 index 55979ff0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcw b/_Soul运营技能包导出/_upload_chunks_512k/soulchcw deleted file mode 100644 index 25fdf0c0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcx b/_Soul运营技能包导出/_upload_chunks_512k/soulchcx deleted file mode 100644 index a6813c54..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcy b/_Soul运营技能包导出/_upload_chunks_512k/soulchcy deleted file mode 100644 index 058b3d89..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchcz b/_Soul运营技能包导出/_upload_chunks_512k/soulchcz deleted file mode 100644 index 000f58c6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchcz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchda b/_Soul运营技能包导出/_upload_chunks_512k/soulchda deleted file mode 100644 index 03e097ff..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchda and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdb b/_Soul运营技能包导出/_upload_chunks_512k/soulchdb deleted file mode 100644 index 2c1155c3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdc b/_Soul运营技能包导出/_upload_chunks_512k/soulchdc deleted file mode 100644 index 6a599b06..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdd b/_Soul运营技能包导出/_upload_chunks_512k/soulchdd deleted file mode 100644 index 91fd4e01..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchde b/_Soul运营技能包导出/_upload_chunks_512k/soulchde deleted file mode 100644 index 2360c21e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchde and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdf b/_Soul运营技能包导出/_upload_chunks_512k/soulchdf deleted file mode 100644 index 2d8ace75..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdg b/_Soul运营技能包导出/_upload_chunks_512k/soulchdg deleted file mode 100644 index 3bf55a4b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdh b/_Soul运营技能包导出/_upload_chunks_512k/soulchdh deleted file mode 100644 index 56c971aa..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdi b/_Soul运营技能包导出/_upload_chunks_512k/soulchdi deleted file mode 100644 index bff46775..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdj b/_Soul运营技能包导出/_upload_chunks_512k/soulchdj deleted file mode 100644 index a5bf2a12..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdk b/_Soul运营技能包导出/_upload_chunks_512k/soulchdk deleted file mode 100644 index 85499fcd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdl b/_Soul运营技能包导出/_upload_chunks_512k/soulchdl deleted file mode 100644 index a6578a6b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdm b/_Soul运营技能包导出/_upload_chunks_512k/soulchdm deleted file mode 100644 index 21bd130e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdn b/_Soul运营技能包导出/_upload_chunks_512k/soulchdn deleted file mode 100644 index 722625f8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdo b/_Soul运营技能包导出/_upload_chunks_512k/soulchdo deleted file mode 100644 index 627d9260..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdp b/_Soul运营技能包导出/_upload_chunks_512k/soulchdp deleted file mode 100644 index 797b449d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdq b/_Soul运营技能包导出/_upload_chunks_512k/soulchdq deleted file mode 100644 index 1d86beaf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdr b/_Soul运营技能包导出/_upload_chunks_512k/soulchdr deleted file mode 100644 index 7a5b4975..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchds b/_Soul运营技能包导出/_upload_chunks_512k/soulchds deleted file mode 100644 index 43ad476f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchds and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdt b/_Soul运营技能包导出/_upload_chunks_512k/soulchdt deleted file mode 100644 index 4dc190ea..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdu b/_Soul运营技能包导出/_upload_chunks_512k/soulchdu deleted file mode 100644 index 3fdc2f99..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdv b/_Soul运营技能包导出/_upload_chunks_512k/soulchdv deleted file mode 100644 index b07a6b8b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdw b/_Soul运营技能包导出/_upload_chunks_512k/soulchdw deleted file mode 100644 index 335583cb..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdx b/_Soul运营技能包导出/_upload_chunks_512k/soulchdx deleted file mode 100644 index 89dc68fd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdy b/_Soul运营技能包导出/_upload_chunks_512k/soulchdy deleted file mode 100644 index b6a281d8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchdz b/_Soul运营技能包导出/_upload_chunks_512k/soulchdz deleted file mode 100644 index dbf958e5..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchdz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchea b/_Soul运营技能包导出/_upload_chunks_512k/soulchea deleted file mode 100644 index d8444501..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchea and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulcheb b/_Soul运营技能包导出/_upload_chunks_512k/soulcheb deleted file mode 100644 index e27246a2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulcheb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchec b/_Soul运营技能包导出/_upload_chunks_512k/soulchec deleted file mode 100644 index 6b916a10..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchec and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulched b/_Soul运营技能包导出/_upload_chunks_512k/soulched deleted file mode 100644 index 99a5b50d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulched and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchee b/_Soul运营技能包导出/_upload_chunks_512k/soulchee deleted file mode 100644 index eafc3fbe..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchee and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchef b/_Soul运营技能包导出/_upload_chunks_512k/soulchef deleted file mode 100644 index c1eeb9e6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchef and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulcheg b/_Soul运营技能包导出/_upload_chunks_512k/soulcheg deleted file mode 100644 index 94988588..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulcheg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulcheh b/_Soul运营技能包导出/_upload_chunks_512k/soulcheh deleted file mode 100644 index ed1513a2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulcheh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchei b/_Soul运营技能包导出/_upload_chunks_512k/soulchei deleted file mode 100644 index 7ccf1db2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchei and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchej b/_Soul运营技能包导出/_upload_chunks_512k/soulchej deleted file mode 100644 index d13b2c59..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchej and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchek b/_Soul运营技能包导出/_upload_chunks_512k/soulchek deleted file mode 100644 index db124733..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchek and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchel b/_Soul运营技能包导出/_upload_chunks_512k/soulchel deleted file mode 100644 index 8668040e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchel and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchem b/_Soul运营技能包导出/_upload_chunks_512k/soulchem deleted file mode 100644 index 6d877c1a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchem and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchen b/_Soul运营技能包导出/_upload_chunks_512k/soulchen deleted file mode 100644 index 3c99a8a2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchen and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulcheo b/_Soul运营技能包导出/_upload_chunks_512k/soulcheo deleted file mode 100644 index 67dd2d4f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulcheo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchep b/_Soul运营技能包导出/_upload_chunks_512k/soulchep deleted file mode 100644 index 45529008..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchep and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulcheq b/_Soul运营技能包导出/_upload_chunks_512k/soulcheq deleted file mode 100644 index 4e3817d9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulcheq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulcher b/_Soul运营技能包导出/_upload_chunks_512k/soulcher deleted file mode 100644 index 94331299..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulcher and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulches b/_Soul运营技能包导出/_upload_chunks_512k/soulches deleted file mode 100644 index 73fd6f4a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulches and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchet b/_Soul运营技能包导出/_upload_chunks_512k/soulchet deleted file mode 100644 index 6241f80d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchet and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulcheu b/_Soul运营技能包导出/_upload_chunks_512k/soulcheu deleted file mode 100644 index c034c69c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulcheu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchev b/_Soul运营技能包导出/_upload_chunks_512k/soulchev deleted file mode 100644 index a0941aed..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchev and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchew b/_Soul运营技能包导出/_upload_chunks_512k/soulchew deleted file mode 100644 index ecd6257a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchew and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchex b/_Soul运营技能包导出/_upload_chunks_512k/soulchex deleted file mode 100644 index e258b23b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchex and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchey b/_Soul运营技能包导出/_upload_chunks_512k/soulchey deleted file mode 100644 index 92a4dae4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchey and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchez b/_Soul运营技能包导出/_upload_chunks_512k/soulchez deleted file mode 100644 index 91bd051b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchez and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfa b/_Soul运营技能包导出/_upload_chunks_512k/soulchfa deleted file mode 100644 index 41ded50f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfa and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfb b/_Soul运营技能包导出/_upload_chunks_512k/soulchfb deleted file mode 100644 index 924ae8de..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfc b/_Soul运营技能包导出/_upload_chunks_512k/soulchfc deleted file mode 100644 index 2f19aee2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfd b/_Soul运营技能包导出/_upload_chunks_512k/soulchfd deleted file mode 100644 index 98266f03..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfe b/_Soul运营技能包导出/_upload_chunks_512k/soulchfe deleted file mode 100644 index e47aee50..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfe and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchff b/_Soul运营技能包导出/_upload_chunks_512k/soulchff deleted file mode 100644 index 2dc7ff92..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchff and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfg b/_Soul运营技能包导出/_upload_chunks_512k/soulchfg deleted file mode 100644 index 6319d265..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfh b/_Soul运营技能包导出/_upload_chunks_512k/soulchfh deleted file mode 100644 index 5a902b3d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfi b/_Soul运营技能包导出/_upload_chunks_512k/soulchfi deleted file mode 100644 index 7a3bbe95..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfj b/_Soul运营技能包导出/_upload_chunks_512k/soulchfj deleted file mode 100644 index 10deaed9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfk b/_Soul运营技能包导出/_upload_chunks_512k/soulchfk deleted file mode 100644 index b9a444ca..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfl b/_Soul运营技能包导出/_upload_chunks_512k/soulchfl deleted file mode 100644 index 1d9d1978..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfm b/_Soul运营技能包导出/_upload_chunks_512k/soulchfm deleted file mode 100644 index 0c513df0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfn b/_Soul运营技能包导出/_upload_chunks_512k/soulchfn deleted file mode 100644 index 9ff76859..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfo b/_Soul运营技能包导出/_upload_chunks_512k/soulchfo deleted file mode 100644 index fb22800b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfp b/_Soul运营技能包导出/_upload_chunks_512k/soulchfp deleted file mode 100644 index 057ecab0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfq b/_Soul运营技能包导出/_upload_chunks_512k/soulchfq deleted file mode 100644 index b6d33964..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfr b/_Soul运营技能包导出/_upload_chunks_512k/soulchfr deleted file mode 100644 index b9344038..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfs b/_Soul运营技能包导出/_upload_chunks_512k/soulchfs deleted file mode 100644 index 33b18fb7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchft b/_Soul运营技能包导出/_upload_chunks_512k/soulchft deleted file mode 100644 index e1032bda..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchft and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfu b/_Soul运营技能包导出/_upload_chunks_512k/soulchfu deleted file mode 100644 index 4c56fd9b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfv b/_Soul运营技能包导出/_upload_chunks_512k/soulchfv deleted file mode 100644 index 75bc52e7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfw b/_Soul运营技能包导出/_upload_chunks_512k/soulchfw deleted file mode 100644 index 9f3d0386..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfx b/_Soul运营技能包导出/_upload_chunks_512k/soulchfx deleted file mode 100644 index 2a7c515c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfy b/_Soul运营技能包导出/_upload_chunks_512k/soulchfy deleted file mode 100644 index 4c4b700c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchfz b/_Soul运营技能包导出/_upload_chunks_512k/soulchfz deleted file mode 100644 index 92bc4ae4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchfz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchga b/_Soul运营技能包导出/_upload_chunks_512k/soulchga deleted file mode 100644 index de1a232c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchga and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgb b/_Soul运营技能包导出/_upload_chunks_512k/soulchgb deleted file mode 100644 index 435977a5..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgc b/_Soul运营技能包导出/_upload_chunks_512k/soulchgc deleted file mode 100644 index b88a345d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgd b/_Soul运营技能包导出/_upload_chunks_512k/soulchgd deleted file mode 100644 index 969ca9f9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchge b/_Soul运营技能包导出/_upload_chunks_512k/soulchge deleted file mode 100644 index d63a25dc..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchge and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgf b/_Soul运营技能包导出/_upload_chunks_512k/soulchgf deleted file mode 100644 index 3dfcc166..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgg b/_Soul运营技能包导出/_upload_chunks_512k/soulchgg deleted file mode 100644 index a8d5f785..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgh b/_Soul运营技能包导出/_upload_chunks_512k/soulchgh deleted file mode 100644 index 02a0ac37..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgi b/_Soul运营技能包导出/_upload_chunks_512k/soulchgi deleted file mode 100644 index 51761465..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgj b/_Soul运营技能包导出/_upload_chunks_512k/soulchgj deleted file mode 100644 index b23ad965..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgk b/_Soul运营技能包导出/_upload_chunks_512k/soulchgk deleted file mode 100644 index bac45aee..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgl b/_Soul运营技能包导出/_upload_chunks_512k/soulchgl deleted file mode 100644 index 2c1b62f4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgm b/_Soul运营技能包导出/_upload_chunks_512k/soulchgm deleted file mode 100644 index f4fd3c99..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgn b/_Soul运营技能包导出/_upload_chunks_512k/soulchgn deleted file mode 100644 index d21e2614..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgo b/_Soul运营技能包导出/_upload_chunks_512k/soulchgo deleted file mode 100644 index cd19dbe2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgp b/_Soul运营技能包导出/_upload_chunks_512k/soulchgp deleted file mode 100644 index acae57f7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgq b/_Soul运营技能包导出/_upload_chunks_512k/soulchgq deleted file mode 100644 index bf7fa1d7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgr b/_Soul运营技能包导出/_upload_chunks_512k/soulchgr deleted file mode 100644 index 5948c88d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgs b/_Soul运营技能包导出/_upload_chunks_512k/soulchgs deleted file mode 100644 index 01f87692..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgt b/_Soul运营技能包导出/_upload_chunks_512k/soulchgt deleted file mode 100644 index 672ed5c0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgu b/_Soul运营技能包导出/_upload_chunks_512k/soulchgu deleted file mode 100644 index 4fff1dc0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgv b/_Soul运营技能包导出/_upload_chunks_512k/soulchgv deleted file mode 100644 index d01c5996..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgw b/_Soul运营技能包导出/_upload_chunks_512k/soulchgw deleted file mode 100644 index db0f5771..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgx b/_Soul运营技能包导出/_upload_chunks_512k/soulchgx deleted file mode 100644 index 69797d1d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgy b/_Soul运营技能包导出/_upload_chunks_512k/soulchgy deleted file mode 100644 index f51c0d04..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchgz b/_Soul运营技能包导出/_upload_chunks_512k/soulchgz deleted file mode 100644 index 58752c48..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchgz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchha b/_Soul运营技能包导出/_upload_chunks_512k/soulchha deleted file mode 100644 index 2f89c733..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchha and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhb b/_Soul运营技能包导出/_upload_chunks_512k/soulchhb deleted file mode 100644 index 490750df..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhc b/_Soul运营技能包导出/_upload_chunks_512k/soulchhc deleted file mode 100644 index 171aaa7b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhd b/_Soul运营技能包导出/_upload_chunks_512k/soulchhd deleted file mode 100644 index 86608270..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhe b/_Soul运营技能包导出/_upload_chunks_512k/soulchhe deleted file mode 100644 index 5821db5f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhe and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhf b/_Soul运营技能包导出/_upload_chunks_512k/soulchhf deleted file mode 100644 index dab9f435..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhg b/_Soul运营技能包导出/_upload_chunks_512k/soulchhg deleted file mode 100644 index a20704c8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhh b/_Soul运营技能包导出/_upload_chunks_512k/soulchhh deleted file mode 100644 index 711c2a0c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhi b/_Soul运营技能包导出/_upload_chunks_512k/soulchhi deleted file mode 100644 index 4bbc2b68..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhj b/_Soul运营技能包导出/_upload_chunks_512k/soulchhj deleted file mode 100644 index 2f436215..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhk b/_Soul运营技能包导出/_upload_chunks_512k/soulchhk deleted file mode 100644 index bd702b8f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhl b/_Soul运营技能包导出/_upload_chunks_512k/soulchhl deleted file mode 100644 index 84039b43..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhm b/_Soul运营技能包导出/_upload_chunks_512k/soulchhm deleted file mode 100644 index efe85dbd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhn b/_Soul运营技能包导出/_upload_chunks_512k/soulchhn deleted file mode 100644 index 9f1b726b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchho b/_Soul运营技能包导出/_upload_chunks_512k/soulchho deleted file mode 100644 index d13a312a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchho and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhp b/_Soul运营技能包导出/_upload_chunks_512k/soulchhp deleted file mode 100644 index 8ea8259b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhq b/_Soul运营技能包导出/_upload_chunks_512k/soulchhq deleted file mode 100644 index 0914f2f0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhr b/_Soul运营技能包导出/_upload_chunks_512k/soulchhr deleted file mode 100644 index 5d976b48..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhs b/_Soul运营技能包导出/_upload_chunks_512k/soulchhs deleted file mode 100644 index b4eab98a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchht b/_Soul运营技能包导出/_upload_chunks_512k/soulchht deleted file mode 100644 index ee9463f7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchht and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhu b/_Soul运营技能包导出/_upload_chunks_512k/soulchhu deleted file mode 100644 index 3f8237d0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhv b/_Soul运营技能包导出/_upload_chunks_512k/soulchhv deleted file mode 100644 index d6bdfb57..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhw b/_Soul运营技能包导出/_upload_chunks_512k/soulchhw deleted file mode 100644 index 0018cde2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhx b/_Soul运营技能包导出/_upload_chunks_512k/soulchhx deleted file mode 100644 index 01a02f4c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhy b/_Soul运营技能包导出/_upload_chunks_512k/soulchhy deleted file mode 100644 index e47b21d9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchhz b/_Soul运营技能包导出/_upload_chunks_512k/soulchhz deleted file mode 100644 index ce1db718..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchhz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchia b/_Soul运营技能包导出/_upload_chunks_512k/soulchia deleted file mode 100644 index 7453d714..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchia and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchib b/_Soul运营技能包导出/_upload_chunks_512k/soulchib deleted file mode 100644 index 00a17e7d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchib and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchic b/_Soul运营技能包导出/_upload_chunks_512k/soulchic deleted file mode 100644 index c048966f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchic and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchid b/_Soul运营技能包导出/_upload_chunks_512k/soulchid deleted file mode 100644 index 19636630..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchid and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchie b/_Soul运营技能包导出/_upload_chunks_512k/soulchie deleted file mode 100644 index 56109387..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchie and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchif b/_Soul运营技能包导出/_upload_chunks_512k/soulchif deleted file mode 100644 index 3576c4eb..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchif and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchig b/_Soul运营技能包导出/_upload_chunks_512k/soulchig deleted file mode 100644 index bee11035..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchig and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchih b/_Soul运营技能包导出/_upload_chunks_512k/soulchih deleted file mode 100644 index 3c5748a5..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchih and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchii b/_Soul运营技能包导出/_upload_chunks_512k/soulchii deleted file mode 100644 index eea9664f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchii and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchij b/_Soul运营技能包导出/_upload_chunks_512k/soulchij deleted file mode 100644 index 21d744f3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchij and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchik b/_Soul运营技能包导出/_upload_chunks_512k/soulchik deleted file mode 100644 index f8c135b2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchik and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchil b/_Soul运营技能包导出/_upload_chunks_512k/soulchil deleted file mode 100644 index ddc4fe4a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchil and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchim b/_Soul运营技能包导出/_upload_chunks_512k/soulchim deleted file mode 100644 index 27a2190c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchim and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchin b/_Soul运营技能包导出/_upload_chunks_512k/soulchin deleted file mode 100644 index 491714f8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchin and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchio b/_Soul运营技能包导出/_upload_chunks_512k/soulchio deleted file mode 100644 index 346af5e8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchio and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchip b/_Soul运营技能包导出/_upload_chunks_512k/soulchip deleted file mode 100644 index 8b9fa8a8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchip and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchiq b/_Soul运营技能包导出/_upload_chunks_512k/soulchiq deleted file mode 100644 index 796dba2f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchiq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchir b/_Soul运营技能包导出/_upload_chunks_512k/soulchir deleted file mode 100644 index 2cf113ea..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchir and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchis b/_Soul运营技能包导出/_upload_chunks_512k/soulchis deleted file mode 100644 index 78ec219c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchis and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchit b/_Soul运营技能包导出/_upload_chunks_512k/soulchit deleted file mode 100644 index 5cd08f77..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchit and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchiu b/_Soul运营技能包导出/_upload_chunks_512k/soulchiu deleted file mode 100644 index 1e77c494..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchiu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchiv b/_Soul运营技能包导出/_upload_chunks_512k/soulchiv deleted file mode 100644 index 38360020..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchiv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchiw b/_Soul运营技能包导出/_upload_chunks_512k/soulchiw deleted file mode 100644 index e7b02b0c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchiw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchix b/_Soul运营技能包导出/_upload_chunks_512k/soulchix deleted file mode 100644 index f2e86597..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchix and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchiy b/_Soul运营技能包导出/_upload_chunks_512k/soulchiy deleted file mode 100644 index 93715f61..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchiy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchiz b/_Soul运营技能包导出/_upload_chunks_512k/soulchiz deleted file mode 100644 index bf888db6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchiz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchja b/_Soul运营技能包导出/_upload_chunks_512k/soulchja deleted file mode 100644 index 429510c6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchja and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjb b/_Soul运营技能包导出/_upload_chunks_512k/soulchjb deleted file mode 100644 index 27eccde5..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjc b/_Soul运营技能包导出/_upload_chunks_512k/soulchjc deleted file mode 100644 index e7425a44..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjd b/_Soul运营技能包导出/_upload_chunks_512k/soulchjd deleted file mode 100644 index a74c7125..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchje b/_Soul运营技能包导出/_upload_chunks_512k/soulchje deleted file mode 100644 index c238896f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchje and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjf b/_Soul运营技能包导出/_upload_chunks_512k/soulchjf deleted file mode 100644 index 24c2184f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjg b/_Soul运营技能包导出/_upload_chunks_512k/soulchjg deleted file mode 100644 index 5ba9099a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjh b/_Soul运营技能包导出/_upload_chunks_512k/soulchjh deleted file mode 100644 index e9dafa9d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchji b/_Soul运营技能包导出/_upload_chunks_512k/soulchji deleted file mode 100644 index 317f8b6c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchji and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjj b/_Soul运营技能包导出/_upload_chunks_512k/soulchjj deleted file mode 100644 index f5065b15..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjk b/_Soul运营技能包导出/_upload_chunks_512k/soulchjk deleted file mode 100644 index a70b5a0a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjl b/_Soul运营技能包导出/_upload_chunks_512k/soulchjl deleted file mode 100644 index e0430177..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjm b/_Soul运营技能包导出/_upload_chunks_512k/soulchjm deleted file mode 100644 index 5a97502d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjn b/_Soul运营技能包导出/_upload_chunks_512k/soulchjn deleted file mode 100644 index 2cce4f34..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjo b/_Soul运营技能包导出/_upload_chunks_512k/soulchjo deleted file mode 100644 index 71163842..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjp b/_Soul运营技能包导出/_upload_chunks_512k/soulchjp deleted file mode 100644 index 1d51f75f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjq b/_Soul运营技能包导出/_upload_chunks_512k/soulchjq deleted file mode 100644 index 0ec760bd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjr b/_Soul运营技能包导出/_upload_chunks_512k/soulchjr deleted file mode 100644 index 6cb98d6c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjs b/_Soul运营技能包导出/_upload_chunks_512k/soulchjs deleted file mode 100644 index c955b3ed..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjt b/_Soul运营技能包导出/_upload_chunks_512k/soulchjt deleted file mode 100644 index 4f2bc4b1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchju b/_Soul运营技能包导出/_upload_chunks_512k/soulchju deleted file mode 100644 index 3d86ff79..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchju and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjv b/_Soul运营技能包导出/_upload_chunks_512k/soulchjv deleted file mode 100644 index 3072758c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjw b/_Soul运营技能包导出/_upload_chunks_512k/soulchjw deleted file mode 100644 index c178beb1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjx b/_Soul运营技能包导出/_upload_chunks_512k/soulchjx deleted file mode 100644 index 5e7decc7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjy b/_Soul运营技能包导出/_upload_chunks_512k/soulchjy deleted file mode 100644 index 346193a8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchjz b/_Soul运营技能包导出/_upload_chunks_512k/soulchjz deleted file mode 100644 index 0b558dfc..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchjz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchka b/_Soul运营技能包导出/_upload_chunks_512k/soulchka deleted file mode 100644 index 146a8932..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchka and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkb b/_Soul运营技能包导出/_upload_chunks_512k/soulchkb deleted file mode 100644 index 872da98f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkc b/_Soul运营技能包导出/_upload_chunks_512k/soulchkc deleted file mode 100644 index 5de4feee..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkd b/_Soul运营技能包导出/_upload_chunks_512k/soulchkd deleted file mode 100644 index 9c259a0a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchke b/_Soul运营技能包导出/_upload_chunks_512k/soulchke deleted file mode 100644 index e447eb69..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchke and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkf b/_Soul运营技能包导出/_upload_chunks_512k/soulchkf deleted file mode 100644 index 865da40e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkg b/_Soul运营技能包导出/_upload_chunks_512k/soulchkg deleted file mode 100644 index 7956f8da..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkh b/_Soul运营技能包导出/_upload_chunks_512k/soulchkh deleted file mode 100644 index 4adc7b15..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchki b/_Soul运营技能包导出/_upload_chunks_512k/soulchki deleted file mode 100644 index 36252882..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchki and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkj b/_Soul运营技能包导出/_upload_chunks_512k/soulchkj deleted file mode 100644 index 5c1f40aa..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkk b/_Soul运营技能包导出/_upload_chunks_512k/soulchkk deleted file mode 100644 index 27b959dd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkl b/_Soul运营技能包导出/_upload_chunks_512k/soulchkl deleted file mode 100644 index d20875e3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkm b/_Soul运营技能包导出/_upload_chunks_512k/soulchkm deleted file mode 100644 index 2fddae08..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkn b/_Soul运营技能包导出/_upload_chunks_512k/soulchkn deleted file mode 100644 index b1f8b740..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchko b/_Soul运营技能包导出/_upload_chunks_512k/soulchko deleted file mode 100644 index dbd1a3c2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchko and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkp b/_Soul运营技能包导出/_upload_chunks_512k/soulchkp deleted file mode 100644 index a5e44985..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkq b/_Soul运营技能包导出/_upload_chunks_512k/soulchkq deleted file mode 100644 index 7d5729dc..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkr b/_Soul运营技能包导出/_upload_chunks_512k/soulchkr deleted file mode 100644 index fb94e2e3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchks b/_Soul运营技能包导出/_upload_chunks_512k/soulchks deleted file mode 100644 index 1cdd2509..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchks and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkt b/_Soul运营技能包导出/_upload_chunks_512k/soulchkt deleted file mode 100644 index 9545a108..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchku b/_Soul运营技能包导出/_upload_chunks_512k/soulchku deleted file mode 100644 index 094dce01..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchku and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkv b/_Soul运营技能包导出/_upload_chunks_512k/soulchkv deleted file mode 100644 index 3af587b9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkw b/_Soul运营技能包导出/_upload_chunks_512k/soulchkw deleted file mode 100644 index 4242f36d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkx b/_Soul运营技能包导出/_upload_chunks_512k/soulchkx deleted file mode 100644 index 4359af19..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchky b/_Soul运营技能包导出/_upload_chunks_512k/soulchky deleted file mode 100644 index 1ef0d588..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchky and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchkz b/_Soul运营技能包导出/_upload_chunks_512k/soulchkz deleted file mode 100644 index 6bfd574b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchkz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchla b/_Soul运营技能包导出/_upload_chunks_512k/soulchla deleted file mode 100644 index 7b365163..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchla and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlb b/_Soul运营技能包导出/_upload_chunks_512k/soulchlb deleted file mode 100644 index e16def57..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlc b/_Soul运营技能包导出/_upload_chunks_512k/soulchlc deleted file mode 100644 index ce8b1e79..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchld b/_Soul运营技能包导出/_upload_chunks_512k/soulchld deleted file mode 100644 index 10b2f3b7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchld and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchle b/_Soul运营技能包导出/_upload_chunks_512k/soulchle deleted file mode 100644 index b2750716..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchle and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlf b/_Soul运营技能包导出/_upload_chunks_512k/soulchlf deleted file mode 100644 index a0acd803..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlg b/_Soul运营技能包导出/_upload_chunks_512k/soulchlg deleted file mode 100644 index 662f88a1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlh b/_Soul运营技能包导出/_upload_chunks_512k/soulchlh deleted file mode 100644 index 2a495902..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchli b/_Soul运营技能包导出/_upload_chunks_512k/soulchli deleted file mode 100644 index f3e2263f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchli and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlj b/_Soul运营技能包导出/_upload_chunks_512k/soulchlj deleted file mode 100644 index af29ea89..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlk b/_Soul运营技能包导出/_upload_chunks_512k/soulchlk deleted file mode 100644 index 99ea299c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchll b/_Soul运营技能包导出/_upload_chunks_512k/soulchll deleted file mode 100644 index 6ab74233..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchll and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlm b/_Soul运营技能包导出/_upload_chunks_512k/soulchlm deleted file mode 100644 index 1f44ecf0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchln b/_Soul运营技能包导出/_upload_chunks_512k/soulchln deleted file mode 100644 index 961595d0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchln and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlo b/_Soul运营技能包导出/_upload_chunks_512k/soulchlo deleted file mode 100644 index 03ec58be..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlp b/_Soul运营技能包导出/_upload_chunks_512k/soulchlp deleted file mode 100644 index d4e60a19..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlq b/_Soul运营技能包导出/_upload_chunks_512k/soulchlq deleted file mode 100644 index 3a336c02..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlr b/_Soul运营技能包导出/_upload_chunks_512k/soulchlr deleted file mode 100644 index 93fe39ee..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchls b/_Soul运营技能包导出/_upload_chunks_512k/soulchls deleted file mode 100644 index 27fb66cb..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchls and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlt b/_Soul运营技能包导出/_upload_chunks_512k/soulchlt deleted file mode 100644 index 6eac1aaf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlu b/_Soul运营技能包导出/_upload_chunks_512k/soulchlu deleted file mode 100644 index d81b179a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlv b/_Soul运营技能包导出/_upload_chunks_512k/soulchlv deleted file mode 100644 index 7c4bf98c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlw b/_Soul运营技能包导出/_upload_chunks_512k/soulchlw deleted file mode 100644 index 29af568d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlx b/_Soul运营技能包导出/_upload_chunks_512k/soulchlx deleted file mode 100644 index 4ef7ae72..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchly b/_Soul运营技能包导出/_upload_chunks_512k/soulchly deleted file mode 100644 index 92dab90e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchly and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchlz b/_Soul运营技能包导出/_upload_chunks_512k/soulchlz deleted file mode 100644 index 818c3914..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchlz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchma b/_Soul运营技能包导出/_upload_chunks_512k/soulchma deleted file mode 100644 index 3e25a868..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchma and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmb b/_Soul运营技能包导出/_upload_chunks_512k/soulchmb deleted file mode 100644 index e02cc841..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmc b/_Soul运营技能包导出/_upload_chunks_512k/soulchmc deleted file mode 100644 index 5021f93a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmd b/_Soul运营技能包导出/_upload_chunks_512k/soulchmd deleted file mode 100644 index ede3cfa4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchme b/_Soul运营技能包导出/_upload_chunks_512k/soulchme deleted file mode 100644 index ddb3ac53..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchme and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmf b/_Soul运营技能包导出/_upload_chunks_512k/soulchmf deleted file mode 100644 index b3e09f49..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmg b/_Soul运营技能包导出/_upload_chunks_512k/soulchmg deleted file mode 100644 index dcbdf324..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmh b/_Soul运营技能包导出/_upload_chunks_512k/soulchmh deleted file mode 100644 index 3c9abd4e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmi b/_Soul运营技能包导出/_upload_chunks_512k/soulchmi deleted file mode 100644 index ad0701c2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmj b/_Soul运营技能包导出/_upload_chunks_512k/soulchmj deleted file mode 100644 index 1540a8a7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmk b/_Soul运营技能包导出/_upload_chunks_512k/soulchmk deleted file mode 100644 index c33ba442..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchml b/_Soul运营技能包导出/_upload_chunks_512k/soulchml deleted file mode 100644 index 64ae1984..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchml and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmm b/_Soul运营技能包导出/_upload_chunks_512k/soulchmm deleted file mode 100644 index 892936dd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmn b/_Soul运营技能包导出/_upload_chunks_512k/soulchmn deleted file mode 100644 index 4cd5210e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmo b/_Soul运营技能包导出/_upload_chunks_512k/soulchmo deleted file mode 100644 index 2c0d6ae1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmp b/_Soul运营技能包导出/_upload_chunks_512k/soulchmp deleted file mode 100644 index 6725d5c8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmq b/_Soul运营技能包导出/_upload_chunks_512k/soulchmq deleted file mode 100644 index 500fae2e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmr b/_Soul运营技能包导出/_upload_chunks_512k/soulchmr deleted file mode 100644 index 6cbef89b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchms b/_Soul运营技能包导出/_upload_chunks_512k/soulchms deleted file mode 100644 index faec7fa4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchms and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmt b/_Soul运营技能包导出/_upload_chunks_512k/soulchmt deleted file mode 100644 index b59536f9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmu b/_Soul运营技能包导出/_upload_chunks_512k/soulchmu deleted file mode 100644 index 03bcace6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmv b/_Soul运营技能包导出/_upload_chunks_512k/soulchmv deleted file mode 100644 index df6fa62d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmw b/_Soul运营技能包导出/_upload_chunks_512k/soulchmw deleted file mode 100644 index c767cabc..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmx b/_Soul运营技能包导出/_upload_chunks_512k/soulchmx deleted file mode 100644 index 92f38dbf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmy b/_Soul运营技能包导出/_upload_chunks_512k/soulchmy deleted file mode 100644 index b766abc7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchmz b/_Soul运营技能包导出/_upload_chunks_512k/soulchmz deleted file mode 100644 index c9758089..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchmz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchna b/_Soul运营技能包导出/_upload_chunks_512k/soulchna deleted file mode 100644 index d3877994..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchna and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnb b/_Soul运营技能包导出/_upload_chunks_512k/soulchnb deleted file mode 100644 index 396a2938..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnc b/_Soul运营技能包导出/_upload_chunks_512k/soulchnc deleted file mode 100644 index 5e3fcdc5..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnd b/_Soul运营技能包导出/_upload_chunks_512k/soulchnd deleted file mode 100644 index 381e539b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchne b/_Soul运营技能包导出/_upload_chunks_512k/soulchne deleted file mode 100644 index 8282b8dd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchne and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnf b/_Soul运营技能包导出/_upload_chunks_512k/soulchnf deleted file mode 100644 index afc168fd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchng b/_Soul运营技能包导出/_upload_chunks_512k/soulchng deleted file mode 100644 index dda41c2d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchng and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnh b/_Soul运营技能包导出/_upload_chunks_512k/soulchnh deleted file mode 100644 index 3e33eeaa..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchni b/_Soul运营技能包导出/_upload_chunks_512k/soulchni deleted file mode 100644 index 01621148..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchni and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnj b/_Soul运营技能包导出/_upload_chunks_512k/soulchnj deleted file mode 100644 index c13e7d7b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnk b/_Soul运营技能包导出/_upload_chunks_512k/soulchnk deleted file mode 100644 index 15ae2016..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnl b/_Soul运营技能包导出/_upload_chunks_512k/soulchnl deleted file mode 100644 index f331a2da..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnm b/_Soul运营技能包导出/_upload_chunks_512k/soulchnm deleted file mode 100644 index b56ba56d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnn b/_Soul运营技能包导出/_upload_chunks_512k/soulchnn deleted file mode 100644 index abf496b0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchno b/_Soul运营技能包导出/_upload_chunks_512k/soulchno deleted file mode 100644 index c5c28fc4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchno and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnp b/_Soul运营技能包导出/_upload_chunks_512k/soulchnp deleted file mode 100644 index c79ebdf2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnq b/_Soul运营技能包导出/_upload_chunks_512k/soulchnq deleted file mode 100644 index 194d808e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnr b/_Soul运营技能包导出/_upload_chunks_512k/soulchnr deleted file mode 100644 index 1f13d2cf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchns b/_Soul运营技能包导出/_upload_chunks_512k/soulchns deleted file mode 100644 index 0b39a815..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchns and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnt b/_Soul运营技能包导出/_upload_chunks_512k/soulchnt deleted file mode 100644 index 47d66f55..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnu b/_Soul运营技能包导出/_upload_chunks_512k/soulchnu deleted file mode 100644 index cec64a56..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnv b/_Soul运营技能包导出/_upload_chunks_512k/soulchnv deleted file mode 100644 index bdf86bb6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnw b/_Soul运营技能包导出/_upload_chunks_512k/soulchnw deleted file mode 100644 index c468dbb7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnx b/_Soul运营技能包导出/_upload_chunks_512k/soulchnx deleted file mode 100644 index 2288fe1e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchny b/_Soul运营技能包导出/_upload_chunks_512k/soulchny deleted file mode 100644 index a0987948..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchny and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchnz b/_Soul运营技能包导出/_upload_chunks_512k/soulchnz deleted file mode 100644 index 9531a328..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchnz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchoa b/_Soul运营技能包导出/_upload_chunks_512k/soulchoa deleted file mode 100644 index 17b0ff4a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchoa and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchob b/_Soul运营技能包导出/_upload_chunks_512k/soulchob deleted file mode 100644 index d68dec1d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchob and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchoc b/_Soul运营技能包导出/_upload_chunks_512k/soulchoc deleted file mode 100644 index a53ecdda..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchoc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchod b/_Soul运营技能包导出/_upload_chunks_512k/soulchod deleted file mode 100644 index 382f5370..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchod and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchoe b/_Soul运营技能包导出/_upload_chunks_512k/soulchoe deleted file mode 100644 index 29d2287c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchoe and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchof b/_Soul运营技能包导出/_upload_chunks_512k/soulchof deleted file mode 100644 index 3fac3aa2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchof and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchog b/_Soul运营技能包导出/_upload_chunks_512k/soulchog deleted file mode 100644 index 847b2b93..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchog and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchoh b/_Soul运营技能包导出/_upload_chunks_512k/soulchoh deleted file mode 100644 index f81daad3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchoh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchoi b/_Soul运营技能包导出/_upload_chunks_512k/soulchoi deleted file mode 100644 index 215ee7d1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchoi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchoj b/_Soul运营技能包导出/_upload_chunks_512k/soulchoj deleted file mode 100644 index fa3eab30..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchoj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchok b/_Soul运营技能包导出/_upload_chunks_512k/soulchok deleted file mode 100644 index 7723d65a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchok and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchol b/_Soul运营技能包导出/_upload_chunks_512k/soulchol deleted file mode 100644 index d5909de3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchol and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchom b/_Soul运营技能包导出/_upload_chunks_512k/soulchom deleted file mode 100644 index 24a450c0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchom and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchon b/_Soul运营技能包导出/_upload_chunks_512k/soulchon deleted file mode 100644 index bd45e50c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchon and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchoo b/_Soul运营技能包导出/_upload_chunks_512k/soulchoo deleted file mode 100644 index 2a8f7f9c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchoo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchop b/_Soul运营技能包导出/_upload_chunks_512k/soulchop deleted file mode 100644 index 57505cd4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchop and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchoq b/_Soul运营技能包导出/_upload_chunks_512k/soulchoq deleted file mode 100644 index 66572606..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchoq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchor b/_Soul运营技能包导出/_upload_chunks_512k/soulchor deleted file mode 100644 index 30c59fd8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchor and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchos b/_Soul运营技能包导出/_upload_chunks_512k/soulchos deleted file mode 100644 index 539de358..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchos and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchot b/_Soul运营技能包导出/_upload_chunks_512k/soulchot deleted file mode 100644 index 47034a93..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchot and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchou b/_Soul运营技能包导出/_upload_chunks_512k/soulchou deleted file mode 100644 index c004c07e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchou and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchov b/_Soul运营技能包导出/_upload_chunks_512k/soulchov deleted file mode 100644 index 34e85094..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchov and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchow b/_Soul运营技能包导出/_upload_chunks_512k/soulchow deleted file mode 100644 index c77a6f60..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchow and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchox b/_Soul运营技能包导出/_upload_chunks_512k/soulchox deleted file mode 100644 index 60ec78fc..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchox and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchoy b/_Soul运营技能包导出/_upload_chunks_512k/soulchoy deleted file mode 100644 index f0f11367..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchoy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchoz b/_Soul运营技能包导出/_upload_chunks_512k/soulchoz deleted file mode 100644 index 7c9273b2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchoz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpa b/_Soul运营技能包导出/_upload_chunks_512k/soulchpa deleted file mode 100644 index 4bea5f67..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpa and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpb b/_Soul运营技能包导出/_upload_chunks_512k/soulchpb deleted file mode 100644 index 3dbcead2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpc b/_Soul运营技能包导出/_upload_chunks_512k/soulchpc deleted file mode 100644 index d1f8b63d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpd b/_Soul运营技能包导出/_upload_chunks_512k/soulchpd deleted file mode 100644 index d5424adf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpe b/_Soul运营技能包导出/_upload_chunks_512k/soulchpe deleted file mode 100644 index 3901c3d4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpe and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpf b/_Soul运营技能包导出/_upload_chunks_512k/soulchpf deleted file mode 100644 index 80e27e14..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpg b/_Soul运营技能包导出/_upload_chunks_512k/soulchpg deleted file mode 100644 index a3f6c306..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchph b/_Soul运营技能包导出/_upload_chunks_512k/soulchph deleted file mode 100644 index ec22486b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchph and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpi b/_Soul运营技能包导出/_upload_chunks_512k/soulchpi deleted file mode 100644 index 735b0553..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpj b/_Soul运营技能包导出/_upload_chunks_512k/soulchpj deleted file mode 100644 index 1f8f3f9e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpk b/_Soul运营技能包导出/_upload_chunks_512k/soulchpk deleted file mode 100644 index b8ffefe9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpl b/_Soul运营技能包导出/_upload_chunks_512k/soulchpl deleted file mode 100644 index 888a2c05..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpm b/_Soul运营技能包导出/_upload_chunks_512k/soulchpm deleted file mode 100644 index 4b647b0d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpn b/_Soul运营技能包导出/_upload_chunks_512k/soulchpn deleted file mode 100644 index bc947d26..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpo b/_Soul运营技能包导出/_upload_chunks_512k/soulchpo deleted file mode 100644 index 9acee183..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpp b/_Soul运营技能包导出/_upload_chunks_512k/soulchpp deleted file mode 100644 index fea96911..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpq b/_Soul运营技能包导出/_upload_chunks_512k/soulchpq deleted file mode 100644 index 76a5ffd9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpr b/_Soul运营技能包导出/_upload_chunks_512k/soulchpr deleted file mode 100644 index a4cfc844..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchps b/_Soul运营技能包导出/_upload_chunks_512k/soulchps deleted file mode 100644 index 6f35bd53..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchps and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpt b/_Soul运营技能包导出/_upload_chunks_512k/soulchpt deleted file mode 100644 index 5aea4a21..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpu b/_Soul运营技能包导出/_upload_chunks_512k/soulchpu deleted file mode 100644 index 2d84bdcd..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpv b/_Soul运营技能包导出/_upload_chunks_512k/soulchpv deleted file mode 100644 index 4abf0de9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpw b/_Soul运营技能包导出/_upload_chunks_512k/soulchpw deleted file mode 100644 index 8a281e89..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpx b/_Soul运营技能包导出/_upload_chunks_512k/soulchpx deleted file mode 100644 index 1d8ccfb4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpy b/_Soul运营技能包导出/_upload_chunks_512k/soulchpy deleted file mode 100644 index a4af95ac..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchpz b/_Soul运营技能包导出/_upload_chunks_512k/soulchpz deleted file mode 100644 index abaa6562..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchpz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqa b/_Soul运营技能包导出/_upload_chunks_512k/soulchqa deleted file mode 100644 index 0bb635ff..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqa and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqb b/_Soul运营技能包导出/_upload_chunks_512k/soulchqb deleted file mode 100644 index d5ea3231..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqc b/_Soul运营技能包导出/_upload_chunks_512k/soulchqc deleted file mode 100644 index 7296a356..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqd b/_Soul运营技能包导出/_upload_chunks_512k/soulchqd deleted file mode 100644 index 1e088478..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqe b/_Soul运营技能包导出/_upload_chunks_512k/soulchqe deleted file mode 100644 index 5408fe45..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqe and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqf b/_Soul运营技能包导出/_upload_chunks_512k/soulchqf deleted file mode 100644 index f7b965d1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqg b/_Soul运营技能包导出/_upload_chunks_512k/soulchqg deleted file mode 100644 index e781958c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqh b/_Soul运营技能包导出/_upload_chunks_512k/soulchqh deleted file mode 100644 index ab8f58a2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqi b/_Soul运营技能包导出/_upload_chunks_512k/soulchqi deleted file mode 100644 index 7fd58539..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqj b/_Soul运营技能包导出/_upload_chunks_512k/soulchqj deleted file mode 100644 index 456c7fff..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqk b/_Soul运营技能包导出/_upload_chunks_512k/soulchqk deleted file mode 100644 index 91f934a0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchql b/_Soul运营技能包导出/_upload_chunks_512k/soulchql deleted file mode 100644 index 3a2c7fae..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchql and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqm b/_Soul运营技能包导出/_upload_chunks_512k/soulchqm deleted file mode 100644 index e1515f7f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqn b/_Soul运营技能包导出/_upload_chunks_512k/soulchqn deleted file mode 100644 index d2e8bf72..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqo b/_Soul运营技能包导出/_upload_chunks_512k/soulchqo deleted file mode 100644 index 9b380b9c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqo and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqp b/_Soul运营技能包导出/_upload_chunks_512k/soulchqp deleted file mode 100644 index 1500c64d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqq b/_Soul运营技能包导出/_upload_chunks_512k/soulchqq deleted file mode 100644 index 8749dfd4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqr b/_Soul运营技能包导出/_upload_chunks_512k/soulchqr deleted file mode 100644 index 62b114e8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqs b/_Soul运营技能包导出/_upload_chunks_512k/soulchqs deleted file mode 100644 index 3e1099ab..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqt b/_Soul运营技能包导出/_upload_chunks_512k/soulchqt deleted file mode 100644 index f4d2bd38..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqu b/_Soul运营技能包导出/_upload_chunks_512k/soulchqu deleted file mode 100644 index 297f35d9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqv b/_Soul运营技能包导出/_upload_chunks_512k/soulchqv deleted file mode 100644 index 2d8db819..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqw b/_Soul运营技能包导出/_upload_chunks_512k/soulchqw deleted file mode 100644 index fcf32e68..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqx b/_Soul运营技能包导出/_upload_chunks_512k/soulchqx deleted file mode 100644 index dbc98a1e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqy b/_Soul运营技能包导出/_upload_chunks_512k/soulchqy deleted file mode 100644 index fc60c754..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchqz b/_Soul运营技能包导出/_upload_chunks_512k/soulchqz deleted file mode 100644 index 30d1bd86..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchqz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchra b/_Soul运营技能包导出/_upload_chunks_512k/soulchra deleted file mode 100644 index 5c28296c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchra and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrb b/_Soul运营技能包导出/_upload_chunks_512k/soulchrb deleted file mode 100644 index 1471aa31..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrc b/_Soul运营技能包导出/_upload_chunks_512k/soulchrc deleted file mode 100644 index 0fce668b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrd b/_Soul运营技能包导出/_upload_chunks_512k/soulchrd deleted file mode 100644 index 0dbe19d9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchre b/_Soul运营技能包导出/_upload_chunks_512k/soulchre deleted file mode 100644 index 44e4dbf3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchre and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrf b/_Soul运营技能包导出/_upload_chunks_512k/soulchrf deleted file mode 100644 index 18f5b2c9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrg b/_Soul运营技能包导出/_upload_chunks_512k/soulchrg deleted file mode 100644 index 468e0cf8..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrh b/_Soul运营技能包导出/_upload_chunks_512k/soulchrh deleted file mode 100644 index d9e7a90d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchri b/_Soul运营技能包导出/_upload_chunks_512k/soulchri deleted file mode 100644 index ba28bb31..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchri and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrj b/_Soul运营技能包导出/_upload_chunks_512k/soulchrj deleted file mode 100644 index fdb606f3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrk b/_Soul运营技能包导出/_upload_chunks_512k/soulchrk deleted file mode 100644 index 287f863c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrl b/_Soul运营技能包导出/_upload_chunks_512k/soulchrl deleted file mode 100644 index 52944aa7..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrm b/_Soul运营技能包导出/_upload_chunks_512k/soulchrm deleted file mode 100644 index 64cb0e6c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrn b/_Soul运营技能包导出/_upload_chunks_512k/soulchrn deleted file mode 100644 index a0262b3a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchro b/_Soul运营技能包导出/_upload_chunks_512k/soulchro deleted file mode 100644 index e9bf476f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchro and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrp b/_Soul运营技能包导出/_upload_chunks_512k/soulchrp deleted file mode 100644 index 1c02ec26..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrq b/_Soul运营技能包导出/_upload_chunks_512k/soulchrq deleted file mode 100644 index f2475b41..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrr b/_Soul运营技能包导出/_upload_chunks_512k/soulchrr deleted file mode 100644 index 3ca36311..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrs b/_Soul运营技能包导出/_upload_chunks_512k/soulchrs deleted file mode 100644 index 3950cf12..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrs and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrt b/_Soul运营技能包导出/_upload_chunks_512k/soulchrt deleted file mode 100644 index c95c7f26..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchru b/_Soul运营技能包导出/_upload_chunks_512k/soulchru deleted file mode 100644 index c676ab8c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchru and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrv b/_Soul运营技能包导出/_upload_chunks_512k/soulchrv deleted file mode 100644 index a76f5653..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrw b/_Soul运营技能包导出/_upload_chunks_512k/soulchrw deleted file mode 100644 index 0b1faf92..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrx b/_Soul运营技能包导出/_upload_chunks_512k/soulchrx deleted file mode 100644 index 931cbb35..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchry b/_Soul运营技能包导出/_upload_chunks_512k/soulchry deleted file mode 100644 index 62018ba5..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchry and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchrz b/_Soul运营技能包导出/_upload_chunks_512k/soulchrz deleted file mode 100644 index 5e8d5bf1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchrz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsa b/_Soul运营技能包导出/_upload_chunks_512k/soulchsa deleted file mode 100644 index a727e39e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsa and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsb b/_Soul运营技能包导出/_upload_chunks_512k/soulchsb deleted file mode 100644 index 98df6866..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsc b/_Soul运营技能包导出/_upload_chunks_512k/soulchsc deleted file mode 100644 index fb74ba71..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsd b/_Soul运营技能包导出/_upload_chunks_512k/soulchsd deleted file mode 100644 index 8f081697..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchse b/_Soul运营技能包导出/_upload_chunks_512k/soulchse deleted file mode 100644 index 0f179edf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchse and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsf b/_Soul运营技能包导出/_upload_chunks_512k/soulchsf deleted file mode 100644 index 48ea69b0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsg b/_Soul运营技能包导出/_upload_chunks_512k/soulchsg deleted file mode 100644 index 1615c92c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsh b/_Soul运营技能包导出/_upload_chunks_512k/soulchsh deleted file mode 100644 index 5000b0b3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsh and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsi b/_Soul运营技能包导出/_upload_chunks_512k/soulchsi deleted file mode 100644 index d04c20ff..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsi and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsj b/_Soul运营技能包导出/_upload_chunks_512k/soulchsj deleted file mode 100644 index 72b5a31f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsk b/_Soul运营技能包导出/_upload_chunks_512k/soulchsk deleted file mode 100644 index 6aff0356..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsl b/_Soul运营技能包导出/_upload_chunks_512k/soulchsl deleted file mode 100644 index 75323523..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsm b/_Soul运营技能包导出/_upload_chunks_512k/soulchsm deleted file mode 100644 index 58489595..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsn b/_Soul运营技能包导出/_upload_chunks_512k/soulchsn deleted file mode 100644 index 9755bf85..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchso b/_Soul运营技能包导出/_upload_chunks_512k/soulchso deleted file mode 100644 index 9c89353d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchso and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsp b/_Soul运营技能包导出/_upload_chunks_512k/soulchsp deleted file mode 100644 index 87e7cb2e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsq b/_Soul运营技能包导出/_upload_chunks_512k/soulchsq deleted file mode 100644 index 64beb3b2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsr b/_Soul运营技能包导出/_upload_chunks_512k/soulchsr deleted file mode 100644 index 3310c97b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchss b/_Soul运营技能包导出/_upload_chunks_512k/soulchss deleted file mode 100644 index 089d8d68..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchss and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchst b/_Soul运营技能包导出/_upload_chunks_512k/soulchst deleted file mode 100644 index 316ed0d1..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchst and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsu b/_Soul运营技能包导出/_upload_chunks_512k/soulchsu deleted file mode 100644 index 68dc5caa..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsv b/_Soul运营技能包导出/_upload_chunks_512k/soulchsv deleted file mode 100644 index b82e3a1b..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsw b/_Soul运营技能包导出/_upload_chunks_512k/soulchsw deleted file mode 100644 index 662cb154..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsx b/_Soul运营技能包导出/_upload_chunks_512k/soulchsx deleted file mode 100644 index 7738e10a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsy b/_Soul运营技能包导出/_upload_chunks_512k/soulchsy deleted file mode 100644 index 040e49db..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsy and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchsz b/_Soul运营技能包导出/_upload_chunks_512k/soulchsz deleted file mode 100644 index 7da31f1e..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchsz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchta b/_Soul运营技能包导出/_upload_chunks_512k/soulchta deleted file mode 100644 index 51f8cfb4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchta and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtb b/_Soul运营技能包导出/_upload_chunks_512k/soulchtb deleted file mode 100644 index 0863ebd3..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtb and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtc b/_Soul运营技能包导出/_upload_chunks_512k/soulchtc deleted file mode 100644 index 0459322d..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtd b/_Soul运营技能包导出/_upload_chunks_512k/soulchtd deleted file mode 100644 index ea372f23..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtd and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchte b/_Soul运营技能包导出/_upload_chunks_512k/soulchte deleted file mode 100644 index 7b9ae4bf..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchte and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtf b/_Soul运营技能包导出/_upload_chunks_512k/soulchtf deleted file mode 100644 index 2c6472a0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtg b/_Soul运营技能包导出/_upload_chunks_512k/soulchtg deleted file mode 100644 index edd5dbd2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtg and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchth b/_Soul运营技能包导出/_upload_chunks_512k/soulchth deleted file mode 100644 index 1c1d91d5..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchth and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchti b/_Soul运营技能包导出/_upload_chunks_512k/soulchti deleted file mode 100644 index d2e176bb..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchti and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtj b/_Soul运营技能包导出/_upload_chunks_512k/soulchtj deleted file mode 100644 index 55204ab2..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtj and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtk b/_Soul运营技能包导出/_upload_chunks_512k/soulchtk deleted file mode 100644 index 353b8a9f..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtk and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtl b/_Soul运营技能包导出/_upload_chunks_512k/soulchtl deleted file mode 100644 index 5a4a4ee9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtl and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtm b/_Soul运营技能包导出/_upload_chunks_512k/soulchtm deleted file mode 100644 index ab0c0ebc..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtm and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtn b/_Soul运营技能包导出/_upload_chunks_512k/soulchtn deleted file mode 100644 index 0eb7d35a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtn and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchto b/_Soul运营技能包导出/_upload_chunks_512k/soulchto deleted file mode 100644 index d7a1f120..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchto and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtp b/_Soul运营技能包导出/_upload_chunks_512k/soulchtp deleted file mode 100644 index 8f476285..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtp and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtq b/_Soul运营技能包导出/_upload_chunks_512k/soulchtq deleted file mode 100644 index bf3fb229..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtq and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtr b/_Soul运营技能包导出/_upload_chunks_512k/soulchtr deleted file mode 100644 index c81651c9..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtr and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchts b/_Soul运营技能包导出/_upload_chunks_512k/soulchts deleted file mode 100644 index 7d2ce374..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchts and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtt b/_Soul运营技能包导出/_upload_chunks_512k/soulchtt deleted file mode 100644 index 57b2f1f5..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtt and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtu b/_Soul运营技能包导出/_upload_chunks_512k/soulchtu deleted file mode 100644 index db336b4c..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtu and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtv b/_Soul运营技能包导出/_upload_chunks_512k/soulchtv deleted file mode 100644 index 8e297cee..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtv and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtw b/_Soul运营技能包导出/_upload_chunks_512k/soulchtw deleted file mode 100644 index 82250ca6..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtw and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtx b/_Soul运营技能包导出/_upload_chunks_512k/soulchtx deleted file mode 100644 index 1a31d8d4..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtx and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchty b/_Soul运营技能包导出/_upload_chunks_512k/soulchty deleted file mode 100644 index 941ffe00..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchty and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchtz b/_Soul运营技能包导出/_upload_chunks_512k/soulchtz deleted file mode 100644 index da4aff8a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchtz and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchua b/_Soul运营技能包导出/_upload_chunks_512k/soulchua deleted file mode 100644 index 2a8585db..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchua and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchub b/_Soul运营技能包导出/_upload_chunks_512k/soulchub deleted file mode 100644 index f7ae3f7a..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchub and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchuc b/_Soul运营技能包导出/_upload_chunks_512k/soulchuc deleted file mode 100644 index 1b830989..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchuc and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchud b/_Soul运营技能包导出/_upload_chunks_512k/soulchud deleted file mode 100644 index 9a6c3a01..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchud and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchue b/_Soul运营技能包导出/_upload_chunks_512k/soulchue deleted file mode 100644 index e3bce019..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchue and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/soulchuf b/_Soul运营技能包导出/_upload_chunks_512k/soulchuf deleted file mode 100644 index 6552d7b0..00000000 Binary files a/_Soul运营技能包导出/_upload_chunks_512k/soulchuf and /dev/null differ diff --git a/_Soul运营技能包导出/_upload_chunks_512k/upload_state.json b/_Soul运营技能包导出/_upload_chunks_512k/upload_state.json deleted file mode 100644 index c37daca0..00000000 --- a/_Soul运营技能包导出/_upload_chunks_512k/upload_state.json +++ /dev/null @@ -1,7 +0,0 @@ -{ -"done": [ -"soulchaa", -"soulchab" -], -"expected_zip_size": 275757515 -} \ No newline at end of file diff --git a/_Soul运营技能包导出/build_soul_skill_bundle.py b/_Soul运营技能包导出/build_soul_skill_bundle.py deleted file mode 100644 index eae63e21..00000000 --- a/_Soul运营技能包导出/build_soul_skill_bundle.py +++ /dev/null @@ -1,163 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -【已迁移】请改用永平项目内脚本(会输出 zip 到「下载」): - - python3 "/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/scripts/pack_soul_operation_skills.py" - -说明见同仓库:scripts/README_Soul运营技能包.md ---- -以下为旧版备份逻辑(与 pack_soul_operation_skills.py 等价,可自行删除本文件)。 -打包 Soul 运营全链路:SKILL + 脚本 + Cursor 入口,供复制到另一台电脑。 -""" -from __future__ import annotations - -import os -import shutil -import sys -import zipfile -from pathlib import Path - -KARUO_AI = Path("/Users/karuo/Documents/个人/卡若AI") -CURSOR_SKILLS = Path("/Users/karuo/.cursor/skills") -# 用户要求:压缩包放到「下载」 -DOWNLOADS = Path.home() / "Downloads" -STAMP = "20260320" -BUNDLE_NAME = f"Soul运营全链路技能包_{STAMP}" -# 工作区内临时目录(便于 Cursor 写入),最终 zip 放 Downloads -WORK_ROOT = KARUO_AI / "_Soul运营技能包导出" / BUNDLE_NAME - - -def ignore_common(dir_name: str, names: list[str]) -> set[str]: - skip = {"__pycache__", ".browser_state", "chromium_data", ".DS_Store"} - ignored = set() - for n in names: - if n in skip or n.endswith(".pyc"): - ignored.add(n) - return ignored - - -def copytree(src: Path, dst: Path) -> None: - if not src.exists(): - print(f"SKIP missing: {src}", file=sys.stderr) - return - dst.parent.mkdir(parents=True, exist_ok=True) - shutil.copytree(src, dst, dirs_exist_ok=True, ignore=ignore_common) - - -def main() -> int: - if not KARUO_AI.is_dir(): - print(f"ERROR: 卡若AI 不存在: {KARUO_AI}", file=sys.stderr) - return 1 - - if WORK_ROOT.exists(): - shutil.rmtree(WORK_ROOT) - WORK_ROOT.mkdir(parents=True, exist_ok=True) - - # 目录结构:与另一台机合并到 卡若AI 时路径一致 - cursor_dst = WORK_ROOT / ".cursor" / "skills" - cursor_dst.mkdir(parents=True, exist_ok=True) - for name in ("soul-operation-report", "soul-party-project"): - s = CURSOR_SKILLS / name - if s.is_dir(): - copytree(s, cursor_dst / name) - - kai = WORK_ROOT / "卡若AI" - # 水岸 - copytree( - KARUO_AI / "02_卡人(水)" / "水岸_项目管理", - kai / "02_卡人(水)" / "水岸_项目管理", - ) - # 水桥:飞书、妙记、Soul创业实验 - base_water = KARUO_AI / "02_卡人(水)" / "水桥_平台对接" - for sub in ("飞书管理", "智能纪要", "Soul创业实验"): - copytree(base_water / sub, kai / "02_卡人(水)" / "水桥_平台对接" / sub) - - # 木叶:切片、分发、各平台 - base_wood = KARUO_AI / "03_卡木(木)" / "木叶_视频内容" - wood_dst = kai / "03_卡木(木)" / "木叶_视频内容" - for sub in ( - "视频切片", - "多平台分发", - "抖音发布", - "B站发布", - "视频号发布", - "小红书发布", - "快手发布", - ): - copytree(base_wood / sub, wood_dst / sub) - - # 凭证索引(另一台机需核对敏感信息) - idx = KARUO_AI / "运营中枢" / "工作台" / "00_账号与API索引.md" - if idx.is_file(): - (kai / "运营中枢" / "工作台").mkdir(parents=True, exist_ok=True) - shutil.copy2(idx, kai / "运营中枢" / "工作台" / idx.name) - - readme = WORK_ROOT / "解压后必读.md" - readme.write_text( - """# Soul 运营全链路技能包 — 解压后必读 - -## 本包包含 - -- `.cursor/skills/`:`soul-operation-report`、`soul-party-project`(Cursor 入口) -- `卡若AI/02_卡人(水)/水岸_项目管理/`:项目管理中枢 + 卡若创业派对 README -- `卡若AI/02_卡人(水)/水桥_平台对接/飞书管理/`:运营报表、妙记相关脚本与 SKILL -- `卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/` -- `卡若AI/02_卡人(水)/水桥_平台对接/Soul创业实验/`:写作/上传文档与说明 -- `卡若AI/03_卡木(木)/木叶_视频内容/`:视频切片、多平台分发、各平台发布 SKILL+脚本 -- `卡若AI/运营中枢/工作台/00_账号与API索引.md`:凭证速查(若源机有则已打包) - -## 在另一台电脑上「可直接运作」的步骤 - -1. **解压**到任意位置(例如桌面)。 -2. **合并到本机卡若AI根目录**(与现有一致的路径): - - 将包内 `卡若AI/` 下所有文件夹 **合并复制** 到: - `你的卡若AI根目录/`(例如 `~/Documents/个人/卡若AI/`) - 覆盖时请先备份同名目录,避免误删你本机独有文件。 -3. **安装 Cursor 入口 Skill**(可选但推荐): - - 将 `.cursor/skills/soul-operation-report`、`soul-party-project` 复制到本机 `~/.cursor/skills/`。 -4. **环境依赖**(脚本跑通需要): - - Python 3.10+、`pip` 依赖见各子目录 README / SKILL 内说明 - - 视频:`FFmpeg`、`conda` 环境 `mlx-whisper`(见视频切片 SKILL) - - **永平项目**:文章上传/推送需在 `一场soul的创业实验-永平` 仓库配置 `.env`、数据库等(见 `Soul创业实验/上传/环境与TOKEN配置.md`) -5. **凭证**:飞书 AppSecret、妙记 Cookie、各平台 Cookie、小程序与 API 等,必须在目标机上按 `00_账号与API索引.md` 与各脚本说明 **重新配置或从安全渠道拷贝**;未配置时脚本会报错属正常。 -6. **绝对路径**:部分文档或脚本内可能含原机路径(如 `/Users/karuo/...`),到新电脑请按 SKILL 内说明改为本机路径。 - -## 安全提示 - -- 压缩包内可能含 **Token/Cookie/密钥说明**,请勿上传到公开网盘;传输用加密渠道或 U 盘。 - ---- -打包脚本:`卡若AI/_Soul运营技能包导出/build_soul_skill_bundle.py` -""", - encoding="utf-8", - ) - - # 清理包内 __pycache__ - for p in WORK_ROOT.rglob("__pycache__"): - if p.is_dir(): - shutil.rmtree(p, ignore_errors=True) - for p in WORK_ROOT.rglob("*.pyc"): - try: - p.unlink() - except OSError: - pass - - DOWNLOADS.mkdir(parents=True, exist_ok=True) - zip_path = DOWNLOADS / f"{BUNDLE_NAME}.zip" - - with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as zf: - for f in WORK_ROOT.rglob("*"): - if f.is_file(): - arc = f.relative_to(WORK_ROOT.parent) - zf.write(f, arc.as_posix()) - - # 同时在工作区留一份未压缩目录,方便检查 - size_mb = zip_path.stat().st_size / (1024 * 1024) - print(f"OK zip -> {zip_path} ({size_mb:.2f} MB)") - print(f"DIR -> {WORK_ROOT}") - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/_Soul运营技能包导出/install_soul_bundle_on_amiao.sh b/_Soul运营技能包导出/install_soul_bundle_on_amiao.sh deleted file mode 100755 index eb35f456..00000000 --- a/_Soul运营技能包导出/install_soul_bundle_on_amiao.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash -# 在阿猫 Mac 本机执行:将已下载的 Soul 技能包 zip 解压并合并到 iCloud 卡若AI。 -set -euo pipefail -ZIP="${1:-$HOME/Downloads/Soul运营全链路技能包_20260320.zip}" -EXT="${TMPDIR:-/tmp}/_soul_bundle_extract_$$" -# 阿猫机常见:CloudDocs/婼瑄/卡若AI;卡若本机常见:CloudDocs/Documents/婼瑄/卡若AI -KAI="" -for cand in \ - "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Documents/婼瑄/卡若AI" \ - "$HOME/Library/Mobile Documents/com~apple~CloudDocs/婼瑄/卡若AI"; do - if [[ -d "$cand" ]]; then - KAI="$cand" - break - fi -done - -if [[ ! -f "$ZIP" ]]; then - echo "ERROR: 找不到 zip: $ZIP" >&2 - exit 1 -fi -if [[ -z "$KAI" ]]; then - echo "ERROR: 未找到 iCloud 下的卡若AI(已试 Documents/婼瑄 与 婼瑄 两种路径)" >&2 - echo "请传入第二参数指定卡若AI根目录,例如:" >&2 - echo " bash $0 \"$ZIP\" \"/你的/卡若AI\"" >&2 - exit 1 -fi - -rm -rf "$EXT" -mkdir -p "$EXT" -unzip -q "$ZIP" -d "$EXT" -ROOT="$(ls "$EXT" | head -1)" -if [[ ! -d "$EXT/$ROOT/卡若AI" ]]; then - echo "ERROR: 包内缺少 卡若AI/ 目录" >&2 - rm -rf "$EXT" - exit 1 -fi - -# 可选:第二参数覆盖自动探测的卡若AI根目录 -if [[ "${2:-}" != "" ]]; then - KAI="$2" - if [[ ! -d "$KAI" ]]; then - echo "ERROR: 指定的卡若AI 不存在: $KAI" >&2 - rm -rf "$EXT" - exit 1 - fi -fi - -echo "合并到: $KAI" -rsync -a "$EXT/$ROOT/卡若AI/" "$KAI/" -mkdir -p "$KAI/.cursor/skills" -if [[ -d "$EXT/$ROOT/.cursor/skills" ]]; then - rsync -a "$EXT/$ROOT/.cursor/skills/" "$KAI/.cursor/skills/" -fi -rm -rf "$EXT" -echo "OK 已安装。请用 Cursor 打开卡若AI 仓库验证 Agent Skills。" diff --git a/_Soul运营技能包导出/remote_test_amiao.sh b/_Soul运营技能包导出/remote_test_amiao.sh deleted file mode 100755 index 973873f6..00000000 --- a/_Soul运营技能包导出/remote_test_amiao.sh +++ /dev/null @@ -1,124 +0,0 @@ -#!/bin/bash -# 远程在阿猫 Mac 上执行卡若AI测试(通过SSH) -# 用法:在卡若 Mac 上执行:bash remote_test_amiao.sh - -SSH_HOST="kr@macbook.quwanzhi.com" -SSH_PORT="22203" -REMOTE_SCRIPT='bash -s <<'\''REMOTE_EOF'\'' -set -euo pipefail -echo "==========================================" -echo "卡若AI 远程测试(阿猫 Mac)" -echo "==========================================" -echo "测试时间: $(date '\''+%Y-%m-%d %H:%M:%S'\'')" -echo "" - -# 检测卡若AI路径 -KAI_PATHS=( - "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Documents/婼瑄/卡若AI" - "$HOME/Library/Mobile Documents/com~apple~CloudDocs/婼瑄/卡若AI" - "$HOME/Documents/个人/卡若AI" -) - -KAI="" -for p in "${KAI_PATHS[@]}"; do - if [[ -d "$p" ]]; then - KAI="$p" - break - fi -done - -if [[ -z "$KAI" ]]; then - echo "❌ 未找到卡若AI目录" - exit 1 -fi - -echo "✅ 卡若AI路径: $KAI" -cd "$KAI" - -# 检查核心文件 -echo "" -echo "【核心文件检查】" -for f in "BOOTSTRAP.md" "SKILL_REGISTRY.md" ".cursor/rules/karuo-ai.mdc"; do - [[ -f "$f" ]] && echo " ✅ $f" || echo " ❌ $f" -done - -# 检查 Skills -echo "" -echo "【Agent Skills】" -if [[ -d ".cursor/skills" ]]; then - COUNT=$(find .cursor/skills -name "SKILL.md" 2>/dev/null | wc -l | tr -d ' ') - echo " ✅ 找到 $COUNT 个 Skills" - find .cursor/skills -name "SKILL.md" 2>/dev/null | while read f; do - echo " - $(dirname "$f" | sed "s|.cursor/skills/||")" - done -else - echo " ❌ .cursor/skills 不存在" -fi - -# 检查飞书功能 -echo "" -echo "【飞书功能】" -FEISHU_SKILLS=( - "02_卡人(水)/水桥_平台对接/飞书管理/SKILL.md" - "02_卡人(水)/水桥_平台对接/飞书管理/运营报表_SKILL.md" -) -for f in "${FEISHU_SKILLS[@]}"; do - [[ -f "$f" ]] && echo " ✅ $(basename "$f")" || echo " ⚠️ $f" -done - -# Python环境 -echo "" -echo "【Python环境】" -if command -v python3 &>/dev/null; then - echo " ✅ $(python3 --version 2>&1)" - for mod in "requests" "openpyxl"; do - python3 -c "import $mod" 2>/dev/null && echo " ✅ $mod" || echo " ⚠️ $mod" - done -else - echo " ❌ Python3 未安装" -fi - -# Cursor -echo "" -echo "【Cursor IDE】" -if [[ -d "/Applications/Cursor.app" ]] || command -v cursor &>/dev/null; then - echo " ✅ Cursor 已安装" -else - echo " ⚠️ Cursor 未检测到" -fi - -# 模型检测 -echo "" -echo "【Cursor 模型配置】" -CONFIG="$HOME/.cursor/User/settings.json" -if [[ -f "$CONFIG" ]]; then - if grep -q "cursor.general.model" "$CONFIG" 2>/dev/null; then - MODEL=$(grep "cursor.general.model" "$CONFIG" | head -1 | sed '\''s/.*"cursor.general.model"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/'\'' || echo "默认") - echo " 模型: $MODEL" - else - echo " 模型: Cursor 默认(Claude Sonnet 或 GPT-4)" - fi -else - echo " 模型: 使用 Cursor 默认设置" -fi - -# 测试文件写入 -echo "" -echo "【自主对话测试】" -TEST_FILE="$KAI/_test_remote_$(date +%Y%m%d_%H%M%S).txt" -echo "测试消息" > "$TEST_FILE" 2>/dev/null && echo " ✅ 文件写入正常" && rm -f "$TEST_FILE" || echo " ⚠️ 文件写入可能受限" - -echo "" -echo "==========================================" -echo "测试完成" -echo "==========================================" -REMOTE_EOF' - -echo "正在通过 SSH 在阿猫 Mac 上执行测试..." -ssh -o ConnectTimeout=25 -o ServerAliveInterval=10 -p "$SSH_PORT" "$SSH_HOST" "$REMOTE_SCRIPT" 2>&1 || { - echo "" - echo "❌ SSH 连接失败,请使用本地测试脚本:" - echo " 在阿猫 Mac 上执行:" - echo " bash '$HOME/Library/Mobile Documents/com~apple~CloudDocs/Documents/婼瑄/卡若AI/_Soul运营技能包导出/test_karuo_ai_on_amiao.sh'" - echo " 或通过 iCloud 同步后运行" -} diff --git a/_Soul运营技能包导出/test_karuo_ai_on_amiao.sh b/_Soul运营技能包导出/test_karuo_ai_on_amiao.sh deleted file mode 100755 index a96e144a..00000000 --- a/_Soul运营技能包导出/test_karuo_ai_on_amiao.sh +++ /dev/null @@ -1,216 +0,0 @@ -#!/bin/bash -# 卡若AI 在阿猫 Mac 上的完整功能测试脚本 -# 用法:在阿猫 Mac 终端执行:bash test_karuo_ai_on_amiao.sh - -set -euo pipefail - -echo "==========================================" -echo "卡若AI 完整功能测试(阿猫 Mac)" -echo "==========================================" -echo "" - -# 1. 检测卡若AI路径 -KAI_PATHS=( - "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Documents/婼瑄/卡若AI" - "$HOME/Library/Mobile Documents/com~apple~CloudDocs/婼瑄/卡若AI" - "$HOME/Documents/个人/卡若AI" - "$HOME/Documents/卡若AI" -) - -KAI="" -for p in "${KAI_PATHS[@]}"; do - if [[ -d "$p" ]]; then - KAI="$p" - break - fi -done - -if [[ -z "$KAI" ]]; then - echo "❌ 未找到卡若AI目录" - echo "已尝试路径:" - for p in "${KAI_PATHS[@]}"; do - echo " - $p" - done - exit 1 -fi - -echo "✅ 找到卡若AI: $KAI" -cd "$KAI" - -# 2. 检查核心文件 -echo "" -echo "【2/8】检查核心文件..." -MISSING=0 -for f in "BOOTSTRAP.md" "SKILL_REGISTRY.md" ".cursor/rules/karuo-ai.mdc"; do - if [[ -f "$f" ]]; then - echo " ✅ $f" - else - echo " ❌ 缺失: $f" - MISSING=$((MISSING + 1)) - fi -done - -# 3. 检查 Cursor Skills -echo "" -echo "【3/8】检查 Cursor Agent Skills..." -SKILLS_DIR=".cursor/skills" -if [[ -d "$SKILLS_DIR" ]]; then - SKILL_COUNT=$(find "$SKILLS_DIR" -name "SKILL.md" | wc -l | tr -d ' ') - echo " ✅ 找到 $SKILL_COUNT 个 Agent Skills" - find "$SKILLS_DIR" -name "SKILL.md" | while read f; do - echo " - $(dirname "$f" | sed "s|$SKILLS_DIR/||")" - done -else - echo " ❌ .cursor/skills 目录不存在" - MISSING=$((MISSING + 1)) -fi - -# 4. 检查飞书相关技能 -echo "" -echo "【4/8】检查飞书相关功能..." -FEISHU_SKILLS=( - "02_卡人(水)/水桥_平台对接/飞书管理/SKILL.md" - "02_卡人(水)/水桥_平台对接/飞书管理/运营报表_SKILL.md" - "02_卡人(水)/水桥_平台对接/智能纪要/SKILL.md" -) -FEISHU_OK=0 -for f in "${FEISHU_SKILLS[@]}"; do - if [[ -f "$f" ]]; then - echo " ✅ $(basename "$f")" - FEISHU_OK=$((FEISHU_OK + 1)) - else - echo " ⚠️ 缺失: $f" - fi -done - -# 5. 检查飞书脚本 -echo "" -echo "【5/8】检查飞书脚本..." -FEISHU_SCRIPTS=( - "02_卡人(水)/水桥_平台对接/飞书管理/脚本/write_today_three_focus.py" - "02_卡人(水)/水桥_平台对接/飞书管理/脚本/send_review_to_feishu_webhook.py" -) -for s in "${FEISHU_SCRIPTS[@]}"; do - if [[ -f "$s" ]]; then - if python3 -c "import sys; sys.path.insert(0, '$(dirname "$s")'); import os; os.chdir('$(dirname "$s")'); exec(open('$(basename "$s")').read())" --help 2>/dev/null || python3 "$s" --help 2>/dev/null || true; then - echo " ✅ $(basename "$s") 可执行" - else - echo " ⚠️ $(basename "$s") 存在但可能缺少依赖" - fi - else - echo " ❌ 缺失: $s" - fi -done - -# 6. 测试 Python 环境 -echo "" -echo "【6/8】检查 Python 环境..." -if command -v python3 &>/dev/null; then - PY_VER=$(python3 --version 2>&1 | awk '{print $2}') - echo " ✅ Python $PY_VER" - - # 检查关键依赖 - for mod in "requests" "paramiko" "openpyxl"; do - if python3 -c "import $mod" 2>/dev/null; then - echo " ✅ $mod" - else - echo " ⚠️ $mod 未安装(部分功能可能不可用)" - fi - done -else - echo " ❌ Python3 未安装" - MISSING=$((MISSING + 1)) -fi - -# 7. 检查 Cursor 安装 -echo "" -echo "【7/8】检查 Cursor IDE..." -if [[ -d "/Applications/Cursor.app" ]] || command -v cursor &>/dev/null; then - echo " ✅ Cursor 已安装" - if command -v cursor &>/dev/null; then - CURSOR_VER=$(cursor --version 2>&1 | head -1 || echo "未知版本") - echo " 版本: $CURSOR_VER" - fi -else - echo " ⚠️ Cursor 未检测到(可能未在 PATH 或未安装)" -fi - -# 8. 测试自主对话能力(模拟) -echo "" -echo "【8/8】测试自主对话能力..." -echo " 创建测试对话文件..." - -TEST_MSG="测试卡若AI在阿猫Mac上的功能" -TEST_FILE="$KAI/_test_amiao_dialog_$(date +%Y%m%d_%H%M%S).txt" -cat > "$TEST_FILE" </dev/null; then - MODEL=$(grep "cursor.general.model" "$CURSOR_CONFIG" | head -1 | sed 's/.*"cursor.general.model"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/' || echo "未明确指定") - echo " 模型: $MODEL" - else - echo " 模型: 使用默认模型(Cursor 自动选择)" - fi - - # 检查 Agent 模式 - if grep -q "cursor.agent" "$CURSOR_CONFIG" 2>/dev/null; then - AGENT_MODE=$(grep -i "cursor.agent" "$CURSOR_CONFIG" | head -1 || echo "默认") - echo " Agent 模式: $AGENT_MODE" - fi -else - echo " ⚠️ 未找到 Cursor 用户配置(可能使用默认设置)" -fi - -# 总结 -echo "" -echo "==========================================" -echo "测试总结" -echo "==========================================" -echo "卡若AI路径: $KAI" -echo "核心文件: $((3 - MISSING))/3" -echo "Agent Skills: $SKILL_COUNT 个" -echo "飞书技能: $FEISHU_OK/${#FEISHU_SKILLS[@]}" -echo "" - -if [[ $MISSING -eq 0 ]] && [[ $FEISHU_OK -ge 2 ]]; then - echo "✅ 卡若AI 在阿猫 Mac 上配置完整,可以正常使用" - echo "" - echo "【使用方式】" - echo "1. 打开 Cursor IDE" - echo "2. 打开文件夹: $KAI" - echo "3. 在 Cursor 中与卡若AI对话,触发词见 SKILL_REGISTRY.md" - echo "4. 飞书相关:" - echo " - 运营报表: '运营报表' 或 '派对填表'" - echo " - 飞书日志: '写飞书日志' 或 '飞书日志'" - echo " - 智能纪要: '会议纪要' 或 '飞书妙记'" -else - echo "⚠️ 部分功能可能缺失,请检查上述 ❌ 项" -fi - -echo "" -echo "【模型信息】" -if [[ -f "$CURSOR_CONFIG" ]] && grep -q "cursor.general.model" "$CURSOR_CONFIG" 2>/dev/null; then - echo " 使用模型: $(grep "cursor.general.model" "$CURSOR_CONFIG" | head -1 | sed 's/.*"cursor.general.model"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')" -else - echo " 使用模型: Cursor 默认模型(通常为 Claude Sonnet 或 GPT-4)" - echo " 提示: 可在 Cursor Settings → Models 查看当前使用的模型" -fi - -echo "" -echo "测试完成时间: $(date '+%Y-%m-%d %H:%M:%S')" diff --git a/_Soul运营技能包导出/upload_soul_zip_chunks.py b/_Soul运营技能包导出/upload_soul_zip_chunks.py deleted file mode 100644 index e3b63e55..00000000 --- a/_Soul运营技能包导出/upload_soul_zip_chunks.py +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -"""将 Soul 技能包 zip 按小块 SCP 到阿猫 Mac,支持断点续传;远端合并后校验。""" -from __future__ import annotations - -import hashlib -import json -import os -import subprocess -import sys -import time -from pathlib import Path - -ZIP = Path.home() / "Downloads" / "Soul运营全链路技能包_20260320.zip" -CHUNK_DIR = Path(__file__).resolve().parent / "_upload_chunks_512k" -STATE = CHUNK_DIR / "upload_state.json" -SSH_HOST = "kr@macbook.quwanzhi.com" -SSH_PORT = "22203" -REMOTE_DIR = "~/Downloads/soul_zip_chunks_20260320" -REMOTE_ZIP = "~/Downloads/Soul运营全链路技能包_20260320.zip" -CHUNK_BYTES = 512 * 1024 -SCP_RETRIES = 12 -SCP_RETRY_SLEEP = 3 - - -def sh(*args: str, check: bool = True) -> subprocess.CompletedProcess: - return subprocess.run(args, capture_output=True, text=True, check=check) - - -def remote_cmd(cmd: str, check: bool = True) -> str: - r = subprocess.run( - [ - "ssh", - "-o", - "BatchMode=yes", - "-o", - "ConnectTimeout=25", - "-p", - SSH_PORT, - SSH_HOST, - cmd, - ], - capture_output=True, - text=True, - ) - if check and r.returncode != 0: - print(r.stderr or r.stdout, file=sys.stderr) - r.check_returncode() - return (r.stdout or "").strip() - - -def ensure_chunks() -> list[Path]: - CHUNK_DIR.mkdir(parents=True, exist_ok=True) - marker = CHUNK_DIR / ".split_ok" - parts = sorted(CHUNK_DIR.glob("soulch*")) - if marker.is_file() and parts: - exp = ZIP.stat().st_size - got = sum(p.stat().st_size for p in parts) - if got == exp: - return parts - for p in CHUNK_DIR.glob("soulch*"): - p.unlink(missing_ok=True) - marker.unlink(missing_ok=True) - if not ZIP.is_file(): - print(f"ERROR: 找不到 {ZIP}", file=sys.stderr) - sys.exit(1) - # BSD split: prefix without separator -> soulchaa soulchab ... - subprocess.run( - ["split", "-b", str(CHUNK_BYTES), str(ZIP), str(CHUNK_DIR / "soulch")], - check=True, - ) - marker.write_text(str(ZIP.stat().st_size), encoding="utf-8") - return sorted(CHUNK_DIR.glob("soulch*")) - - -def load_state() -> dict: - if STATE.is_file(): - return json.loads(STATE.read_text(encoding="utf-8")) - return {"done": [], "expected_zip_size": ZIP.stat().st_size} - - -def save_state(st: dict) -> None: - STATE.write_text(json.dumps(st, ensure_ascii=False, indent=0), encoding="utf-8") - - -def scp_one(local: Path, remote_name: str) -> bool: - dest = f"{SSH_HOST}:{REMOTE_DIR}/{remote_name}" - for attempt in range(1, SCP_RETRIES + 1): - r = subprocess.run( - [ - "scp", - "-o", - "BatchMode=yes", - "-o", - "ConnectTimeout=25", - "-o", - "ServerAliveInterval=10", - "-o", - "ServerAliveCountMax=6", - "-P", - SSH_PORT, - str(local), - dest, - ], - capture_output=True, - text=True, - ) - if r.returncode == 0: - return True - err = (r.stderr or r.stdout or "").strip() - print(f" scp fail {local.name} try {attempt}/{SCP_RETRIES}: {err[:120]}", file=sys.stderr) - time.sleep(SCP_RETRY_SLEEP) - return False - - -def main() -> int: - parts = ensure_chunks() - st = load_state() - done_set = set(st.get("done", [])) - remote_cmd(f"mkdir -p {REMOTE_DIR}") - remote_cmd(f"rm -f {REMOTE_ZIP}", check=False) - - total = len(parts) - for i, p in enumerate(parts, 1): - name = p.name - if name in done_set: - continue - print(f"[{i}/{total}] {name} ({p.stat().st_size} B)") - if not scp_one(p, name): - print(f"ABORT 连续失败: {name}", file=sys.stderr) - return 1 - done_set.add(name) - st["done"] = sorted(done_set) - save_state(st) - - print("合并远端分片...") - # zsh 在 macOS 上为默认 login shell;用 sort 保证顺序 - merge = ( - f"cd {REMOTE_DIR} && " - f"cat $(ls soulch* 2>/dev/null | sort) > {REMOTE_ZIP} && " - f"ls -la {REMOTE_ZIP}" - ) - out = remote_cmd(merge) - print(out) - - local_size = ZIP.stat().st_size - rsize = remote_cmd(f"stat -f%z {REMOTE_ZIP}") - rs = int(rsize.strip() or 0) - if rs != local_size: - print(f"ERROR: 远端大小 {rs} != 本地 {local_size}", file=sys.stderr) - return 1 - - print("远端 unzip -t 校验...") - remote_cmd(f"unzip -tqq {REMOTE_ZIP}", check=True) - print("OK 传输与 zip 校验通过") - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/_Soul运营技能包导出/upload_soul_zip_sftp.py b/_Soul运营技能包导出/upload_soul_zip_sftp.py deleted file mode 100644 index 649e7d3a..00000000 --- a/_Soul运营技能包导出/upload_soul_zip_sftp.py +++ /dev/null @@ -1,244 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -"""单 SSH 会话(SFTP)连续上传 Soul 技能包分片,避免频繁握手被远端断开;支持重连续传。 - -用法: - python3 upload_soul_zip_sftp.py # 上传分片 + 合并 + unzip -t - python3 upload_soul_zip_sftp.py --install # 在上一步基础上再执行合并到 iCloud 卡若AI - python3 upload_soul_zip_sftp.py --install-only # 仅安装(假定远端 zip 已完整) -""" -from __future__ import annotations - -import json -import subprocess -import sys -import time -from pathlib import Path - -import paramiko - -ZIP = Path.home() / "Downloads" / "Soul运营全链路技能包_20260320.zip" -CHUNK_DIR = Path(__file__).resolve().parent / "_upload_chunks_1m_sftp" -STATE = CHUNK_DIR / "sftp_upload_state.json" -HOST = "macbook.quwanzhi.com" -PORT = 22203 -USER = "kr" -REMOTE_DIR = f"/Users/{USER}/Downloads/soul_zip_chunks_20260320" -REMOTE_ZIP = f"/Users/{USER}/Downloads/Soul运营全链路技能包_20260320.zip" -CHUNK_BYTES = 1024 * 1024 - - -def ensure_chunks() -> list[Path]: - CHUNK_DIR.mkdir(parents=True, exist_ok=True) - marker = CHUNK_DIR / ".split_ok" - parts = sorted(CHUNK_DIR.glob("soulch*")) - if marker.is_file() and parts: - if sum(p.stat().st_size for p in parts) == ZIP.stat().st_size: - return parts - for p in CHUNK_DIR.glob("soulch*"): - p.unlink(missing_ok=True) - marker.unlink(missing_ok=True) - if not ZIP.is_file(): - print(f"ERROR: 找不到 {ZIP}", file=sys.stderr) - sys.exit(1) - subprocess.run( - ["split", "-b", str(CHUNK_BYTES), str(ZIP), str(CHUNK_DIR / "soulch")], - check=True, - ) - marker.write_text(str(ZIP.stat().st_size), encoding="utf-8") - return sorted(CHUNK_DIR.glob("soulch*")) - - -def connect() -> tuple[paramiko.SSHClient, paramiko.SFTPClient]: - c = paramiko.SSHClient() - c.set_missing_host_key_policy(paramiko.AutoAddPolicy()) - c.connect( - HOST, - port=PORT, - username=USER, - allow_agent=True, - look_for_keys=True, - timeout=30, - banner_timeout=30, - auth_timeout=30, - ) - sftp = c.open_sftp() - try: - sftp.chdir(REMOTE_DIR) - except OSError: - parts = REMOTE_DIR.strip("/").split("/") - path = "/" - for p in parts: - if not p: - continue - path = f"{path.rstrip('/')}/{p}" - try: - sftp.mkdir(path) - except OSError: - pass - sftp.chdir(REMOTE_DIR) - return c, sftp - - -def remote_size(sftp: paramiko.SFTPClient, name: str) -> int: - try: - return sftp.stat(name).st_size - except OSError: - return -1 - - -def load_done() -> set[str]: - if STATE.is_file(): - return set(json.loads(STATE.read_text(encoding="utf-8")).get("done", [])) - return set() - - -def save_done(done: set[str]) -> None: - STATE.write_text( - json.dumps({"done": sorted(done)}, ensure_ascii=False, indent=0), - encoding="utf-8", - ) - - -def merge_zip(client: paramiko.SSHClient) -> None: - # 合并到固定路径;分片名 soulchaa, soulchab … 按 sort 拼接 - cmd = ( - f"cd {REMOTE_DIR} && " - f'cat $(ls soulch* 2>/dev/null | sort) > "{REMOTE_ZIP}" && ' - f'stat -f%z "{REMOTE_ZIP}"' - ) - stdin, stdout, stderr = client.exec_command(cmd) - out = stdout.read().decode().strip() - err = stderr.read().decode().strip() - rc = stdout.channel.recv_exit_status() - if rc != 0: - raise RuntimeError(f"merge failed rc={rc} err={err}") - if not out: - raise RuntimeError("merge: stat 无输出") - got = int(out.split()[0]) - exp = ZIP.stat().st_size - if got != exp: - raise RuntimeError(f"merge size {got} != local {exp}") - - -def test_zip(client: paramiko.SSHClient) -> None: - stdin, stdout, stderr = client.exec_command(f'unzip -tqq "{REMOTE_ZIP}"') - err = stderr.read().decode() - rc = stdout.channel.recv_exit_status() - if rc != 0: - raise RuntimeError(f"unzip -t failed: {err}") - - -def install_on_remote(client: paramiko.SSHClient) -> None: - here = Path(__file__).resolve().parent / "install_soul_bundle_on_amiao.sh" - body = here.read_text(encoding="utf-8") - remote_sh = "/tmp/karuo_install_soul_bundle.sh" - sftp = client.open_sftp() - try: - with sftp.open(remote_sh, "w") as rf: - rf.write(body.encode("utf-8")) - finally: - sftp.close() - stdin, stdout, stderr = client.exec_command( - f"chmod +x {remote_sh} && bash {remote_sh} '{REMOTE_ZIP}'" - ) - out = stdout.read().decode() - err = stderr.read().decode() - rc = stdout.channel.recv_exit_status() - if rc != 0: - raise RuntimeError(f"install failed rc={rc} err={err or out}\n{out}") - - -def main() -> int: - install_only = "--install-only" in sys.argv - do_install = "--install" in sys.argv or install_only - - if install_only: - print("仅执行远端安装…") - client, sftp = connect() - sftp.close() - try: - test_zip(client) - install_on_remote(client) - finally: - client.close() - print("OK 阿猫机 iCloud 卡若AI 已合并技能包内容") - return 0 - - parts = ensure_chunks() - done = load_done() - local_exp = {p.name: p.stat().st_size for p in parts} - - idx = 0 - while idx < len(parts): - p = parts[idx] - if p.name in done: - idx += 1 - continue - try: - client, sftp = connect() - except Exception as e: - print(f"连接失败: {e}, 10s 后重试", file=sys.stderr) - time.sleep(10) - continue - try: - while idx < len(parts): - p = parts[idx] - if p.name in done: - idx += 1 - continue - rs = remote_size(sftp, p.name) - loc = local_exp[p.name] - if rs == loc: - done.add(p.name) - save_done(done) - idx += 1 - print(f"skip (已存在) {p.name}") - continue - if rs >= 0 and rs != loc: - try: - sftp.remove(p.name) - except OSError: - pass - print(f"put [{idx + 1}/{len(parts)}] {p.name} ({loc} B)") - sftp.put(str(p), p.name) - done.add(p.name) - save_done(done) - idx += 1 - except Exception as e: - print(f"传输中断: {e}, 将重连续传", file=sys.stderr) - try: - sftp.close() - client.close() - except Exception: - pass - time.sleep(5) - continue - finally: - try: - sftp.close() - client.close() - except Exception: - pass - - print("合并分片…") - client, sftp_m = connect() - sftp_m.close() - try: - merge_zip(client) - print("unzip -t 校验…") - test_zip(client) - if do_install: - print("合并到 iCloud 卡若AI…") - install_on_remote(client) - finally: - client.close() - - print("OK 阿猫 Downloads 上 zip 已就绪:", REMOTE_ZIP) - if do_install: - print("OK 已完成安装到 iCloud 婼瑄/卡若AI") - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/_Soul运营技能包导出/测试结果报告模板.md b/_Soul运营技能包导出/测试结果报告模板.md deleted file mode 100644 index f529ec48..00000000 --- a/_Soul运营技能包导出/测试结果报告模板.md +++ /dev/null @@ -1,128 +0,0 @@ -# 卡若AI 在阿猫 Mac 上的测试结果报告 - -> **测试日期**:2026-03-XX -> **测试人**:阿猫(婼瑄) -> **测试环境**:macOS 15.7.4,Cursor IDE - ---- - -## 一、测试执行 - -### 测试脚本输出 - -```bash -# 请粘贴完整测试脚本输出 -bash test_karuo_ai_on_amiao.sh -``` - -**输出内容**: -``` -[在此粘贴完整输出] -``` - ---- - -## 二、功能验证结果 - -### ✅ 核心功能 - -- [ ] 卡若AI 目录存在 -- [ ] BOOTSTRAP.md 存在 -- [ ] SKILL_REGISTRY.md 存在 -- [ ] .cursor/rules/karuo-ai.mdc 存在 - -### ✅ Agent Skills - -- [ ] soul-operation-report(Soul 运营报表) -- [ ] soul-party-project(Soul 项目管理) -- [ ] 其他 Skills:_____ 个 - -### ✅ 飞书功能 - -- [ ] 飞书管理 SKILL.md 存在 -- [ ] 运营报表 SKILL 存在 -- [ ] write_today_three_focus.py 可执行 -- [ ] send_review_to_feishu_webhook.py 可执行 - -### ✅ 自主对话测试 - -在 Cursor 中测试: - -1. **测试1:写飞书日志** - - 触发词:`写飞书日志` - - 结果:[ ] 成功 [ ] 失败 - - 备注:___________ - -2. **测试2:运营报表** - - 触发词:`运营报表` - - 结果:[ ] 成功 [ ] 失败 - - 备注:___________ - -3. **测试3:会议纪要** - - 触发词:`会议纪要` - - 结果:[ ] 成功 [ ] 失败 - - 备注:___________ - ---- - -## 三、使用的模型/模式 - -### Cursor 模型信息 - -**模型名称**:_________________ - -**获取方式**: -- [ ] Cursor Settings → Models -- [ ] 配置文件:`~/.cursor/User/settings.json` -- [ ] 在 Cursor 中询问得到 - -**配置内容**(如从 settings.json): -```json -[粘贴相关配置] -``` - -### Agent 模式 - -- [ ] 默认模式 -- [ ] 其他模式:___________ - ---- - -## 四、Python 环境 - -**Python 版本**:_________________ - -**已安装依赖**: -- [ ] requests -- [ ] openpyxl -- [ ] paramiko -- [ ] 其他:___________ - ---- - -## 五、问题与备注 - -### 遇到的问题 - -1. ___________ -2. ___________ - -### 解决方案 - -1. ___________ -2. ___________ - ---- - -## 六、测试结论 - -- [ ] **完全可用**:所有功能正常,可以自主对话和飞书操作 -- [ ] **部分可用**:核心功能正常,部分功能需调整 -- [ ] **不可用**:存在关键问题,需要修复 - -**详细说明**: -_________________________________________________ - ---- - -**测试完成时间**:2026-03-XX XX:XX:XX diff --git a/_Soul运营技能包导出/阿猫电脑测试说明.md b/_Soul运营技能包导出/阿猫电脑测试说明.md deleted file mode 100644 index 625c390e..00000000 --- a/_Soul运营技能包导出/阿猫电脑测试说明.md +++ /dev/null @@ -1,231 +0,0 @@ -# 卡若AI 在阿猫 Mac 上的完整测试说明 - -> 测试时间:2026-03-20 -> 目标:验证卡若AI(Cursor)完整功能、飞书操作、自主对话能力 - ---- - -## 一、快速测试(推荐) - -### 方法1:通过 iCloud 同步的测试脚本 - -1. **等待 iCloud 同步完成**(卡若已把测试脚本放入 `_Soul运营技能包导出/`) -2. **在阿猫 Mac 上打开终端**,执行: - -```bash -# 自动检测路径并运行测试 -bash "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Documents/婼瑄/卡若AI/_Soul运营技能包导出/test_karuo_ai_on_amiao.sh" -``` - -或如果路径是 `CloudDocs/婼瑄/卡若AI`(无 Documents): - -```bash -bash "$HOME/Library/Mobile Documents/com~apple~CloudDocs/婼瑄/卡若AI/_Soul运营技能包导出/test_karuo_ai_on_amiao.sh" -``` - -### 方法2:手动检查(如果脚本不可用) - -在终端执行以下命令检查: - -```bash -# 1. 找到卡若AI路径 -KAI="$HOME/Library/Mobile Documents/com~apple~CloudDocs/Documents/婼瑄/卡若AI" -# 或 -KAI="$HOME/Library/Mobile Documents/com~apple~CloudDocs/婼瑄/卡若AI" - -# 2. 检查核心文件 -cd "$KAI" -ls -la BOOTSTRAP.md SKILL_REGISTRY.md .cursor/rules/karuo-ai.mdc - -# 3. 检查 Agent Skills -ls -la .cursor/skills/ - -# 4. 检查飞书功能 -ls -la "02_卡人(水)/水桥_平台对接/飞书管理/SKILL.md" -ls -la "02_卡人(水)/水桥_平台对接/飞书管理/脚本/" - -# 5. 检查 Python -python3 --version -python3 -c "import requests; print('requests OK')" - -# 6. 检查 Cursor -ls -la /Applications/Cursor.app 2>/dev/null || echo "Cursor 未在 /Applications" -``` - ---- - -## 二、功能测试清单 - -### ✅ 核心功能 - -- [ ] **卡若AI 目录存在**:`Library/Mobile Documents/.../婼瑄/卡若AI` -- [ ] **BOOTSTRAP.md**:启动文件存在 -- [ ] **SKILL_REGISTRY.md**:技能注册表存在 -- [ ] **.cursor/rules/karuo-ai.mdc**:Cursor 规则存在 - -### ✅ Agent Skills(Cursor 入口) - -- [ ] **soul-operation-report**:Soul 运营报表技能 -- [ ] **soul-party-project**:Soul 项目管理技能 - -### ✅ 飞书功能 - -- [ ] **飞书管理 SKILL.md**:`02_卡人(水)/水桥_平台对接/飞书管理/SKILL.md` -- [ ] **运营报表 SKILL**:`运营报表_SKILL.md` -- [ ] **飞书脚本**: - - `write_today_three_focus.py`(写飞书日志) - - `send_review_to_feishu_webhook.py`(复盘发群) - -### ✅ 自主对话能力 - -在 **Cursor IDE** 中: - -1. **打开卡若AI 文件夹**(上述 KAI 路径) -2. **在 Cursor 聊天窗口输入**: - ``` - 写飞书日志 - ``` - 或 - ``` - 运营报表 - ``` -3. **验证**:卡若AI 应能识别触发词并执行对应技能 - -### ✅ Python 环境 - -```bash -python3 --version # 应显示 Python 3.x -python3 -c "import requests, openpyxl; print('依赖OK')" -``` - ---- - -## 三、查看使用的模型/模式 - -### 方法1:Cursor Settings - -1. 打开 **Cursor IDE** -2. 按 `Cmd + ,` 打开设置 -3. 搜索 **"model"** 或 **"Models"** -4. 查看当前使用的模型(通常是 **Claude Sonnet** 或 **GPT-4**) - -### 方法2:查看配置文件 - -在终端执行: - -```bash -cat "$HOME/.cursor/User/settings.json" | grep -i "model" | head -5 -``` - -### 方法3:在 Cursor 中询问 - -在 Cursor 聊天窗口输入: -``` -你使用的是什么模型? -``` - ---- - -## 四、完整测试流程 - -### 步骤1:环境检查 - -```bash -# 运行测试脚本(见方法1) -bash test_karuo_ai_on_amiao.sh -``` - -### 步骤2:打开 Cursor 测试 - -1. **打开 Cursor IDE** -2. **File → Open Folder** → 选择卡若AI 目录 -3. **在聊天窗口测试**: - -``` -测试1: 写飞书日志 -测试2: 运营报表 -测试3: 会议纪要 -``` - -### 步骤3:验证飞书操作 - -```bash -# 测试飞书日志脚本 -cd "$KAI/02_卡人(水)/水桥_平台对接/飞书管理/脚本" -python3 write_today_three_focus.py -``` - -### 步骤4:查看模型信息 - -在 Cursor 中询问或查看 Settings → Models - ---- - -## 五、预期结果 - -### ✅ 成功标志 - -1. **测试脚本输出**: - - ✅ 找到卡若AI路径 - - ✅ 核心文件完整 - - ✅ Agent Skills 数量 ≥ 2 - - ✅ 飞书功能可用 - - ✅ Python 环境正常 - -2. **Cursor 中**: - - 能识别触发词(如"写飞书日志") - - 能执行对应技能 - - 能自主对话 - -3. **模型信息**: - - 显示具体模型名称(如 `claude-sonnet-4` 或 `gpt-4`) - ---- - -## 六、问题排查 - -### ❌ 找不到卡若AI目录 - -**解决**:检查 iCloud 同步状态 -```bash -# 查看 iCloud 路径 -ls -la "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Documents/婼瑄/" -ls -la "$HOME/Library/Mobile Documents/com~apple~CloudDocs/婼瑄/" -``` - -### ❌ Cursor 未安装 - -**解决**:下载安装 Cursor -- 官网:https://cursor.sh -- 或从已挂载的 DMG 安装 - -### ❌ Python 依赖缺失 - -**解决**: -```bash -pip3 install requests openpyxl paramiko -``` - -### ❌ 飞书功能不可用 - -**检查**: -1. 飞书 Token 是否配置(见 `运营中枢/工作台/00_账号与API索引.md`) -2. 脚本权限:`chmod +x *.py` - ---- - -## 七、测试完成后 - -请将以下信息反馈给卡若: - -1. **测试脚本输出**(完整) -2. **使用的模型**(从 Cursor Settings 或测试脚本输出) -3. **功能可用性**: - - [ ] 核心文件完整 - - [ ] Agent Skills 可用 - - [ ] 飞书功能可用 - - [ ] 自主对话正常 - ---- - -**测试脚本位置**:`卡若AI/_Soul运营技能包导出/test_karuo_ai_on_amiao.sh` diff --git a/运营中枢/scripts/com.karuo.docker-stacks-up.plist.example b/运营中枢/scripts/com.karuo.docker-stacks-up.plist.example new file mode 100644 index 00000000..1ae19445 --- /dev/null +++ b/运营中枢/scripts/com.karuo.docker-stacks-up.plist.example @@ -0,0 +1,20 @@ + + + + + Label + com.karuo.docker-stacks-up + ProgramArguments + + /bin/bash + -lc + sleep 45 && "/Users/karuo/Documents/个人/卡若AI/运营中枢/scripts/docker_stacks_bootstrap.sh" + + RunAtLoad + + StandardOutPath + /tmp/karuo-docker-stacks-up.log + StandardErrorPath + /tmp/karuo-docker-stacks-up.err + + diff --git a/运营中枢/scripts/docker_stacks_bootstrap.sh b/运营中枢/scripts/docker_stacks_bootstrap.sh new file mode 100755 index 00000000..83572abc --- /dev/null +++ b/运营中枢/scripts/docker_stacks_bootstrap.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +# Docker Desktop 就绪后,一次性按依赖顺序拉起本机常用编排: +# 1) datacenter(MongoDB / MariaDB + datacenter_network) +# 2) 神射手目录 website(神射手、玩值、抖音 API、n8n、OpenClaw 等) +# 3) 卡若官网(独立 COMPOSE_PROJECT_NAME,避免与上一步同名 website 项目互相覆盖) +# +# 用法:手动执行;或配合 com.karuo.docker-stacks-up.plist 在登录后延迟执行。 +# 各 compose 内服务已设 restart: unless-stopped 时,Docker 守护进程重启后也会自动恢复, +# 本脚本用于「冷启动 / compose down 后」或「登录后确保全部 up」。 + +set -euo pipefail + +DATACENTER_DIR="/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/datacenter" +WEBSITE_SHEN_DIR="/Users/karuo/Documents/开发/2、私域银行/神射手" +KARUO_SITE_DIR="/Users/karuo/Documents/开发/3、自营项目/卡若ai网站" + +log() { printf '%s %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*"; } + +wait_for_docker() { + local max="${1:-60}" + local i=0 + while (( i < max )); do + if docker info >/dev/null 2>&1; then + log "Docker 已就绪" + return 0 + fi + (( i++ )) || true + sleep 2 + done + log "超时:Docker 未在 $((max * 2)) 秒内就绪" + return 1 +} + +wait_for_docker 60 + +if [[ -d "$DATACENTER_DIR" ]]; then + log "启动 datacenter …" + (cd "$DATACENTER_DIR" && docker compose -p datacenter up -d) +else + log "跳过:未找到 datacenter 目录 $DATACENTER_DIR" +fi + +if [[ -d "$WEBSITE_SHEN_DIR" ]]; then + log "启动 website(神射手编排)…" + (cd "$WEBSITE_SHEN_DIR" && docker compose up -d) +else + log "跳过:未找到 $WEBSITE_SHEN_DIR" +fi + +if [[ -d "$KARUO_SITE_DIR" ]]; then + log "启动卡若官网 Docker(项目名 website_karuo,避免与神射手 website 冲突)…" + (cd "$KARUO_SITE_DIR" && COMPOSE_PROJECT_NAME=website_karuo docker compose up -d) +else + log "跳过:未找到 $KARUO_SITE_DIR" +fi + +log "完成。可执行 docker compose ls 与 docker ps 查看状态。" diff --git a/运营中枢/使用手册/第四篇_运营中枢/13_复盘格式.md b/运营中枢/使用手册/第四篇_运营中枢/13_复盘格式.md index e6f1e2d8..bc3f3ee4 100644 --- a/运营中枢/使用手册/第四篇_运营中枢/13_复盘格式.md +++ b/运营中枢/使用手册/第四篇_运营中枢/13_复盘格式.md @@ -8,7 +8,7 @@ **卡若AI 所有对话的 AI 回复一律采用「复盘形式」**,只有一种格式:完整复盘,每轮/每步均以完整复盘块收尾。 -**权威全文**:`运营中枢/参考资料/卡若复盘格式_固定规则.md` **v5.0**:**仅五块** 🎯📌💡📝▶;**🎯** 为 **单行一句话 ≤50 字(含标点)**,句内含 **目标+结果+达成率(%)**(**可为负**);**不把** Human 3.0、奇门八门**单独成段**(点名起盘时八门**附在五块之后**)。**禁止** `➡️ 🎯 复述`、`📊 复盘复述`、标准复盘内独立 ☯。**分发类**达成率以 **视频号等实际成功÷计划** 为主口径。Cursor 速查:`.cursor/skills/karuo-recap-format/SKILL.md`。 +**权威全文**:`运营中枢/参考资料/卡若复盘格式_固定规则.md` **v5.0**:**仅五块** 🎯📌💡📝▶;**🎯** 为 **单行一句话 ≤50 字(含标点)**,句内含 **目标+结果+达成率(%)**(**可为负**);**不把** Human 3.0、奇门八门**单独成段**(点名起盘时八门**附在五块之后**)。**禁止** `➡️ 🎯 复述`、`📊 复盘复述`、标准复盘内独立 ☯。**分发类**达成率以 **视频号等实际成功÷计划** 为主口径。Cursor / Agent 速查:`04_卡火(火)/火炬_全栈消息/卡若复盘格式/SKILL.md`(F01d)。 ## 13.2 五块结构(每块必带图标) diff --git a/运营中枢/参考资料/卡若复盘格式_固定规则.md b/运营中枢/参考资料/卡若复盘格式_固定规则.md index 375fc8a9..b29d51c2 100644 --- a/运营中枢/参考资料/卡若复盘格式_固定规则.md +++ b/运营中枢/参考资料/卡若复盘格式_固定规则.md @@ -1,6 +1,6 @@ # 卡若复盘格式(固定规则) -> **强制规则。** 卡若AI(卡路/卡罗拉同系)内**复盘格式永远只有一种**:完整复盘。**每一轮回复、每一个步骤结束**,均以**完整复盘块**收尾。**复盘块标题除日期外必须带时间**(YYYY-MM-DD HH:mm)。**复盘块内不用表格**,各块以**小图标 + 小标题**识别。 +> **强制规则。** **卡若AI** 内**复盘格式永远只有一种**:完整复盘。(语音误写「卡路」「卡罗拉」「卡路里」指本体系时均视同 **卡若**。)**每一轮回复、每一个步骤结束**,均以**完整复盘块**收尾。**复盘块标题除日期外必须带时间**(YYYY-MM-DD HH:mm)。**复盘块内不用表格**,各块以**小图标 + 小标题**识别。 > **v5.1(2026-03-26)**:**仅五块** 🎯📌💡📝▶。**🎯 为单行一句话**(**整句 ≤50 字**,含标点),内嵌**目标+结果+达成率数值**;达成率 **只允许 0~100%**,表示**本阶段 / 本回合约定范围内的完成比例**(**禁止负数**;受阻或未闭环用 **0% 或较低百分比**,原因写在 📌)。**禁止** `➡️ 🎯 块后达成率复述`、`📊 复盘结束达成率复述`、**标准复盘内任何独立** ☯/奇门/八门段。原八门体感若仍需表达,**只作为短语写进这一句**,不单列。用户**点名**「起盘 / 占卜术 / 八门 / Q门」时,按 `04_卡火(火)/火炬_全栈消息/项目开发占卜术/SKILL.md` **附在五块之后**追加,**不**计入 🎯 字数豁免。 --- @@ -148,7 +148,7 @@ ## 引用关系 - 规则:`.cursor/rules/karuo-ai.mdc` → 对话结束时强制本格式。 -- Cursor Skill:`.cursor/skills/karuo-recap-format/SKILL.md`(复盘 v5.0 速查)。 +- Cursor / Agent 速查:`04_卡火(火)/火炬_全栈消息/卡若复盘格式/SKILL.md`(F01d,复盘 v5.0)。 - 交互流程:`卡若AI交互流程与强制执行条件.md` § 五 与本文件一致。 - 执行流程:`卡若AI执行流程与对话全流程.md` 步骤 7 与本文件一致。 - **奇门八门(非默认复盘)**:`04_卡火(火)/火炬_全栈消息/项目开发占卜术/SKILL.md`(F01c · 演门测机)。 diff --git a/运营中枢/参考资料/卡若闽南口音_ASR纠错库.json b/运营中枢/参考资料/卡若闽南口音_ASR纠错库.json index 9411e750..b566f784 100644 --- a/运营中枢/参考资料/卡若闽南口音_ASR纠错库.json +++ b/运营中枢/参考资料/卡若闽南口音_ASR纠错库.json @@ -1,13 +1,21 @@ { "version": 1, - "updated": "2026-03-22", - "description": "卡若(闽南口音普通话)语音输入→文字 的常见 ASR 误听纠正。Cursor 理解用户话术前、字幕/脚本处理时均应用;长词优先替换。", + "updated": "2026-03-27", + "description": "卡若(闽南口音普通话)语音输入→文字 的常见 ASR 误听纠正。Cursor 理解用户话术前、字幕/脚本处理时均应用;长词优先替换。机制说明见 运营中枢/参考资料/闽南话语音_ASR纠错机制.md。", "apply_rules": [ "按 corrections 的 key 字符串长度降序做全文替换,避免短词误伤长词", "JSON 中的条目若在 soul_enhance 内置表已有同名 key,以本文件为准(运行时合并覆盖)", "发现新误听:直接把「误听→正写」追加进 corrections,可附 note 说明场景" ], "corrections": { + "卡洛创业派对": "卡若创业派对", + "卡路派对": "卡若派对", + "卡罗 AI": "卡若AI", + "卡洛 AI": "卡若AI", + "卡路 AI": "卡若AI", + "卡路亚": "卡若", + "纯课宝": "存客宝", + "纯客宝": "存客宝", "卡罗拉": "卡若", "卡罗伊": "卡若", "卡洛拉": "卡若", @@ -62,6 +70,9 @@ }, "notes": [ "「吹」在部分语境被 ASR 写成 Claude——已在 soul_enhance 内置表保留,勿在全局误替换;对话里若明确说工具名再按表纠正", - "Soul 相关「受→Soul」仅在与平台、推流、语音房语境下成立,若句义是「受伤」等请勿机械替换(模型结合上下文判断)" + "Soul 相关「受→Soul」仅在与平台、推流、语音房语境下成立,若句义是「受伤」等请勿机械替换(模型结合上下文判断)", + "未收录全局「卡路→卡若」「卡路里→卡若」:避免把营养/热量用语整块误替;若口述从不表示食物热量、且固定说成「卡路里」指卡若,可再议增加**短语级**长 key", + "机制与每轮滤真步骤:闽南话语音_ASR纠错机制.md + 语音转写纠错/SKILL.md(回廊洗字)", + "口述「科室、克室、课室」等在开发语境多指英文 Skill(.cursor/skills/.../SKILL.md),非医院科室;对照表见 闽南话语音_ASR纠错机制.md §八" ] } diff --git a/运营中枢/参考资料/闽南话语音_ASR纠错机制.md b/运营中枢/参考资料/闽南话语音_ASR纠错机制.md new file mode 100644 index 00000000..94d5fff1 --- /dev/null +++ b/运营中枢/参考资料/闽南话语音_ASR纠错机制.md @@ -0,0 +1,102 @@ +# 闽南话语音 · ASR 纠错机制(卡若口述专用) + +> **真源**:词条在 `卡若闽南口音_ASR纠错库.json`;流程与间名在 `02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md`(**回廊洗字 · W03b**)。 +> **适用**:卡若**以语音为主**、带闽南口音普通话时,输入法/听写固定误听;**每一轮对话**在理解意图前先做**内部滤真**(不必改用户原文展示)。 + +--- + +## 一、为什么要「每轮都滤」 + +- 同一发音可能被写成 **卡路 / 卡洛 / 卡罗 / 卡罗拉 / 卡路里** 等,语义却都是 **卡若** 或 **卡若AI**。 +- 工具名 **Cursor / Claude / Soul**、业务词 **私域 / 存客宝 / Soul 派对** 也常被写成近音别字。 +- **统一机制**:只维护 **一份 JSON**,Agent 与字幕脚本(`soul_enhance` 合并同库)共用,避免各处复制词典。 + +--- + +## 二、每轮对话 · Agent 强制步骤(理解前) + +1. **假定**用户消息含 ASR 噪声;对**关键片段**在内心或用脚本做一次「洗字」后再定意图、再执行。 +2. **替换顺序**:对 `corrections` 的 key **按字符串长度降序**全文替换,**先长后短**,避免短词截断长词(与 `apply_karuo_voice_corrections.py`、`soul_enhance` 一致)。 +3. **不强行改写展示**:用户气泡里的原文可以不动;**内部推理、引用需求、写代码/改文档**以洗字后的语义为准。 +4. **上下文兜底**:若替换后与常识冲突(例如明显在谈**食物热量**、**汽车卡罗拉**、名著《西游记》),以句义为准,**机械替换让位于理解**(见 JSON `notes` 与 W03b「星数/西游记」段)。 + +--- + +## 三、词库怎么维护(唯一入口) + +| 动作 | 做法 | +|:---|:---| +| **新增误听** | 编辑 `卡若闽南口音_ASR纠错库.json` → `corrections` 增加 `"误听": "正写"` | +| **优先长 key** | 能写成词组就写词组(如 `卡罗 AI`→`卡若AI`),少做会误伤的单字规则 | +| **改日期** | 同步改 JSON 顶部 `updated` 与 W03b `SKILL.md` 的 `updated`(有结构性变更时) | +| **禁止** | 在多个 Markdown 里各抄一份词典;**禁止**把易误伤的全局规则写进 JSON(如全局 `"西游记"→"星数"`) | + +--- + +## 四、命令行自检(可选) + +```bash +python3 "/Users/karuo/Documents/个人/卡若AI/运营中枢/工作台/脚本/apply_karuo_voice_corrections.py" "卡罗 AI 里改一下 skill" +echo "售上派对运营" | python3 "/Users/karuo/Documents/个人/卡若AI/运营中枢/工作台/脚本/apply_karuo_voice_corrections.py" +``` + +--- + +## 五、与 Cursor 规则的关系 + +- `.cursor/rules/karuo-ai.mdc` **启动**条:已要求读 JSON、`corrections` **长度降序**;本文件为**机制展开与迭代约定**。 +- 新误听发现后:**先追加 JSON**,再视需要在本文件「§六、常见类」补一行说明(可选)。 + +--- + +## 六、常见误听类别(示例,非全表) + +| 类 | 误听方向 | 正写方向 | +|:---|:---|:---| +| 本人 / 体系 | 卡路、卡洛、卡罗、卡罗拉、卡罗伊、卡洛拉、卡路里(指体系时) | 卡若 / 卡若AI | +| 工具 | 颗色、库色、蝌蚪、科色… | Cursor | +| 模型 | 克劳德、科劳德 | Claude | +| 平台 | 受/售/寿/瘦/亭 + 上、平台… | Soul… | +| 业务 | 私余、施育… | 私域 | +| 口语整词 | 基因交狼、货客… | 技能包、获客 | + +**完整列表以 JSON 为准**;本表仅帮助归类与 onboarding。 + +--- + +## 七、纠错工作台(多工作区 + Mongo) + +运维向:在 JSON 之外统计「误听词」在**本地仓库 / 工作台目录**与 **MongoDB 聊天库**中的出现频次,便于决定是否追加 `corrections`。**脚本不写回 JSON、不改聊天原文**。 + +| 入口 | 说明 | +|:---|:---| +| `运营中枢/工作台/闽南口音纠错工作台/README.md` | 流程、与工作区 Agent 命名的关系 | +| `…/脚本/minnan_asr_workbench.py` | **唯一脚本**:`scan-files` 扫盘;`scan-mongo` 扫库(`消息内容` + `对话记录`,含 Agent 标题线索) | + +多根路径:复制 `workspace_roots.example.txt` 为同目录 `workspace_roots.txt` 后编辑;或 `scan-files --root`。Mongo 与 `聊天记录管理/脚本/realtime_chat_sync.py` 一致,可用 `KARUO_MONGO_URI`、`KARUO_MONGO_DB` 覆盖。 + +--- + +## 八、附录:口述里「科室」等一般指什么 + +语音转写常把英文或抽象词写成汉字近音,下面是与**本套闽南 ASR 机制**最相关的对照(**不作 JSON 机械替换**,以免你在谈医院科室时被误改)。 + +| 口述/转写常见形态 | 在卡若体系里多半指 | 落点 | +|:---|:---|:---| +| **科室、克室、课室** | **Skill**(读作英 /skɪl/) | Cursor 里的**技能包**:`.cursor/skills/<名>/SKILL.md`,内含流程、触发词、规范 | +| **纠正裤、纠错裤** | **纠错库** | `卡若闽南口音_ASR纠错库.json` + 可选运维脚本 `minnan_asr_workbench.py` | +| **乘客、整格**(视句义) | **卡若** / **整个** / **整一下** | 前者见人名;后两者见「把整个目录…」「整一下格式」 | +| **回廊洗字、W03b** | 水溪厢**间名** | `02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md`(与 JSON、本机制文配套) | + +**一句话**:你问「这个内容相关的**科室**是什么」→ 在开发语境下通常是在问 **Skill 是什么、对应哪个 SKILL.md**;若问的是语音误听本身,则看 **W03b + JSON + 本文件 §七 工作台**。 + +--- + +## 九、版本 + +| 日期 | 说明 | +|:---|:---| +| 2026-03-27 | 初版:闽南话语音 ASR 纠错机制总文档;与 W03b、JSON、karuo-ai.mdc 对齐 | +| 2026-03-27 | 增 §七:闽南口音纠错工作台与脚本索引 | +| 2026-03-27 | §七:工作台脚本合并为 `minnan_asr_workbench.py`(子命令 scan-files / scan-mongo) | +| 2026-03-27 | 增 §八:附录(口述「科室」≈ Skill 等对照);原「版本」改为 §九 | diff --git a/运营中枢/工作台/00_能力总索引.md b/运营中枢/工作台/00_能力总索引.md index f140a90d..0c7604f0 100644 --- a/运营中枢/工作台/00_能力总索引.md +++ b/运营中枢/工作台/00_能力总索引.md @@ -1,6 +1,8 @@ # 卡若AI 能力总索引 -> 多维度分类 + 快速任务分配 | 5 负责人 14 成员 64 技能 | 人设与分配见 `运营中枢/技能路由/SKILL.md`。**技能全量登记与配置/安装/删除**见 **`运营中枢/工作台/01_技能控制台.md`**;触发词与路径以 **根目录 `SKILL_REGISTRY.md`** 为准。 +> 多维度分类 + 快速任务分配 | 5 负责人 15 成员 | **技能数以根目录 `SKILL_REGISTRY.md` 头注为准(勿写死)** | 人设与分配见 `运营中枢/技能路由/SKILL.md`。**技能全量登记与配置/安装/删除**见 **`运营中枢/工作台/01_技能控制台.md`**。 + +> **软件开发专项导航**:写代码、搭新项目、部署、小程序与获客深链路 → 见 **`运营中枢/工作台/开发域_Skill模块化索引.md`**(M1~M11 模块 + 项目类型组合)。 --- diff --git a/运营中枢/工作台/01_技能控制台.md b/运营中枢/工作台/01_技能控制台.md index 581ca8f9..da1a2bad 100644 --- a/运营中枢/工作台/01_技能控制台.md +++ b/运营中枢/工作台/01_技能控制台.md @@ -1,8 +1,8 @@ # 技能控制台 > **控制台**:技能配置、安装、删除、登记与掌管人一览。所有 Skill 的配置说明、参数、安装/删除流程统一由此入口管理。 -> 技能数以 `SKILL_REGISTRY.md` 头注为准 | 14 成员 | 5 负责人 | 与 `SKILL_REGISTRY.md` 一一对应 -> 版本:1.4 | 更新:2026-03-26 +> 技能数以 `SKILL_REGISTRY.md` 头注为准 | 15 成员 | 5 负责人 | 与 `SKILL_REGISTRY.md` 一一对应 +> 版本:1.6 | 更新:2026-03-26 --- @@ -85,6 +85,7 @@ updated: "2026-03-01" | **技能注册表** | 根目录 `SKILL_REGISTRY.md` | 触发词、路径、成员、一句话;AI 查表路由用 | | **技能控制台** | 本文件 `运营中枢/工作台/01_技能控制台.md` | 配置/安装/删除/掌管人总览 | | **能力总索引** | `运营中枢/工作台/00_能力总索引.md` | 按能力类型/操作属性/场景分类(可与注册表互补) | +| **开发域模块化索引** | `运营中枢/工作台/开发域_Skill模块化索引.md` | **写代码/搭项目/部署/小程序与获客链路** 按 M1~M11 模块导航;新项目组合速查 | | **物理路径** | `0X_卡X(X)/成员名_xxx/技能目录/SKILL.md` | 技能必须放在对应「掌管人」目录下 | **掌管人** = 该技能在 SKILL_REGISTRY 中的「成员」列;一个技能只归属一个成员,该成员所在目录即技能所在路径。 @@ -115,8 +116,8 @@ python3 "05_卡土(土)/土砖_技能复制/基因胶囊/脚本/gene_capsule ### 2.3 Cursor 技能(Agent Skills) -- **安装/创建**:用 Cursor 的「创建技能」规则(`.cursor/skills/` 或 Cursor 内 create-skill);安装第三方技能时按 Cursor 文档操作。 -- **登记**:若该技能同时纳入卡若AI 能力(即需从 SKILL_REGISTRY 路由),则在卡若AI 仓库内按 2.1 登记;仅 Cursor 本地使用可不入 SKILL_REGISTRY。 +- **卡若自有能力**:正文 **必须** 写在 **`01_~05_卡X` 五行目录**(或 `运营中枢/工作台/` 等已约定位置),并登记 `SKILL_REGISTRY.md` + 本控制台;**禁止**在 **`卡若AI/.cursor/skills/`** 下新增 Skill 正文(该目录仅保留 `README.md` 迁移说明)。 +- **第三方 / 纯 Cursor 插件**:可用 Cursor 内 create-skill 或官方文档安装;若后续纳入卡若能力,再按 2.1 **迁入五行目录** 并登记。 ### 2.4 Codex 技能 @@ -137,7 +138,7 @@ python3 "05_卡土(土)/土砖_技能复制/基因胶囊/脚本/gene_capsule ### 3.2 Cursor / Codex 技能 -- Cursor:从 `.cursor/skills/` 或对应规则目录删除或禁用。 +- Cursor:卡若自有技能从 **五行目录** 物理删除或下线,并同步 `SKILL_REGISTRY`;**勿**在 `卡若AI/.cursor/skills/` 留正文副本。 - Codex:从 `$CODEX_HOME/skills` 删除对应技能目录;重启 Codex 生效。 --- @@ -176,6 +177,12 @@ python3 "05_卡土(土)/土砖_技能复制/基因胶囊/脚本/gene_capsule | 成员 | 技能编号 | 技能名 | SKILL 路径 | |:---|:--|:---|:---| | **水岸** | **W17** | **项目管理中枢** | `02_卡人(水)/水岸_项目管理/SKILL.md` | +| 水岸 | — | **Soul技能归口(总索引)** | `02_卡人(水)/水岸_项目管理/Soul技能归口/SKILL.md` | +| 水岸 | K01 | 卡若创业派对_总控 | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若创业派对_总控/SKILL.md` | +| 水岸 | K02 | 卡若玉宁运营专线 | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若玉宁运营专线/SKILL.md` | +| 水岸 | K03 | 卡若网站开发_永平三端 | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若网站开发_永平三端/SKILL.md` | +| 水岸 | — | Soul派对项目管理_Cursor入口 | `02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对项目管理_Cursor入口/SKILL.md` | +| 水岸 | — | Soul派对运营报表_Cursor入口 | `02_卡人(水)/水岸_项目管理/Soul技能归口/Soul派对运营报表_Cursor入口/SKILL.md` | | 水溪 | W01 | 文件整理 | `02_卡人(水)/水溪_整理归档/文件整理/SKILL.md` | | 水溪 | W02 | 文档清洗 | `02_卡人(水)/水溪_整理归档/文档清洗/SKILL.md` | | 水溪 | W03 | 对话归档 | `02_卡人(水)/水溪_整理归档/对话归档/SKILL.md` | @@ -196,7 +203,6 @@ python3 "05_卡土(土)/土砖_技能复制/基因胶囊/脚本/gene_capsule | 水桥 | W16 | 飞书JSON格式 | `02_卡人(水)/水桥_平台对接/飞书管理/飞书JSON格式_SKILL.md` | | 水桥 | W10b | 平台账号申诉解封 | `02_卡人(水)/水桥_平台对接/平台账号申诉解封/SKILL.md` | | 水桥 | W11a | Soul发到素材库 | `02_卡人(水)/水桥_平台对接/飞书管理/Soul发到素材库_SKILL.md` | - ### 木组 · 卡木(木叶、木根、木果) | 成员 | 技能编号 | 技能名 | SKILL 路径 | @@ -224,6 +230,9 @@ python3 "05_卡土(土)/土砖_技能复制/基因胶囊/脚本/gene_capsule |:---|:--|:---|:---| | 火炬 | F01 | 全栈开发 | `04_卡火(火)/火炬_全栈消息/全栈开发/SKILL.md` | | 火炬 | F01a | 前端开发 | `04_卡火(火)/火炬_全栈消息/前端开发/SKILL.md` | +| 火炬 | F01b | 全栈测试 | `04_卡火(火)/火炬_全栈消息/全栈开发/全栈测试/SKILL.md` | +| 火炬 | F01c | 项目开发占卜术 | `04_卡火(火)/火炬_全栈消息/项目开发占卜术/SKILL.md` | +| 火炬 | F01d | 卡若复盘格式 | `04_卡火(火)/火炬_全栈消息/卡若复盘格式/SKILL.md` | | 火炬 | F02 | 消息中枢 | `04_卡火(火)/火炬_全栈消息/消息中枢/SKILL.md` | | 火炬 | F03 | 读书笔记 | `04_卡火(火)/火炬_全栈消息/读书笔记/SKILL.md` | | 火炬 | F04 | 文档清洗 | `04_卡火(火)/火炬_全栈消息/文档清洗/SKILL.md` | @@ -232,6 +241,11 @@ python3 "05_卡土(土)/土砖_技能复制/基因胶囊/脚本/gene_capsule | 火炬 | F11 | 量化交易 | `04_卡火(火)/火炬_全栈消息/量化交易/SKILL.md` | | 火炬 | F12 | 对话归档 | `04_卡火(火)/火炬_全栈消息/对话归档/SKILL.md` | | 火炬 | F22 | 本地项目启动 | `04_卡火(火)/火炬_全栈消息/本地项目启动/SKILL.md` | +| 火炬 | F23 | 小程序链接标签与跨小程序跳转 | `04_卡火(火)/火炬_全栈消息/小程序链接标签与跨小程序跳转/SKILL.md` | +| 火炬 | F24 | 推广邀请与三十日绑定 | `04_卡火(火)/火炬_全栈消息/推广邀请与三十日绑定/SKILL.md` | +| 火炬 | F25 | 分销佣金与提现编排 | `04_卡火(火)/火炬_全栈消息/分销佣金与提现编排/SKILL.md` | +| 火炬 | F26 | 超级个体点击与获客统计 | `04_卡火(火)/火炬_全栈消息/超级个体点击与获客统计/SKILL.md` | +| 火炬 | F27 | 存客宝BFF与留资队列 | `04_卡火(火)/火炬_全栈消息/存客宝BFF与留资队列/SKILL.md` | | 火锤 | F05 | 代码修复 | `04_卡火(火)/火锤_代码修复/代码修复/SKILL.md` | | 火眼 | F06 | 智能追问 | `04_卡火(火)/火眼_智能追问/智能追问/SKILL.md` | | 火种 | F07 | 读书笔记(模型) | `04_卡火(火)/火种_知识模型/读书笔记/SKILL.md` | @@ -283,15 +297,16 @@ python3 "05_卡土(土)/土砖_技能复制/基因胶囊/脚本/gene_capsule --- -## 六(补)· Cursor Agent Skills:卡路创业派对(不计入 skills_export.json) +## 六(补)· 卡若 K01~K03(五行目录真源,不计入 skills_export.json) -> 路径均在 **卡若AI 仓库** `.cursor/skills/`,供 Cursor 侧「运营-* / 网站-*」Agent 归口;**不写入** `skills_export.json` 的 64/75 项五行表。 +> **2026-03-26 起**:K01~K03、F01d 等已从 **`卡若AI/.cursor/skills/`** 迁入下表路径;请在 Cursor「技能 / Agent」配置中改为 **卡若AI 仓库内绝对路径**。**不写入** `skills_export.json` 的五行 80 项表。 -| ID | 名称 | 路径 | +| ID | 名称 | 路径(卡若AI 根相对) | |:---|:---|:---| -| K01 | 卡路创业派对(总控) | `.cursor/skills/kalu-entrepreneur-party/SKILL.md` | -| K02 | 卡路·玉宁运营 | `.cursor/skills/kalu-party-yuning-ops/SKILL.md` | -| K03 | 卡路·网站开发(永平) | `.cursor/skills/kalu-party-soul-website-dev/SKILL.md` | +| K01 | 卡若创业派对(总控) | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若创业派对_总控/SKILL.md` | +| K02 | 卡若·玉宁运营 | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若玉宁运营专线/SKILL.md` | +| K03 | 卡若·网站开发(永平) | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若网站开发_永平三端/SKILL.md` | +| — | **Soul技能归口(总索引)** | `02_卡人(水)/水岸_项目管理/Soul技能归口/SKILL.md` | | — | **Soul 派对技能流(Stream)** | `02_卡人(水)/水岸_项目管理/卡若创业派对/Soul派对技能流_掌管人与Stream规约.md` | > **Stream**:卡若创业派对 **运营全链路** 的掌管人矩阵与调用规约(非独立 SKILL 文件编号,与 K02/W17/README 交叉引用)。 @@ -303,6 +318,9 @@ python3 "05_卡土(土)/土砖_技能复制/基因胶囊/脚本/gene_capsule | 日期 | 变更 | |:---|:---| | 2026-03-01 | 初版:技能配置/安装/删除/按掌管人登记;与 SKILL_REGISTRY 64 技能对齐 | -| 2026-03-23 | 增补卡路 K01~K03 Cursor Skills 登记(见上节);详表见 SKILL_REGISTRY「卡路项目簇」 | +| 2026-03-23 | 增补卡若 K01~K03 Cursor Skills 登记(见上节);详表见 SKILL_REGISTRY「Soul技能归口」 | | 2026-03-23 | 补登记 **水岸 W17**;水桥 W11a/W16/W10b;木叶 M01d~M01h;新增 **Soul 派对技能流(Stream)** 规约路径 | | 2026-03-23 | 确立 **卡若记忆宫殿命名体系**(〇节);路径首段 **卡若记忆宫殿**;W03b 间名 **回廊洗字**;frontmatter `memory_palace_path` 等 | +| 2026-03-26 | **K01~K03、F01d** 等从 `.cursor/skills/` **迁入五行目录**;控制台补登记 F01b/F01c/F01d、K01/K02、薄入口与 K03;**禁止**在卡若AI `.cursor/skills/` 新增正文 | +| 2026-03-26 | **Soul技能归口** 目录建立:K01~K03、两薄入口并入 `水岸_项目管理/Soul技能归口/`;**水岸** 为套件掌管人;K03 登记自火炬并入水岸;用语 **卡若** 统一 | +| 2026-03-27 | 文档内「卡路」「卡路里(指体系)」「卡路亚」「卡罗 AI」等收口为 **卡若** / **卡若AI** | diff --git a/运营中枢/工作台/gitea_push_log.md b/运营中枢/工作台/gitea_push_log.md index c9b0661c..383ed566 100644 --- a/运营中枢/工作台/gitea_push_log.md +++ b/运营中枢/工作台/gitea_push_log.md @@ -441,3 +441,4 @@ | 2026-03-26 05:17:53 | 🔄 卡若AI 同步 2026-03-26 05:17 | 更新:Cursor规则、金仓、卡木、总索引与入口、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 12 个 | | 2026-03-26 18:14:06 | 🔄 卡若AI 同步 2026-03-26 18:14 | 更新:Cursor规则、金仓、水溪整理归档、卡木、火炬、总索引与入口、运营中枢、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 12 个 | | 2026-03-26 18:21:03 | 🔄 卡若AI 同步 2026-03-26 18:21 | 更新:运营中枢工作台 | 排除 >20MB: 12 个 | +| 2026-03-26 18:27:30 | 🔄 卡若AI 同步 2026-03-26 18:27 | 更新:金仓、运营中枢工作台 | 排除 >20MB: 12 个 | diff --git a/运营中枢/工作台/代码管理.md b/运营中枢/工作台/代码管理.md index a1cebf69..695bdd19 100644 --- a/运营中枢/工作台/代码管理.md +++ b/运营中枢/工作台/代码管理.md @@ -444,3 +444,4 @@ | 2026-03-26 05:17:53 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-26 05:17 | 更新:Cursor规则、金仓、卡木、总索引与入口、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 12 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-03-26 18:14:06 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-26 18:14 | 更新:Cursor规则、金仓、水溪整理归档、卡木、火炬、总索引与入口、运营中枢、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 12 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-03-26 18:21:03 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-26 18:21 | 更新:运营中枢工作台 | 排除 >20MB: 12 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | +| 2026-03-26 18:27:30 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-26 18:27 | 更新:金仓、运营中枢工作台 | 排除 >20MB: 12 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | diff --git a/运营中枢/工作台/开发域_Skill模块化索引.md b/运营中枢/工作台/开发域_Skill模块化索引.md new file mode 100644 index 00000000..127169af --- /dev/null +++ b/运营中枢/工作台/开发域_Skill模块化索引.md @@ -0,0 +1,155 @@ +# 开发域 Skill 模块化索引 + +> **用途**:把卡若AI 里与**写代码、搭项目、联调、部署、小程序/增长链路**相关的 Skill,按**功能模块**归类,方便**新项目**按需组合,而不必每次全表扫 `SKILL_REGISTRY.md`。 +> **真源**:编号、触发词、路径仍以根目录 **`SKILL_REGISTRY.md`** 为准;本文件只做**导航与推荐组合**。 + +--- + +## 一、新项目:推荐阅读顺序(轻量 → 重) + +| 顺序 | 做什么 | 读哪个 Skill | +|:---:|:---|:---| +| 1 | 定需求、拆任务、排计划 | **W05** 需求拆解与计划制定、**W06** 任务规划 | +| 2 | 建站/全站流程、开发文档 1~10、埋点总则 | **F01** 全栈开发(§1.10 埋点;§1.11 获客见 F23~F27 索引) | +| 3 | 只维护某站的 1~10 文档 | **F09** 开发文档操控 | +| 4 | 脚手架:目录结构 / 模板 | **M03** 项目生成、**M04** 开发模板 | +| 5 | 前端视觉与组件标准 | **F01a** 前端开发 | +| 6 | 功能做完验收 | **F01b** 全栈测试 | +| 7 | Bug / 疑难 | **F05** 代码修复;需求不清 → **F06** 智能追问 | +| 8 | 本机跑起来、端口不冲突 | **F22** 本地项目启动、**G21** 端口登记 | +| 9 | 上云 / 静态站 | **G19** Vercel与v0部署流水线 | +| 10 | 私域/存客宝深度对接 | **G15** 存客宝(API/库表);小程序只打 BFF 时叠加 **F27** | + +**对话规范**(卡若系项目):收尾复盘 → **F01d** `04_卡火(火)/火炬_全栈消息/卡若复盘格式/SKILL.md`。 + +--- + +## 二、按「开发模块」分类(核心表) + +路径均相对于 **卡若AI 仓库根**(卡若 K01~K03、F01d 等已迁入五行目录,见 `SKILL_REGISTRY`)。 + +### M1 · 全栈流程与文档 + +| 模块 | 编号 | 技能 | SKILL 路径(或说明) | +|:---|:---:|:---|:---| +| 全栈总纲 + 官网 1~10 + 埋点 | F01 | 全栈开发 | `04_卡火(火)/火炬_全栈消息/全栈开发/SKILL.md` | +| 开发文档 1~10 操控 | F09 | 开发文档操控 | `04_卡火(火)/火炬_全栈消息/开发文档操控/SKILL.md` | +| 需求 / 计划 | W05、W06 | 需求拆解、任务规划 | `02_卡人(水)/水泉_规划拆解/…` | +| 复盘格式 | F01d | 卡若复盘格式 | `04_卡火(火)/火炬_全栈消息/卡若复盘格式/SKILL.md` | +| 奇门起盘(仅点名) | F01c | 项目开发占卜术 | `04_卡火(火)/火炬_全栈消息/项目开发占卜术/SKILL.md` | + +### M2 · 前端 / UI / 可视化稿 + +| 模块 | 编号 | 技能 | SKILL 路径 | +|:---|:---:|:---|:---| +| 毛玻璃与前端标准 | F01a | 前端开发 | `04_卡火(火)/火炬_全栈消息/前端开发/SKILL.md` | +| 快速出页面 | M06 | 前端生成 | `03_卡木(木)/木果_项目模板/前端生成/SKILL.md` | +| 架构图 / draw.io 风 | M08 | Next AI Draw | `03_卡木(木)/木果_项目模板/Next AI Draw/SKILL.md` | + +### M3 · 质量、排错与 AI 辅助 + +| 模块 | 编号 | 技能 | SKILL 路径 | +|:---|:---:|:---|:---| +| 系统化测试验收 | F01b | 全栈测试 | `04_卡火(火)/火炬_全栈消息/全栈开发/全栈测试/SKILL.md` | +| Bug 定位修复 | F05 | 代码修复 | `04_卡火(火)/火锤_代码修复/代码修复/SKILL.md` | +| 需求澄清追问 | F06 | 智能追问 | `04_卡火(火)/火眼_智能追问/智能追问/SKILL.md` | +| 本地代码语义索引 | F21 | 本地代码库索引 | `04_卡火(火)/火种_知识模型/本地代码库索引/SKILL.md` | + +### M4 · 运行环境、部署与仓库 + +| 模块 | 编号 | 技能 | SKILL 路径 | +|:---|:---:|:---|:---| +| 本机启动 / Docker | F22 | 本地项目启动 | `04_卡火(火)/火炬_全栈消息/本地项目启动/SKILL.md` | +| 端口登记 | G21 | 端口登记 | `运营中枢/工作台/端口登记/SKILL.md` | +| Vercel / v0 | G19 | Vercel与v0部署流水线 | `01_卡资(金)/金盾_数据安全/Vercel与v0部署流水线/SKILL.md` | +| 服务器 / 宝塔 | G07 | 服务器管理 | `01_卡资(金)/金仓_存储备份/服务器管理/SKILL.md` | +| Git 托管同步 | G02 | Gitea管理 | `01_卡资(金)/金仓_存储备份/Gitea管理/SKILL.md` | +| 数据库运维 | G13 | 数据库管理 | `01_卡资(金)/金仓_存储备份/数据库管理/SKILL.md` | + +### M5 · 脚手架、技能复制与「一整包项目 AI」 + +| 模块 | 编号 | 技能 | SKILL 路径 | +|:---|:---:|:---|:---| +| 五行目录新项目 | M03 | 项目生成 | `03_卡木(木)/木果_项目模板/项目生成/SKILL.md` | +| 前后端模板库 | M04 | 开发模板 | `03_卡木(木)/木果_项目模板/开发模板/SKILL.md` | +| 批量造 Skill | E02 | 技能工厂 | `05_卡土(土)/土砖_技能复制/技能工厂/SKILL.md` | +| Skill 打包遗传 | E07 | 基因胶囊 | `05_卡土(土)/土砖_技能复制/基因胶囊/SKILL.md` | +| 克隆一整套 AI 项目体系 | E08 | 项目AI生成器 | `05_卡土(土)/土砖_技能复制/项目AI生成器/SKILL.md` | + +### M6 · 逆向、接口与 MCP + +| 模块 | 编号 | 技能 | SKILL 路径 | +|:---|:---:|:---|:---| +| 网站 API 分析 | M02 | 网站逆向分析 | `03_卡木(木)/木根_逆向分析/网站逆向分析/SKILL.md` | +| AI 平台自动注册 Key | M02a | 全网AI自动注册 | `03_卡木(木)/木根_逆向分析/全网AI自动注册/SKILL.md` | +| 找/装 MCP | W12 | MCP 搜索与连接 | `02_卡人(水)/水桥_平台对接/MCP管理/SKILL.md` | + +### M7 · 微信 / 小程序生态(平台侧) + +| 模块 | 编号 | 技能 | SKILL 路径 | +|:---|:---:|:---|:---| +| 小程序发版等 | W09 | 小程序管理 | `02_卡人(水)/水桥_平台对接/小程序管理/SKILL.md` | + +### M8 · 获客与深链路(可复用到其它小程序 + BFF) + +> 参考实现常指向 **永平** `一场soul的创业实验-永平`;与 **§1.10 通用埋点**并存,**口径勿混**。 + +| 模块 | 编号 | 技能 | SKILL 路径 | +|:---|:---:|:---|:---| +| `#linkTag` / 跨小程序 | F23 | 小程序链接标签与跨小程序跳转 | `04_卡火(火)/火炬_全栈消息/小程序链接标签与跨小程序跳转/SKILL.md` | +| 推广 visit / bind | F24 | 推广邀请与三十日绑定 | `04_卡火(火)/火炬_全栈消息/推广邀请与三十日绑定/SKILL.md` | +| 分佣 / 提现 | F25 | 分销佣金与提现编排 | `04_卡火(火)/火炬_全栈消息/分销佣金与提现编排/SKILL.md` | +| 超级个体点击 / 获客统计 | F26 | 超级个体点击与获客统计 | `04_卡火(火)/火炬_全栈消息/超级个体点击与获客统计/SKILL.md` | +| 存客宝 BFF / 留资队列 | F27 | 存客宝BFF与留资队列 | `04_卡火(火)/火炬_全栈消息/存客宝BFF与留资队列/SKILL.md` | +| 存客宝开放 API / 库表 | G15 | 存客宝 | `01_卡资(金)/金盾_数据安全/存客宝/SKILL.md` | +| 30 天捆绑分销可复用 SCALE | E02a | 全站捆绑分销体系 | `05_卡土(土)/土砖_技能复制/全站捆绑分销体系/SKILL.md` | + +### M9 · IM / 消息集成 + +| 模块 | 编号 | 技能 | SKILL 路径 | +|:---|:---:|:---|:---| +| 多通道 IM 网关 | F02a | 艾叶 IM Bridge | `04_卡火(火)/火炬_全栈消息/艾叶/SKILL.md` | +| 多平台消息聚合(偏 Bot) | F02 | 消息中枢 | `04_卡火(火)/火炬_全栈消息/消息中枢/SKILL.md` | + +### M10 · Soul技能归口(K01~K03,水岸掌管) + +| 场景 | 编号 | 读哪个 | +|:---|:---:|:---| +| **套件总索引 / 目录地图** | — | `02_卡人(水)/水岸_项目管理/Soul技能归口/SKILL.md` | +| 运营 vs 开发分流 | K01 | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若创业派对_总控/SKILL.md` | +| 玉宁:内容 / 切片 / 报表 / 分发 | K02 | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若玉宁运营专线/SKILL.md` | +| **永平三端**:soul-api / soul-admin / miniprogram | K03 | `02_卡人(水)/水岸_项目管理/Soul技能归口/卡若网站开发_永平三端/SKILL.md` | + +**注意**:K03 要求进 **永平 Git 仓库**后,再读该仓库内的 `api-dev` / `admin-dev` / `miniprogram-dev` / `change-checklist`(不在卡若AI 五行目录)。 + +### M11 · 本地模型(离线辅助写代码 / 拆书) + +| 模块 | 编号 | 技能 | SKILL 路径 | +|:---|:---:|:---|:---| +| Ollama / Qwen | F08 | 本地模型 | `04_卡火(火)/火种_知识模型/本地模型/SKILL.md` | + +--- + +## 三、按「项目类型」一键选包(组合建议) + +| 项目类型 | 建议模块包 | +|:---|:---| +| **全新官网 / 全站** | M1(F01→F09)+ M2 + M3(F01b)+ M4(G21、F22、G19 或 G07) | +| **微信小程序 + 自有后端** | M1 + M7 + M8(按需 F23~F27)+ M4 + **K03(若在 Soul 永平)** | +| **要接存客宝私域** | M8 中 **G15** 必选;小程序链路加 **F27**;统计口径加 **F26** | +| **从 0 复制「带 Skill 的项目」** | M5(M03/M04 + E08 或 E07) | +| **扒接口 / 接第三方** | M6 + M4 | +| **仅修 Bug / 救火** | M3(F05 + F01b) | + +--- + +## 四、维护约定 + +1. **新增开发类 Skill**:先登记 `SKILL_REGISTRY.md` 与 `01_技能控制台.md`,再在本文件对应 **模块表** 增一行。 +2. **勿写死技能总数**:全量统计以 Registry 头注为准。 +3. **与 `00_能力总索引.md` 关系**:能力总索引偏「全卡若任务分配」;本文件偏「软件开发链路」专表,二者互链即可。 +4. **卡若自有 Skill**:正文写在 **`01_~05_卡X`**,**禁止**在 **`卡若AI/.cursor/skills/`** 新增正文(见 `.cursor/skills/README.md`)。 + +--- + +*最后更新:2026-03-26(K01~K03、F01d 迁入五行目录)* diff --git a/运营中枢/工作台/闽南口音纠错工作台/README.md b/运营中枢/工作台/闽南口音纠错工作台/README.md new file mode 100644 index 00000000..64e0108f --- /dev/null +++ b/运营中枢/工作台/闽南口音纠错工作台/README.md @@ -0,0 +1,62 @@ +# 闽南口音 · ASR 纠错工作台 + +> **定位**:在**唯一词库** `运营中枢/参考资料/卡若闽南口音_ASR纠错库.json` 之外,提供「扫仓库 + 扫聊天库 + 出报告」的**运维面**,方便迭代纠错表;**不复制**词典正文到本目录。 +> **机制**:`运营中枢/参考资料/闽南话语音_ASR纠错机制.md` · **回廊洗字 W03b**:`02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md` + +--- + +## 一、与工作区 Agent 的关系 + +- Cursor 右侧 **Pinned / Agents** 标题(如 `运营-视频切片`、`网站-部署`)多为**首条用户消息**或手工命名,语音误听会直接体现在**对话标题**里。 +- **运行时纠错**:仍靠 Agent **每轮**按 JSON **长度降序**滤真(见 `karuo-ai.mdc`)。 +- **本工作台**:用脚本在 **Git 仓库 / 工作台目录 / MongoDB** 里统计「误听词」出现次数,**辅助你决定**是否把某词加入 JSON(**脚本默认不写回 JSON**,避免误伤)。 + +--- + +## 二、目录内文件 + +| 文件 | 作用 | +|:---|:---| +| `README.md` | 本说明 | +| `workspace_roots.example.txt` | 多根工作区路径示例(复制为 `workspace_roots.txt` 后按需改) | +| `脚本/minnan_asr_workbench.py` | **唯一入口**:子命令 `scan-files`(扫盘)、`scan-mongo`(扫库) | +| `reports/` | 运行脚本后生成的报告(可 `.gitignore` 或按需提交) | + +### 调用示例 + +```bash +WB="/Users/karuo/Documents/个人/卡若AI/运营中枢/工作台/闽南口音纠错工作台/脚本/minnan_asr_workbench.py" + +python3 "$WB" scan-files --help +python3 "$WB" scan-files +python3 "$WB" scan-files --root "/path/to/另一仓库" + +python3 "$WB" scan-mongo --help +python3 "$WB" scan-mongo +python3 "$WB" scan-mongo --user-only --msg-limit 80000 +``` + +--- + +## 三、推荐节奏(完善纠错库) + +1. **改前**:`python3 .../realtime_chat_sync.py`(保证 Mongo 与 Cursor 尽量新)。 +2. **扫盘**:`python3 .../minnan_asr_workbench.py scan-files`。 +3. **扫库**:`python3 .../minnan_asr_workbench.py scan-mongo` → 打开 `reports/` 下最新 md。 +4. **人工**:把**高频且语义稳定**的误听,按**长 key 优先**写入 JSON;改 `updated`。 +5. **回归**:再跑 `apply_karuo_voice_corrections.py` 抽几句验收。 + +--- + +## 四、Mongo 连接 + +与 `聊天记录管理/脚本/realtime_chat_sync.py` 一致:默认 `mongodb://admin:admin123@localhost:27017/?authSource=admin`,库名 `karuo_site`。若本机未起 Mongo,脚本会提示并跳过或生成空报告说明。 + +--- + +## 五、版本 + +| 日期 | 说明 | +|:---|:---| +| 2026-03-27 | 初版:工作台 + 扫盘/扫库脚本 | +| 2026-03-27 | 合并为单一入口 `minnan_asr_workbench.py`(scan-files / scan-mongo) | diff --git a/运营中枢/工作台/闽南口音纠错工作台/reports/.gitkeep b/运营中枢/工作台/闽南口音纠错工作台/reports/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/运营中枢/工作台/闽南口音纠错工作台/reports/mongo_asr_20260326_141157.md b/运营中枢/工作台/闽南口音纠错工作台/reports/mongo_asr_20260326_141157.md new file mode 100644 index 00000000..3e36b4ba --- /dev/null +++ b/运营中枢/工作台/闽南口音纠错工作台/reports/mongo_asr_20260326_141157.md @@ -0,0 +1,46 @@ +# ASR 纠错 key · Mongo 聊天库统计 + +- 生成 UTC: 20260326_141157 +- 库: `karuo_site` +- 扫描消息条数上限: 5000(实际遍历 5000 条) +- 用户消息仅: False + +## 消息正文 + 对话名称 + 首条消息 · 合并汇总 + +| 误听 key | 正写 | 命中次数 | +|:---|:---|---:| +| 卡洛 AI | 卡若AI | 86 | +| 卡罗 AI | 卡若AI | 68 | +| 卡罗拉 | 卡若 | 28 | +| 卡路 AI | 卡若AI | 26 | +| 龙虾 | AI工具 | 21 | +| 纯课宝 | 存客宝 | 15 | +| Skier | 智能体 | 14 | +| 卡罗伊 | 卡若 | 13 | +| 小龙虾 | AI工具 | 11 | +| 卡路亚 | 卡若 | 8 | +| 统安 | 同安 | 5 | +| 受的 | Soul的 | 4 | +| 受上 | Soul上 | 1 | + +## 仅出现在「对话名称」的命中(Agent 标题线索) + +| key | 次数 | 名称样例 | +|:---|---:|:---| +| 卡洛 AI | 32 | 卡洛 AI 文件存储优化;AgentCPM-Explore 与卡洛 AI 对比;GitHub 项目技能卡洛 AI 吸收;卡洛 AI 目录结构优化;那个将卡洛 AI 里面的那个 skill 做按,卡洛常用,按我常用的那个分类的形式分成5个文件夹,然后相应的功能放到这个5个文件夹里面,然后在规则里面你制定好分 | +| 卡罗 AI | 16 | 卡罗 AI 追问项目;卡罗 AI 文件恢复;追问 用卡罗 AI 这个追问的方式来追问skill一下这个项目;然后看一下这个卡罗 AI 的整个的那个对话跟操作流程,跟整个的那个一个形式不超过1,000个字,帮我有图标,有流程图的展示出来,那不要生成文档,按对话的形式来跟;把这个卡罗伊的 skill 的所有的人的能力工作台和能力总索引。根据卡罗 AI 的这个团队的整个布局,每一个人的一个。工作,把这个迭代一下,让我能快速的那个了解 | +| 卡罗拉 | 8 | 一场创业实验的这一个分享的机子提取那个分销的这个机制到卡罗拉的那个 skill 里面去,然后把这个 skill 以后就用在分销的整体的一个结构,30天锁定分销的;让这个卡罗拉管理那个群晖的能力,那个覆盖那个用他的能力来优化一下这个,现在这个请回 NAS 这个项目的所有的文件目录和结构做一个统一的文件的优化,然后用卡罗维亚;后端 将这个卡罗拉,这里面关于上帝之眼跟股票的里面获得的相应的那个数据库形成这个后端,以及后端的话,就是做前端的所有那个数据库,然后后端的话登录账号密码都是 a;把这个财务卡罗拉里面这个财务的功能,然后参考一下这个飞书里面知识库里面的那个财务,相应的知识库下载里面的那个文档,然后总结我的表述的格式跟需求,跟项目做一个优化;一场创业实验的这一个分享的机子提取那个分销的这个机制到卡罗拉的那个 skill 里面去,然后把这个 skill 以后就用在分销的整体的一个结构,30天锁定分销的 | +| 卡路 AI | 6 | 卡路 AI 自动化流量技能分配;把那个卡路 AI 的那个经验库的功能,然后和吸收经验的逻辑,然后复刻一份到那个纯科宝 AI 上面,然后让它每一次嗯,超过10个文档,就,嗯自动的去那个迭代经验。;卡路 AI 里面的那个目录里面找到这个今年该买的这个三只股票的一个内容和目录。直接找出来,并且能让直接找出来,然后分析报告。;把那个卡路 AI 的那个经验库的功能,然后和吸收经验的逻辑,然后复刻一份到那个纯科宝 AI 上面,然后让它每一次嗯,超过10个文档,就,嗯自动的去那个迭代经验。;卡路 AI 里面的那个目录里面找到这个今年该买的这个三只股票的一个内容和目录。直接找出来,并且能让直接找出来,然后分析报告。 | +| 龙虾 | 6 | 闪购小龙虾订单;那个,这个打开 iPhone 的镜像,然后帮我选一下最这个附近,他那个在闪购上面找一个,选一个小龙虾,帮我点一份性价比较高的一个小龙虾。;那个,这个打开 iPhone 的镜像,然后帮我选一下最这个附近,他那个在闪购上面找一个,选一个小龙虾,帮我点一份性价比较高的一个小龙虾。;龙虾安装简单解决方案 | +| Skier | 5 | Kalo AI Skier 规范生成工具;从github 的skill seekers抽象成一个然后这一个放在卡洛 AI 里面生成一个,也是个 Skier,就是专门来生成规范 Skier 的一个工具,然;从github 的skill seekers抽象成一个然后这一个放在卡洛 AI 里面生成一个,也是个 Skier,就是专门来生成规范 Skier 的一个工具,然 | +| 小龙虾 | 5 | 闪购小龙虾订单;那个,这个打开 iPhone 的镜像,然后帮我选一下最这个附近,他那个在闪购上面找一个,选一个小龙虾,帮我点一份性价比较高的一个小龙虾。;那个,这个打开 iPhone 的镜像,然后帮我选一下最这个附近,他那个在闪购上面找一个,选一个小龙虾,帮我点一份性价比较高的一个小龙虾。 | +| 纯课宝 | 4 | 项目管理 @工作手机/Skill-工作手机项目管理 @工作手机/存客宝项目管理 将这一个,那个两个目录和底下工作手机项目的管理合并到纯课宝项目管理,以纯课宝的项;项目管理 @工作手机/Skill-工作手机项目管理 @工作手机/存客宝项目管理 将这一个,那个两个目录和底下工作手机项目的管理合并到纯课宝项目管理,以纯课宝的项 | +| 卡罗伊 | 2 | 把这个卡罗伊的 skill 的所有的人的能力工作台和能力总索引。根据卡罗 AI 的这个团队的整个布局,每一个人的一个。工作,把这个迭代一下,让我能快速的那个了解;把这个卡罗伊的 skill 的所有的人的能力工作台和能力总索引。根据卡罗 AI 的这个团队的整个布局,每一个人的一个。工作,把这个迭代一下,让我能快速的那个了解 | +| 统安 | 2 | NAS宝塔系统安装与同步;NAS宝塔系统安装与同步 | +| 卡路亚 | 1 | 卡路亚复盘推送功能讨论 | + +## 说明 + +- 命中高仅表示「库中仍大量出现误写」,适合**追加/强化** JSON;若正写已普及则可能为历史数据。 +- **禁止**根据本报告自动改库内原文;纠错在 Agent **理解前**滤真即可。 + diff --git a/运营中枢/工作台/闽南口音纠错工作台/reports/scan_workspace_20260326_141220.md b/运营中枢/工作台/闽南口音纠错工作台/reports/scan_workspace_20260326_141220.md new file mode 100644 index 00000000..8e95cb9c --- /dev/null +++ b/运营中枢/工作台/闽南口音纠错工作台/reports/scan_workspace_20260326_141220.md @@ -0,0 +1,272 @@ +# ASR 纠错 key · 工作区扫描报告 + +- 生成 UTC: 20260326_141220 +- JSON: `/Users/karuo/Documents/个人/卡若AI/运营中枢/参考资料/卡若闽南口音_ASR纠错库.json` +- 根目录数: 1 + +## 按 key 汇总(降序) + +| 误听 key | 正写 | 总命中次数 | +|:---|:---|---:| +| 卡洛 AI | 卡若AI | 309 | +| 卡罗拉 | 卡若 | 287 | +| 龙虾 | AI工具 | 287 | +| 卡罗 AI | 卡若AI | 280 | +| 小龙虾 | AI工具 | 211 | +| 卡路亚 | 卡若 | 183 | +| 卡路 AI | 卡若AI | 167 | +| 受的 | Soul的 | 114 | +| 统安 | 同安 | 78 | +| 卡罗伊 | 卡若 | 74 | +| 私余 | 私域 | 61 | +| 猜济 | 拆解 | 45 | +| Skier | 智能体 | 44 | +| 成于 | 乘以 | 33 | +| 巨圣 | 矩阵 | 29 | +| 纯课宝 | 存客宝 | 27 | +| 货客 | 获客 | 27 | +| 头里 | 投入 | 23 | +| 受上 | Soul上 | 21 | +| 幅画 | 负责 | 19 | +| 马的 | 码的 | 18 | +| 施育 | 私域 | 15 | +| 信一下 | 线上 | 14 | +| 经历论 | 净利润 | 14 | +| 卡洛拉 | 卡若 | 6 | +| 纯客宝 | 存客宝 | 5 | +| 克劳德 | Claude | 5 | +| 卡洛创业派对 | 卡若创业派对 | 4 | +| 受平台 | Soul平台 | 4 | +| 龍蝦 | AI工具 | 4 | +| 可索 | Cursor | 4 | +| 基因交狼 | 技能包 | 3 | +| 科劳德 | Claude | 3 | +| 颗色 | Cursor | 3 | +| 库色 | Cursor | 3 | +| 科色 | Cursor | 3 | +| 蝌蚪 | Cursor | 3 | +| 售上 | Soul上 | 3 | +| 瘦上 | Soul上 | 3 | +| Ski-er | 智能体 | 2 | +| SKI-er | 智能体 | 2 | +| 基因交流 | 技能传授 | 2 | +| 小龙俠 | AI工具 | 2 | +| 小龍俠 | AI工具 | 2 | +| 小龍蝦 | AI工具 | 2 | +| 受伤命 | 搜索引擎 | 2 | +| 蝌蚁 | 科技AI | 2 | +| 蝌蛇 | Cursor | 2 | +| 搜上 | Soul上 | 2 | +| 寿上 | Soul上 | 2 | +| 亭上 | Soul上 | 2 | +| 这受 | 这Soul | 2 | +| 受里 | Soul里 | 2 | +| 私育 | 私域 | 2 | +| 附身 | 副业 | 2 | +| 附产 | 副产 | 2 | +| 卡路派对 | 卡若派对 | 1 | +| 卡若依 | 卡若 | 1 | +| 卡若伊 | 卡若 | 1 | + +## 有命中的文件(前 200 条) + +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/2f2724f4-bbc8-4119-8113-3fa8d37fe665.txt` — 小龙虾×51, 龙虾×51 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/那个,这个打开 iPhone 的镜像,然后帮我选一下最这个附近,他那个在_2f2724f4-bbc8-4119-8113-3fa8d37fe665.txt` — 小龙虾×51, 龙虾×51 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/开发工作区/那个,这个打开 iPhone 的镜像,然后帮我选一下最这个附近,他那个在_2f2724f4-bbc8-4119-8113-3fa8d37fe665.txt` — 小龙虾×51, 龙虾×51 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/2f2724f4-bbc8-4119-8113-3fa8d37fe665.txt` — 小龙虾×51, 龙虾×51 +- `/Users/karuo/Documents/个人/卡若AI/运营中枢/参考资料/卡若闽南口音_ASR纠错库.json` — 卡洛创业派对×1, Ski-er×1, SKI-er×1, 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, Skier×1, 卡路派对×1, 基因交狼×1, 基因交流×1, 卡路亚×1, 纯课宝×1, 纯客宝×1, 卡罗拉×1, 卡罗伊×1, 卡洛拉×1, 卡若依×1, 卡若伊×1, 小龙俠×1, 小龍俠×1, 小龍蝦×1, 小龙虾×1, 克劳德×1, 科劳德×1, 受平台×1, 信一下×1, 经历论×1, 受伤命×1, 龍蝦×2, 龙虾×2, 颗色×1, 库色×1, 可索×1, 蝌蚁×1, 蝌蛇×1, 科色×1, 蝌蚪×1, 受上×1, 搜上×1, 售上×1, 寿上×1, 瘦上×1, 亭上×1, 这受×1, 受的×1, 受里×1, 私余×1, 施育×1, 私育×1, 统安×1, 头里×1, 幅画×1, 成于×1, 马的×1, 猜济×1, 巨圣×1, 货客×1, 附身×1, 附产×1 +- `/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/视频切片/脚本/soul_enhance.py` — Ski-er×1, SKI-er×1, Skier×1, 基因交狼×1, 基因交流×1, 小龙俠×1, 小龍俠×1, 小龍蝦×1, 小龙虾×1, 克劳德×1, 科劳德×1, 受平台×1, 信一下×1, 经历论×1, 受伤命×1, 龍蝦×2, 龙虾×2, 颗色×1, 库色×1, 可索×1, 蝌蚁×1, 蝌蛇×1, 科色×1, 蝌蚪×1, 受上×1, 搜上×1, 售上×1, 寿上×1, 瘦上×1, 亭上×1, 这受×1, 受的×1, 受里×1, 私余×1, 施育×1, 私育×1, 统安×1, 头里×1, 幅画×1, 成于×1, 马的×1, 猜济×1, 巨圣×1, 货客×1, 附身×1, 附产×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/output/妙记_obcnhkw62g7auce6yl98wd6y_20260317.txt` — 小龙虾×3, 龙虾×43, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/acf700f7-27d0-43c2-b035-d41449b6bf41.txt` — 卡罗 AI×11, 卡洛 AI×10, 卡路 AI×5, 卡路亚×3, 卡罗拉×6, 卡罗伊×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/把这个卡罗伊的 skill 的所有的人的能力工作台和能力总索引。根据卡罗_acf700f7-27d0-43c2-b035-d41449b6bf41.txt` — 卡罗 AI×11, 卡洛 AI×10, 卡路 AI×5, 卡路亚×3, 卡罗拉×6, 卡罗伊×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/acf700f7-27d0-43c2-b035-d41449b6bf41.txt` — 卡罗 AI×11, 卡洛 AI×10, 卡路 AI×5, 卡路亚×3, 卡罗拉×6, 卡罗伊×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/开发工作区/把这个卡罗伊的 skill 的所有的人的能力工作台和能力总索引。根据卡罗_acf700f7-27d0-43c2-b035-d41449b6bf41.txt` — 卡罗 AI×11, 卡洛 AI×10, 卡路 AI×5, 卡路亚×3, 卡罗拉×6, 卡罗伊×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/767fa78e-72a4-4a58-afb0-36f76ef54c38.txt` — 卡路亚×27 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/将 @婼瑄 卡若AI 这整个项目的所有文件上传到丹徒的一个 GitHub_767fa78e-72a4-4a58-afb0-36f76ef54c38.txt` — 卡路亚×27 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/开发工作区/将 @婼瑄 卡若AI 这整个项目的所有文件上传到丹徒的一个 GitHub_767fa78e-72a4-4a58-afb0-36f76ef54c38.txt` — 卡路亚×27 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/767fa78e-72a4-4a58-afb0-36f76ef54c38.txt` — 卡路亚×27 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/a79fae32-3f38-435c-bc88-6e85f07445ab.txt` — 私余×10, 统安×1, 猜济×8, 巨圣×4, 货客×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/去掉所有的语助词。那帮我把这个视频也做一些欺骗做出来,然后把所有的语助词_a79fae32-3f38-435c-bc88-6e85f07445ab.txt` — 私余×10, 统安×1, 猜济×8, 巨圣×4, 货客×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/f68f86f2-0740-4789-b7d2-343c243ca9e9.txt` — 卡罗 AI×2, 卡洛 AI×10, 卡路 AI×6, 卡路亚×1, 卡罗拉×4, 卡罗伊×1, 统安×1, 成于×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/个巴卡洛 AI。爬,卡洛 AI 放到整个的那个放到 NAS 的服务器上面_f68f86f2-0740-4789-b7d2-343c243ca9e9.txt` — 卡罗 AI×2, 卡洛 AI×10, 卡路 AI×6, 卡路亚×1, 卡罗拉×4, 卡罗伊×1, 统安×1, 成于×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-22/开发工作区/去掉所有的语助词。那帮我把这个视频也做一些欺骗做出来,然后把所有的语助词_a79fae32-3f38-435c-bc88-6e85f07445ab.txt` — 私余×10, 统安×1, 猜济×8, 巨圣×4, 货客×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/a79fae32-3f38-435c-bc88-6e85f07445ab.txt` — 私余×10, 统安×1, 猜济×8, 巨圣×4, 货客×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/f68f86f2-0740-4789-b7d2-343c243ca9e9.txt` — 卡罗 AI×2, 卡洛 AI×10, 卡路 AI×6, 卡路亚×1, 卡罗拉×4, 卡罗伊×1, 统安×1, 成于×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/开发工作区/个巴卡洛 AI。爬,卡洛 AI 放到整个的那个放到 NAS 的服务器上面_f68f86f2-0740-4789-b7d2-343c243ca9e9.txt` — 卡罗 AI×2, 卡洛 AI×10, 卡路 AI×6, 卡路亚×1, 卡罗拉×4, 卡罗伊×1, 统安×1, 成于×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/@开发 4、小工具 clawdbot 安装起来,并且让我运行起来。那我可_fa917eda-ce59-4508-9d31-71a2837463f0.txt` — 卡罗 AI×4, 卡洛 AI×6, 卡路 AI×8, 卡罗拉×1, 卡罗伊×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/fa917eda-ce59-4508-9d31-71a2837463f0.txt` — 卡罗 AI×4, 卡洛 AI×6, 卡路 AI×8, 卡罗拉×1, 卡罗伊×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-09/开发工作区/@开发 4、小工具 clawdbot 安装起来,并且让我运行起来。那我可_fa917eda-ce59-4508-9d31-71a2837463f0.txt` — 卡罗 AI×4, 卡洛 AI×6, 卡路 AI×8, 卡罗拉×1, 卡罗伊×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/fa917eda-ce59-4508-9d31-71a2837463f0.txt` — 卡罗 AI×4, 卡洛 AI×6, 卡路 AI×8, 卡罗拉×1, 卡罗伊×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/9a2d1c55-0c49-4900-86b9-7f07a325b939.txt` — 信一下×2, 经历论×2, 私余×2, 施育×2, 统安×2, 头里×2, 幅画×2, 成于×2, 马的×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@FragmentVideo_81424.180297.MOV @卡若A_9a2d1c55-0c49-4900-86b9-7f07a325b939.txt` — 信一下×2, 经历论×2, 私余×2, 施育×2, 统安×2, 头里×2, 幅画×2, 成于×2, 马的×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-23/开发工作区/@FragmentVideo_81424.180297.MOV @卡若A_9a2d1c55-0c49-4900-86b9-7f07a325b939.txt` — 信一下×2, 经历论×2, 私余×2, 施育×2, 统安×2, 头里×2, 幅画×2, 成于×2, 马的×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/9a2d1c55-0c49-4900-86b9-7f07a325b939.txt` — 信一下×2, 经历论×2, 私余×2, 施育×2, 统安×2, 头里×2, 幅画×2, 成于×2, 马的×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/05f0c900-180c-4602-83f0-6c39dc67d036.txt` — 卡罗拉×18 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/把这个财务卡罗拉里面这个财务的功能,然后参考一下这个飞书里面知识库里面的_05f0c900-180c-4602-83f0-6c39dc67d036.txt` — 卡罗拉×18 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/开发工作区/把这个财务卡罗拉里面这个财务的功能,然后参考一下这个飞书里面知识库里面的_05f0c900-180c-4602-83f0-6c39dc67d036.txt` — 卡罗拉×18 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/05f0c900-180c-4602-83f0-6c39dc67d036.txt` — 卡罗拉×18 +- `/Users/karuo/Documents/个人/卡若AI/运营中枢/参考资料/闽南话语音_ASR纠错机制.md` — 卡罗 AI×2, 基因交狼×1, 卡罗拉×3, 卡罗伊×1, 卡洛拉×1, 克劳德×1, 科劳德×1, 颗色×1, 库色×1, 科色×1, 蝌蚪×1, 售上×1, 私余×1, 施育×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/视频切片/脚本/one_video.py` — 信一下×1, 经历论×1, 私余×1, 施育×1, 统安×1, 头里×1, 幅画×1, 成于×1, 马的×1, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/视频切片/脚本/soul_slice_pipeline.py` — 信一下×1, 经历论×1, 私余×1, 施育×1, 统安×1, 头里×1, 幅画×1, 成于×1, 马的×1, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/04_卡火(火)/火炬_全栈消息/全栈开发/开发文档/归档_20260213_管理成员匹配修复/20260213_管理成员匹配修复/03_卡木_火眸_重复/视频切片/脚本/one_video.py` — 信一下×1, 经历论×1, 私余×1, 施育×1, 统安×1, 头里×1, 幅画×1, 成于×1, 马的×1, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/04_卡火(火)/火炬_全栈消息/全栈开发/开发文档/归档_20260216_火眸去重/火眸_原始/04_效率工具/视频切片/脚本/one_video.py` — 信一下×1, 经历论×1, 私余×1, 施育×1, 统安×1, 头里×1, 幅画×1, 成于×1, 马的×1, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/.venv_billing/lib/python3.14/site-packages/tencentcloud/billing/v20180709/models.py` — 受的×10 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/fc64937e-7408-4ea0-b128-7541d5c394fd.txt` — 卡罗拉×10 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/抽象一个,那个卡洛的那个 skill,那个助理的一个 skill 出来,_fc64937e-7408-4ea0-b128-7541d5c394fd.txt` — 卡罗拉×10 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/服务器管理/scripts/.venv_billing/lib/python3.14/site-packages/tencentcloud/billing/v20180709/models.py` — 受的×10 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/服务器管理/scripts/.venv_tx/lib/python3.14/site-packages/tencentcloud/billing/v20180709/models.py` — 受的×10 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-08/开发工作区/抽象一个,那个卡洛的那个 skill,那个助理的一个 skill 出来,_fc64937e-7408-4ea0-b128-7541d5c394fd.txt` — 卡罗拉×10 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/fc64937e-7408-4ea0-b128-7541d5c394fd.txt` — 卡罗拉×10 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/3629da4b-66d2-48aa-8ae8-9dca512653ad.txt` — 卡罗 AI×2, 卡洛 AI×2, Skier×4, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/7c65f9b7-ac29-4615-9a90-66a997818708.txt` — 卡罗 AI×4, 卡洛 AI×1, 卡路 AI×1, 卡路亚×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/8ac06bc1-66da-4cf5-8f5a-714631d96570.txt` — 卡罗 AI×6, 纯课宝×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@MBTI .cursor skills @MBTI .cursor s_8ac06bc1-66da-4cf5-8f5a-714631d96570.txt` — 卡罗 AI×6, 纯课宝×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/Users karuo Documents 个人 3、工作台_7c65f9b7-ac29-4615-9a90-66a997818708.txt` — 卡罗 AI×4, 卡洛 AI×1, 卡路 AI×1, 卡路亚×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/上传到github并且把项目同步在vercel上生成个v0的项目_3629da4b-66d2-48aa-8ae8-9dca512653ad.txt` — 卡罗 AI×2, 卡洛 AI×2, Skier×4, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/开发工作区/@MBTI .cursor skills @MBTI .cursor s_8ac06bc1-66da-4cf5-8f5a-714631d96570.txt` — 卡罗 AI×6, 纯课宝×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/开发工作区/上传到github并且把项目同步在vercel上生成个v0的项目_3629da4b-66d2-48aa-8ae8-9dca512653ad.txt` — 卡罗 AI×2, 卡洛 AI×2, Skier×4, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-13/开发工作区/Users karuo Documents 个人 3、工作台_7c65f9b7-ac29-4615-9a90-66a997818708.txt` — 卡罗 AI×4, 卡洛 AI×1, 卡路 AI×1, 卡路亚×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/3629da4b-66d2-48aa-8ae8-9dca512653ad.txt` — 卡罗 AI×2, 卡洛 AI×2, Skier×4, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/7c65f9b7-ac29-4615-9a90-66a997818708.txt` — 卡罗 AI×4, 卡洛 AI×1, 卡路 AI×1, 卡路亚×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/8ac06bc1-66da-4cf5-8f5a-714631d96570.txt` — 卡罗 AI×6, 纯课宝×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/运营中枢/工作台/阿猫Mac_OpenClaw配置情况分析.md` — 龙虾×9 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/033df1e1-e3a1-4523-b221-953651dee08e.txt` — 卡罗 AI×1, 卡洛 AI×1, 统安×5 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/06d03cbf-7b11-4c17-a2bf-d1946be86434.txt` — 卡罗 AI×2, 卡洛 AI×1, 卡路 AI×1, Skier×1, 纯课宝×1, 纯客宝×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/57b35ce8-d436-437a-84ae-f72519c8020e.txt` — 卡洛 AI×2, Skier×5 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/9dcf2229-66a4-4775-b92b-8ddcbbc7baf1.txt` — 卡路 AI×1, 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/skill_9dcf2229-66a4-4775-b92b-8ddcbbc7baf1.txt` — 卡路 AI×1, 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/从github 的skill seekers抽象成一个然后这一个放在卡洛_57b35ce8-d436-437a-84ae-f72519c8020e.txt` — 卡洛 AI×2, Skier×5 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/卡若ai 优化。将这个卡洛 AI 设定成一个设,那这人设里面它相当于一个_033df1e1-e3a1-4523-b221-953651dee08e.txt` — 卡罗 AI×1, 卡洛 AI×1, 统安×5 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/手机sdk_06d03cbf-7b11-4c17-a2bf-d1946be86434.txt` — 卡罗 AI×2, 卡洛 AI×1, 卡路 AI×1, Skier×1, 纯课宝×1, 纯客宝×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-24/开发工作区/卡若ai 优化。将这个卡洛 AI 设定成一个设,那这人设里面它相当于一个_033df1e1-e3a1-4523-b221-953651dee08e.txt` — 卡罗 AI×1, 卡洛 AI×1, 统安×5 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/开发工作区/从github 的skill seekers抽象成一个然后这一个放在卡洛_57b35ce8-d436-437a-84ae-f72519c8020e.txt` — 卡洛 AI×2, Skier×5 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/开发工作区/手机sdk_06d03cbf-7b11-4c17-a2bf-d1946be86434.txt` — 卡罗 AI×2, 卡洛 AI×1, 卡路 AI×1, Skier×1, 纯课宝×1, 纯客宝×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-13/开发工作区/skill_9dcf2229-66a4-4775-b92b-8ddcbbc7baf1.txt` — 卡路 AI×1, 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/033df1e1-e3a1-4523-b221-953651dee08e.txt` — 卡罗 AI×1, 卡洛 AI×1, 统安×5 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/06d03cbf-7b11-4c17-a2bf-d1946be86434.txt` — 卡罗 AI×2, 卡洛 AI×1, 卡路 AI×1, Skier×1, 纯课宝×1, 纯客宝×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/57b35ce8-d436-437a-84ae-f72519c8020e.txt` — 卡洛 AI×2, Skier×5 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/9dcf2229-66a4-4775-b92b-8ddcbbc7baf1.txt` — 卡路 AI×1, 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/c90ab21f-0dc7-4e95-a51d-c0d8a9aa91a7.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 受上×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/修复这个腾讯云的这个宝塔服务器错误,从腾讯云的api获取这台服务器id指_c90ab21f-0dc7-4e95-a51d-c0d8a9aa91a7.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 受上×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/00d8ba91-4575-4ce4-8ad6-a20c474552f7.txt` — 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/让这个卡罗拉管理那个群晖的能力,那个覆盖那个用他的能力来优化一下这个,现_00d8ba91-4575-4ce4-8ad6-a20c474552f7.txt` — 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/聊天记录管理/fallback/recent_chats_fallback.json` — 卡罗 AI×2, 卡路亚×1, 纯课宝×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-06/开发工作区/修复这个腾讯云的这个宝塔服务器错误,从腾讯云的api获取这台服务器id指_c90ab21f-0dc7-4e95-a51d-c0d8a9aa91a7.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 受上×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/群晖NAS工作区/让这个卡罗拉管理那个群晖的能力,那个覆盖那个用他的能力来优化一下这个,现_00d8ba91-4575-4ce4-8ad6-a20c474552f7.txt` — 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-Synologo-NAs-code-workspace/00d8ba91-4575-4ce4-8ad6-a20c474552f7.txt` — 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/c90ab21f-0dc7-4e95-a51d-c0d8a9aa91a7.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 受上×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md` — 卡罗拉×4, 卡罗伊×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/1ea765e2-88b2-4d7f-9ec4-2669d178c2fd.txt` — 卡洛 AI×1, 卡路 AI×1, 纯课宝×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@工作手机 机擎 @工作手机 开发文档 那个激情的整个的所有的能源,它主_f8a0aff3-f841-40db-b011-547e51608017.txt` — 卡罗 AI×1, 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/f8a0aff3-f841-40db-b011-547e51608017.txt` — 卡罗 AI×1, 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/项目管理_1ea765e2-88b2-4d7f-9ec4-2669d178c2fd.txt` — 卡洛 AI×1, 卡路 AI×1, 纯课宝×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金盾_数据安全/远程环境一键部署/SKILL.md` — 龙虾×5 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/飞书管理/脚本/send_review_to_feishu_webhook.py` — 卡罗拉×5 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/开发工作区/项目管理_1ea765e2-88b2-4d7f-9ec4-2669d178c2fd.txt` — 卡洛 AI×1, 卡路 AI×1, 纯课宝×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/开发工作区/@工作手机 机擎 @工作手机 开发文档 那个激情的整个的所有的能源,它主_f8a0aff3-f841-40db-b011-547e51608017.txt` — 卡罗 AI×1, 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/开发工作区/后端_6e35a7b5-2ef4-47ca-943d-65658840132a.txt` — 卡洛 AI×1, 卡罗拉×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/1ea765e2-88b2-4d7f-9ec4-2669d178c2fd.txt` — 卡洛 AI×1, 卡路 AI×1, 纯课宝×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/6e35a7b5-2ef4-47ca-943d-65658840132a.txt` — 卡洛 AI×1, 卡罗拉×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/f8a0aff3-f841-40db-b011-547e51608017.txt` — 卡罗 AI×1, 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/视频切片/脚本/fix_subtitles.py` — 私余×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/04_卡火(火)/火炬_全栈消息/全栈开发/开发文档/归档_20260213_管理成员匹配修复/20260213_管理成员匹配修复/03_卡木_火眸_重复/视频切片/脚本/fix_subtitles.py` — 私余×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/04_卡火(火)/火炬_全栈消息/全栈开发/开发文档/归档_20260216_火眸去重/火眸_原始/04_效率工具/视频切片/脚本/fix_subtitles.py` — 私余×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/04_卡火(火)/火眼_智能追问/智能纪要/soul 派对84场 20260127.txt` — 受上×3, 瘦上×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/2b04f211-5555-41fa-bda7-0951da1add4f.txt` — 卡洛 AI×1, 卡路 AI×2, 卡罗伊×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/8ee2689b-811b-4e09-9999-01a8a5df350a.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/9d985656-587f-405a-8606-9006fc8a3d0d.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@开发 4、小工具 手机自动操作AUTOGLM @开发 4、小工具 老坑_8ee2689b-811b-4e09-9999-01a8a5df350a.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/[Image]_2b04f211-5555-41fa-bda7-0951da1add4f.txt` — 卡洛 AI×1, 卡路 AI×2, 卡罗伊×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/c483f207-9022-46ee-8666-6d24697f2d4b.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/cd3e9ad2-e998-43bf-a030-3b825a33e631.txt` — 卡罗 AI×1, 卡罗拉×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/da3ad40c-c2cc-4169-8bb5-72b4e97c1550.txt` — 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/f5aa81bc-2d7a-4a2c-9b5c-f7bbfcdb51c6.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/f997da40-1e3f-4be5-9830-cd67324108d4.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/https github.com fnvtk skills 那个默认上传_f5aa81bc-2d7a-4a2c-9b5c-f7bbfcdb51c6.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/卡罗 AI 修复之前,卡罗 AI 上面有非常多的文件,每一个人都有职责的_c483f207-9022-46ee-8666-6d24697f2d4b.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/帮我生成这个月财务,制作完整的财务报表表格给我_cd3e9ad2-e998-43bf-a030-3b825a33e631.txt` — 卡罗 AI×1, 卡罗拉×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/继续_da3ad40c-c2cc-4169-8bb5-72b4e97c1550.txt` — 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/让我本地模型有个执行的窗口让我可以直接运行_9d985656-587f-405a-8606-9006fc8a3d0d.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/高手模块_f997da40-1e3f-4be5-9830-cd67324108d4.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/17079f0b-b53a-4674-9d75-40e9e2c99e0a.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/那个将卡洛 AI 的能力复制一份到存克宝 AI,然后这个主要是公司共用的_17079f0b-b53a-4674-9d75-40e9e2c99e0a.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/44210a57-7243-4544-8645-875958df07d5.txt` — 卡罗 AI×1, 卡洛 AI×1, 成于×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/eae58f42-92a2-4333-90f0-1b447ebebc7a.txt` — 卡罗 AI×1, 龙虾×2, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/https github.com fnvtk kr-hyjy tree_44210a57-7243-4544-8645-875958df07d5.txt` — 卡罗 AI×1, 卡洛 AI×1, 成于×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/对,飞书项目的玩值电竞的这一个飞书里面,飞书项目完职店庆的一个各个接口的_eae58f42-92a2-4333-90f0-1b447ebebc7a.txt` — 卡罗 AI×1, 龙虾×2, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/飞书管理/脚本/soul_party_sheets_data.json` — 小龙虾×2, 龙虾×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-29/开发工作区/@开发 4、小工具 手机自动操作AUTOGLM @开发 4、小工具 老坑_8ee2689b-811b-4e09-9999-01a8a5df350a.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-01/开发工作区/继续_da3ad40c-c2cc-4169-8bb5-72b4e97c1550.txt` — 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-04/开发工作区/[Image]_2b04f211-5555-41fa-bda7-0951da1add4f.txt` — 卡洛 AI×1, 卡路 AI×2, 卡罗伊×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-04/开发工作区/https github.com fnvtk kr-hyjy tree_44210a57-7243-4544-8645-875958df07d5.txt` — 卡罗 AI×1, 卡洛 AI×1, 成于×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-04/开发工作区/让我本地模型有个执行的窗口让我可以直接运行_9d985656-587f-405a-8606-9006fc8a3d0d.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-10/开发工作区/帮我生成这个月财务,制作完整的财务报表表格给我_cd3e9ad2-e998-43bf-a030-3b825a33e631.txt` — 卡罗 AI×1, 卡罗拉×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/卡若AI工作区/https github.com fnvtk skills 那个默认上传_f5aa81bc-2d7a-4a2c-9b5c-f7bbfcdb51c6.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/卡若AI工作区/那个将卡洛 AI 的能力复制一份到存克宝 AI,然后这个主要是公司共用的_17079f0b-b53a-4674-9d75-40e9e2c99e0a.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/开发工作区/高手模块_f997da40-1e3f-4be5-9830-cd67324108d4.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-13/开发工作区/卡罗 AI 修复之前,卡罗 AI 上面有非常多的文件,每一个人都有职责的_c483f207-9022-46ee-8666-6d24697f2d4b.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-13/开发工作区/对,飞书项目的玩值电竞的这一个飞书里面,飞书项目完职店庆的一个各个接口的_eae58f42-92a2-4333-90f0-1b447ebebc7a.txt` — 卡罗 AI×1, 龙虾×2, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-ai-code-workspace/17079f0b-b53a-4674-9d75-40e9e2c99e0a.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-ai-code-workspace/f5aa81bc-2d7a-4a2c-9b5c-f7bbfcdb51c6.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/2b04f211-5555-41fa-bda7-0951da1add4f.txt` — 卡洛 AI×1, 卡路 AI×2, 卡罗伊×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/44210a57-7243-4544-8645-875958df07d5.txt` — 卡罗 AI×1, 卡洛 AI×1, 成于×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/8ee2689b-811b-4e09-9999-01a8a5df350a.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/9d985656-587f-405a-8606-9006fc8a3d0d.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/c483f207-9022-46ee-8666-6d24697f2d4b.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/cd3e9ad2-e998-43bf-a030-3b825a33e631.txt` — 卡罗 AI×1, 卡罗拉×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/da3ad40c-c2cc-4169-8bb5-72b4e97c1550.txt` — 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/eae58f42-92a2-4333-90f0-1b447ebebc7a.txt` — 卡罗 AI×1, 龙虾×2, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/f997da40-1e3f-4be5-9830-cd67324108d4.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/SKILL_REGISTRY.md` — 卡洛创业派对×1, 卡罗拉×1, 卡罗伊×1, 龙虾×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/1343ea9c-291f-4e55-903a-f8bf0f12ca0b.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/1fbc69c4-c307-4d1d-ba1c-f157823364f2.txt` — 受的×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/3899de25-964c-450d-878d-7ac5e1279331.txt` — 卡罗 AI×1, 卡罗伊×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/4941044e-85a6-4211-afae-9b3e475fd5e7.txt` — 卡罗 AI×1, 卡路亚×1, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/84315bfd-8828-4c39-80fd-6092bf529c08.txt` — 卡洛 AI×2, 卡路 AI×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/92eace46-d475-4074-bf33-c8f466e20e1a.txt` — 卡洛 AI×2, 卡罗伊×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/94370f8c-062e-49a3-9a57-92053473e53e.txt` — 卡路 AI×2, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@1、金:项目 3、自营项目 玩值电竞 @卡若AI .cursor sk_1fbc69c4-c307-4d1d-ba1c-f157823364f2.txt` — 受的×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@1、金:项目 4、合作项目 银掌柜金融 @开发 3、自营项目 一场so_3899de25-964c-450d-878d-7ac5e1279331.txt` — 卡罗 AI×1, 卡罗伊×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@神射手 神射手.md 这个把我们之前聊过的这些所有内容,以及神色手和卡_92eace46-d475-4074-bf33-c8f466e20e1a.txt` — 卡洛 AI×2, 卡罗伊×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/后端题库 那个把这个整个的那个管理后台,关于自己这个项目的那个管理后台,_94370f8c-062e-49a3-9a57-92053473e53e.txt` — 卡路 AI×2, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/帮我处理腾讯云服务器上的这一个错误,看看到底是什么什么问题,然后你直接登_4941044e-85a6-4211-afae-9b3e475fd5e7.txt` — 卡罗 AI×1, 卡路亚×1, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/查找这台电脑安装的一个小模型,有什么小模型?已经安装的,并且可以使用的,_84315bfd-8828-4c39-80fd-6092bf529c08.txt` — 卡洛 AI×2, 卡路 AI×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/那个以你的视角对整个卡洛 AI 进行整体的那个。整体的一个优化跟规划,确_1343ea9c-291f-4e55-903a-f8bf0f12ca0b.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/16bf3b1c-0185-423e-8f13-3549f940a852.txt` — 卡罗 AI×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/eab24b53-5899-4f06-ae85-4624d7e44b1d.txt` — 卡路 AI×2, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/连接到diskstation 这台本地的 NAS 上面有,现在是我连接的_16bf3b1c-0185-423e-8f13-3549f940a852.txt` — 卡罗 AI×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/那个搜索一下本地的那个 docker,doc 的那个相应的文件和 doc_eab24b53-5899-4f06-ae85-4624d7e44b1d.txt` — 卡路 AI×2, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水岸_项目管理/Soul技能归口/卡若创业派对_总控/SKILL.md` — 卡洛创业派对×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/3648ac7c-9e57-4501-b431-ef5bc1f6f17d.txt` — 受的×2, 头里×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/批量将飞书里面,飞书的那个视频会议带有飞书,视频会议带有这个受,派对和受_3648ac7c-9e57-4501-b431-ef5bc1f6f17d.txt` — 受的×2, 头里×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-21/开发工作区/@1、金:项目 3、自营项目 玩值电竞 @卡若AI .cursor sk_1fbc69c4-c307-4d1d-ba1c-f157823364f2.txt` — 受的×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-21/开发工作区/那个将卡洛 AI 里面的那个 skill 做按,卡洛常用,按我常用的那个_6d69318a-c185-405d-90a1-950423e949ff.txt` — 卡洛 AI×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-28/开发工作区/查找这台电脑安装的一个小模型,有什么小模型?已经安装的,并且可以使用的,_84315bfd-8828-4c39-80fd-6092bf529c08.txt` — 卡洛 AI×2, 卡路 AI×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-31/开发工作区/@神射手 神射手.md 这个把我们之前聊过的这些所有内容,以及神色手和卡_92eace46-d475-4074-bf33-c8f466e20e1a.txt` — 卡洛 AI×2, 卡罗伊×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-01/开发工作区/那个搜索一下本地的那个 docker,doc 的那个相应的文件和 doc_eab24b53-5899-4f06-ae85-4624d7e44b1d.txt` — 卡路 AI×2, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-02/开发工作区/检查苹果浏览器用命令行把本机的默认浏览器用苹果的浏览器_58457350-a6ab-40c2-b3df-3a8f18cae02c.txt` — 卡洛 AI×1, 卡罗拉×1, 卡罗伊×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-03/开发工作区/@1、金:项目 4、合作项目 银掌柜金融 @开发 3、自营项目 一场so_3899de25-964c-450d-878d-7ac5e1279331.txt` — 卡罗 AI×1, 卡罗伊×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-06/开发工作区/那个帮我搜索一下 GitHub 上面有没有那个在科室上面免费使用 clo_b6d42f46-c105-4c77-a791-eaed7a2f8580.txt` — 卡罗 AI×1, 卡洛 AI×1, 克劳德×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-10/开发工作区/那个以你的视角对整个卡洛 AI 进行整体的那个。整体的一个优化跟规划,确_1343ea9c-291f-4e55-903a-f8bf0f12ca0b.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/开发工作区/后端题库 那个把这个整个的那个管理后台,关于自己这个项目的那个管理后台,_94370f8c-062e-49a3-9a57-92053473e53e.txt` — 卡路 AI×2, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/开发工作区/连接到diskstation 这台本地的 NAS 上面有,现在是我连接的_16bf3b1c-0185-423e-8f13-3549f940a852.txt` — 卡罗 AI×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-14/开发工作区/帮我处理腾讯云服务器上的这一个错误,看看到底是什么什么问题,然后你直接登_4941044e-85a6-4211-afae-9b3e475fd5e7.txt` — 卡罗 AI×1, 卡路亚×1, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/1343ea9c-291f-4e55-903a-f8bf0f12ca0b.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/16bf3b1c-0185-423e-8f13-3549f940a852.txt` — 卡罗 AI×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/1fbc69c4-c307-4d1d-ba1c-f157823364f2.txt` — 受的×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/3648ac7c-9e57-4501-b431-ef5bc1f6f17d.txt` — 受的×2, 头里×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/3899de25-964c-450d-878d-7ac5e1279331.txt` — 卡罗 AI×1, 卡罗伊×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/4941044e-85a6-4211-afae-9b3e475fd5e7.txt` — 卡罗 AI×1, 卡路亚×1, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/58457350-a6ab-40c2-b3df-3a8f18cae02c.txt` — 卡洛 AI×1, 卡罗拉×1, 卡罗伊×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/6d69318a-c185-405d-90a1-950423e949ff.txt` — 卡洛 AI×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/84315bfd-8828-4c39-80fd-6092bf529c08.txt` — 卡洛 AI×2, 卡路 AI×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/92eace46-d475-4074-bf33-c8f466e20e1a.txt` — 卡洛 AI×2, 卡罗伊×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/94370f8c-062e-49a3-9a57-92053473e53e.txt` — 卡路 AI×2, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/b6d42f46-c105-4c77-a791-eaed7a2f8580.txt` — 卡罗 AI×1, 卡洛 AI×1, 克劳德×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/eab24b53-5899-4f06-ae85-4624d7e44b1d.txt` — 卡路 AI×2, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/开发工作区/批量将飞书里面,飞书的那个视频会议带有飞书,视频会议带有这个受,派对和受_3648ac7c-9e57-4501-b431-ef5bc1f6f17d.txt` — 受的×2, 头里×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/对话记录/6d69318a-c185-405d-90a1-950423e949ff.txt` — 卡洛 AI×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/对话记录/那个将卡洛 AI 里面的那个 skill 做按,卡洛常用,按我常用的那个_6d69318a-c185-405d-90a1-950423e949ff.txt` — 卡洛 AI×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/162d0c61-83a8-4fed-b43b-da2639132751.txt` — 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/27afaf83-27bc-4cdc-b05f-b2266d73fe50.txt` — 卡洛 AI×1, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/35c78a5e-2eee-4755-9b34-d3188cc87f52.txt` — 卡路亚×2 diff --git a/运营中枢/工作台/闽南口音纠错工作台/reports/scan_workspace_20260326_141616.md b/运营中枢/工作台/闽南口音纠错工作台/reports/scan_workspace_20260326_141616.md new file mode 100644 index 00000000..39d1bbfe --- /dev/null +++ b/运营中枢/工作台/闽南口音纠错工作台/reports/scan_workspace_20260326_141616.md @@ -0,0 +1,272 @@ +# ASR 纠错 key · 工作区扫描报告 + +- 生成 UTC: 20260326_141616 +- JSON: `/Users/karuo/Documents/个人/卡若AI/运营中枢/参考资料/卡若闽南口音_ASR纠错库.json` +- 根目录数: 1 + +## 按 key 汇总(降序) + +| 误听 key | 正写 | 总命中次数 | +|:---|:---|---:| +| 龙虾 | AI工具 | 327 | +| 卡罗 AI | 卡若AI | 315 | +| 卡罗拉 | 卡若 | 310 | +| 卡洛 AI | 卡若AI | 308 | +| 小龙虾 | AI工具 | 232 | +| 卡路亚 | 卡若 | 206 | +| 卡路 AI | 卡若AI | 140 | +| 受的 | Soul的 | 138 | +| 统安 | 同安 | 106 | +| 私余 | 私域 | 80 | +| 卡罗伊 | 卡若 | 72 | +| Skier | 智能体 | 66 | +| 猜济 | 拆解 | 63 | +| 纯课宝 | 存客宝 | 48 | +| 成于 | 乘以 | 48 | +| 巨圣 | 矩阵 | 47 | +| 货客 | 获客 | 47 | +| 头里 | 投入 | 38 | +| 幅画 | 负责 | 30 | +| 马的 | 码的 | 29 | +| 施育 | 私域 | 27 | +| 信一下 | 线上 | 25 | +| 经历论 | 净利润 | 25 | +| 受上 | Soul上 | 18 | +| 纯客宝 | 存客宝 | 11 | +| 克劳德 | Claude | 11 | +| 龍蝦 | AI工具 | 10 | +| 卡洛拉 | 卡若 | 9 | +| 卡洛创业派对 | 卡若创业派对 | 8 | +| 基因交狼 | 技能包 | 7 | +| 科劳德 | Claude | 7 | +| 受平台 | Soul平台 | 7 | +| 颗色 | Cursor | 7 | +| 库色 | Cursor | 7 | +| 可索 | Cursor | 7 | +| 科色 | Cursor | 7 | +| 蝌蚪 | Cursor | 7 | +| 售上 | Soul上 | 7 | +| 瘦上 | Soul上 | 7 | +| Ski-er | 智能体 | 5 | +| SKI-er | 智能体 | 5 | +| 基因交流 | 技能传授 | 5 | +| 小龙俠 | AI工具 | 5 | +| 小龍俠 | AI工具 | 5 | +| 小龍蝦 | AI工具 | 5 | +| 受伤命 | 搜索引擎 | 5 | +| 蝌蚁 | 科技AI | 5 | +| 蝌蛇 | Cursor | 5 | +| 搜上 | Soul上 | 5 | +| 寿上 | Soul上 | 5 | +| 亭上 | Soul上 | 5 | +| 这受 | 这Soul | 5 | +| 受里 | Soul里 | 5 | +| 私育 | 私域 | 5 | +| 附身 | 副业 | 5 | +| 附产 | 副产 | 5 | +| 卡路派对 | 卡若派对 | 3 | +| 卡若依 | 卡若 | 3 | +| 卡若伊 | 卡若 | 3 | + +## 有命中的文件(前 200 条) + +- `/Users/karuo/Documents/个人/卡若AI/运营中枢/工作台/闽南口音纠错工作台/reports/scan_workspace_20260326_141220.md` — 卡洛创业派对×4, Ski-er×3, SKI-er×3, 卡罗 AI×102, 卡洛 AI×110, 卡路 AI×58, Skier×15, 卡路派对×2, 基因交狼×4, 基因交流×3, 卡路亚×36, 纯课宝×15, 纯客宝×6, 卡罗拉×60, 卡罗伊×33, 卡洛拉×3, 卡若依×2, 卡若伊×2, 小龙俠×3, 小龍俠×3, 小龍蝦×3, 小龙虾×9, 克劳德×6, 科劳德×4, 受平台×3, 信一下×11, 经历论×11, 受伤命×3, 龍蝦×6, 龙虾×25, 颗色×4, 库色×4, 可索×3, 蝌蚁×3, 蝌蛇×3, 科色×4, 蝌蚪×4, 受上×8, 搜上×3, 售上×4, 寿上×3, 瘦上×4, 亭上×3, 这受×3, 受的×27, 受里×3, 私余×19, 施育×12, 私育×3, 统安×32, 头里×15, 幅画×11, 成于×19, 马的×11, 猜济×18, 巨圣×18, 货客×20, 附身×3, 附产×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/2f2724f4-bbc8-4119-8113-3fa8d37fe665.txt` — 小龙虾×51, 龙虾×51 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/那个,这个打开 iPhone 的镜像,然后帮我选一下最这个附近,他那个在_2f2724f4-bbc8-4119-8113-3fa8d37fe665.txt` — 小龙虾×51, 龙虾×51 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/开发工作区/那个,这个打开 iPhone 的镜像,然后帮我选一下最这个附近,他那个在_2f2724f4-bbc8-4119-8113-3fa8d37fe665.txt` — 小龙虾×51, 龙虾×51 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/2f2724f4-bbc8-4119-8113-3fa8d37fe665.txt` — 小龙虾×51, 龙虾×51 +- `/Users/karuo/Documents/个人/卡若AI/运营中枢/工作台/闽南口音纠错工作台/reports/mongo_asr_20260326_141157.md` — 卡罗 AI×9, 卡洛 AI×9, 卡路 AI×7, Skier×7, 卡路亚×3, 纯课宝×6, 卡罗拉×7, 卡罗伊×5, 小龙虾×12, 龙虾×15, 受上×1, 受的×1, 统安×4 +- `/Users/karuo/Documents/个人/卡若AI/运营中枢/参考资料/卡若闽南口音_ASR纠错库.json` — 卡洛创业派对×1, Ski-er×1, SKI-er×1, 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, Skier×1, 卡路派对×1, 基因交狼×1, 基因交流×1, 卡路亚×1, 纯课宝×1, 纯客宝×1, 卡罗拉×1, 卡罗伊×1, 卡洛拉×1, 卡若依×1, 卡若伊×1, 小龙俠×1, 小龍俠×1, 小龍蝦×1, 小龙虾×1, 克劳德×1, 科劳德×1, 受平台×1, 信一下×1, 经历论×1, 受伤命×1, 龍蝦×2, 龙虾×2, 颗色×1, 库色×1, 可索×1, 蝌蚁×1, 蝌蛇×1, 科色×1, 蝌蚪×1, 受上×1, 搜上×1, 售上×1, 寿上×1, 瘦上×1, 亭上×1, 这受×1, 受的×1, 受里×1, 私余×1, 施育×1, 私育×1, 统安×1, 头里×1, 幅画×1, 成于×1, 马的×1, 猜济×1, 巨圣×1, 货客×1, 附身×1, 附产×1 +- `/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/视频切片/脚本/soul_enhance.py` — Ski-er×1, SKI-er×1, Skier×1, 基因交狼×1, 基因交流×1, 小龙俠×1, 小龍俠×1, 小龍蝦×1, 小龙虾×1, 克劳德×1, 科劳德×1, 受平台×1, 信一下×1, 经历论×1, 受伤命×1, 龍蝦×2, 龙虾×2, 颗色×1, 库色×1, 可索×1, 蝌蚁×1, 蝌蛇×1, 科色×1, 蝌蚪×1, 受上×1, 搜上×1, 售上×1, 寿上×1, 瘦上×1, 亭上×1, 这受×1, 受的×1, 受里×1, 私余×1, 施育×1, 私育×1, 统安×1, 头里×1, 幅画×1, 成于×1, 马的×1, 猜济×1, 巨圣×1, 货客×1, 附身×1, 附产×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/output/妙记_obcnhkw62g7auce6yl98wd6y_20260317.txt` — 小龙虾×3, 龙虾×43, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/767fa78e-72a4-4a58-afb0-36f76ef54c38.txt` — 卡路亚×27 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/将 @婼瑄 卡若AI 这整个项目的所有文件上传到丹徒的一个 GitHub_767fa78e-72a4-4a58-afb0-36f76ef54c38.txt` — 卡路亚×27 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/开发工作区/将 @婼瑄 卡若AI 这整个项目的所有文件上传到丹徒的一个 GitHub_767fa78e-72a4-4a58-afb0-36f76ef54c38.txt` — 卡路亚×27 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/767fa78e-72a4-4a58-afb0-36f76ef54c38.txt` — 卡路亚×27 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/a79fae32-3f38-435c-bc88-6e85f07445ab.txt` — 私余×10, 统安×1, 猜济×8, 巨圣×4, 货客×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/去掉所有的语助词。那帮我把这个视频也做一些欺骗做出来,然后把所有的语助词_a79fae32-3f38-435c-bc88-6e85f07445ab.txt` — 私余×10, 统安×1, 猜济×8, 巨圣×4, 货客×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-22/开发工作区/去掉所有的语助词。那帮我把这个视频也做一些欺骗做出来,然后把所有的语助词_a79fae32-3f38-435c-bc88-6e85f07445ab.txt` — 私余×10, 统安×1, 猜济×8, 巨圣×4, 货客×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/a79fae32-3f38-435c-bc88-6e85f07445ab.txt` — 私余×10, 统安×1, 猜济×8, 巨圣×4, 货客×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/9a2d1c55-0c49-4900-86b9-7f07a325b939.txt` — 信一下×2, 经历论×2, 私余×2, 施育×2, 统安×2, 头里×2, 幅画×2, 成于×2, 马的×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@FragmentVideo_81424.180297.MOV @卡若A_9a2d1c55-0c49-4900-86b9-7f07a325b939.txt` — 信一下×2, 经历论×2, 私余×2, 施育×2, 统安×2, 头里×2, 幅画×2, 成于×2, 马的×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-23/开发工作区/@FragmentVideo_81424.180297.MOV @卡若A_9a2d1c55-0c49-4900-86b9-7f07a325b939.txt` — 信一下×2, 经历论×2, 私余×2, 施育×2, 统安×2, 头里×2, 幅画×2, 成于×2, 马的×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/9a2d1c55-0c49-4900-86b9-7f07a325b939.txt` — 信一下×2, 经历论×2, 私余×2, 施育×2, 统安×2, 头里×2, 幅画×2, 成于×2, 马的×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/05f0c900-180c-4602-83f0-6c39dc67d036.txt` — 卡罗拉×18 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/把这个财务卡罗拉里面这个财务的功能,然后参考一下这个飞书里面知识库里面的_05f0c900-180c-4602-83f0-6c39dc67d036.txt` — 卡罗拉×18 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/开发工作区/把这个财务卡罗拉里面这个财务的功能,然后参考一下这个飞书里面知识库里面的_05f0c900-180c-4602-83f0-6c39dc67d036.txt` — 卡罗拉×18 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/05f0c900-180c-4602-83f0-6c39dc67d036.txt` — 卡罗拉×18 +- `/Users/karuo/Documents/个人/卡若AI/运营中枢/参考资料/闽南话语音_ASR纠错机制.md` — 卡罗 AI×2, 基因交狼×1, 卡罗拉×3, 卡罗伊×1, 卡洛拉×1, 克劳德×1, 科劳德×1, 颗色×1, 库色×1, 科色×1, 蝌蚪×1, 售上×1, 私余×1, 施育×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/视频切片/脚本/one_video.py` — 信一下×1, 经历论×1, 私余×1, 施育×1, 统安×1, 头里×1, 幅画×1, 成于×1, 马的×1, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/视频切片/脚本/soul_slice_pipeline.py` — 信一下×1, 经历论×1, 私余×1, 施育×1, 统安×1, 头里×1, 幅画×1, 成于×1, 马的×1, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/04_卡火(火)/火炬_全栈消息/全栈开发/开发文档/归档_20260213_管理成员匹配修复/20260213_管理成员匹配修复/03_卡木_火眸_重复/视频切片/脚本/one_video.py` — 信一下×1, 经历论×1, 私余×1, 施育×1, 统安×1, 头里×1, 幅画×1, 成于×1, 马的×1, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/04_卡火(火)/火炬_全栈消息/全栈开发/开发文档/归档_20260216_火眸去重/火眸_原始/04_效率工具/视频切片/脚本/one_video.py` — 信一下×1, 经历论×1, 私余×1, 施育×1, 统安×1, 头里×1, 幅画×1, 成于×1, 马的×1, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/.venv_billing/lib/python3.14/site-packages/tencentcloud/billing/v20180709/models.py` — 受的×10 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/fc64937e-7408-4ea0-b128-7541d5c394fd.txt` — 卡罗拉×10 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/抽象一个,那个卡洛的那个 skill,那个助理的一个 skill 出来,_fc64937e-7408-4ea0-b128-7541d5c394fd.txt` — 卡罗拉×10 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/服务器管理/scripts/.venv_billing/lib/python3.14/site-packages/tencentcloud/billing/v20180709/models.py` — 受的×10 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/服务器管理/scripts/.venv_tx/lib/python3.14/site-packages/tencentcloud/billing/v20180709/models.py` — 受的×10 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-08/开发工作区/抽象一个,那个卡洛的那个 skill,那个助理的一个 skill 出来,_fc64937e-7408-4ea0-b128-7541d5c394fd.txt` — 卡罗拉×10 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/fc64937e-7408-4ea0-b128-7541d5c394fd.txt` — 卡罗拉×10 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/3629da4b-66d2-48aa-8ae8-9dca512653ad.txt` — 卡罗 AI×2, 卡洛 AI×2, Skier×4, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/7c65f9b7-ac29-4615-9a90-66a997818708.txt` — 卡罗 AI×4, 卡洛 AI×1, 卡路 AI×1, 卡路亚×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/8ac06bc1-66da-4cf5-8f5a-714631d96570.txt` — 卡罗 AI×6, 纯课宝×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@MBTI .cursor skills @MBTI .cursor s_8ac06bc1-66da-4cf5-8f5a-714631d96570.txt` — 卡罗 AI×6, 纯课宝×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/Users karuo Documents 个人 3、工作台_7c65f9b7-ac29-4615-9a90-66a997818708.txt` — 卡罗 AI×4, 卡洛 AI×1, 卡路 AI×1, 卡路亚×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/上传到github并且把项目同步在vercel上生成个v0的项目_3629da4b-66d2-48aa-8ae8-9dca512653ad.txt` — 卡罗 AI×2, 卡洛 AI×2, Skier×4, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/开发工作区/@MBTI .cursor skills @MBTI .cursor s_8ac06bc1-66da-4cf5-8f5a-714631d96570.txt` — 卡罗 AI×6, 纯课宝×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/开发工作区/上传到github并且把项目同步在vercel上生成个v0的项目_3629da4b-66d2-48aa-8ae8-9dca512653ad.txt` — 卡罗 AI×2, 卡洛 AI×2, Skier×4, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-13/开发工作区/Users karuo Documents 个人 3、工作台_7c65f9b7-ac29-4615-9a90-66a997818708.txt` — 卡罗 AI×4, 卡洛 AI×1, 卡路 AI×1, 卡路亚×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/3629da4b-66d2-48aa-8ae8-9dca512653ad.txt` — 卡罗 AI×2, 卡洛 AI×2, Skier×4, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/7c65f9b7-ac29-4615-9a90-66a997818708.txt` — 卡罗 AI×4, 卡洛 AI×1, 卡路 AI×1, 卡路亚×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/8ac06bc1-66da-4cf5-8f5a-714631d96570.txt` — 卡罗 AI×6, 纯课宝×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/运营中枢/工作台/阿猫Mac_OpenClaw配置情况分析.md` — 龙虾×9 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/033df1e1-e3a1-4523-b221-953651dee08e.txt` — 卡罗 AI×1, 卡洛 AI×1, 统安×5 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/06d03cbf-7b11-4c17-a2bf-d1946be86434.txt` — 卡罗 AI×2, 卡洛 AI×1, 卡路 AI×1, Skier×1, 纯课宝×1, 纯客宝×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/57b35ce8-d436-437a-84ae-f72519c8020e.txt` — 卡洛 AI×2, Skier×5 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/9dcf2229-66a4-4775-b92b-8ddcbbc7baf1.txt` — 卡路 AI×1, 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/skill_9dcf2229-66a4-4775-b92b-8ddcbbc7baf1.txt` — 卡路 AI×1, 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/从github 的skill seekers抽象成一个然后这一个放在卡洛_57b35ce8-d436-437a-84ae-f72519c8020e.txt` — 卡洛 AI×2, Skier×5 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/卡若ai 优化。将这个卡洛 AI 设定成一个设,那这人设里面它相当于一个_033df1e1-e3a1-4523-b221-953651dee08e.txt` — 卡罗 AI×1, 卡洛 AI×1, 统安×5 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/手机sdk_06d03cbf-7b11-4c17-a2bf-d1946be86434.txt` — 卡罗 AI×2, 卡洛 AI×1, 卡路 AI×1, Skier×1, 纯课宝×1, 纯客宝×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-24/开发工作区/卡若ai 优化。将这个卡洛 AI 设定成一个设,那这人设里面它相当于一个_033df1e1-e3a1-4523-b221-953651dee08e.txt` — 卡罗 AI×1, 卡洛 AI×1, 统安×5 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/开发工作区/从github 的skill seekers抽象成一个然后这一个放在卡洛_57b35ce8-d436-437a-84ae-f72519c8020e.txt` — 卡洛 AI×2, Skier×5 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/开发工作区/手机sdk_06d03cbf-7b11-4c17-a2bf-d1946be86434.txt` — 卡罗 AI×2, 卡洛 AI×1, 卡路 AI×1, Skier×1, 纯课宝×1, 纯客宝×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-13/开发工作区/skill_9dcf2229-66a4-4775-b92b-8ddcbbc7baf1.txt` — 卡路 AI×1, 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/033df1e1-e3a1-4523-b221-953651dee08e.txt` — 卡罗 AI×1, 卡洛 AI×1, 统安×5 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/06d03cbf-7b11-4c17-a2bf-d1946be86434.txt` — 卡罗 AI×2, 卡洛 AI×1, 卡路 AI×1, Skier×1, 纯课宝×1, 纯客宝×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/57b35ce8-d436-437a-84ae-f72519c8020e.txt` — 卡洛 AI×2, Skier×5 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/9dcf2229-66a4-4775-b92b-8ddcbbc7baf1.txt` — 卡路 AI×1, 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/00d8ba91-4575-4ce4-8ad6-a20c474552f7.txt` — 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/让这个卡罗拉管理那个群晖的能力,那个覆盖那个用他的能力来优化一下这个,现_00d8ba91-4575-4ce4-8ad6-a20c474552f7.txt` — 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/聊天记录管理/fallback/recent_chats_fallback.json` — 卡罗 AI×2, 卡路亚×1, 纯课宝×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/群晖NAS工作区/让这个卡罗拉管理那个群晖的能力,那个覆盖那个用他的能力来优化一下这个,现_00d8ba91-4575-4ce4-8ad6-a20c474552f7.txt` — 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-Synologo-NAs-code-workspace/00d8ba91-4575-4ce4-8ad6-a20c474552f7.txt` — 卡罗拉×6 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/语音转写纠错/SKILL.md` — 卡罗拉×4, 卡罗伊×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/1ea765e2-88b2-4d7f-9ec4-2669d178c2fd.txt` — 卡洛 AI×1, 卡路 AI×1, 纯课宝×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@工作手机 机擎 @工作手机 开发文档 那个激情的整个的所有的能源,它主_f8a0aff3-f841-40db-b011-547e51608017.txt` — 卡罗 AI×1, 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/f8a0aff3-f841-40db-b011-547e51608017.txt` — 卡罗 AI×1, 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/项目管理_1ea765e2-88b2-4d7f-9ec4-2669d178c2fd.txt` — 卡洛 AI×1, 卡路 AI×1, 纯课宝×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金盾_数据安全/远程环境一键部署/SKILL.md` — 龙虾×5 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/飞书管理/脚本/send_review_to_feishu_webhook.py` — 卡罗拉×5 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-07/开发工作区/项目管理_1ea765e2-88b2-4d7f-9ec4-2669d178c2fd.txt` — 卡洛 AI×1, 卡路 AI×1, 纯课宝×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/开发工作区/@工作手机 机擎 @工作手机 开发文档 那个激情的整个的所有的能源,它主_f8a0aff3-f841-40db-b011-547e51608017.txt` — 卡罗 AI×1, 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/开发工作区/后端_6e35a7b5-2ef4-47ca-943d-65658840132a.txt` — 卡洛 AI×1, 卡罗拉×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/1ea765e2-88b2-4d7f-9ec4-2669d178c2fd.txt` — 卡洛 AI×1, 卡路 AI×1, 纯课宝×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/6e35a7b5-2ef4-47ca-943d-65658840132a.txt` — 卡洛 AI×1, 卡罗拉×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/f8a0aff3-f841-40db-b011-547e51608017.txt` — 卡罗 AI×1, 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/视频切片/脚本/fix_subtitles.py` — 私余×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/04_卡火(火)/火炬_全栈消息/全栈开发/开发文档/归档_20260213_管理成员匹配修复/20260213_管理成员匹配修复/03_卡木_火眸_重复/视频切片/脚本/fix_subtitles.py` — 私余×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/04_卡火(火)/火炬_全栈消息/全栈开发/开发文档/归档_20260216_火眸去重/火眸_原始/04_效率工具/视频切片/脚本/fix_subtitles.py` — 私余×2, 猜济×1, 巨圣×1, 货客×1 +- `/Users/karuo/Documents/个人/卡若AI/04_卡火(火)/火眼_智能追问/智能纪要/soul 派对84场 20260127.txt` — 受上×3, 瘦上×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/8ee2689b-811b-4e09-9999-01a8a5df350a.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/9d985656-587f-405a-8606-9006fc8a3d0d.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@开发 4、小工具 手机自动操作AUTOGLM @开发 4、小工具 老坑_8ee2689b-811b-4e09-9999-01a8a5df350a.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/c483f207-9022-46ee-8666-6d24697f2d4b.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/cd3e9ad2-e998-43bf-a030-3b825a33e631.txt` — 卡罗 AI×1, 卡罗拉×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/da3ad40c-c2cc-4169-8bb5-72b4e97c1550.txt` — 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/f5aa81bc-2d7a-4a2c-9b5c-f7bbfcdb51c6.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/f997da40-1e3f-4be5-9830-cd67324108d4.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/https github.com fnvtk skills 那个默认上传_f5aa81bc-2d7a-4a2c-9b5c-f7bbfcdb51c6.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/卡罗 AI 修复之前,卡罗 AI 上面有非常多的文件,每一个人都有职责的_c483f207-9022-46ee-8666-6d24697f2d4b.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/帮我生成这个月财务,制作完整的财务报表表格给我_cd3e9ad2-e998-43bf-a030-3b825a33e631.txt` — 卡罗 AI×1, 卡罗拉×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/继续_da3ad40c-c2cc-4169-8bb5-72b4e97c1550.txt` — 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/让我本地模型有个执行的窗口让我可以直接运行_9d985656-587f-405a-8606-9006fc8a3d0d.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/高手模块_f997da40-1e3f-4be5-9830-cd67324108d4.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/17079f0b-b53a-4674-9d75-40e9e2c99e0a.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/那个将卡洛 AI 的能力复制一份到存克宝 AI,然后这个主要是公司共用的_17079f0b-b53a-4674-9d75-40e9e2c99e0a.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/44210a57-7243-4544-8645-875958df07d5.txt` — 卡罗 AI×1, 卡洛 AI×1, 成于×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/eae58f42-92a2-4333-90f0-1b447ebebc7a.txt` — 卡罗 AI×1, 龙虾×2, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/https github.com fnvtk kr-hyjy tree_44210a57-7243-4544-8645-875958df07d5.txt` — 卡罗 AI×1, 卡洛 AI×1, 成于×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/对,飞书项目的玩值电竞的这一个飞书里面,飞书项目完职店庆的一个各个接口的_eae58f42-92a2-4333-90f0-1b447ebebc7a.txt` — 卡罗 AI×1, 龙虾×2, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/飞书管理/脚本/soul_party_sheets_data.json` — 小龙虾×2, 龙虾×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-29/开发工作区/@开发 4、小工具 手机自动操作AUTOGLM @开发 4、小工具 老坑_8ee2689b-811b-4e09-9999-01a8a5df350a.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-01/开发工作区/继续_da3ad40c-c2cc-4169-8bb5-72b4e97c1550.txt` — 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-04/开发工作区/https github.com fnvtk kr-hyjy tree_44210a57-7243-4544-8645-875958df07d5.txt` — 卡罗 AI×1, 卡洛 AI×1, 成于×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-04/开发工作区/让我本地模型有个执行的窗口让我可以直接运行_9d985656-587f-405a-8606-9006fc8a3d0d.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-10/开发工作区/帮我生成这个月财务,制作完整的财务报表表格给我_cd3e9ad2-e998-43bf-a030-3b825a33e631.txt` — 卡罗 AI×1, 卡罗拉×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/卡若AI工作区/https github.com fnvtk skills 那个默认上传_f5aa81bc-2d7a-4a2c-9b5c-f7bbfcdb51c6.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/卡若AI工作区/那个将卡洛 AI 的能力复制一份到存克宝 AI,然后这个主要是公司共用的_17079f0b-b53a-4674-9d75-40e9e2c99e0a.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-12/开发工作区/高手模块_f997da40-1e3f-4be5-9830-cd67324108d4.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-13/开发工作区/卡罗 AI 修复之前,卡罗 AI 上面有非常多的文件,每一个人都有职责的_c483f207-9022-46ee-8666-6d24697f2d4b.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-13/开发工作区/对,飞书项目的玩值电竞的这一个飞书里面,飞书项目完职店庆的一个各个接口的_eae58f42-92a2-4333-90f0-1b447ebebc7a.txt` — 卡罗 AI×1, 龙虾×2, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-ai-code-workspace/17079f0b-b53a-4674-9d75-40e9e2c99e0a.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-ai-code-workspace/f5aa81bc-2d7a-4a2c-9b5c-f7bbfcdb51c6.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/44210a57-7243-4544-8645-875958df07d5.txt` — 卡罗 AI×1, 卡洛 AI×1, 成于×2 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/8ee2689b-811b-4e09-9999-01a8a5df350a.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/9d985656-587f-405a-8606-9006fc8a3d0d.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/c483f207-9022-46ee-8666-6d24697f2d4b.txt` — 卡罗 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/cd3e9ad2-e998-43bf-a030-3b825a33e631.txt` — 卡罗 AI×1, 卡罗拉×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/da3ad40c-c2cc-4169-8bb5-72b4e97c1550.txt` — 卡洛 AI×4 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/eae58f42-92a2-4333-90f0-1b447ebebc7a.txt` — 卡罗 AI×1, 龙虾×2, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/f997da40-1e3f-4be5-9830-cd67324108d4.txt` — 卡罗 AI×2, 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/SKILL_REGISTRY.md` — 卡洛创业派对×1, 卡罗拉×1, 卡罗伊×1, 龙虾×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/1343ea9c-291f-4e55-903a-f8bf0f12ca0b.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/1fbc69c4-c307-4d1d-ba1c-f157823364f2.txt` — 受的×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/4941044e-85a6-4211-afae-9b3e475fd5e7.txt` — 卡罗 AI×1, 卡路亚×1, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/84315bfd-8828-4c39-80fd-6092bf529c08.txt` — 卡洛 AI×2, 卡路 AI×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/94370f8c-062e-49a3-9a57-92053473e53e.txt` — 卡路 AI×2, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@1、金:项目 3、自营项目 玩值电竞 @卡若AI .cursor sk_1fbc69c4-c307-4d1d-ba1c-f157823364f2.txt` — 受的×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/后端题库 那个把这个整个的那个管理后台,关于自己这个项目的那个管理后台,_94370f8c-062e-49a3-9a57-92053473e53e.txt` — 卡路 AI×2, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/帮我处理腾讯云服务器上的这一个错误,看看到底是什么什么问题,然后你直接登_4941044e-85a6-4211-afae-9b3e475fd5e7.txt` — 卡罗 AI×1, 卡路亚×1, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/查找这台电脑安装的一个小模型,有什么小模型?已经安装的,并且可以使用的,_84315bfd-8828-4c39-80fd-6092bf529c08.txt` — 卡洛 AI×2, 卡路 AI×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/那个以你的视角对整个卡洛 AI 进行整体的那个。整体的一个优化跟规划,确_1343ea9c-291f-4e55-903a-f8bf0f12ca0b.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/16bf3b1c-0185-423e-8f13-3549f940a852.txt` — 卡罗 AI×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/eab24b53-5899-4f06-ae85-4624d7e44b1d.txt` — 卡路 AI×2, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/连接到diskstation 这台本地的 NAS 上面有,现在是我连接的_16bf3b1c-0185-423e-8f13-3549f940a852.txt` — 卡罗 AI×3 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/那个搜索一下本地的那个 docker,doc 的那个相应的文件和 doc_eab24b53-5899-4f06-ae85-4624d7e44b1d.txt` — 卡路 AI×2, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水岸_项目管理/Soul技能归口/卡若创业派对_总控/SKILL.md` — 卡洛创业派对×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/3648ac7c-9e57-4501-b431-ef5bc1f6f17d.txt` — 受的×2, 头里×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/对话记录/批量将飞书里面,飞书的那个视频会议带有飞书,视频会议带有这个受,派对和受_3648ac7c-9e57-4501-b431-ef5bc1f6f17d.txt` — 受的×2, 头里×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-21/开发工作区/@1、金:项目 3、自营项目 玩值电竞 @卡若AI .cursor sk_1fbc69c4-c307-4d1d-ba1c-f157823364f2.txt` — 受的×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-21/开发工作区/那个将卡洛 AI 里面的那个 skill 做按,卡洛常用,按我常用的那个_6d69318a-c185-405d-90a1-950423e949ff.txt` — 卡洛 AI×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-01-28/开发工作区/查找这台电脑安装的一个小模型,有什么小模型?已经安装的,并且可以使用的,_84315bfd-8828-4c39-80fd-6092bf529c08.txt` — 卡洛 AI×2, 卡路 AI×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-01/开发工作区/那个搜索一下本地的那个 docker,doc 的那个相应的文件和 doc_eab24b53-5899-4f06-ae85-4624d7e44b1d.txt` — 卡路 AI×2, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-02/开发工作区/检查苹果浏览器用命令行把本机的默认浏览器用苹果的浏览器_58457350-a6ab-40c2-b3df-3a8f18cae02c.txt` — 卡洛 AI×1, 卡罗拉×1, 卡罗伊×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-06/开发工作区/那个帮我搜索一下 GitHub 上面有没有那个在科室上面免费使用 clo_b6d42f46-c105-4c77-a791-eaed7a2f8580.txt` — 卡罗 AI×1, 卡洛 AI×1, 克劳德×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-10/开发工作区/那个以你的视角对整个卡洛 AI 进行整体的那个。整体的一个优化跟规划,确_1343ea9c-291f-4e55-903a-f8bf0f12ca0b.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/开发工作区/后端题库 那个把这个整个的那个管理后台,关于自己这个项目的那个管理后台,_94370f8c-062e-49a3-9a57-92053473e53e.txt` — 卡路 AI×2, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-11/开发工作区/连接到diskstation 这台本地的 NAS 上面有,现在是我连接的_16bf3b1c-0185-423e-8f13-3549f940a852.txt` — 卡罗 AI×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-14/开发工作区/帮我处理腾讯云服务器上的这一个错误,看看到底是什么什么问题,然后你直接登_4941044e-85a6-4211-afae-9b3e475fd5e7.txt` — 卡罗 AI×1, 卡路亚×1, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/1343ea9c-291f-4e55-903a-f8bf0f12ca0b.txt` — 卡罗 AI×1, 卡洛 AI×1, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/16bf3b1c-0185-423e-8f13-3549f940a852.txt` — 卡罗 AI×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/1fbc69c4-c307-4d1d-ba1c-f157823364f2.txt` — 受的×3 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/3648ac7c-9e57-4501-b431-ef5bc1f6f17d.txt` — 受的×2, 头里×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/4941044e-85a6-4211-afae-9b3e475fd5e7.txt` — 卡罗 AI×1, 卡路亚×1, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/58457350-a6ab-40c2-b3df-3a8f18cae02c.txt` — 卡洛 AI×1, 卡罗拉×1, 卡罗伊×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/6d69318a-c185-405d-90a1-950423e949ff.txt` — 卡洛 AI×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/84315bfd-8828-4c39-80fd-6092bf529c08.txt` — 卡洛 AI×2, 卡路 AI×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/94370f8c-062e-49a3-9a57-92053473e53e.txt` — 卡路 AI×2, 受的×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/b6d42f46-c105-4c77-a791-eaed7a2f8580.txt` — 卡罗 AI×1, 卡洛 AI×1, 克劳德×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/Users-karuo-Documents-3-code-workspace/eab24b53-5899-4f06-ae85-4624d7e44b1d.txt` — 卡路 AI×2, 卡路亚×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/2026-02-16/开发工作区/批量将飞书里面,飞书的那个视频会议带有飞书,视频会议带有这个受,派对和受_3648ac7c-9e57-4501-b431-ef5bc1f6f17d.txt` — 受的×2, 头里×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/对话记录/6d69318a-c185-405d-90a1-950423e949ff.txt` — 卡洛 AI×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水溪_整理归档/对话归档/对话记录/那个将卡洛 AI 里面的那个 skill 做按,卡洛常用,按我常用的那个_6d69318a-c185-405d-90a1-950423e949ff.txt` — 卡洛 AI×2, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/162d0c61-83a8-4fed-b43b-da2639132751.txt` — 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/27afaf83-27bc-4cdc-b05f-b2266d73fe50.txt` — 卡洛 AI×1, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/35c78a5e-2eee-4755-9b34-d3188cc87f52.txt` — 卡路亚×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/72a3b6d6-d2a5-40cf-b5e9-1a1206ef1823.txt` — 卡罗 AI×1, 卡洛 AI×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/79887e3d-7bbd-464f-8e13-8122eabce74b.txt` — 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@婼瑄 流光 @个人 1、卡若:本人 使用 @ Users karuo_ac3c3119-0db7-4837-a364-70ef2c1bfbe1.txt` — 受的×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@开发 2、私域银行 存客宝 将存克宝的那个的所有的能力,包括一切核心代_d91e33e2-2bcd-4ad4-aed4-d41aadbd2dd4.txt` — 卡罗伊×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/@开发 4、小工具 局域网手机电脑控制 将这个里面的那个目录提取成一,提_27afaf83-27bc-4cdc-b05f-b2266d73fe50.txt` — 卡洛 AI×1, 统安×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/Ai_b8aaeb36-a7d8-43ae-a1b8-855d789f8dbc.txt` — 受的×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/ac3c3119-0db7-4837-a364-70ef2c1bfbe1.txt` — 受的×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/b0db4424-8195-4549-b06a-c65089ad5c9f.txt` — 卡罗拉×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/b8aaeb36-a7d8-43ae-a1b8-855d789f8dbc.txt` — 受的×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/cf7a11df-64d9-44aa-acce-4957276b62f0.txt` — 卡罗伊×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/d91e33e2-2bcd-4ad4-aed4-d41aadbd2dd4.txt` — 卡罗伊×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/f158343a-f4e2-4b31-ad62-6a812bc18af0.txt` — 卡洛 AI×1, 卡路 AI×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/告诉我你每次阅读和调用模型的md文档,做一个流程图。不要写文档,直接写流_72a3b6d6-d2a5-40cf-b5e9-1a1206ef1823.txt` — 卡罗 AI×1, 卡洛 AI×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/架构_79887e3d-7bbd-464f-8e13-8122eabce74b.txt` — 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/模拟一次小说行侦行为,将 Users karuo 卡若开发 数据库 借贷_f158343a-f4e2-4b31-ad62-6a812bc18af0.txt` — 卡洛 AI×1, 卡路 AI×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/然后整个的这一个项目也抽象出一个 scale 出来,来做那个相应的一个工_35c78a5e-2eee-4755-9b34-d3188cc87f52.txt` — 卡路亚×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/说一下这两个模型的详细的一个区别。综合一下那个互联网上的信息来说一下,那_162d0c61-83a8-4fed-b43b-da2639132751.txt` — 卡洛 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/运行起来_cf7a11df-64d9-44aa-acce-4957276b62f0.txt` — 卡罗伊×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/Gitea管理/对话记录/那个从宝塔服务器上面配置,可以直接访问这个服务器的 SSH,然后把服务器_b0db4424-8195-4549-b06a-c65089ad5c9f.txt` — 卡罗拉×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/0ced8e42-bf4e-485c-a528-c3096f868c33.txt` — 卡洛 AI×1, 卡罗拉×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/2977763a-f5f8-4cb0-91a9-53333acb0d1c.txt` — 卡罗 AI×1, 卡路 AI×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/642f1e20-ca4f-4967-91dc-4d2576eb0bd5.txt` — 卡路亚×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/7e9591cc-f558-443e-9c3a-4f9d48398178.txt` — 卡罗 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/@Documents 聊天记录 卡若日志的视频会议 (7).txt ht_7e9591cc-f558-443e-9c3a-4f9d48398178.txt` — 卡罗 AI×2 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/f94affdc-9f9e-475f-8fcc-dc58a86ae324.txt` — 卡洛 AI×1, 卡罗伊×1 +- `/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/群晖NAS管理/对话记录/上传到 CKB NAS 的 Git 上面,_0ced8e42-bf4e-485c-a528-c3096f868c33.txt` — 卡洛 AI×1, 卡罗拉×1 diff --git a/运营中枢/工作台/闽南口音纠错工作台/workspace_roots.example.txt b/运营中枢/工作台/闽南口音纠错工作台/workspace_roots.example.txt new file mode 100644 index 00000000..cdae6e66 --- /dev/null +++ b/运营中枢/工作台/闽南口音纠错工作台/workspace_roots.example.txt @@ -0,0 +1,8 @@ +# 复制本文件为 workspace_roots.txt(与 README 同目录),每行一个要扫描的根目录;# 开头为注释。 +# 以下为卡若本机常见根(请按实际增删) + +/Users/karuo/Documents/个人/卡若AI +/Users/karuo/Documents/个人/3、工作台 +/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平 +/Users/karuo/Documents/开发/3、自营项目/万推 +/Users/karuo/Documents/开发/2、私域银行/cunkebao_v3 diff --git a/运营中枢/工作台/闽南口音纠错工作台/脚本/minnan_asr_workbench.py b/运营中枢/工作台/闽南口音纠错工作台/脚本/minnan_asr_workbench.py new file mode 100644 index 00000000..80f6dff1 --- /dev/null +++ b/运营中枢/工作台/闽南口音纠错工作台/脚本/minnan_asr_workbench.py @@ -0,0 +1,321 @@ +#!/usr/bin/env python3 +""" +闽南口音 ASR 纠错工作台 · 唯一入口。 +子命令: + scan-files — 多根目录文本扫描,按纠错库 key 统计命中 + scan-mongo — karuo_site 消息内容 + 对话记录统计命中 +不写回 JSON / 不改 Mongo 正文。 +""" +from __future__ import annotations + +import argparse +import os +import sys +from collections import defaultdict +from datetime import datetime, timezone +from pathlib import Path + +_KARUO_ROOT = Path(__file__).resolve().parents[4] +_DEFAULT_JSON = _KARUO_ROOT / "运营中枢" / "参考资料" / "卡若闽南口音_ASR纠错库.json" +_WORKBENCH = _KARUO_ROOT / "运营中枢" / "工作台" / "闽南口音纠错工作台" +_APPLY_SCRIPT_PARENT = _KARUO_ROOT / "运营中枢" / "工作台" / "脚本" +if str(_APPLY_SCRIPT_PARENT) not in sys.path: + sys.path.insert(0, str(_APPLY_SCRIPT_PARENT)) + +from apply_karuo_voice_corrections import load_corrections # noqa: E402 + +SKIP_DIR_NAMES = { + ".git", + "node_modules", + ".next", + "dist", + "build", + "__pycache__", + ".venv", + "venv", + "target", + ".turbo", + "coverage", +} + +DEFAULT_MONGO_URI = os.environ.get( + "KARUO_MONGO_URI", + "mongodb://admin:admin123@localhost:27017/?authSource=admin", +) +DEFAULT_DB = os.environ.get("KARUO_MONGO_DB", "karuo_site") + + +def _count_hits(text: str, keys: list[str]) -> dict[str, int]: + out: dict[str, int] = {} + for k in keys: + if not k: + continue + c = text.count(k) + if c: + out[k] = c + return out + + +def _load_roots(path: Path | None, extra: list[str]) -> list[Path]: + roots: list[Path] = [] + if path and path.exists(): + for line in path.read_text(encoding="utf-8", errors="ignore").splitlines(): + s = line.strip() + if not s or s.startswith("#"): + continue + roots.append(Path(s).expanduser().resolve()) + for r in extra: + roots.append(Path(r).expanduser().resolve()) + seen: set[str] = set() + out: list[Path] = [] + for p in roots: + key = str(p) + if key in seen: + continue + seen.add(key) + if p.is_dir(): + out.append(p) + return out + + +def _iter_text_files(root: Path, exts: set[str], max_bytes: int) -> list[Path]: + files: list[Path] = [] + try: + for p in root.rglob("*"): + if p.is_dir(): + if p.name in SKIP_DIR_NAMES: + continue + if not p.is_file(): + continue + if p.suffix.lower().lstrip(".") not in exts: + continue + try: + if p.stat().st_size > max_bytes: + continue + except OSError: + continue + files.append(p) + except OSError: + pass + return files + + +def cmd_scan_files(args: argparse.Namespace) -> int: + corr = load_corrections(args.json or _DEFAULT_JSON) + if not corr: + print("未加载到 corrections,检查 JSON 路径", file=sys.stderr) + return 1 + + keys_sorted = sorted(corr.keys(), key=len, reverse=True) + exts = {e.strip().lower().lstrip(".") for e in args.exts.split(",") if e.strip()} + max_bytes = int(args.max_mb * 1024 * 1024) + + roots = _load_roots(args.roots_file if args.roots_file.exists() else None, args.root) + if not roots: + roots = [_KARUO_ROOT] + print(f"未配置根目录,默认仅扫描卡若AI 仓库: {roots[0]}", file=sys.stderr) + + total_by_key: dict[str, int] = defaultdict(int) + file_hits: list[tuple[Path, dict[str, int]]] = [] + + for root in roots: + for fp in _iter_text_files(root, exts, max_bytes): + try: + raw = fp.read_text(encoding="utf-8", errors="ignore") + except OSError: + continue + hits = _count_hits(raw, keys_sorted) + if not hits: + continue + file_hits.append((fp, hits)) + for k, n in hits.items(): + total_by_key[k] += n + + ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S") + out_path = args.out or (_WORKBENCH / "reports" / f"scan_workspace_{ts}.md") + + lines = [ + "# ASR 纠错 key · 工作区扫描报告", + "", + f"- 生成 UTC: {ts}", + f"- JSON: `{args.json or _DEFAULT_JSON}`", + f"- 根目录数: {len(roots)}", + "", + "## 按 key 汇总(降序)", + "", + "| 误听 key | 正写 | 总命中次数 |", + "|:---|:---|---:|", + ] + for k in sorted(total_by_key.keys(), key=lambda x: (-total_by_key[x], -len(x))): + lines.append(f"| {k} | {corr[k]} | {total_by_key[k]} |") + + lines.extend(["", "## 有命中的文件(前 200 条)", ""]) + file_hits.sort(key=lambda x: (-sum(x[1].values()), str(x[0]))) + for fp, hits in file_hits[:200]: + sub = ", ".join(f"{k}×{hits[k]}" for k in sorted(hits.keys(), key=len, reverse=True)) + lines.append(f"- `{fp}` — {sub}") + + out_path.parent.mkdir(parents=True, exist_ok=True) + out_path.write_text("\n".join(lines) + "\n", encoding="utf-8") + + print(f"报告已写入: {out_path}") + print(f"不同 key 数: {len(total_by_key)},涉及文件: {len(file_hits)}") + return 0 + + +def cmd_scan_mongo(args: argparse.Namespace) -> int: + try: + from pymongo import MongoClient + except ImportError: + print("需要 pymongo: pip install pymongo", file=sys.stderr) + return 1 + + corr = load_corrections(args.json or _DEFAULT_JSON) + if not corr: + print("未加载 corrections", file=sys.stderr) + return 1 + keys_sorted = sorted(corr.keys(), key=len, reverse=True) + + total_by_key: dict[str, int] = defaultdict(int) + title_hits: dict[str, int] = defaultdict(int) + firstmsg_hits: dict[str, int] = defaultdict(int) + sample_titles: dict[str, list[str]] = defaultdict(list) + + try: + client = MongoClient(args.mongo_uri, serverSelectionTimeoutMS=5000) + client.admin.command("ping") + db = client[args.db] + except Exception as e: + print(f"Mongo 不可用(跳过统计): {e}", file=sys.stderr) + ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S") + out_path = args.out or (_WORKBENCH / "reports" / f"mongo_asr_{ts}.md") + out_path.parent.mkdir(parents=True, exist_ok=True) + out_path.write_text( + f"# Mongo ASR 统计 · 未连接\n\n- URI 已省略\n- 错误: `{e}`\n\n请先启动本机 Mongo 或设置 KARUO_MONGO_URI。\n", + encoding="utf-8", + ) + print(f"已写入说明: {out_path}") + return 0 + + filt = {"角色": "用户"} if args.user_only else {} + cur = db["消息内容"].find(filt, {"内容": 1, "角色": 1}).limit(args.msg_limit) + n_msg = 0 + for doc in cur: + n_msg += 1 + body = doc.get("内容") or "" + if not isinstance(body, str): + body = str(body) + for k, c in _count_hits(body, keys_sorted).items(): + total_by_key[k] += c + + for doc in db["对话记录"].find({}, {"名称": 1, "首条消息": 1}): + name = doc.get("名称") or "" + first = doc.get("首条消息") or "" + if not isinstance(name, str): + name = str(name) + if not isinstance(first, str): + first = str(first) + for k, c in _count_hits(name, keys_sorted).items(): + title_hits[k] += c + if c and len(sample_titles[k]) < 5: + sample_titles[k].append(name[:200]) + for k, c in _count_hits(first, keys_sorted).items(): + firstmsg_hits[k] += c + + for k in title_hits: + total_by_key[k] += title_hits[k] + for k in firstmsg_hits: + total_by_key[k] += firstmsg_hits[k] + + ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S") + out_path = args.out or (_WORKBENCH / "reports" / f"mongo_asr_{ts}.md") + + lines = [ + "# ASR 纠错 key · Mongo 聊天库统计", + "", + f"- 生成 UTC: {ts}", + f"- 库: `{args.db}`", + f"- 扫描消息条数上限: {args.msg_limit}(实际遍历 {n_msg} 条)", + f"- 用户消息仅: {args.user_only}", + "", + "## 消息正文 + 对话名称 + 首条消息 · 合并汇总", + "", + "| 误听 key | 正写 | 命中次数 |", + "|:---|:---|---:|", + ] + for k in sorted(total_by_key.keys(), key=lambda x: (-total_by_key[x], -len(x))): + lines.append(f"| {k} | {corr[k]} | {total_by_key[k]} |") + + lines.extend(["", "## 仅出现在「对话名称」的命中(Agent 标题线索)", ""]) + if not title_hits: + lines.append("_无_") + else: + lines.append("| key | 次数 | 名称样例 |") + lines.append("|:---|---:|:---|") + for k in sorted(title_hits.keys(), key=lambda x: (-title_hits[x], -len(x))): + samp = ";".join(sample_titles.get(k, [])) + lines.append(f"| {k} | {title_hits[k]} | {samp} |") + + lines.extend( + [ + "", + "## 说明", + "", + "- 命中高仅表示「库中仍大量出现误写」,适合**追加/强化** JSON;若正写已普及则可能为历史数据。", + "- **禁止**根据本报告自动改库内原文;纠错在 Agent **理解前**滤真即可。", + "", + ] + ) + + out_path.parent.mkdir(parents=True, exist_ok=True) + out_path.write_text("\n".join(lines) + "\n", encoding="utf-8") + print(f"报告已写入: {out_path}") + client.close() + return 0 + + +def build_parser() -> argparse.ArgumentParser: + p = argparse.ArgumentParser( + description="闽南口音 ASR 纠错工作台(扫盘 + 扫 Mongo)", + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + ) + sub = p.add_subparsers(dest="command", required=True) + + pf = sub.add_parser("scan-files", help="扫描本地工作区文本,统计纠错库 key 命中") + pf.add_argument( + "--roots-file", + type=Path, + default=_WORKBENCH / "workspace_roots.txt", + help="每行一个根目录;文件不存在时仅用 --root", + ) + pf.add_argument("--root", action="append", default=[], help="额外根目录,可重复") + pf.add_argument("--json", type=Path, default=None, help="纠错 JSON 路径") + pf.add_argument( + "--exts", + default="md,mdc,json,txt,tsx,ts,js,jsx,py,yml,yaml,css,scss,html,mdx", + help="逗号分隔扩展名(不含点)", + ) + pf.add_argument("--max-mb", type=float, default=8.0, help="跳过大于此大小的文件") + pf.add_argument("--out", type=Path, default=None, help="报告路径,默认 reports/") + pf.set_defaults(func=cmd_scan_files) + + pm = sub.add_parser("scan-mongo", help="扫描 Mongo 聊天库,统计 key 命中") + pm.add_argument("--mongo-uri", default=DEFAULT_MONGO_URI, help="或环境变量 KARUO_MONGO_URI") + pm.add_argument("--db", default=DEFAULT_DB, help="或 KARUO_MONGO_DB") + pm.add_argument("--json", type=Path, default=None, help="纠错 JSON 路径") + pm.add_argument("--msg-limit", type=int, default=80000, help="最多扫描消息条数") + pm.add_argument("--user-only", action="store_true", help="仅统计角色=用户") + pm.add_argument("--out", type=Path, default=None, help="报告路径") + pm.set_defaults(func=cmd_scan_mongo) + + return p + + +def main() -> int: + parser = build_parser() + args = parser.parse_args() + return int(args.func(args)) + + +if __name__ == "__main__": + raise SystemExit(main())