⚡ 栗子云知识库

Skills & 记忆 · 每日 LLM 整理

21 技能
18 分类
9 记忆
2 更新记录

🧠 系统记忆

telegram 通知配置:bot @researcher_lizbot, 完整 token 格式 (bot id=,注意必须带 bot_id 前缀, 只有 hash 部分会 404),target user id 483745587。用于微信消息受限时的告警通知。修复教训:栗子云 gateway setup 可能把 token 覆盖成不完整形式,配置后务必 curl getMe 验证。
【凭证存储约定】所有云厂商凭证只存 MySQL cloud_credentials 表 (provider='cloudflare' 等, 含 account_id/api_token/r2 三件套),绝不落本地文件;用时从 MySQL 读入环境变量。
【Cloudflare 约束】只用免费配额,绝不触发收费:KV 写 1k/天、读 100k/天、Worker 请求 100k/天。SLA 面板 ,Worker 栗子云-sla-worker。凭证见 MySQL cloud_credentials。
=(6C6G60G,,CentOS7宝塔机,密码,可自动恢复)
【邮件系统偏好】主题前缀固定 [栗子云Bot],且 栗子云-email.py 不再自动加 [hostname] 前缀(发送节点移入页脚“发送节点:”行)。结果邮件主题用离线主机命名:[栗子云Bot] XX 等 N 台主机离线,已完成恢复。状态卡片只显示 IP/内存/硬盘/负载/容器 5 项,内存硬盘显示用量(used/total)。故障邮件由 email-consolidator.py 用 LLM() 合并最多 2 封(>10min 未恢复发检测通知+处理结果;快速恢复只发 1 封;主题规则化不依赖 LLM;恢复邮件去重:failed 分支只记 email_pending 不直发)。**全部离线兜底通知用邮件不用 Telegram**:CF Worker 已接 Resend(key 存 MySQL provider='resend',发件 已验证域名→收件 )。
【LLM 配置(2026-08-01 统一)】栗子云 全部切 OpenCode Go:base_url= .env + MySQL provider='opencode')。flash 需中国区 opt-in(已配)。坑:urllib 无 UA 403;reasoning 偶发空 content 需重试+模板兜底;远程 venv 无 pymysql 用 /usr/bin/python3。
【栗子云 操作铁律】云服务器禁止使用任何代理(HTTP/SOCKS 代理会被封号,老板明确)。本机 IP 被 栗子云 风控时,禁止起代理隧道,改为通过 SSH 让对端未风控节点(如 HK-Q)的 栗子云/脚本直接操作 栗子云。栗子云.sh 的隧道方案已废弃。
【知识库wiki】 (CF Pages 项目 栗子云-wiki),gen-wiki.py 每日 21:00 UTC 生成+部署+邮件通知;只展示 /root/wiki-used.json 白名单内使用过的 skill(20个),skill/分类名全中文,LLM 生成易读摘要+mermaid 流程图;凭证双层脱敏(正则+部署前LLM检查),IP/主机名/内部域名绝不落页面。
【BJ网络不稳定】(北京 )→ MySQL 连接不稳定(Connection reset/timeout),曾致 heartbeat 写入失败、心跳空窗 8min → 各节点误判离线并发误报邮件。已加固:heartbeat 3次重试+短超时、systemd 加超时、email-consolidator 离线判定加 SSH 二次确认(心跳超时但 SSH 在线=上报中断非离线)。部署 heartbeat 换解释器必须确认远端 venv 装了 pymysql(曾致 8 台心跳全停)。

👤 用户档案

用户自称"子然",希望被称呼为"老板"。是栗子的服务对象,定位为全栈工程师角色,负责复杂技术工作。
子然老板的备用通知邮箱 ,企业邮 (exmail.qq.com):IMAP imap.exmail.qq.com:993 SSL;SMTP smtp.exmail.qq.com:465 SSL。备用 vip 邮箱 。仅在“任务总结/异常通知”时发邮件,禁止每条消息都邮件回(避免单行邮件淹没收件箱)。
【工作方式】老板要求长任务连续执行不中断:做完一个待办直接继续下一个,不用做一半停下来找他确认("后面不用做一半找我确认,直接继续")。批量待办按顺序处理完再统一汇报。

📁 AI 智能体 1 个技能

栗子云 Agent 使用指南 AI 智能体

栗子云 Agent 技能说明

