From 920372abfb9cfd2078da0b1e1b3a83bd6b23c573 Mon Sep 17 00:00:00 2001 From: karuo Date: Thu, 12 Mar 2026 20:17:23 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=84=20=E5=8D=A1=E8=8B=A5AI=20=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=202026-03-12=2020:17=20|=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=EF=BC=9A=E6=B0=B4=E6=A1=A5=E5=B9=B3=E5=8F=B0=E5=AF=B9=E6=8E=A5?= =?UTF-8?q?=E3=80=81=E8=BF=90=E8=90=A5=E4=B8=AD=E6=9E=A2=E5=8F=82=E8=80=83?= =?UTF-8?q?=E8=B5=84=E6=96=99=E3=80=81=E8=BF=90=E8=90=A5=E4=B8=AD=E6=9E=A2?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0=20|=20=E6=8E=92=E9=99=A4=20>20MB:?= =?UTF-8?q?=2011=20=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../水桥_平台对接/Soul创业实验/SKILL.md | 1 + .../Soul创业实验/上传/环境与TOKEN配置.md | 142 ++++++++++++++++++ 运营中枢/参考资料/Cursor闪退排查_20260304.md | 64 ++++++++ .../参考资料/scripts/clear_cursor_cache.sh | 15 +- 运营中枢/参考资料/scripts/cursor_deep_fix.sh | 106 +++++++++++++ 运营中枢/工作台/gitea_push_log.md | 1 + 运营中枢/工作台/代码管理.md | 1 + 7 files changed, 323 insertions(+), 7 deletions(-) create mode 100644 02_卡人(水)/水桥_平台对接/Soul创业实验/上传/环境与TOKEN配置.md create mode 100755 运营中枢/参考资料/scripts/cursor_deep_fix.sh diff --git a/02_卡人(水)/水桥_平台对接/Soul创业实验/SKILL.md b/02_卡人(水)/水桥_平台对接/Soul创业实验/SKILL.md index 9f5cffd3..6d7639be 100644 --- a/02_卡人(水)/水桥_平台对接/Soul创业实验/SKILL.md +++ b/02_卡人(水)/水桥_平台对接/Soul创业实验/SKILL.md @@ -57,6 +57,7 @@ updated: "2026-03-12" | `SKILL.md` | 本文件,仅触发与子类导航 | | `写作/写作规范.md` | 写作唯一规范(人称、结构、格式、隐晦植入) | | `上传/README.md` | 上传唯一说明(路径、命令、推送步骤) | +| `上传/环境与TOKEN配置.md` | 在新电脑上跑通上传/推送所需的仓库、依赖、`.env.feishu`、DB_CONFIG 说明与完整步骤 | | `上传/推送逻辑.md` | 飞书群推送:前 6% + 海报图、不发链接、脚本与链路 | | `上传/飞书妙记转文章并发布.md` | 飞书妙记链接 → 下载文本/视频 → 写成第 X 场文章 → 发飞书群 + 小程序(一句话指令 + 步骤) | diff --git a/02_卡人(水)/水桥_平台对接/Soul创业实验/上传/环境与TOKEN配置.md b/02_卡人(水)/水桥_平台对接/Soul创业实验/上传/环境与TOKEN配置.md new file mode 100644 index 00000000..fc83118b --- /dev/null +++ b/02_卡人(水)/水桥_平台对接/Soul创业实验/上传/环境与TOKEN配置.md @@ -0,0 +1,142 @@ +# Soul 文章上传 · 环境与 TOKEN 配置 + +> 目标:在**新电脑**上,只要拉下两个仓库 + 配好 TOKEN,就能把文章上传到小程序、推送到飞书群。 + +--- + +## 一、需要的两个仓库 + +1. **书稿仓库(Mycontent / 书)** + - 路径:`/Users/karuo/Documents/个人/2、我写的书/《一场soul的创业实验》` + - 作用:存放所有 md 文章,含 `2026每日派对干货/`。 + - Git 远端:`fnvtk/Mycontent`(origin + gitea),同步脚本:`scripts/gitea_sync.sh`。 + +2. **永平项目仓库(内容上传 + 飞书推送)** + - 路径示例:`/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平` + - 根目录下有: + - `content_upload.py`(上传到小程序 / DB) + - `scripts/send_chapter_poster_to_feishu.py`(生成海报 + 发飞书) + - `scripts/.env.feishu.example`(飞书 TOKEN 模板) + +在新电脑上: + +```bash +cd "/Users/karuo/Documents/个人" +git clone https://github.com/fnvtk/Mycontent.git "2、我写的书/《一场soul的创业实验》" + +cd "/Users/karuo/Documents/开发/3、自营项目" +git clone https://github.com/fnvtk/Mycontent.git "一场soul的创业实验-永平" # 或从 gitea 克隆同名仓库 +``` + +--- + +## 二、Python 依赖 + +在永平项目目录安装依赖(全局或虚拟环境均可): + +```bash +cd "/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平" +pip install pymysql requests Pillow +``` + +- `pymysql`:`content_upload.py` 连接腾讯云 MySQL `soul_miniprogram.chapters`。 +- `requests`、`Pillow`:`scripts/send_chapter_poster_to_feishu.py` 生成海报并调用飞书 webhook。 + +> **说明**:数据库连接配置(`DB_CONFIG`)在 `content_upload.py` 内部已写好,如需更换 DB 或密码,请在该脚本中修改。 + +--- + +## 三、飞书 TOKEN 配置(.env.feishu) + +飞书推送脚本会从 `scripts/.env.feishu` 读取 AppID / AppSecret 等环境变量: + +1. 进入脚本目录: + + ```bash + cd "/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/scripts" + ``` + +2. 基于示例创建实际配置: + + ```bash + cp .env.feishu.example .env.feishu + ``` + +3. 编辑 `.env.feishu`,填入真实值: + + ```env + FEISHU_APP_ID=你的飞书应用AppID + FEISHU_APP_SECRET=你的飞书应用AppSecret + FEISHU_WIKI_NODE_TOKEN=FNP6wdvNKij7yMkb3xCce0CYnpd # 如需用到知识库,可保留或按实际修改 + # 可选:书稿根目录 + # SOUL_BOOK_ROOT=/Users/karuo/Documents/个人/2、我写的书/《一场soul的创业实验》 + ``` + +- 飞书 App 配置参考:`02_卡人(水)/水桥_平台对接/飞书管理/运营报表_SKILL.md` 中的应用说明。 +- `send_chapter_poster_to_feishu.py` 脚本内部已经写好默认的章节推送 webhook(**Soul 彩民团队** 群),一般无需修改。 + +--- + +## 四、小程序上传接口(content_upload.py) + +- 文件:`/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/content_upload.py` +- 关键配置: + + ```python + DB_CONFIG = { + "host": "56b4c23f6853c.gz.cdb.myqcloud.com", + "port": 14413, + "user": "cdb_outerroot", + "password": "Zhiqun1984", + "database": "soul_miniprogram", + "charset": "utf8mb4", + } + ``` + +- 若你在新环境中使用同一数据库,**无需额外 TOKEN**,只要网络能连通腾讯云 MySQL 即可。 +- 若更换为新的 DB 或账号密码,请修改 `DB_CONFIG`,保持字段名一致。 + +上传命令与参数见本目录下 `README.md`: + +- 2026 场次(`part-2026-daily` / `chapter-2026-daily`,id 10.xx) +- 第 9 章(`part-4` / `chapter-9`,id 9.xx) + +--- + +## 五、新电脑上的完整操作步骤小抄 + +1. **拉代码** + - 克隆书稿仓库到:`/Users/karuo/Documents/个人/2、我写的书/《一场soul的创业实验》` + - 克隆永平项目到:`/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平` + +2. **装依赖** + + ```bash + cd "/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平" + pip install pymysql requests Pillow + ``` + +3. **配置飞书 TOKEN** + + ```bash + cd scripts + cp .env.feishu.example .env.feishu + # 编辑 .env.feishu 填 FEISHU_APP_ID / FEISHU_APP_SECRET + ``` + +4. **写文章** + - 按 `写作/写作规范.md` 写第 X 场,保存到指定目录(第9章或 `2026每日派对干货/`)。 + +5. **同步书稿到 Gitea(实时)** + + ```bash + cd "/Users/karuo/Documents/个人/2、我写的书/《一场soul的创业实验》" + bash scripts/gitea_sync.sh + ``` + +6. **按需上传小程序 / 推送飞书** + - 上传小程序:按 `上传/README.md` 中的 `content_upload.py` 命令执行。 + - 推送飞书:按 `上传/README.md` 中的 `send_chapter_poster_to_feishu.py` 命令执行(仅在你说要推送时)。 + +> 如需在别的电脑继承整套能力:拉 KaruoAI 仓库(含本 Skill 的基因胶囊)、书稿仓库、永平项目仓库,按本文件配置环境与 TOKEN 即可。 + diff --git a/运营中枢/参考资料/Cursor闪退排查_20260304.md b/运营中枢/参考资料/Cursor闪退排查_20260304.md index ba711ade..f1739a30 100644 --- a/运营中枢/参考资料/Cursor闪退排查_20260304.md +++ b/运营中枢/参考资料/Cursor闪退排查_20260304.md @@ -87,3 +87,67 @@ - **本机状态**:Codebase Indexing 已关、硬件加速保留;`workspaceStorage` 约 2.7G、`CachedData` 约 413M,定期清理 GPUCache + Cache 有助于缓解。 - **已做**:① 在文档中补充弹窗操作说明与「Don't restore editors」建议;② 新增一键清理脚本(见四、方式一),便于退出 Cursor 后执行。 - **你可立即做的**:下次弹窗时勾选「Don't restore editors」再点 Reopen;在方便时 Cmd+Q 退出 Cursor,执行上述清理脚本或命令后重开。 + +--- + +## 七、3/12 深度修复(终极解决 code 5 反复崩溃) + +### 诊断数据 + +| 指标 | 数值 | 严重程度 | +|------|------|----------| +| 当日崩溃次数 | 3 次(4 个会话) | 🔴 严重 | +| SQLite 嵌套事务错误 | 99 次/天 | 🔴 严重 | +| **state.vscdb 大小** | **15GB(正常 <100MB)** | 🔴 **根因** | +| state.vscdb.backup | 14GB | 🔴 浪费空间 | +| workspaceStorage | 2.8GB / 110 条目(78 条过期) | 🟡 | +| CachedData | 583MB | 🟡 | +| 日志 | 503MB | 🟡 | +| JS 堆上限 | 未设置(默认 ~1.5GB) | 🟡 | +| 同窗口工作区 | 7 个根目录 | 🟡 加重负担 | + +### 根因定位 + +**`state.vscdb`(Cursor 全局状态数据库)膨胀到 15GB 是崩溃的终极元凶。** + +- `cursorDiskKV` 表积累了 103 万行 / 13.7GB 数据(正常应 <50MB) +- 该数据库大到连查询都报 `database or disk is full` +- 每次 Cursor 读写此库都极度吃力,引发:V8 OOM → renderer crash code 5 → 窗口无响应 → Reopen 弹窗 +- AgentAnalytics 的 SQLite 嵌套事务错误也与此膨胀数据库有关 + +### 已执行修复 + +| # | 修复项 | 效果 | +|---|--------|------| +| 1 | `argv.json` 加 `--max-old-space-size=8192` | V8 堆上限从 ~1.5GB → 8GB,防 OOM | +| 2 | 清理 78 个过期 workspaceStorage | 释放 1084MB | +| 3 | 创建深度修复脚本 `cursor_deep_fix.sh` | 一键重置 state.vscdb + 全面清理 | + +### 待用户执行(需关闭 Cursor) + +**Cmd+Q 退出 Cursor → 终端执行:** + +```bash +bash "/Users/karuo/Documents/个人/卡若AI/运营中枢/参考资料/scripts/cursor_deep_fix.sh" +``` + +此脚本会: +1. 将 15GB 的 state.vscdb 移到废纸篓备份(Cursor 重启自动重建干净数据库) +2. 清理 GPUCache / Cache / CachedData +3. 清理 >7 天旧日志 + >30 天过期工作区 +4. 清理 Crash Reports + +预计释放 **~30GB**(15GB state.vscdb + 14GB backup + 583MB CachedData + 其余缓存)。 + +### 脚本位置 + +| 脚本 | 路径 | 用途 | +|------|------|------| +| 深度修复(推荐) | `运营中枢/参考资料/scripts/cursor_deep_fix.sh` | 重置膨胀数据库 + 全面清理 | +| 轻量清理 | `运营中枢/参考资料/scripts/clear_cursor_cache.sh` | 仅清 GPUCache/Cache/CachedData | + +### 预防措施 + +- `argv.json` 已设 `--max-old-space-size=8192`(重启生效),防止 V8 堆溢出 +- 建议每 2 周执行一次轻量清理脚本;若出现崩溃则执行深度修复脚本 +- 尽量减少同窗口工作区数量(当前 7 个,建议控制在 3 个以内) diff --git a/运营中枢/参考资料/scripts/clear_cursor_cache.sh b/运营中枢/参考资料/scripts/clear_cursor_cache.sh index faf6ab1f..26453f4f 100644 --- a/运营中枢/参考资料/scripts/clear_cursor_cache.sh +++ b/运营中枢/参考资料/scripts/clear_cursor_cache.sh @@ -1,17 +1,18 @@ #!/usr/bin/env bash -# Cursor 缓存清理脚本(缓解窗口无响应/崩溃) -# 使用:完全退出 Cursor 后执行本脚本;若 Cursor 在运行会提示先退出再执行。 -# 说明见:运营中枢/参考资料/Cursor闪退排查_20260304.md +# Cursor 缓存清理(轻量版)—— 深度修复请用 cursor_deep_fix.sh +# 使用:完全退出 Cursor 后执行 set -e CURSOR_SUPPORT="$HOME/Library/Application Support/Cursor" if pgrep -f "Cursor.app" >/dev/null 2>&1; then - echo "⚠️ Cursor 正在运行,请先 Cmd+Q 完全退出后再执行本脚本。" - echo " 执行:bash \"$(dirname "$0")/clear_cursor_cache.sh\"" + echo "⚠️ Cursor 正在运行,请先 Cmd+Q 完全退出后再执行。" exit 1 fi -echo "🧹 正在清理 Cursor GPUCache 与 Cache..." -rm -rf "$CURSOR_SUPPORT/GPUCache" "$CURSOR_SUPPORT/Cache" +echo "🧹 清理 Cursor GPUCache / Cache / CachedData..." +rm -rf "$CURSOR_SUPPORT/GPUCache" "$CURSOR_SUPPORT/Cache" "$CURSOR_SUPPORT/CachedData" echo "✅ 清理完成。可重新打开 Cursor。" +echo "" +echo "💡 如果仍频繁崩溃,请执行深度修复脚本:" +echo " bash \"$(dirname "$0")/cursor_deep_fix.sh\"" diff --git a/运营中枢/参考资料/scripts/cursor_deep_fix.sh b/运营中枢/参考资料/scripts/cursor_deep_fix.sh new file mode 100755 index 00000000..329bd438 --- /dev/null +++ b/运营中枢/参考资料/scripts/cursor_deep_fix.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash +# Cursor 深度修复脚本(解决反复崩溃 / code 5 / Reopen 弹窗) +# 使用:Cmd+Q 完全退出 Cursor → 执行本脚本 → 重新打开 Cursor +# 说明见:运营中枢/参考资料/Cursor闪退排查_20260304.md + +set -euo pipefail + +CURSOR_SUPPORT="$HOME/Library/Application Support/Cursor" +TRASH_DIR="$HOME/.Trash/cursor_cleanup_$(date +%Y%m%d_%H%M%S)" + +# ── 检查 Cursor 是否在运行 ── +if pgrep -f "Cursor.app" >/dev/null 2>&1; then + echo "⚠️ Cursor 正在运行!请先 Cmd+Q 完全退出后再执行。" + exit 1 +fi + +echo "🔧 Cursor 深度修复开始..." +echo " 备份目录: $TRASH_DIR" +mkdir -p "$TRASH_DIR" + +freed_mb=0 + +# ── 1. 重置膨胀的 state.vscdb(核心修复) ── +STATE_DB="$CURSOR_SUPPORT/User/globalStorage/state.vscdb" +if [ -f "$STATE_DB" ]; then + size_mb=$(du -m "$STATE_DB" | python3 -c "import sys; print(sys.stdin.read().split()[0])") + if [ "$size_mb" -gt 200 ]; then + echo "🗄️ state.vscdb 已膨胀到 ${size_mb}MB(正常 <100MB),正在重置..." + mv "$STATE_DB" "$TRASH_DIR/state.vscdb" + [ -f "${STATE_DB}-shm" ] && mv "${STATE_DB}-shm" "$TRASH_DIR/" + [ -f "${STATE_DB}-wal" ] && mv "${STATE_DB}-wal" "$TRASH_DIR/" + [ -f "${STATE_DB}.backup" ] && mv "${STATE_DB}.backup" "$TRASH_DIR/" + freed_mb=$((freed_mb + size_mb)) + echo " ✅ 已移到废纸篓备份(Cursor 重启会自动重建干净的数据库)" + else + echo "🗄️ state.vscdb ${size_mb}MB,大小正常,跳过" + fi +fi + +# ── 2. 清理 GPUCache + Cache ── +for cache_dir in GPUCache Cache; do + target="$CURSOR_SUPPORT/$cache_dir" + if [ -d "$target" ]; then + size=$(du -sm "$target" 2>/dev/null | python3 -c "import sys; print(sys.stdin.read().split()[0])" 2>/dev/null || echo 0) + rm -rf "$target" + freed_mb=$((freed_mb + size)) + echo "🧹 清理 $cache_dir(${size}MB)" + fi +done + +# ── 3. 清理 CachedData ── +CACHED="$CURSOR_SUPPORT/CachedData" +if [ -d "$CACHED" ]; then + size=$(du -sm "$CACHED" 2>/dev/null | python3 -c "import sys; print(sys.stdin.read().split()[0])" 2>/dev/null || echo 0) + rm -rf "$CACHED" + freed_mb=$((freed_mb + size)) + echo "🧹 清理 CachedData(${size}MB)" +fi + +# ── 4. 清理 >7天的旧日志 ── +LOGS_DIR="$CURSOR_SUPPORT/logs" +if [ -d "$LOGS_DIR" ]; then + log_freed=0 + find "$LOGS_DIR" -mindepth 1 -maxdepth 1 -type d -mtime +7 | while read -r d; do + rm -rf "$d" + done + remaining=$(du -sm "$LOGS_DIR" 2>/dev/null | python3 -c "import sys; print(sys.stdin.read().split()[0])" 2>/dev/null || echo 0) + echo "🧹 清理 >7天旧日志(剩余 ${remaining}MB)" +fi + +# ── 5. 清理 >30天的过期 workspaceStorage ── +WS_DIR="$CURSOR_SUPPORT/User/workspaceStorage" +if [ -d "$WS_DIR" ]; then + ws_count=0 + find "$WS_DIR" -mindepth 1 -maxdepth 1 -type d -mtime +30 | while read -r d; do + rm -rf "$d" + ws_count=$((ws_count + 1)) + done + remaining_ws=$(ls -1 "$WS_DIR" 2>/dev/null | wc -l | tr -d ' ') + echo "🧹 清理过期工作区存储(保留 ${remaining_ws} 个活跃条目)" +fi + +# ── 6. 清理 Crash Reports ── +CRASH_DIR="$CURSOR_SUPPORT/Crashpad" +if [ -d "$CRASH_DIR" ]; then + size=$(du -sm "$CRASH_DIR" 2>/dev/null | python3 -c "import sys; print(sys.stdin.read().split()[0])" 2>/dev/null || echo 0) + rm -rf "$CRASH_DIR" + freed_mb=$((freed_mb + size)) + echo "🧹 清理 Crashpad(${size}MB)" +fi + +echo "" +echo "═══════════════════════════════════════" +echo "✅ 深度修复完成!预计释放 ≥${freed_mb}MB" +echo " 备份已放入: $TRASH_DIR" +echo " (确认无问题后可清空废纸篓)" +echo "" +echo "📋 修复内容:" +echo " 1. state.vscdb 膨胀数据库 → 已重置(重启自动重建)" +echo " 2. GPUCache / Cache / CachedData → 已清理" +echo " 3. 旧日志 / 过期工作区 → 已清理" +echo " 4. Crash Reports → 已清理" +echo "" +echo "🔑 下一步: 直接打开 Cursor 即可" +echo " (首次启动会稍慢 10-20 秒,因为在重建状态数据库)" +echo "═══════════════════════════════════════" diff --git a/运营中枢/工作台/gitea_push_log.md b/运营中枢/工作台/gitea_push_log.md index b63c5318..338e22fa 100644 --- a/运营中枢/工作台/gitea_push_log.md +++ b/运营中枢/工作台/gitea_push_log.md @@ -306,3 +306,4 @@ | 2026-03-11 21:09:46 | 🔄 卡若AI 同步 2026-03-11 21:09 | 更新:运营中枢工作台 | 排除 >20MB: 11 个 | | 2026-03-12 12:20:59 | 🔄 卡若AI 同步 2026-03-12 12:20 | 更新:水桥平台对接、卡木、火炬、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 11 个 | | 2026-03-12 12:26:12 | 🔄 卡若AI 同步 2026-03-12 12:26 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 11 个 | +| 2026-03-12 16:42:12 | 🔄 卡若AI 同步 2026-03-12 16:42 | 更新:Cursor规则、水桥平台对接、水溪整理归档、卡木、总索引与入口、运营中枢工作台 | 排除 >20MB: 11 个 | diff --git a/运营中枢/工作台/代码管理.md b/运营中枢/工作台/代码管理.md index f1fb47e7..26944de3 100644 --- a/运营中枢/工作台/代码管理.md +++ b/运营中枢/工作台/代码管理.md @@ -309,3 +309,4 @@ | 2026-03-11 21:09:46 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-11 21:09 | 更新:运营中枢工作台 | 排除 >20MB: 11 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-03-12 12:20:59 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-12 12:20 | 更新:水桥平台对接、卡木、火炬、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 11 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-03-12 12:26:12 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-12 12:26 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 11 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | +| 2026-03-12 16:42:12 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-12 16:42 | 更新:Cursor规则、水桥平台对接、水溪整理归档、卡木、总索引与入口、运营中枢工作台 | 排除 >20MB: 11 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |