工作流模板 · 高级
给小白看的网络运维 Agent 模板,覆盖爱快、OpenWrt、iStoreOS、OpenClash、ShadowsocksR Plus+、PassWall、旁路由、DNS 分流、订阅转换、插件配置维修、OpenCode 可直接调用的 OpenWrt SSH 工具和备份回滚。
网络运维 Agent 的第一原则是先备份、先只读检查、一次只改一个变量,别让小问题变成全网断线。
# OpenWrt / iStoreOS:只读检查,不会修改配置
ubus call system board
ip addr show
ip route show
uci show network | sed -n '1,160p'
uci show dhcp | sed -n '1,160p'
uci show firewall | sed -n '1,220p'
logread | tail -n 120# OpenWrt / iStoreOS:先备份,再考虑修改
mkdir -p /tmp/router-backup
uci export network > /tmp/router-backup/network.$(date +%Y%m%d-%H%M%S).uci
uci export dhcp > /tmp/router-backup/dhcp.$(date +%Y%m%d-%H%M%S).uci
uci export firewall > /tmp/router-backup/firewall.$(date +%Y%m%d-%H%M%S).uci
uci export openclash > /tmp/router-backup/openclash.$(date +%Y%m%d-%H%M%S).uci 2>/dev/null || true
uci export passwall > /tmp/router-backup/passwall.$(date +%Y%m%d-%H%M%S).uci 2>/dev/null || true
uci export passwall2 > /tmp/router-backup/passwall2.$(date +%Y%m%d-%H%M%S).uci 2>/dev/null || true
uci export shadowsocksr > /tmp/router-backup/shadowsocksr.$(date +%Y%m%d-%H%M%S).uci 2>/dev/null || true
ls -lh /tmp/router-backup# macOS:安装 OpenCode 可直接调用的 OpenWrt SSH 工具
mkdir -p ~/bin
curl -fsSL https://thinktank.1a1api.top/tools/openwrt-ssh/openwrt-ssh -o ~/bin/openwrt-ssh
chmod +x ~/bin/openwrt-ssh
# 确认 ~/bin 在 PATH 中;如果没有,就追加到 zsh 配置
case ":$PATH:" in *":$HOME/bin:"*) ;; *) echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc; export PATH="$HOME/bin:$PATH" ;; esac
# 第一次仍由真人完成 SSH Key 和 Host 别名,之后 OpenCode 只调用 openwrt-ssh
mkdir -p ~/.ssh && chmod 700 ~/.ssh
ssh-keygen -t ed25519 -C "opencode-openwrt" -f ~/.ssh/openwrt_opencode
cat ~/.ssh/openwrt_opencode.pub | ssh root@192.168.1.1 "mkdir -p /etc/dropbear && cat >> /etc/dropbear/authorized_keys && chmod 600 /etc/dropbear/authorized_keys"
cat >> ~/.ssh/config <<'EOF'
Host openwrt-router
HostName 192.168.1.1
User root
IdentityFile ~/.ssh/openwrt_opencode
IdentitiesOnly yes
StrictHostKeyChecking accept-new
EOF
# 给 OpenCode 调用的非交互式工具动作
openwrt-ssh ping
openwrt-ssh status
openwrt-ssh all# Windows PowerShell:安装 OpenCode 可直接调用的 OpenWrt SSH 工具
New-Item -ItemType Directory -Force "$env:USERPROFILE\bin" | Out-Null
Invoke-WebRequest -Uri "https://thinktank.1a1api.top/tools/openwrt-ssh/openwrt-ssh.ps1" -OutFile "$env:USERPROFILE\bin\openwrt-ssh.ps1"
ssh -V
# 第一次仍由真人完成 SSH Key 和 Host 别名,之后 OpenCode 只调用 openwrt-ssh.ps1
New-Item -ItemType Directory -Force "$env:USERPROFILE\.ssh" | Out-Null
ssh-keygen -t ed25519 -C "opencode-openwrt" -f "$env:USERPROFILE\.ssh\openwrt_opencode"
type "$env:USERPROFILE\.ssh\openwrt_opencode.pub" | ssh root@192.168.1.1 "mkdir -p /etc/dropbear && cat >> /etc/dropbear/authorized_keys && chmod 600 /etc/dropbear/authorized_keys"
@"
Host openwrt-router
HostName 192.168.1.1
User root
IdentityFile ~/.ssh/openwrt_opencode
IdentitiesOnly yes
StrictHostKeyChecking accept-new
"@ | Add-Content "$env:USERPROFILE\.ssh\config"
# 给 OpenCode 调用的非交互式工具动作
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\bin\openwrt-ssh.ps1" ping
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\bin\openwrt-ssh.ps1" status
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\bin\openwrt-ssh.ps1" all给 OpenCode 的任务模板:
你是网络运维 Agent。不要直接 ssh,也不要要求输入路由器密码。请先判断当前系统是 Mac 还是 Windows:Mac 调用 openwrt-ssh,Windows 调用 powershell -ExecutionPolicy Bypass -File ~/bin/openwrt-ssh.ps1。只允许使用 ping、status、network、dns、proxy、subscriptions、plugin-status、plugin-config、plugin-logs、plugin-repair、logs、config network、config dhcp、config firewall、backup、all 这些工具动作。先运行 ping、status、plugin-status、subscriptions,再根据结果决定下一步。除 backup 和明确点名的 plugin-repair 外,不要执行修改配置的命令;plugin-repair 每次只修一个插件。# 订阅转换 / 插件配置 / 插件维修:OpenCode 可直接调用的固定动作
openwrt-ssh subscriptions
openwrt-ssh plugin-status
openwrt-ssh plugin-config openclash
openwrt-ssh plugin-config passwall
openwrt-ssh plugin-config ssr
openwrt-ssh plugin-logs openclash
openwrt-ssh backup plugins
# 软维修会先备份,再重启指定插件服务;一次只修一个
openwrt-ssh plugin-repair openclash
openwrt-ssh plugin-repair passwall
openwrt-ssh plugin-repair ssr
openwrt-ssh dns
openwrt-ssh proxy订阅转换不是把一个链接随便丢进去。小白要先确认自己要喂给哪个插件:OpenClash 通常要 Clash YAML,PassWall 要它能识别的节点或订阅格式,ShadowsocksR Plus+ 更偏 SSR / SS / V2Ray 兼容节点。Agent 可以帮你检查目标格式和日志,但不要让 Agent 保存完整订阅 URL。
# 让 OpenCode 检查订阅转换结果,但不要把完整订阅 URL 交给它
openwrt-ssh subscriptions
openwrt-ssh plugin-config openclash
openwrt-ssh plugin-logs openclash
openwrt-ssh plugin-config passwall
openwrt-ssh plugin-logs passwall
openwrt-ssh plugin-config ssr
openwrt-ssh plugin-logs ssr维修插件不是上来重装。先把配置备份下来,再查服务、进程、端口、订阅、日志。只有确认是插件卡住、下载失败或进程异常时,才做一次单插件软重启。
openwrt-ssh backup all
openwrt-ssh plugin-status
openwrt-ssh subscriptions
openwrt-ssh plugin-logs openclash
openwrt-ssh plugin-repair openclash
openwrt-ssh dns
openwrt-ssh proxyOpenCode、Codex、Claude Code 这类 CLI Agent 更适合调用固定工具,不适合卡在 SSH 密码输入、首次 host key 确认或二次验证页面。长期推荐 SSH Key;如果 OpenCode 当前用的是 `sshpass`,也要把密码放在 `SSHPASS` 环境变量里,让 `openwrt-ssh` 走固定动作。
# SSH Key 模式:OpenCode 后续应该调用工具,而不是直接 ssh
openwrt-ssh ping
openwrt-ssh status
openwrt-ssh network
openwrt-ssh dns
openwrt-ssh proxy
openwrt-ssh subscriptions
openwrt-ssh plugin-status
openwrt-ssh plugin-config openclash
openwrt-ssh plugin-logs openclash
openwrt-ssh backup all
openwrt-ssh all
# sshpass 过渡模式:只用环境变量,不要用 sshpass -p 明文密码
export OPENWRT_USE_SSHPASS=1
export SSHPASS='你的路由器密码'
openwrt-ssh ping
openwrt-ssh status
unset SSHPASS OPENWRT_USE_SSHPASS`openwrt-ssh` 是给 Agent 调用的包装器,不是唯一 SSH 工具。小白可以按使用者来选:真人排错用图形工具,Agent 排错用可脚本化工具,文件备份用 SFTP/SCP 工具。
把工具放进本机后,OpenCode 的任务里就可以明确写:不要直接 ssh,只调用这个工具。SSH Key 模式会用 `BatchMode=yes` 快速失败;如果你明确启用 `sshpass` 模式,工具会通过 `SSHPASS` 环境变量完成密码登录。
给 OpenCode 的首次任务:
你不要直接 ssh,也不要把密码写进命令参数。请先检查本机是否有 openwrt-ssh 工具。Mac/Linux 用 openwrt-ssh;Windows 用 powershell -ExecutionPolicy Bypass -File ~/bin/openwrt-ssh.ps1。如果我明确说当前用 sshpass,请只读取 SSHPASS 环境变量,不要使用 sshpass -p。先运行 ping、status、plugin-status、subscriptions。如果 ping 失败,只解释 SSH Key、sshpass、Host openwrt-router、known_hosts、OpenWrt SSH 服务这几类原因,不要保存或猜测密码。如果需要维修插件,先 backup all,再一次只运行一个 plugin-repair。在 macOS 上,把 `openwrt-ssh` 放进 `~/bin`,再完成 SSH Key 和 `openwrt-router` Host 别名。之后 OpenCode 只需要运行 `openwrt-ssh status` 这类命令。
mkdir -p ~/bin ~/.ssh && chmod 700 ~/.ssh
curl -fsSL https://thinktank.1a1api.top/tools/openwrt-ssh/openwrt-ssh -o ~/bin/openwrt-ssh
chmod +x ~/bin/openwrt-ssh
case ":$PATH:" in *":$HOME/bin:"*) ;; *) echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc; export PATH="$HOME/bin:$PATH" ;; esac
ssh-keygen -t ed25519 -C "opencode-openwrt" -f ~/.ssh/openwrt_opencode
cat ~/.ssh/openwrt_opencode.pub | ssh root@192.168.1.1 "mkdir -p /etc/dropbear && cat >> /etc/dropbear/authorized_keys && chmod 600 /etc/dropbear/authorized_keys"
cat >> ~/.ssh/config <<'EOF'
Host openwrt-router
HostName 192.168.1.1
User root
IdentityFile ~/.ssh/openwrt_opencode
IdentitiesOnly yes
StrictHostKeyChecking accept-new
EOF
openwrt-ssh ping
openwrt-ssh status在 Windows 上,把 `openwrt-ssh.ps1` 放到 `%USERPROFILE%\bin`,再完成 SSH Key 和 `openwrt-router` Host 别名。之后 OpenCode 只需要运行这个 PowerShell 工具。
ssh -V
New-Item -ItemType Directory -Force "$env:USERPROFILE\bin" | Out-Null
New-Item -ItemType Directory -Force "$env:USERPROFILE\.ssh" | Out-Null
Invoke-WebRequest -Uri "https://thinktank.1a1api.top/tools/openwrt-ssh/openwrt-ssh.ps1" -OutFile "$env:USERPROFILE\bin\openwrt-ssh.ps1"
ssh-keygen -t ed25519 -C "opencode-openwrt" -f "$env:USERPROFILE\.ssh\openwrt_opencode"
type "$env:USERPROFILE\.ssh\openwrt_opencode.pub" | ssh root@192.168.1.1 "mkdir -p /etc/dropbear && cat >> /etc/dropbear/authorized_keys && chmod 600 /etc/dropbear/authorized_keys"
@"
Host openwrt-router
HostName 192.168.1.1
User root
IdentityFile ~/.ssh/openwrt_opencode
IdentitiesOnly yes
StrictHostKeyChecking accept-new
"@ | Add-Content "$env:USERPROFILE\.ssh\config"
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\bin\openwrt-ssh.ps1" ping
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\bin\openwrt-ssh.ps1" statusOpenCode 用 `sshpass` 可以解决密码输入卡住的问题,但长期最好换 SSH Key;真人排错再配 PuTTY、WinSCP、MobaXterm 这类图形工具。
订阅转换先确认目标格式,插件维修先备份再查日志;不要把完整订阅链接、UUID、密码和 Token 交给 Agent。
先复制需求单,写清业务场景、输入资料、输出结果、验收标准和联系方式,然后发到 zhemuy@gmail.com。
Agent 会自己拆任务、调工具、留记忆;ChatGPT 默认就回一句话。
OpenClaw 把网关、模型、知识库、插件、Telegram 接入做成图形化模块,更像一个面板。
提示词不是咒语,而是一张任务单:目标、资料、规则、步骤、输出、示例、边界和验收标准写清楚,Agent 才不容易跑偏。
可以把截图、日志、需求单或当前页面链接发到 zhemuy@gmail.com。