本技能用于使用、配置、主题化、扩展和编排 栗子云 Agent——一个由 Nous Research 开发的开源 AI 智能体框架,可在终端、桌面应用、聊天平台和 IDE 中运行,支持多种大模型提供商(如 OpenAI、Anthropic、Google 等)。

核心概念

  • 技能自改进:栗子云 会把可复用的操作流程保存为技能,在后续会话中自动加载。
  • 持久记忆:跨会话记住你的身份、偏好、环境信息和经验教训,支持可插拔的存储后端。
  • 多平台网关:同一智能体可接入 Telegram、Discord、Slack、WhatsApp、微信(需确认)等平台,不止于聊天。
  • 多界面:命令行(CLI)、终端 UI(TUI)、桌面应用、网页面板、IDE 插件(VS Code / Zed / JetBrains)。
  • 提供商无关:可随时切换模型和提供商,自动轮换多个 API 密钥。
  • 配置集(Profiles):运行多个相互独立的 栗子云 实例,配置、会话、技能和记忆互相隔离。
  • 可扩展可换肤:支持插件、MCP 服务器、自定义工具、Webhook 触发、定时任务和主题皮肤。

常用命令或步骤

  • 入门:运行 栗子云 开始交互;查看帮助用 栗子云 --help栗子云 <command> --help
  • 编排:通过 CLI 启动、停止和管理多个 栗子云 实例(Profiles)。
  • 遇到未收录的功能时,先查阅官方文档(https://栗子云 Agent.nousresearch.com/docs/)或源码,不要因为文档没提就认为不存在。

注意事项

  • 技能是“操作手册”,不是完整参考;细节问题请先加载对应的参考文件。
  • 回答前务必核实最新仓库和官方文档,避免给出过时或错误的否定答案。
🔀 查看流程图
flowchart TD A[启动栗子云] --> B[加载技能与记忆] B --> C[接收用户请求] C --> D{需要工具?} D -- 是 --> E[调用工具插件] D -- 否 --> F[直接生成回复] E --> F F --> G[保存经验技能] G --> C

📁 浏览器自动化 1 个技能

浏览器驱动初始化 浏览器自动化

用途

初始化并启动 Chrome 的 CDP(远程调试)模式,让 Playwright 或 browser-use Agent 能控制真实 Chrome 浏览器,用于网页自动化、数据提取、填表等。

核心概念

  • CDP:Chrome DevTools Protocol,Chrome 提供的远程调试接口,外部程序可通过它操控浏览器。
  • App-Bound 加密限制:Chrome 145+ 强制要求调试时必须使用非默认用户数据目录,否则无法启动调试端口。
  • Profile 复制:本技能自动把默认用户配置复制到自定义目录,既满足限制,又保留登录状态。

常用步骤

  1. 进入 scripts 目录,运行 python start_chrome.py,自动复制 Profile 并启动 Chrome(CDP 模式)。
  2. 若登录状态丢失,在打开的 Chrome 中手动登录一次,再关闭重跑上述命令。
🔀 查看流程图
flowchart TD A[运行启动脚本] --> B[复制默认配置] B --> C[自定义目录启动Chrome] C --> D[开启CDP调试模式] D --> E[打开浏览器] E --> F[检查登录状态] F --> G{登录有效?} G -- 是 --> H[完成初始化] G -- 否 --> I[手动登录] I --> J[关闭浏览器] J --> A

📁 云面板登录 1 个技能

云面板浏览器登录 云面板登录

云控制面板浏览器登录技能

这个技能用于自动登录没有官方 API 的云控制面板,能处理验证码等反机器人机制,抓取内部接口、保存 cookie 并提取会话令牌,方便后续自动化操作。

核心概念

  • 反机器人处理:识别滑动验证码(如页面 JS 中的 captchaId 参数),自动完成或转人工;模拟真实浏览器指纹和鼠标轨迹,避免被识别;失败时指数退避重试。
  • Cookie 保存:登录成功后保存会话 Cookie,供后续请求复用。
  • API 发现:通过自动操作捕获面板内部调用的接口地址,便于直接调用。

常用命令或步骤

  1. 浏览器自动化法(Playwright/Puppeteer):适用于需要渲染 JS 或验证码的场景。关键命令:page.goto(url)page.fill('input[name=email]', 邮箱)page.click('提交按钮')context.cookies() 保存 Cookie。
  2. 直接 POST 法:已知表单提交地址且无强 JS 校验时,用 requests.post() 带上账号密码直接提交,更轻量稳定。

注意事项

  • 无头环境(服务器)必须配置真实 User-Agent 和视口,否则容易被反爬。
  • 验证码无法自动通过时,需设置人工介入的回退方案。
  • 保存的 Cookie 有有效期,需定期重新登录。
🔀 查看流程图
flowchart TD A[开始] --> B[访问云面板] B --> C{遇到验证码?} C -- 否 --> D[提交登录表单] C -- 是 --> E{能自动处理?} E -- 是 --> F[模拟轨迹破解] E -- 否 --> G[转人工介入] F --> D G --> D D --> H[保存Cookie] H --> I[抓取内部接口] I --> J[提取会话令牌] J --> K[结束]

📁 云主机部署 1 个技能

云主机部署 云主机部署

这个技能用 7 阶段检查单部署云虚拟机(魔方云/飞讯云 栗子云控制台),并自动生成部署报告。

核心概念

  • 7 阶段检查单:每步都有可验证的完成标准。
  • Phase 0 预检:通过浏览器登录 栗子云控制台、获取主机详情、检查 SSH 状态、准备本地资源。
  • 若 SSH 锁死(prohibit-password),自动重装系统并恢复访问。

常用命令或步骤

  1. 浏览器登录 栗子云控制台,拿 CSRF token 和 cookies。
  2. 获取主机服务 ID 和详情。
  3. 检查 SSH 状态;若锁死,运行全自动重装:

`bash

python3 /root/bin/栗子云.py --svc-id <ID> --host <IP>

`

  1. 准备本地资源:ed25519 公钥、docker-compose 文件、firecrawl 配置、打包 栗子云 备份。

注意事项

  • 重装时点击弹窗中的“√ 确定”,不是“√ 提交”。
  • 真实密码从 window.zcPwdValue 读取,不在表单里。
  • 重装完成后必须重新读取密码。
  • 不要备份整个 .栗子云/,否则会覆盖 config.yaml。
🔀 查看流程图
flowchart TD A[开始] --> B[登录云平台获取凭证] B --> C[获取主机详情] C --> D[检查SSH状态] D --> E{SSH是否锁死?} E -- 是 --> F[自动重装系统] F --> G[重新读取密码] G --> H[恢复SSH访问] H --> I[准备本地资源] E -- 否 --> I I --> J[生成部署报告]

📁 邮件系统 1 个技能

命令行邮件工具 邮件系统

Himalaya 是一个在终端里管理邮件的命令行工具(CLI),支持 IMAP、SMTP 等协议,让你或智能体不用打开图形界面就能收发邮件。

核心概念

  • Himalaya CLI:与图形邮件客户端不同,它纯靠命令行操作。
  • 后端:通过 IMAP 收信、SMTP 发信,也支持 Notmuch 或 Sendmail。
  • 配置文件:账号信息写在 ~/.config/himalaya/config.toml 中。
  • 独立技能:它不依赖 栗子云 邮件网关,需要单独安装 Himalaya 命令才能使用。

常用命令或步骤

  1. 安装 Himalaya(任选一种):

- Linux/macOS 一键脚本:curl -sSL ... | sh

- macOS Homebrew:brew install himalaya

- Rust 工具链:cargo install himalaya --locked

  1. 验证安装:himalaya --version
  2. 配置账号:运行 himalaya account configure 按向导设置,或手动编辑配置文件。
  3. 在配置里填好 IMAP/SMTP 服务器、端口、登录名和密码(建议用系统钥匙串或密码管理器存储)。

注意事项

  • 配置文件必须放在 ~/.config/himalaya/config.toml,否则命令找不到账号。
  • 文件夹别名(inbox/sent/drafts/trash)要按服务器实际名称设置,比如 Gmail 用 [Gmail]/Sent Mail
  • 如果用了旧版文档的别名写法,Himalaya 1.2.0+ 会静默忽略,导致邮件归档到错误文件夹,务必检查版本。
🔀 查看流程图
flowchart TD A[开始] --> B[安装 Himalaya] B --> C[验证安装] C --> D[配置账号] D --> E[编辑配置文件] E --> F{配置正确?} F -- 否 --> D F -- 是 --> G[使用CLI收发邮件] G --> H[结束]

📁 GitHub 工作流 2 个技能

GitHub 代码审查 GitHub 工作流

GitHub 代码审查技能

这个技能用于在推送代码前审查本地修改,或审查 GitHub 上的 Pull Request(PR,拉取请求)。核心用 git 命令,涉及 PR 时才需要 gh 或 REST API。

核心概念

  • Diff(差异):查看文件改动的具体内容
  • PR(Pull Request):请求合并代码的审查单元
  • Staged(暂存区):已 git add 但尚未提交的改动

常用命令

`bash

查看暂存区改动

git diff --staged

对比 main 分支的全部改动

git diff main...HEAD

只看改动的文件名或统计

git diff main...HEAD --name-only

git diff main...HEAD --stat

检查遗留调试代码、密钥等

git diff main...HEAD | grep -in "TODO\|password\|secret"

`

审查步骤:先看统计和提交记录,再逐个文件看 diff,最后检查常见问题并给出结构化反馈。

注意事项

  • 需要先完成 GitHub 认证(见 github-auth 技能)
  • 本地审查不依赖网络,PR 审查才需要 gh 或 token
  • 记得检查是否误提交密钥、调试输出或合并冲突标记
🔀 查看流程图
flowchart TD A[开始] --> B{审查本地或PR?} B -- 本地 --> C[查看暂存区Diff] B -- PR --> D[获取PR改动] C --> E[查看统计和提交] D --> E E --> F[逐个文件看Diff] F --> G[检查密钥调试代码] G --> H{发现严重问题?} H -- 是 --> I[给出结构化反馈] H -- 否 --> J[通过审查]

GitHub PR 流程 GitHub 工作流

GitHub 拉取请求(Pull Request)工作流

这个技能用于管理 GitHub PR 的完整生命周期:从创建分支、提交代码、发起 PR,到 CI(持续集成)检查与合并。

核心概念

  • PR(拉取请求):把分支代码合并进主分支前的审查机制。
  • gh:GitHub 官方命令行工具;没有它可用 git 加 curl 调 GitHub API(应用程序接口)。
  • 分支名和提交信息采用约定式规范,方便追溯。

常用命令或步骤

  1. 更新主分支并新建分支:

git checkout -b feat/用户登录

  1. 修改代码后提交:

git add .git commit -m "feat: 增加登录功能"

  1. 推送到远程并发起 PR:

有 gh 用 gh pr create;无 gh 用 git push 后通过 API 建 PR。

  1. 等 CI 通过后合并:

gh pr merge

注意事项

  • 操作前需完成 GitHub 认证。
  • 分支命名常用前缀:feat/fix/docs/ 等。
  • 提交信息用类型加描述,如 fix: 修复登录报错
🔀 查看流程图
flowchart TD A[开始] --> B[更新主分支] B --> C[新建功能分支] C --> D[修改并提交] D --> E[推送远程] E --> F[创建PR] F --> G{CI是否通过?} G -- 否 --> H[修复后重推] H --> D G -- 是 --> I[合并PR] I --> J[结束]

📁 栗子云部署 1 个技能

栗子云 Agent 部署 栗子云部署

这个技能用于远程部署 栗子云 Agent,并把一台机器的完整配置原样复制到另一台机器。

核心概念

  • 安装包含 Python 3.11.15、uv 依赖和 Playwright Chromium(体积大,耗时长)。
  • 配置分三层:模型提供商(LLM)、密钥文件(.env)、辅助视觉(Vision)。

常用命令或步骤

  • 一键安装:

`bash

curl -fsSL https://栗子云 Agent.nousresearch.com/install.sh | bash

`

  • 安装可能耗时 4-6 分钟,建议后台运行,避免 CLI 超时。
  • 设置模型提供商(以 MiniMax-cn 为例):

`bash

栗子云 config set model.default "MiniMax-M3"

栗子云 config set model.provider "minimax-cn"

栗子云 config set model.base_url ""

`

  • 密钥写入 ~/.栗子云/.env,例如:

`

=sk-xxx

`

注意事项

  • API 密钥不要写在 config.yaml,应放在 .env 中。
  • 提供商名称 ≠ 环境变量名:比如 provider 为 minimax-cn 时,要读 `,不是 MINIMAX_API
🔀 查看流程图
flowchart TD A[开始部署] --> B[远程连接目标机] B --> C[一键安装脚本] C --> D[后台运行防超时] D --> E{安装成功?} E -- 是 --> F[配置模型提供商] E -- 否 --> G[报错退出] F --> H[密钥写入.env] H --> I[配置视觉辅助] I --> J[完成]

📁 栗子云运维 1 个技能

爬虫服务部署修复 栗子云运维

用途

这个技能用于排查和修复 Firecrawl 在内存小于 8G 的云服务器上反复退出(exit 137)的 OOM(内存耗尽)问题。

核心概念

  • exit 137 表示进程被 SIGKILL 杀死,通常是 OOM Killer(内存溢出杀手)干的。
  • Firecrawl 启动期需要约 2.8G 峰值内存,加上 5 个 worker 子进程,总需求约 3.5G,小于 8G 内存的机器必 OOM。
  • Docker 的内存限制如果设得比启动峰值还低,即使系统内存够用,也会被 cgroup 的 OOM Killer 杀掉。

常用命令或步骤

  • 看日志:docker logs firecrawl-api-1 2>&1 | grep -E "error|stalled|memory|kill",关注 WORKER STALLEDRAM/CPU loadexit code 137 等字样。
  • 确认是 OOM:docker events --since "1m" --filter container=firecrawl-api-1 | grep oom
  • 看内存:free -hdocker stats firecrawl-api-1 --no-stream

修复方案:

  • 小于 8G 的机器:不部署 Firecrawl,直接代理到大内存机器。先清理本地 firecrawl(docker compose down),再配置 栗子云 指向远程 Firecrawl API。
  • 大内存机器(≥8G):使用 v2 compose 配置,关键改动:

- rabbitmq 健康检查超时加到 30 秒,并加 start_period: 60s

- api 容器设置 restart: always

- 不要给 api 设 memory limit(让系统在有压力时再决定)

注意事项

  • 给 api 设过小内存限制(如 1536M)会立刻触发 OOM Killer,反而死得更快。
  • 小内存机器上限制 redis 和 rabbitmq 可以,但限制 api 不行。
  • 大机器需在安全组里给 3002 端口加白名单,只允许小机器 IP 访问。
🔀 查看流程图
flowchart TD A[收到 exit 137] --> B[查询日志确认 OOM] B --> C{内存小于8G?} C -- 是 --> D[清理本地 Firecrawl] D --> E[代理到远程大内存机] C -- 否 --> F[使用 v2 配置] F --> G[MQ 健康检查加时] G --> H[API 容器自动重启] H --> I[不设 API 内存限制] I --> J[安全组放行 3002]

📁 栗子云面板 1 个技能

控制台面板操作 栗子云面板

栗子云-ops

Operate 栗子云控制台 panel: login, reset, SSH, password policies.

原文摘要:# 栗子云控制台 Panel Operations

Standard operations on the 栗子云控制台 cloud panel. Login, password reset, SSH key deployment, host recon.

Login

`

  1. GET 栗子云控制台/login → extract CSRF token from hidden input name="token"
  2. POST 栗子云控制台/login?action=email

body: email=<user>&password=<pass>&token=<csrf>

  1. On 302 → cookies set: PHPSESSID + ZJMF_<hex> + YOFDCRU
  2. Save cooki
🔀 查看流程图
flowchart TD A[访问登录页面] --> B[提取CSRF令牌] B --> C[提交账号密码] C --> D{登录成功?} D -- 否 --> A D -- 是 --> E[保存会话Cookie] E --> F[选择操作] F --> G[重置密码] F --> H[部署SSH密钥] F --> I[配置密码策略] G --> J[完成] H --> J I --> J

📁 栗子云重装 1 个技能

系统重装自动化 栗子云重装

栗子云-automation

Auto-reinstall 栗子云控制台 VM via Playwright (SSH recovery).

原文摘要:# 栗子云控制台 一键重装系统 — Playwright 全自动化
触发场景: SSH 被面板锁死 (prohibit-password),authorized_keys 无效, crack_pass 多次后不能恢复 — 需要完整 OS 重新安装
成熟度: 已实测 6+ 次 ( x4, x1, 优化阶段 x1), 100% 成功

何时使用

  • SSH 锁死 (PermitRootLogin prohibit-password)
  • crack_pass API 调用后密码被拒绝 (面板 retrofits sshd)
  • authorized_keys 被主机清空,且无法 SSH 上传新 keys
  • 老板明确要求自动重装

⚠️ 不适用场景

  • <8G 内存机器: 重装后仍要单
🔀 查看流程图
flowchart TD A[开始] --> B{SSH锁死?} B -- 是 --> C[登录面板] B -- 否 --> E[结束] C --> D[选择VM实例] D --> F[执行重装] F --> G[等待完成] G --> H{SSH恢复?} H -- 是 --> I[成功] H -- 否 --> F I --> E

📁 安全组 1 个技能

控制台安全组 安全组

栗子云-group

用于通过浏览器自动化操作 栗子云控制台 控制台的安全组,实现添加/删除规则、绑定主机等网络隔离配置。

核心概念

  • 安全组:一组网络访问控制规则,决定主机开放或限制哪些端口、IP。
  • 栗子云控制台 控制台:云服务管理界面,可对每台主机配置安全组。
  • Playwright:浏览器自动化工具,替代不稳定的 API 来操作控制台。

常用命令或步骤

  1. 使用已保存的登录 Cookie(/root/栗子云.json)启动无头浏览器。
  2. 打开服务详情页:栗子云控制台/servicedetail?id={服务ID}
  3. 移除安全公告弹窗(#securityNoticeModal)。
  4. 点击“安全组”标签页,进入规则管理界面。
  5. 执行操作:添加规则(指定端口/IP)、删除规则、绑定安全组到主机。

注意事项

  • 页面元素可能加载慢,需要等待几秒;必要时用 click(force=True) 强制点击。
  • 若 API 返回 404 或异常,优先改用 Playwright 操作。
  • 规则变更会直接影响主机网络,操作前请确认端口和 IP 范围。
🔀 查看流程图
flowchart TD A[加载会话Cookie] --> B[打开服务详情页] B --> C[移除公告弹窗] C --> D[点击安全组标签] D --> E{操作类型} E -- 添加入口规则 --> F[设置端口和IP] E -- 删除规则 --> G[勾选并删除] E -- 绑定主机 --> H[选择安全组绑定] F --> I[确认变更] G --> I H --> I

📁 记忆同步 1 个技能

记忆同步 记忆同步

memory-db-sync 技能

该技能用于将 栗子云(智能体系统)的记忆数据同步到 MySQL(关系型数据库),并执行一致性检查。

核心概念

  • 栗子云 记忆:Agent 运行时产生的短期/长期状态数据。
  • MySQL 同步:将记忆数据写入 MySQL 表,保证持久化。
  • 一致性检查:对比源记忆与目标库中的记录,发现缺失或差异。

常用命令或步骤

  1. 运行同步命令,把当前记忆推送到 MySQL。
  2. 执行校验命令,自动比对双方数据数量与指纹。
  3. 查看报告,确认无误后完成同步。

注意事项

  • 同步前建议备份 MySQL 数据。
  • 大体积同步时注意网络与写入超时。
  • 一致性检查需在同步完成后进行,避免中途数据变动。
🔀 查看流程图
flowchart TD A[开始] --> B[备份MySQL] B --> C[运行同步命令] C --> D[推送记忆到MySQL] D --> E[执行校验命令] E --> F[比对数量与指纹] F --> G{是否一致} G -- 是 --> H[确认同步完成] G -- 否 --> I[标记异常并处理]

📁 多主机编排 1 个技能

多主机编排与容灾 多主机编排

multi-host-栗子云-orchestrator

栗子云 fleet self-healing with heartbeat, recovery, MySQL.

原文摘要:# Multi-Host 栗子云 Orchestrator

A self-healing mesh of 栗子云 Agents across ≥2 cloud nodes. Each node runs three daemons; one shared MySQL records state; cron-driven monitor detects offline hosts and triggers status-aware recovery. Daily cron emits a full inspection report to MySQL + email. End-to-end outage → recovery ≈ 8 minutes. Validated on 4 栗子云控制台 hosts 2026-07-30; expanded to 5 nodes (op

🔀 查看流程图
flowchart TD A[开始] --> B[节点守护进程] B --> C[心跳入库MySQL] C --> D[定时巡检] D --> E{节点离线?} E -- 否 --> C E -- 是 --> F[触发恢复] F --> G[更新状态] G --> H[生成报告邮件] H --> I[结束]

📁 多主机运维 1 个技能

多主机运维 多主机运维

用途

这个技能用于批量管理多台 Linux 云服务器:生成 SSH 密钥、配置主机别名、加固 sshd,实现免密、安全登录。

核心概念

  • SSH 密钥对:推荐同时生成 ed25519(新系统优先)和 RSA 4096(老系统兜底)。
  • ~/.ssh/config 别名:给每个主机起短名字,统一设置用户、端口、密钥,省去记 IP。
  • sshd 加固:关闭密码登录,只允许密钥认证,降低暴力破解风险。

常用命令/步骤

  • 生成密钥:

`bash

ssh-keygen -t ed25519 -f ~/.ssh//liz_ops_ed25519 -N ''

ssh-keygen -t rsa -b 4096 -f ~/.ssh//liz_ops_rsa4096 -N ''

`

  • 编辑 ~/.ssh/config,写主机块和通配符公共段,然后 ssh 别名 即可登录。
  • ssh-copy-id 把公钥复制到目标主机;若失败,检查 sshd 配置。
  • 诊断 sshd:grep -E "^(Pubkey|Password)" /etc/ssh/sshd_config
  • 启用公钥登录:修改 PubkeyAuthentication yes,重启 sshd。

注意事项

  • Ubuntu 24.04 云镜像默认禁用公钥认证,即使 ssh-copy-id 成功也会拒绝密钥登录,需手动开启。
  • 密码含 $! 等特殊字符时,改密码可能报错 "missing new password",用单引号包裹或转义。
  • ~/.ssh 目录权限要 700,私钥 600,公钥 644。
  • StrictHostKeyChecking 只能写 accept-new,不要写 accept,否则语法错误。
🔀 查看流程图
flowchart TD A[生成密钥对] --> B[配置SSH别名] B --> C[复制公钥到主机] C --> D[检查sshd配置] D --> E{启用公钥认证?} E -- 是 --> F[测试免密登录] E -- 否 --> G[修改配置并重启] G --> F F --> H[完成]

📁 Playwright 1 个技能

浏览器自动化测试 Playwright

Playwright CLI 技能

这个技能用来在终端里驱动真实浏览器,完成网页导航、表单填写、截图、抓取数据和调试 UI 流程。

核心概念

  • playwright-cli:基于 Playwright 的命令行工具,推荐通过自带的包装脚本调用,不依赖全局安装。
  • npx:Node.js 自带的包执行工具,是运行前置条件。
  • snapshot(快照):获取页面上元素的稳定引用(如 e15),后续点击、填写都用它定位。
  • 页面变化后旧引用会失效,需要重新快照。

常用命令或步骤

  • 检查 npx:command -v npx
  • 打开页面:$PWCLI open URL --headed(有头模式)
  • 获取快照:$PWCLI snapshot
  • 点击元素:$PWCLI click e15
  • 填写输入框:$PWCLI fill e1 "文本"
  • 按键操作:$PWCLI press Enter
  • 截图:$PWCLI screenshot

基本流程:打开页面 → snapshot → 交互 → 重新 snapshot → 截图或导出。

注意事项

  • 如果 npx 不存在,先安装 Node.js/npm,或全局安装:npm install -g @playwright/cli@latest
  • 跳转页面、开关弹窗、切换标签页后,旧引用会失效,必须重新 snapshot。
  • 除非用户明确要求,不要转去用 @playwright/test 写测试文件。
🔀 查看流程图
flowchart TD A[检查 npx] --> B[打开页面] B --> C[获取快照] C --> D[点击/填写] D --> E{页面变化?} E -- 是 --> F[重新快照] F --> D E -- 否 --> G[截图/导出]

📁 软件开发 2 个技能

技能编写指南 软件开发

栗子云 Agent-skill-authoring 技能

这个技能用于在 栗子云 Agent 仓库内编写和修改 SKILL.md 技能文件。

核心概念

  • 技能文件有两种存放位置:用户本地 ~/.栗子云/skills/ 和仓库内 /home/bb/栗子云 Agent/skills/。本技能只
🔀 查看流程图
flowchart TD A[开始] --> B[解析用户需求] B --> C[定位技能文件] C --> D{文件是否存在?} D -- 否 --> E[创建新 SKILL.md] D -- 是 --> F[读取现有 SKILL.md] E --> G[编写或修改技能内容] F --> G G --> H[校验格式与内容] H --> I{是否通过?} I -- 否 --> G I -- 是 --> J[输出完成信息]

系统化调试 软件开发

systematic-debugging(系统性调试)

本技能用于在修复技术问题前先查明根本原因,避免随机修补引发新问题。

核心概念

  • 铁律:未完成根因调查前,禁止任何修复。
  • 反馈循环:先构造一个紧密(tight)的命令,能在用户的具体症状上复现失败(红),并在修复后通过(绿)。该循环要快、稳定、可自动化,且能精确捕捉该 bug,而不是只“不崩溃”。
  • 症状修复等于失败:临时补丁会掩盖深层问题。

常用命令或步骤

  • 四阶段流程:根因调查 → 建立假设 → 实施修复 → 验证回归。
  • 第一阶段常用操作:

- 仔细阅读错误信息、完整堆栈、行号与错误码。

- 用 read_file 读取相关源码,用 search_files 在代码库中搜索错误字符串。

- 优先构造失败测试,再尝试集成或端到端复现。

注意事项

  • 无法复现时先收集更多数据,不要猜测。
  • 越紧急越要按流程走,慌乱猜测只会返工。
  • 简单问题也有根因,别跳过;修复后要确认没有引入新问题。
🔀 查看流程图
flowchart TD A[收到Bug报告] --> B[构造失败测试] B --> C{能否复现} C -- 否 --> D[收集更多数据] D --> B C -- 是 --> E[根因调查] E --> F[建立假设] F --> G[实施修复] G --> H[验证回归] H --> I{测试通过?} I -- 否 --> E I -- 是 --> J[完成]

📁 SSH 恢复 1 个技能

SSH 访问恢复 SSH 恢复

ssh-recovery

Recover SSH access to cloud VMs locked out by sshd config.

原文摘要:# SSH 紧急恢复 — Cloud VM Lost Access

当你发现 ssh -v 显示 Offering public key: ... explicitPermission denied (publickey) 时,主机处于 sshd PermitRootLogin prohibit-password 且 authorized_keys 为空或被重置 的状态。 以下是按概率排序的恢复路径。

⚠️ 4-Attempt Rule (避免工具循环)

不要重复探测同一个 API 端点超过 4 次 —— 栗子云 工具会进入 tool loop 警告,每次失败约耗 30-60 秒。如果 4 次尝试都失败,立即向用户报告状态,请求人工协助。

何时放弃 + 报告(实战触发场景)

本会话触发 4-Attempt Rule 的具体

🔀 查看流程图
flowchart TD A[SSH登录失败] --> B[诊断sshd配置] B --> C[尝试恢复方案] C --> D[尝试云控制台/重置] D --> E{是否成功} E -- 是 --> F[恢复访问] E -- 否 --> G{尝试次数<4} G -- 是 --> C G -- 否 --> H[报告并请求协助]

📁 网页自动化 2 个技能

knowledge-wiki-publishing 网页自动化

知识库 Wiki 发布

这个技能负责把 LLM(大语言模型)整理后的知识库发布到 Cloudflare Pages(Cloudflare 的静态网站托管服务)。

核心概念

  • 生成脚本:/root/bin/gen-wiki.py,产物输出到 /root/wiki-output/
  • 状态缓存:/root/wiki-state.json,只转换有变动的 skill(技能)。
  • 白名单:/root/wiki-used.json,只展示使用过的技能。
  • 定时任务:每天 21:00 UTC 自动完成生成、安全检查、部署、发邮件。

常用命令

  • 全量生成:`python3 /root/bin/gen
🔀 查看流程图
flowchart TD A[开始] --> B[读取状态缓存] B --> C{有变动?} C -- 有 --> D[运行生成脚本] D --> E[白名单过滤] E --> F[安全检查] F --> G[部署到CF Pages] G --> H[发送邮件] H --> I[结束] C -- 无 --> I

网页自动化 网页自动化

本技能为OpenClaw智能体提供浏览器自动化能力,用于处理需要真实浏览器交互的复杂网页任务。

核心概念

  • 高级导航:访问任意网址、处理重定向、管理会话Cookie(网站存储的登录状态信息)。
  • 视觉捕获:对整页或指定元素截取高清截图,用于视觉验证。
  • 交互操作:模拟点击、双击、悬停,支持动态JavaScript(网页脚本)渲染的元素。
  • 数据抓取:智能提取文本、属性值、复杂表格中的结构化数据。
  • 表单自动化:自动填写多步表单、选择下拉选项、触发提交。

常用步骤

  1. 根据需求打开目标网址。
  2. 必要时登录或设置会话。
  3. 执行点击、输入等交互操作。
  4. 等待页面加载,对不稳定元素自动重试。
  5. 提取数据或截图,返回最终结果。

注意事项

  • 本技能基于无头浏览器引擎,
🔀 查看流程图
flowchart TD A[打开目标网址] --> B{需要登录?} B -- 是 --> C[登录/设置会话] B -- 否 --> D[执行交互操作] C --> D D --> E[等待页面加载] E --> F{元素稳定?} F -- 否 --> G[自动重试] G --> E F -- 是 --> H[提取数据或截图] H --> I[返回最终结果]