Files
nexus/openclaw/yunjiang/TOOLS.md

519 lines
13 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/<agentId>/` 目录,不要放在 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 Path>`
### ⚠️ 执行时间与等待规范
- **执行时间**: 每次触发 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 "<N8N_BASE_URL>/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 |