From 7d9751d154ec0900d472b3953fa1bb645f405d41 Mon Sep 17 00:00:00 2001 From: weishen Date: Mon, 13 Apr 2026 12:17:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=AC=AC22=E7=AB=A0=EF=BC=9A?= =?UTF-8?q?Claude=20Code=20=E8=B0=83=E7=94=A8=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- openclaw/Agents/TOOLS标准模板.md | 69 ++++ openclaw/yunjiang/TOOLS.md | 518 +++++++++++++++++++++++++++++++ 2 files changed, 587 insertions(+) create mode 100644 openclaw/yunjiang/TOOLS.md diff --git a/openclaw/Agents/TOOLS标准模板.md b/openclaw/Agents/TOOLS标准模板.md index 84fb4dff..38509ccb 100644 --- a/openclaw/Agents/TOOLS标准模板.md +++ b/openclaw/Agents/TOOLS标准模板.md @@ -933,3 +933,72 @@ tail -30 ~/.hermes/logs/gateway.log # gateway 日志 - **Token**: `8653044481:AAFmqdOBOFeQB6JI3M0977rLgj0s28mvbeY` - **用户名**: `@shenwei_ubuntu2_yunzhi_bot` - 更换 bot:编辑 `~/.hermes/hermes-agent/.env` 中的 `TELEGRAM_BOT_TOKEN` + +## 22. Claude Code 调用方法(Hermes Terminal) + +### 核心模式 + +**Print Mode(推荐)** — 适合绝大多数任务: + +```bash +cat << 'TASK_END' | claude -p print \ + --dangerously-skip-permissions \ + --add-dir ~/.claude/skills/[技能名] \ + --add-dir [项目源码路径] \ + --max-turns 30 \ + 2>&1 +[任务描述] +TASK_END +``` + +**TMUX 交互模式** — 适合超长任务: + +```bash +tmux new-session -d -s claude-work -x 140 -y 40 +tmux send-keys -t claude-work 'claude --dangerously-skip-permissions' Enter +sleep 5 && tmux send-keys -t claude-work Enter +sleep 3 && tmux send-keys -t claude-work Down && tmux send-keys -t claude-work Enter +sleep 2 && tmux send-keys -t claude-work 'cat /tmp/task.txt' Enter +``` + +### 关键参数 + +| 参数 | 作用 | +|------|------| +| `--dangerously-skip-permissions` | 跳过文件写入/网络确认提示(必写,否则卡住) | +| `--add-dir <路径>` | 添加可访问目录,可多次使用 | +| `--max-turns N` | 最大迭代次数,建议 20-30 | +| `--bare` | 跳过插件/MCP/CLAUDE.md 加载,最快启动 | +| `-p print` | 非交互单次执行模式 | + +### 任务文本结构 + +``` +1. 告诉 Claude Code 要做什么 +2. 告诉它用哪个 skill +3. 告诉它输出文件路径 +4. 如果需要格式转换,明确写出转换命令 +5. 最后要求输出 "done: 文件路径" +``` + +### Skill 加载 + +`--add-dir <技能目录>` 会自动扫描该目录下的 `SKILL.md` 和 `.claude/skills/`,触发条件自动匹配激活。 + +### 常见坑点 + +1. **不写 `--dangerously-skip-permissions`** → 文件写入被阻塞 +2. **命令行参数直接传任务** → 特殊字符引发 shell 转义错误,用 stdin 管道 +3. **`max-turns` 太小** → 任务没跑完就超时,复杂任务设 25-30 +4. **环境变量 `ANTHROPIC_API_KEY`** → 需在 settings.json 或环境变量中配置 + +### delegate_task vs terminal 调用 + +| | delegate_task | terminal 调用 claude -p | +|--|--------------|------------------------| +| 本质 | Hermes 子 agent(API 调用) | 外部 Claude Code 进程 | +| Skill 感知 | 无 | 能识别 SKILL.md | +| 工具能力 | Hermes 工具集 | Claude Code 自身工具集 | +| 适用场景 | 通用推理任务 | 需要 Claude Code 技能的特定任务 | + +**结论**:需要调用 Claude Code skill(如 fireworks-tech-graph)时,用 `terminal` 调用 `claude -p`,不用 `delegate_task`。 diff --git a/openclaw/yunjiang/TOOLS.md b/openclaw/yunjiang/TOOLS.md new file mode 100644 index 00000000..c9ee0b9c --- /dev/null +++ b/openclaw/yunjiang/TOOLS.md @@ -0,0 +1,518 @@ +# TOOLS管理 + +## 1.统一SSH管理 + +- **所有服务器**: 包括macmini、ubuntu1、ubuntu2、NAS + +- **管理方式**: 通过SSH统一管理,不存储sudo密码 + +- **权限原则**: 遵循最小权限原则 + +## 2.管理流程 + +1. 所有服务器操作都通过SSH进行 + +2. 不存储任何服务器的sudo密码 + +3. 需要sudo权限的操作通过SSH执行 + +4. 保持所有服务器的管理方式一致 + +## 3.文件编辑注意事项 + +- **所有重要文件**: 使用 `exec + echo` 追加内容,避免 edit 工具在文件末尾无换行时失败 + +- **edit工具使用准则**: edit依赖精确文本匹配,任何空白字符差异都会导致失败。建议:先 read 文件确认内容,用 write 重写整个文件更可靠(特别是 memory、SOUL、IDENTITY 等重要文件) + +## 4.FRP (frpc 客户端) 管理 + +### 安装目录 + +| 服务器     | FRP目录                             | +| ------- | --------------------------------- | +| macmini | /opt/frp/frp_0.65.0_darwin_arm64 | +| ubuntu1 | /opt/frp/frp_0.65.0_linux_amd64   | +| ubuntu2 | /opt/frp/frp_0.65.0_linux_amd64   | + +### 配置文件 + +- **文件名**: `frpc.toml`(在FRP目录下) + +- **作用**: 定义所有通过frp反向代理的应用及端口映射 (localPort ↔ remotePort) + +### Mac Mini 管理方式(launchd) + +**启动方式**: launchd plist(`KeepAlive: true`,崩溃自动重启) + +**plist 位置**: `~/Library/LaunchAgents/com.homebrew.frpc.plist` + +**管理命令**: + +```bash + +# 重启 + +launchctl unload ~/Library/LaunchAgents/com.homebrew.frpc.plist && launchctl load ~/Library/LaunchAgents/com.homebrew.frpc.plist + +# 停止(KeepAlive 会自动重启,需先 unload) + +launchctl unload ~/Library/LaunchAgents/com.homebrew.frpc.plist + +# 查看状态 + +launchctl list | grep frpc + +# 查看日志 + +tail -f /opt/frp/frp_0.65.0_darwin_arm64/frpc.log + +``` + +**正常状态标志**: 日志中显示 `[name] start proxy success` + +### Ubuntu1/2 管理方式(systemd --user) + +```bash + +ssh ubuntu1 'systemctl --user restart frpc' + +ssh ubuntu2 'systemctl --user restart frpc' + +ssh ubuntu1 'systemctl --user status frpc' + +ssh ubuntu2 'systemctl --user status frpc' + +``` + +不需要密码,开机自启(linger 已启用) + +### 查看配置 + +```bash + +# 读取frpc.toml了解端口映射 + +cat /opt/frp/frp_0.65.0_xxx/frpc.toml + +``` + +## 5.FRP端口映射查询格式 (2026-03-14) + +用户会这样提问: + +- "ubuntu1上frp的列表" + +- "macmini的frp配置" + +- "查看ubuntu2的frpc.toml" + +格式: 扫描frpc.toml文件,列出proxies相关配置 + +输出格式: 表格 (名称 | 类型 | localPort | remotePort) + +查询示例: ssh到对应服务器 -> cat /opt/frp/frp_0.65.0_xxx/frpc.toml + +## 6.FRP状态检查 (2026-04-04) + +用户可能说: "检查frp状态" + +**检查方法**: + +1. 如果是macmini服务器: + +   - `launchctl list | grep frpc` 查看进程状态 + +   - `tail /opt/frp/frp_0.65.0_darwin_arm64/frpc.log` 查看代理启动情况 + +2. 如果是ubuntu服务器: + +   - `systemctl --user status frpc` + +**正常状态标志**: + +- 所有 proxy 启动成功时会显示: `[xxx] [name] start proxy success` + +- 例如: `2026-04-04 16:43:01.276 [I] [client/control.go:172] [1a254958e6553119] [macmini-ssh] start proxy success` + +**重启命令** (如果需要): + +1. 如果是macmini服务器: + +```bash + +launchctl unload ~/Library/LaunchAgents/com.homebrew.frpc.plist && launchctl load ~/Library/LaunchAgents/com.homebrew.frpc.plist + +``` + +2. 如果是ubuntu服务器: + +```bash + +systemctl --user restart frpc + +``` + +## 7.VPS2 (x-UI 科学上网) + +- **IP**: 104.194.92.188 + +- **SSH**: `ssh vps2` + +- **管理命令**: `x-ui` + +- **用途**: x-UI 面板管理,用于科学上网 + +- 结果展示用列表方式,方便阅读 + +## 8.网络测试策略 (2026-03-15) + +用户可能说: "网络测试"、"检查服务器科学上网" + +**测试项目**: + +1. 国内直连baidu (https://www.baidu.com) + +2. 国外直连 Google (https://www.google.com) + +3. 国外通过代理访问 Google (socks5://127.0.0.1:10808) + +**测试命令模板**: + +**国内访问直连** + +``` + +curl -v https://www.baidu.com + +``` + +**国外访问直连** + +``` + +curl -v https://www.google.com + +``` + +**国外访问通过代理连** + +这是最快、最直接的方法。我们可以强制 `curl` 使用 SOCKS5 代理去访问 Google 的状态页。 + +**执行命令:** + +``` + +curl -x socks5h://127.0.0.1:10808 -v https://www.google.com + +``` + +- **参数解释:** + +    - `-x socks5h://`:指定使用 SOCKS5 代理。注意加个 `h`,这表示让代理服务器去解析域名(防止本地 DNS 污染导致测试失败)。 + +    - `-v`:(Verbose) 显示详细连接过程。 + +- **判断标准:**     + +    - 如果看到 `HTTP/2 200` 或者大量的 HTML 文本,说明**代理成功**。 + +    - 如果显示 `Connection refused` 或 `Timeout`,说明**端口未开放或 V2Ray 未运行**。 + +**服务器列表与代理端口**: + +| 服务器 | IP | 代理端口 | 备注 | +| ------- | --------------- | ----- | ------------ | +| MacMini | 192.168.3.189 | 10808 | V2RayN | +| Ubuntu1 | 192.168.3.47 | 10808 | 需SSH后测试 | +| Ubuntu2 | 192.168.3.45 | 10808 | 需SSH后测试 | +| NAS | 192.168.3.17 | 20170 | 仅监听127.0.0.1 | +| VPS1 | 192.227.222.142 | - | 直连正常 | +| VPS2 | 104.194.92.188 | - | 直连正常 | + +**输出格式**: 列表方式,方便阅读 + +**网络测试输出格式** + +用户要求格式示例: + +• 服务器名 + +  • 国内访问直连: ✅/❌ + +  • 国外访问直连: ✅/❌ + +  • 国外访问通过代理XXX连: ✅/❌ + +## 9.OpenClaw 命令路径 (2026-03-27) + +| 服务器      | OpenClaw 路径                              | + +| -------- | ---------------------------------------- | + +| Mac mini | `/opt/homebrew/bin/openclaw`             | + +| Ubuntu1  | `/home/shenwei/.npm-global/bin/openclaw` | + +| Ubuntu2  | `/home/shenwei/.npm-global/bin/openclaw` | + +## 10.NAS Docker 代理配置 (2026-03-27) + +- **配置文件**: `/etc/systemd/system/pkg-ContainerManager-dockerd.service.d/http-proxy.conf` + +- **用途**: Synology NAS 上 Docker 守护进程的代理设置 + +- **修改后需执行**: `sudo systemctl daemon-reload && sudo systemctl restart docker` + +## 12.OpenClaw Gateway 重启步骤 + +### Mac Mini (2026-03-30 新方法) + +使用 `launchctl` 管理 OpenClaw Gateway 服务: + +`launchctl unload ~/Library/LaunchAgents/ai.openclaw.gateway.plist && launchctl load ~/Library/LaunchAgents/ai.openclaw.gateway.plist` + +### Ubuntu1/2 服务器 (2026-03-28) + +#### 完整操作流程 + +**1. SSH 登录并重启** + +```bash + +ssh ubuntu1 'systemctl --user restart openclaw-gateway' + +ssh ubuntu2 'systemctl --user restart openclaw-gateway' + +``` + +**2. 查看启动状态** + +```bash + +ssh ubuntu1 'systemctl --user status openclaw-gateway' + +ssh ubuntu2 'systemctl --user status openclaw-gateway' + +``` + +**3. 检查 OpenClaw 健康状态** + +```bash + +ssh ubuntu1 '/home/shenwei/.npm-global/bin/openclaw status' + +ssh ubuntu2 '/home/shenwei/.npm-global/bin/openclaw status' + +``` + +### 快捷命令组合 (单行执行) + +```bash + +# Ubuntu1 + +ssh ubuntu1 'systemctl --user restart openclaw-gateway && systemctl --user status openclaw-gateway && /home/shenwei/.npm-global/bin/openclaw status' + +# Ubuntu2 + +ssh ubuntu2 'systemctl --user restart openclaw-gateway && systemctl --user status openclaw-gateway && /home/shenwei/.npm-global/bin/openclaw status' + +``` + +## 13.AgentMail (邮件收发与自动化) (2026-04-04 更新) + +### 📂 技能目录 + +``` + +~/.openclaw/skills/agentmail/ + +├── scripts/           # 可直接使用的 Python 脚本 + +│   ├── check_inbox.py   # 查看收件箱 + +│   ├── send_email.py    # 发送邮件 + +│   └── setup_webhook.py # 配置 Webhook + +└── references/       # 参考文档 + +    ├── API.md         # API 完整文档 + +    ├── EXAMPLES.md    # 使用示例 + +    └── WEBHOOKS.md   # Webhook 配置指南 + +``` + +### 快速使用 + +#### 查看收件箱 + +```bash + +unset HTTP_PROXY && unset HTTPS_PROXY && unset http_proxy && unset https_proxy + +python3 ~/.openclaw/skills/agentmail/scripts/check_inbox.py --inbox star-agent@agentmail.to --limit 10 + +``` + +#### 发送邮件 + +```bash + +python3 ~/.openclaw/skills/agentmail/scripts/send_email.py \ + +  --inbox star-agent@agentmail.to \ + +  --to "recipient@example.com" \ + +  --subject "主题" \ + +  --text "正文内容" + +``` + +### API Key 配置 + +- 位置: `~/.openclaw/.env` + +- 环境变量: `AGENTMAIL_API_KEY=your_key_here` + +### 附件处理 + +附件需要用 Python 代码下载,参考: + +```bash + +cat ~/.openclaw/skills/agentmail/references/API.md + +cat ~/.openclaw/skills/agentmail/references/EXAMPLES.md + +``` + +### ⚠️ 注意事项 + +- **代理问题**:遇到 SOCKS 代理错误时,先 `unset HTTP_PROXY && unset HTTPS_PROXY` + +- **临时文件存放**:下载的附件和临时脚本请放在 `~/.openclaw/temp//` 目录,不要放在 workspace 下 + +- **参考文档**:详细用法见 `references/API.md` 和 `references/EXAMPLES.md` + +## 14.Docker命令路径 (2026-04-04) + +| 服务器 | 命令 | 说明 | +| ------------- | -------------------------------------------------------- | ------------- | +| macmini | `docker` | 直接可用(已在 PATH) | +| macmini (SSH) | `/Applications/Docker.app/Contents/Resources/bin/docker` | SSH 时用完整路径 | +| ubuntu1/2 | `docker` | 直接可用 | + +**使用方式**: + +```bash + +# macmini 本地 + +docker ps + +# macmini SSH + +ssh macmini '/Applications/Docker.app/Contents/Resources/bin/docker ps' + +# ubuntu1/2 SSH + +ssh ubuntu1 'docker ps' + +ssh ubuntu2 'docker ps' + +``` + +## 15.定时任务创建注意事项 (2026-03-29) + +### 预防措施 + +1. 在远程服务器(Ubuntu1/Ubuntu2)创建定时任务后,**手动运行一次**确认能正常发送 Telegram 通知 + +2. 如果遇到 "Outbound not configured for channel: telegram" 错误,重启 Gateway: + +   ```bash +   # Ubuntu1/Ubuntu2 重启 Gateway +   systemctl --user restart openclaw-gateway +   systemctl --user status openclaw-gateway + +   ``` + + +### 常见错误处理 + +| 错误信息 | 原因 | 解决方案 | +| ----------------------------------------------- | --------------------- | ---------- | +| "Outbound not configured for channel: telegram" | Gateway Telegram 连接异常 | 重启 Gateway | +| "Message failed" | Telegram API 限流或连接问题 | 分散任务执行时间 | + + +## 18.n8n工作流标准执行步骤 +> ⚠️ n8n 已迁移到 Ubuntu2 服务器(2026-03-30 更新) +> 用户可能说:"请用n8n内容转换工作流帮我转化这篇文章<文件名>" +### N8N 配置信息 +- **N8N_BASE_URL**: `https://n8n.ishenwei.online`(从 Ubuntu2 `~/.openclaw/.env` 读取) +- **Webhook URL**: `https://n8n.ishenwei.online/webhook/` +### ⚠️ 执行时间与等待规范 +- **执行时间**: 每次触发 webhook 后,需要等待 **4-5 分钟** 才能得到结果 +- **禁止频繁请求**: 触发 webhook 后,**不要**连续发送多个请求或频繁轮询 +- **正确做法**: 触发一次 → 等待 4-5 分钟 → 再检查 content-out 目录结果 +- **失败标志**: 如果等了 5+ 分钟还没结果,再检查是否有问题 +### 目录结构 + +| 用途 | MacMini 路径 | Ubuntu2 路径 | +| -------- | -------------------------------------------------------- | ------------------------------------------ | +| 源文件目录 | `/Users/weishen/Workspace/nexus/openclaw/content-queue/` | — | +| n8n 文件目录 | — | `/home/shenwei/docker/n8n/n8n_data/files/` | +| 输出目录 | `/Users/weishen/Workspace/nexus/openclaw/content-out/` | — | + +### 执行步骤 + +#### 步骤 1:复制源文件到 Ubuntu2 + +```bash +scp /Users/weishen/Workspace/nexus/openclaw/content-queue/<文件名> ubuntu2:/home/shenwei/docker/n8n/n8n_data/files/<文件名> +``` + + +#### 步骤 2:触发 Webhook +```bash +curl -X POST "/webhook/content-translation-v6" \ + -H "Content-Type: application/json" \ + -d '{ + "note_name": "<文件名>", + "source_path": "/Users/weishen/Workspace/nexus/openclaw/content-queue/<文件名>", + "output_name": "<文件名去掉后缀>" + }' +``` + + +#### 步骤 3:等待执行完成 + +- 成功标志:返回 `{"ok":true}` 且 HTTP 200 +- N8N 会通过 Telegram bot 发送完成通知 + +#### 步骤 4:复制输出文件到 MacMini + +```bash +scp ubuntu2:/home/shenwei/docker/n8n/n8n_data/files/<输出文件名> /Users/weishen/Workspace/nexus/openclaw/content-out/<输出文件名> +``` + + +#### 步骤 5:清理 Ubuntu2 临时文件 + +```bash +ssh ubuntu2 "rm /home/shenwei/docker/n8n/n8n_data/files/<输入文件名>" +ssh ubuntu2 "rm /home/shenwei/docker/n8n/n8n_data/files/<输出文件名>" +``` + + +### n8n 工作流速查表 + +| 工作流 | Webhook Path | 输入文件规则 | 输出文件规则 | 通知方式 | +| ---- | ------------------------ | -------------------- | ------------------------- | -------- | +| 内容转化 | `content-translation-v6` | `content-queue/*.md` | `content-out/*_output.md` | Telegram |