10 KiB
10 KiB
title, source, author, published, created, description, tags
| title | source | author | published | created | description | tags |
|---|---|---|---|---|---|---|
| TOOLS.md - Local Notes | shenwei |
TOOLS.md - Local Notes
TOOLS管理
统一SSH管理
- 所有服务器: 包括macmini、ubuntu1、ubuntu2、NAS
- 管理方式: 通过SSH统一管理,不存储sudo密码
- 权限原则: 遵循最小权限原则
管理流程
- 所有服务器操作都通过SSH进行
- 不存储任何服务器的sudo密码
- 需要sudo权限的操作通过SSH执行
- 保持所有服务器的管理方式一致
Docker命令路径
- macmini:
/usr/local/bin/docker或/opt/homebrew/bin/docker(SSH时PATH不包含docker) - NAS:
/usr/local/bin/docker(使用docker-compose而非docker compose) - ubuntu1/ubuntu2: 直接用
docker
文件编辑注意事项
- 所有重要文件: 使用
exec + echo追加内容,避免 edit 工具在文件末尾无换行时失败 - edit工具使用准则: edit依赖精确文本匹配,任何空白字符差异都会导致失败。建议:先 read 文件确认内容,用 write 重写整个文件更可靠(特别是 memory、SOUL、IDENTITY 等重要文件)
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)
管理方式(通过tmux)
- 切换到root用户:
sudo su - 进入FRP目录:
cd /opt/frp/frp_xxx - 连接到tmux会话:
tmux attach -t frpc - 停止进程:
Ctrl+C - 重启frpc:
./frpc -c frpc.toml - 查看启动是否成功
查看配置
# 读取frpc.toml了解端口映射
cat /opt/frp/frp_0.65.0_xxx/frpc.toml
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
FRP状态检查 (2026-03-14)
用户可能说: "检查frp状态" 检查方法:
- SSH到对应服务器
- 切换root:
sudo su - 进入FRP目录:
cd /opt/frp/frp_xxx - 如果是macmini服务器连接tmux:
tmux attach -t frpc - 如果是ubuntu服务器:
systemctl status frpc - 查看日志输出
正常状态标志:
- 所有 proxy 启动成功时会显示:
[xxx] [name] start proxy success - 例如:
2026-03-14 20:49:36.007 [I] [client/control.go:172] [65f4a34a064fae9e] [transmission] start proxy success
重启命令 (如果需要):
- 如果是macmini服务器:
Ctrl+C停止当前进程./frpc -c frpc.toml重启
- 如果是ubuntu服务器
systemctl stop frpcsystemctl start frpcsystemctl restart frpc
VPS2 (x-UI 科学上网)
- IP: 104.194.92.188
- SSH:
ssh vps2 - 管理命令:
x-ui - 用途: x-UI 面板管理,用于科学上网
- 结果展示用列表方式,方便阅读
笔记系统
用户可能说: "请帮我记笔记"、"帮我把这篇文章保存在笔记目录"、"请读取知识库笔记目录下的这篇笔记" 使用obsidian skill 读取/保存/修改Markdown笔记 Macmini服务器上
- Obsidian笔记目录:
/Users/weishen/Workspace/nexus - Openclaw笔记目录:
/Users/weishen/Workspace/nexus/openclaw - 知识库笔记目录:
/Users/weishen/Workspace/nexus/openclaw/knowledgebase - 星曜专属笔记目录:
/Users/weishen/Workspace/nexus/openclaw/xingyao
网络测试策略 (2026-03-15)
用户可能说: "网络测试"、"检查服务器科学上网" 测试项目:
- 国内直连baidu (https://www.baidu.com)
- 国外直连 Google (https://www.google.com)
- 国外通过代理访问 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连: ✅/❌
Telegram 配置注意事项 (2026-03-15)
- groupPolicy=allowlist 时必须配置 groupAllowFrom,否则群消息被静默丢弃
- 中国访问Telegram API需要配置代理 (proxy)
- 代理协议必须是 http:// 或 socks5://
- Bot 的 has_topics_enabled: false,不支持 Telegram Topics 功能
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 |
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使用方式: - SSH 到对应服务器后,使用完整路径执行命令
- 例如:
ssh ubuntu1 '/home/shenwei/.npm-global/bin/openclaw status'
sag (TTS 语音生成) (2026-03-27)
安装
brew install steipete/tap/sag
API Key 配置
- 位置:
~/.openclaw/.env - 环境变量:
ELEVENLABS_API_KEY
生成语音并发送到 Telegram
# 1. 生成 MP3 文件
source ~/.openclaw/.env
sag --api-key "$ELEVENLABS_API_KEY" -o /tmp/voice.mp3 "要转换的文字"
# 2. 发送到 Telegram (voice note)
message --account <telegram bot> --chatId <user_id> --filePath /tmp/voice.mp3 --message "文字" --buttons []
使用规则
- 所有用 sag 生成的语音都必须通过 Telegram voice note 发送给我
- 使用 当前agent对应的telegram bot 账号发送
- 文件临时保存在 /tmp/ 目录
OpenCode
- 路径:
/Users/weishen/.opencode/bin/opencode - 版本: 1.2.27
- 用法: 开发任务必须通过它执行
Nexus Git 仓库配置
当用户说 "请帮我把这个笔记push到Git" 用于提交Obsidian笔记目录里的笔记,进行版本控制管理
- Remote URL:
ssh://git@192.168.3.189:2222/admin/nexus.git - SSH认证: 已配置(osxkeychain),无需输入用户名密码
- 可直接执行: git add → git commit → git push
- 用户名: weishen
- 邮箱: ishenwei@gmail.com
AgentMail (邮件收发与自动化) (2026-03-28)
安装
npm install -g @clawhub/agentmail
API Key / 账号配置
- 位置:
~/.openclaw/openclaw.json配置路径:skills.entries.agentmail.env - 环境变量:
AGENTMAIL_API_KEY=your_api_key
AGENTMAIL_EMAIL=your_email@example.com
AGENTMAIL_PROVIDER=imap_smtp # 或 gmail / outlook
AGENTMAIL_IMAP_HOST=imap.example.com
AGENTMAIL_SMTP_HOST=smtp.example.com
AGENTMAIL_PASSWORD=your_password_or_app_password
⚠️ 建议使用 App Password(如 Gmail / Outlook),避免主密码暴露
发送邮件
agentmail send \
--to "target@example.com" \
--subject "测试邮件" \
--body "这是一封由 Agent 自动发送的邮件"
带附件发送
agentmail send \
--to "target@example.com" \
--subject "报告文件" \
--body "请查收附件" \
--attachments "/tmp/report.pdf,/tmp/log.txt"
收取邮件
agentmail fetch \
--limit 10 \
--unread true
输出为 JSON(方便 Agent 处理)
agentmail fetch \
--limit 20 \
--format json > /tmp/mails.json
搜索邮件
agentmail search \
--query "from:boss@example.com subject:urgent" \
--limit 5
自动化处理(典型 Agent 场景)
1️⃣ 拉取未读邮件并分类
agentmail fetch --unread true --format json > /tmp/unread.json
2️⃣ 解析后自动回复
agentmail send \
--to "<extracted_email>" \
--subject "Re: <original_subject>" \
--body "已收到您的邮件,我们会尽快处理"
3️⃣ 保存关键邮件到 Markdown(用于知识库 / Daily Notes)
agentmail fetch --limit 10 --format markdown > /tmp/mails.md
与 Telegram 联动(通知类)
agentmail fetch --unread true --format text > /tmp/mail.txt
message \
--account <telegram bot> \
--chatId <user_id> \
--message "$(cat /tmp/mail.txt)"
使用规则
- 所有 重要邮件(如告警 / 客户 / 商机)必须同步到 Telegram
- 邮件正文必须经过摘要处理(避免噪音信息)
- 附件文件统一下载到
/tmp/目录再处理 - 自动回复必须符合上下文语义,避免机械回复
- 对于批量邮件处理,优先输出 JSON 供 Agent 决策
- 敏感邮件(如包含凭证 / 密钥)禁止自动转发