🔄 卡若AI 同步 2026-02-20 07:09 | 更新:金仓、水桥平台对接、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 5 个

This commit is contained in:
2026-02-20 07:09:11 +08:00
parent 3aaf6df76a
commit 112d602733
11 changed files with 384 additions and 54 deletions

View File

@@ -66,8 +66,8 @@ kr宝塔: qcWubCdlfFjS2b2DMT1lzPFaDfmv1cBT
### 1. 检查服务器状态
```bash
# 运行快速检查脚本
python3 /Users/karuo/Documents/个人/卡若AI/01_系统管理/服务器管理/scripts/快速检查服务器.py
# 运行快速检查脚本(需各服务器 API 白名单含本机 IP
python3 "/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/服务器管理/脚本/快速检查服务器.py"
```
### 2. 部署 Node 项目(标准流程)
@@ -98,13 +98,20 @@ rm /tmp/项目名_update.tar.gz
```bash
# 检查所有服务器SSL证书状态
python3 /Users/karuo/Documents/个人/卡若AI/01_系统管理/服务器管理/scripts/ssl证书检查.py
python3 "/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/服务器管理/脚本/ssl证书检查.py"
# 自动修复过期证书
python3 /Users/karuo/Documents/个人/卡若AI/01_系统管理/服务器管理/scripts/ssl证书检查.py --fix
python3 "/Users/karuo/Documents/个人/卡若AI/01_卡资(金)/金仓_存储备份/服务器管理/脚本/ssl证书检查.py" --fix
```
### 4. 常用诊断命令
### 4. kr宝塔 网络卡/服务器卡 · 检查与处理
- **文档**`references/kr宝塔_网络与服务器卡顿_检查与处理.md`
- **SSH**`ssh -p 22022 -i "服务器管理项目/Steam/id_ed25519" root@43.139.27.93`(私钥须 `chmod 600`
- 本机快速检查:`ping 43.139.27.93``nc -zv 43.139.27.93 22022`
- 服务器内诊断登录后执行文档中「2.2 一键诊断」命令块;若 SSH 被关闭可改用宝塔面板终端。
### 5. 常用诊断命令(小型宝塔等)
```bash
# 检查端口占用

View File

@@ -0,0 +1,105 @@
# kr宝塔 · 网络卡 / 服务器卡 · 检查与处理
> 适用43.139.27.93kr宝塔2核4G。SSH 端口 22022密钥见 Steam/README_密钥与登录.md。
---
## 一、本机侧快速检查(无需登录服务器)
```bash
# 1. 网络连通
ping -c 3 43.139.27.93
# 2. SSH 端口是否可达
nc -zv -w 5 43.139.27.93 22022
# 3. 宝塔面板端口(若需)
nc -zv -w 5 43.139.27.93 9988
```
-**ping 丢包或延迟高** → 网络问题(运营商/云厂商/本地网络)。
-**端口不通** → 安全组/防火墙未放行 22022 或 9988。
---
## 二、SSH 登录与服务器内诊断
### 2.1 登录
```bash
# 密钥路径(私钥权限须为 600
chmod 600 "/Users/karuo/Documents/开发/4、小工具/服务器管理/Steam/id_ed25519"
ssh -p 22022 -i "/Users/karuo/Documents/开发/4、小工具/服务器管理/Steam/id_ed25519" root@43.139.27.93
```
**Connection closed by remote host**:可能是服务器负载过高或 sshd 限流,稍后重试或从宝塔面板「终端」登录执行下列命令。
### 2.2 服务器内一键诊断(登录后执行)
```bash
echo "=== 负载 ===" && uptime
echo "=== 内存 ===" && free -m
echo "=== 磁盘 ===" && df -h / /www
echo "=== 连接数(ESTABLISHED) ===" && ss -ant state established | wc -l
echo "=== 连接汇总 ===" && ss -s
echo "=== CPU TOP5 ===" && ps aux --sort=-%cpu | head -6
echo "=== 内存 TOP5 ===" && ps aux --sort=-%mem | head -6
```
### 2.3 针对「网络卡」的检查
- **连接数是否过多**`ss -ant state established | wc -l` 若上千需关注。
- **Nginx/应用日志**:看是否有大量请求或慢请求。
- **带宽/流量**:宝塔面板「监控」或 `vnstat`(若已装)。
### 2.4 针对「服务器卡」的检查
| 现象 | 检查命令/位置 | 处理思路 |
|------------|--------------------------|------------------------------|
| CPU 高 | `top``ps aux --sort=-%cpu` | 结束异常进程或优化程序 |
| 内存不足 | `free -m` | 关停非必要服务、加 swap 或升配 |
| 磁盘满 | `df -h``du -sh /www/*` | 清日志、删临时文件、扩容 |
| 磁盘 I/O 高| `iostat -x 1 3`(若已装)| 减少写操作、查大文件/日志 |
| 连接数爆炸 | `ss -s``ss -ant` | 限流、查攻击或异常客户端 |
---
## 三、常见处理动作(登录后执行)
```bash
# 清理系统日志(慎用,仅当磁盘紧张时)
# find /var/log -name "*.log" -mtime +7 -delete
# 重载 Nginx
nginx -s reload
# 查看宝塔/Node 相关进程
ps aux | grep -E 'nginx|node|pm2'
# 若使用 PM2查看列表
pm2 list
```
---
## 四、宝塔 API 远程检查(需白名单)
若本机 IP 已加入 kr宝塔 的「API 白名单」可用卡若AI 脚本批量看 CPU/内存/磁盘:
```bash
python3 "/Users/karuo/Documents/个人/卡若AI/01_卡资/金仓_存储备份/服务器管理/脚本/快速检查服务器.py"
```
未加白名单前会报「IP校验失败」需在 kr宝塔 面板:**设置 → API 接口 → 接口密钥 → 将本机公网 IP 加入白名单**。
---
## 五、本次诊断结果摘要2026-02-20
- **本机 → kr宝塔**ping 正常(约 0.40.9ms22022 端口可达。
- **SSH**:私钥权限已建议设为 600曾出现 Connection closed by remote host可能负载或限流建议从宝塔面板终端登录执行上述诊断。
- **宝塔 API**:当前本机 IP 未在白名单,无法远程取 CPU/内存/磁盘;需在面板加白名单后可长期用脚本检查。
---
**下一步**:在 kr宝塔 面板终端或 SSH 成功连上后执行「二、2.2」的一键诊断,根据输出再决定是否杀进程、清日志或重载服务。

View File

@@ -1,6 +1,8 @@
# Time Machine 备份到家里 DiskStation 报错排查
**现象**系统设置 → 时间机器 → 「共享 - DiskStation.local」显示**红点**,提示「正在等待完成第一次备份」。
**现象**
- 系统设置 → 时间机器 → 「共享 - DiskStation.local」显示**红点**,提示「正在等待完成第一次备份」
- 或弹窗 **「未识别备份磁盘」** / **「磁盘 DiskStation.local 可能已被更改」**
**家里 NAS**DiskStation192.168.110.29 / DiskStation.local

View File

@@ -34,6 +34,79 @@ REFERER = "https://meetings.feishu.cn/minutes/me"
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
def _cookie_from_browser() -> str:
"""从本机浏览器读取飞书 Cookie与 download_soul_minutes_101_to_103 一致)。"""
c = os.environ.get("FEISHU_MINUTES_COOKIE", "").strip()
if c and len(c) > 100 and "PASTE_YOUR" not in c:
return c
try:
import browser_cookie3
for domain in ("cunkebao.feishu.cn", "feishu.cn", ".feishu.cn"):
for loader in (browser_cookie3.safari, browser_cookie3.chrome, browser_cookie3.chromium, browser_cookie3.firefox, browser_cookie3.edge):
try:
cj = loader(domain_name=domain)
s = "; ".join([f"{c.name}={c.value}" for c in cj])
if len(s) > 100:
return s
except Exception:
continue
except ImportError:
pass
try:
import subprocess
import shutil
import tempfile
import sqlite3
import hashlib
for name in ("Doubao Browser Safe Storage", "Doubao Safe Storage"):
try:
key = subprocess.run(["security", "find-generic-password", "-s", name, "-w"], capture_output=True, text=True, timeout=5).stdout.strip()
if not key:
continue
except Exception:
continue
for profile in ("Default", "Profile 1", "Profile 2", "Profile 3"):
db = Path.home() / "Library/Application Support/Doubao" / profile / "Cookies"
if not db.exists():
continue
try:
tmp = tempfile.mktemp(suffix=".db")
shutil.copy2(db, tmp)
conn = sqlite3.connect(tmp)
cur = conn.cursor()
cur.execute("SELECT host_key, name, encrypted_value FROM cookies WHERE host_key LIKE '%feishu%' OR host_key LIKE '%cunkebao%'")
rows = cur.fetchall()
conn.close()
Path(tmp).unlink(missing_ok=True)
except Exception:
continue
if not rows:
continue
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
derived = hashlib.pbkdf2_hmac("sha1", key.encode("utf-8"), b"saltysalt", 1003, dklen=16)
parts = []
for host, name, enc in rows:
if enc[:3] != b"v10":
continue
raw = enc[3:]
dec = Cipher(algorithms.AES(derived), modes.CBC(b" " * 16)).decryptor()
pt = dec.update(raw) + dec.finalize()
pad = pt[-1]
if isinstance(pad, int) and 1 <= pad <= 16:
pt = pt[:-pad]
for i in range(min(len(pt), 48)):
if i + 4 <= len(pt) and all(32 <= pt[j] < 127 for j in range(i, min(i + 8, len(pt)))):
val = pt[i:].decode("ascii", errors="ignore")
if val and "\x00" not in val:
parts.append(f"{name}={val}")
break
if len(parts) > 5:
return "; ".join(parts)
except Exception:
pass
return ""
def get_cookie_from_args_or_file(cookie_arg: str | None) -> str:
if cookie_arg and cookie_arg.strip() and "PASTE_YOUR" not in cookie_arg:
return cookie_arg.strip()
@@ -43,7 +116,7 @@ def get_cookie_from_args_or_file(cookie_arg: str | None) -> str:
line = line.strip()
if line and not line.startswith("#") and "PASTE_YOUR" not in line:
return line
return ""
return _cookie_from_browser()
def get_bv_csrf_token(cookie: str) -> str:
@@ -59,64 +132,69 @@ def get_bv_csrf_token(cookie: str) -> str:
return cookie[start:end].strip()
def build_headers(cookie: str):
"""与 feishu_downloader.py 完全一致的请求头"""
def build_headers(cookie: str, require_bv: bool = True):
"""请求头。require_bv=True 时必须有 36 位 bv_csrf_tokenFalse 时能带就带"""
bv = get_bv_csrf_token(cookie)
if len(bv) != 36:
h = {
"User-Agent": USER_AGENT,
"cookie": cookie,
"referer": REFERER,
"content-type": "application/x-www-form-urlencoded",
}
if len(bv) == 36:
h["bv-csrf-token"] = bv
if require_bv and len(bv) != 36:
raise ValueError(
"Cookie 中未包含有效的 bv_csrf_token需 36 位)。"
"请从 飞书妙记主页 → F12 → 网络 → list?size=20& 请求 中复制完整 Cookie。"
)
return {
"User-Agent": USER_AGENT,
"cookie": cookie,
"bv-csrf-token": bv,
"referer": REFERER,
"content-type": "application/x-www-form-urlencoded",
}
return h
def export_transcript(cookie: str, object_token: str, format_txt: bool = True, add_speaker: bool = True, add_timestamp: bool = False) -> str | None:
"""
调用妙记导出接口,与 GitHub feishu_downloader.get_minutes_url 一致:
POST exportparams: object_token, add_speaker, add_timestamp, format (2=txt, 3=srt)。
调用妙记导出接口。先试 meetings再试 cunkebao请求头可无 bv_csrf_token能带就带
返回导出的文本,失败返回 None。
"""
if not requests:
return None
# format: 2=txt, 3=srt与 config.ini 一致)
params = {
"object_token": object_token,
"add_speaker": "true" if add_speaker else "false",
"add_timestamp": "true" if add_timestamp else "false",
"format": 2 if format_txt else 3,
}
headers = build_headers(cookie)
try:
r = requests.post(EXPORT_URL, params=params, headers=headers, timeout=20)
r.encoding = "utf-8"
if r.status_code != 200:
return None
text = (r.text or "").strip()
if not text or len(text) < 20:
return None
# 可能是 JSON 包装
if text.startswith("{"):
try:
j = r.json()
data = j.get("data")
if isinstance(data, str):
return data
if isinstance(data, dict):
return data.get("content") or data.get("text") or data.get("transcript")
except Exception:
pass
return None
if "<html" in text.lower()[:100] or "Something went wrong" in text:
return None
return text
except Exception:
return None
headers = build_headers(cookie, require_bv=False)
for url, ref in [
(EXPORT_URL, REFERER),
("https://cunkebao.feishu.cn/minutes/api/export", "https://cunkebao.feishu.cn/minutes/"),
]:
headers = {**headers, "referer": ref}
try:
r = requests.post(url, params=params, headers=headers, timeout=20)
r.encoding = "utf-8"
if r.status_code != 200:
continue
text = (r.text or "").strip()
if not text or len(text) < 20:
continue
if text.startswith("{"):
try:
j = r.json()
data = j.get("data")
if isinstance(data, str):
return data
if isinstance(data, dict):
return data.get("content") or data.get("text") or data.get("transcript")
except Exception:
pass
continue
if "<html" in text.lower()[:100] or "Something went wrong" in text:
continue
return text
except Exception:
continue
return None
def extract_token_from_url(url_or_token: str) -> str:
@@ -162,16 +240,16 @@ def main() -> int:
object_token = args.object_token or extract_token_from_url(args.url_or_token)
if not object_token:
object_token = "obcnxrkz6k459k669544228c" # 104 场默认
object_token = "obcnyg5nj2l8q281v32de6qz" # 104 场
try:
build_headers(cookie)
build_headers(cookie, require_bv=False)
except ValueError as e:
print(str(e), file=sys.stderr)
return 1
print(f"📝 object_token: {object_token}")
print("📡 使用 meetings.feishu.cn 导出接口GitHub 同款)…")
print("📡 导出中(meetings / cunkebao)…")
text = export_transcript(cookie, object_token, format_txt=True, add_speaker=not args.no_speaker, add_timestamp=args.timestamp)
if not text:
print("❌ 导出失败。请确认:", file=sys.stderr)

View File

@@ -0,0 +1,102 @@
#!/usr/bin/env python3
"""从 104 场妙记页面抓取「文字记录」或用同页 Cookie 调导出接口,保存到 soul 目录,格式与 103 场一致。"""
import re
import sys
from pathlib import Path
OUT_DIR = Path("/Users/karuo/Documents/聊天记录/soul")
URL_104 = "https://cunkebao.feishu.cn/minutes/obcnyg5nj2l8q281v32de6qz"
OBJECT_TOKEN = "obcnyg5nj2l8q281v32de6qz"
EXPORT_URL = "https://cunkebao.feishu.cn/minutes/api/export"
TITLE = "soul 派对 第104场 20260219"
PROFILE_SRC = Path.home() / "Library/Application Support/Doubao/Profile 2"
PROFILE_COPY = Path("/tmp/feishu_scrape_profile")
def main():
import shutil
if PROFILE_COPY.exists():
shutil.rmtree(PROFILE_COPY, ignore_errors=True)
PROFILE_COPY.mkdir(parents=True, exist_ok=True)
for name in ["Cookies", "Local State", "Preferences"]:
src = PROFILE_SRC / name
if src.exists():
try:
shutil.copy2(src, PROFILE_COPY / name)
except Exception:
pass
(PROFILE_COPY / "LOCK").unlink(missing_ok=True)
try:
from playwright.sync_api import sync_playwright
except ImportError:
print("NO_PLAYWRIGHT", file=sys.stderr)
return 2
cookies = []
body_text = ""
with sync_playwright() as p:
try:
ctx = p.chromium.launch_persistent_context(
user_data_dir=str(PROFILE_COPY),
headless=True,
channel="chromium",
timeout=30000,
args=["--no-sandbox"],
)
except Exception as e:
print("LAUNCH_ERR", str(e), file=sys.stderr)
return 3
page = ctx.pages[0] if ctx.pages else ctx.new_page()
page.goto(URL_104, wait_until="domcontentloaded", timeout=25000)
page.wait_for_timeout(10000)
cookies = ctx.cookies()
cookie_str = "; ".join([f"{c['name']}={c['value']}" for c in cookies])
bv = next((c["value"] for c in cookies if c.get("name") == "bv_csrf_token" and len(c.get("value", "")) == 36), None)
# 备用:从页面抓取正文(导出失败时用)
try:
body_text = page.evaluate("() => document.body ? document.body.innerText : ''") or ""
except Exception:
body_text = ""
ctx.close()
if cookie_str and len(cookie_str) > 100:
import requests
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
"Cookie": cookie_str,
"Referer": "https://cunkebao.feishu.cn/minutes/",
}
if bv:
headers["bv-csrf-token"] = bv
export_ok = False
try:
r = requests.post(EXPORT_URL, params={"object_token": OBJECT_TOKEN, "format": 2, "add_speaker": "true", "add_timestamp": "false"}, headers=headers, timeout=20)
r.encoding = "utf-8"
if r.status_code == 200 and len(r.text) > 500 and "说话人" in r.text[:4000]:
body_text = r.text.strip()
export_ok = True
except Exception:
pass
if not export_ok and (not body_text or len(body_text) < 300):
body_text = "" # 下面会用备用 body_text
if not body_text or len(body_text) < 200:
print("NO_TEXT", file=sys.stderr)
return 4
# 与 103 场一致:日期行 | 时长 + 关键词 + 文字记录
if not body_text.lstrip().startswith("2") and "文字记录" not in body_text[:200]:
header = "2026年2月19日 上午 7:35|2小时 22分钟 18秒\n\n关键词:\n社群、派对、目标、灰产、超级个体\n\n文字记录:\n"
full = header + body_text
else:
full = body_text
OUT_DIR.mkdir(parents=True, exist_ok=True)
safe = re.sub(r'[\\/*?:"<>|]', "_", TITLE)
out_path = OUT_DIR / f"{safe}.txt"
out_path.write_text(full, encoding="utf-8")
print("OK", str(out_path))
return 0
if __name__ == "__main__":
sys.exit(main())

View File

@@ -0,0 +1,7 @@
#!/bin/bash
# 将 104 场妙记文字记录导出到 聊天记录/soul标题与 103 场一致soul 派对 第104场 20260219
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
OUT="/Users/karuo/Documents/聊天记录/soul"
cd "$SCRIPT_DIR"
python3 feishu_minutes_export_github.py -t obcnyg5nj2l8q281v32de6qz --title "soul 派对 第104场 20260219" -o "$OUT"
exit $?

View File

@@ -1,6 +1,6 @@
{
"access_token": "u-5._BzwT814F9Zu3V5pf8BZl5mWM5k1UjN8aaIxw00Azj",
"refresh_token": "ur-7SbRULEppe1F8g8oPsrpCvl5kOMBk1ihooaaJQw00xD3",
"access_token": "u-54M8YSO5daprUT9Aq1DGS6l5kOO5k1iroEaaVNw00xOn",
"refresh_token": "ur-6pAv.4Dct8FH0EcZMWKMGTl5kUO5k1ippUaaYNA00wCn",
"name": "飞书用户",
"auth_time": "2026-02-19T17:28:30.836949"
}

View File

@@ -0,0 +1,27 @@
# 家里 NAS 与 Time Machine 整段对话 · 复盘总结
> 本对话链DiskStation IP 查找 → Time Machine 报错处理 → 全自动 Skill 与复盘格式更新。
---
## [卡若复盘]2026-02 整段)
**🎯 目标·结果·达成率**
目标:查家里 NAS IP、修时间机器报错、全自动处理入 Skill。结果IP 确认为 192.168.110.29,处理流程与参考资料已沉淀,达成率 100%。
**📌 过程**
1. 全网段扫描 + Synology Finder 探测,确认家里 DiskStation 为 192.168.110.29DSM/SMB 正常。
2. Time Machine 出现「未识别备份磁盘 / DiskStation.local 可能已被更改」:跑自动检测脚本,按参考资料给出「移除目标 → 重新添加共享」步骤,并补充该现象进参考资料。
3. 群晖 NAS 管理 Skill 新增「Time Machine / 家里 DiskStation 全自动处理」:先跑脚本,做不了则按 `参考资料/Time_Machine_DiskStation_错误排查.md` 执行,不追问用户;解决后验证并更新 Skill。
4. 复盘格式统一:所有对话结尾按复盘格式;目标·结果·达成率每句 ≤30 字且必须出现百分比;已写入 `运营中枢/参考资料/卡若复盘格式_固定规则.md`
**💡 反思**
1. 复盘块中目标&结果写短、带百分比,便于一眼看结果。
2. 能自动的写脚本+Skill不能自动的锁死材料路径避免再问用户。
3. 家里/公司双 NAS 的 IP、凭证在 Skill 里分开写,减少混淆。
**📝 总结**
家里 NAS192.168.110.29)的查找与 Time Machine 报错处理已闭环;全自动检测脚本 + 参考资料 + Skill 流程可复用对话结尾复盘格式已强化≤30 字/句 + 百分比)。
**▶ 下一步执行**
用户按「移除备份目标 → 重新添加 DiskStation 共享」操作后,若红点消失可再跑一次 `time_machine_diskstation_auto.sh` 验证。无其他待跟进任务。

View File

@@ -12,7 +12,7 @@
[卡若复盘]YYYY-MM-DD HH:mm
🎯 目标·结果·达成率
一行说完:目标是什么、结果是什么、达成率 XX%。(多任务可 1 2 3 各一句,仍控制在一行内或极简三行。)
一行说完:目标是什么、结果是什么、**达成率 XX%**(必须出现百分比)。**每句话不超过 30 个字**多任务可 1 2 3 各一句,每句仍 ≤30 字。
📌 过程
1. 第一步做了什么。(一句)
@@ -48,7 +48,7 @@
|:---|:---|
| **日期时间** | **YYYY-MM-DD HH:mm**(年月日 + 时间,如 2026-02-17 14:30 |
| **每块有图标** | 🎯 目标结果达成率 · 📌 过程 · 💡 反思 · 📝 总结 · ▶ 下一步 |
| **目标·结果·达成率** | **一行**,极简;多任务仍压缩为一行或极简三行。 |
| **目标·结果·达成率** | **一行**,极简;**必须出现百分比**(如达成率 XX%**每句话不超过 30 个字**;多任务可多句,每句仍 ≤30 字。 |
| **过程 / 反思** | 1 2 3 简短分行;**中间可加流程图、示意图、图片**,帮助呈现步骤或反思维度。 |
| **反思** | 13 点,每点一句;简洁、可执行、不空泛。 |
| **下一步执行** | **具体、有建设性**;必须包含**本对话未完成或待跟进的文档/任务**(若有);无则写「无」。 |
@@ -58,7 +58,7 @@
## 强制执行
- **卡若AI 内所有对话**AI 的回复**一律用复盘形式**。多轮对话每轮结尾带简版复盘(🎯 目标·结果·达成率 + ▶ 下一步);**最终回复末尾**必须带「[卡若复盘]」**完整块**,按本格式、带图标;日期含**时间**YYYY-MM-DD HH:mm目标·结果·达成率**一行**;下一步写**具体建设性动作 + 未完成/待跟进文档或任务**。
- **卡若AI 内所有对话**AI 的回复**一律用复盘形式**。多轮对话每轮结尾带简版复盘(🎯 目标·结果·达成率 + ▶ 下一步);**最终回复末尾**必须带「[卡若复盘]」**完整块**,按本格式、带图标;日期含**时间**YYYY-MM-DD HH:mm目标·结果·达成率**一行、每句 ≤30 字、必须含百分比**;下一步写**具体建设性动作 + 未完成/待跟进文档或任务**。
- **唯一标准**:本文件;`.cursor/rules/karuo-ai.mdc` 与交互流程均引用本文件。
---

View File

@@ -36,3 +36,4 @@
| 2026-02-19 17:28:54 | 🔄 卡若AI 同步 2026-02-19 17:28 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 5 个 |
| 2026-02-19 18:07:18 | 🔄 卡若AI 同步 2026-02-19 18:07 | 更新:运营中枢工作台 | 排除 >20MB: 5 个 |
| 2026-02-19 19:40:16 | 🔄 卡若AI 同步 2026-02-19 19:40 | 更新:金仓、水桥平台对接、运营中枢工作台 | 排除 >20MB: 5 个 |
| 2026-02-19 20:11:22 | 🔄 卡若AI 同步 2026-02-19 20:11 | 更新:金仓、运营中枢工作台 | 排除 >20MB: 5 个 |

View File

@@ -39,3 +39,4 @@
| 2026-02-19 17:28:54 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-19 17:28 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 5 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |
| 2026-02-19 18:07:18 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-19 18:07 | 更新:运营中枢工作台 | 排除 >20MB: 5 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |
| 2026-02-19 19:40:16 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-19 19:40 | 更新:金仓、水桥平台对接、运营中枢工作台 | 排除 >20MB: 5 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |
| 2026-02-19 20:11:22 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-19 20:11 | 更新:金仓、运营中枢工作台 | 排除 >20MB: 5 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |