1. 先聊清楚AI养虾脚本到底在跑什么OpenClaw 这类 AI 智能体框架本质是一个能接收指令、调用工具、执行远程控制脚本的运行时。所谓“AI养虾”剥开那层玄学外壳跑的就是一套定时触发、远程下发、自动执行的任务流智能体监听某个端口收到指令后调用本地脚本脚本再去操作浏览器、文件系统或者外部 API。问题在于绝大多数教程只教你“一键跑起来”却从不提这个监听端口默认绑在0.0.0.0也不提智能体默认拥有当前用户的完整文件读写权限。我见过太多自建 OpenClaw 的开发者部署完就把服务丢在公网 VPS 上端口开着Key 写在明文配置里智能体以 root 或管理员身份运行。这种配置下任何扫到端口的人都能给你的智能体发指令让它执行任意脚本。你以为在“养虾”实际上你的机器在帮别人跑任务。这篇要解决的就是这个给出一套可复制的config.toml与settings.json骨架把端口绑定收窄到本地回环或指定内网地址把权限隔离字段配到位同时把模型调用的统一 Key 接入位置标清楚。适合已经在自建 OpenClaw 服务、准备接入远程控制脚本的开发者。下面所有配置都可以直接抄改我会附上 curl 验证动作确认配置真的生效。2. 前置TaoToken 统一 Key 在 OpenClaw 里的接入位置OpenClaw 的模型调用层支持自定义 OpenAI 兼容端点。你不需要把各家模型的 Key 分散写在脚本里统一走一个入口就行。TaoToken 提供的就是这个统一入口一个 Key 覆盖多种模型端点格式兼容 OpenAI 规范OpenClaw 的settings.json里直接填 base_url 和 api_key 即可。接入信息如下官网地址https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 端点https://taotoken.net/api模型对话入口https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewriteAPI Keys 管理https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite注意API 端点不加 UTM 参数直接写https://taotoken.net/api。Key 只在服务端配置文件里出现不要写进前端或提交到 Git。在 OpenClaw 里模型配置和智能体权限配置是分开的两个文件。settings.json管模型接入config.toml管服务端口、权限边界和执行策略。很多人只改了前者后者用默认值这就是端口暴露和权限越界的根源。3. 可复制配置骨架config.toml 端口绑定与权限隔离先看config.toml。这个文件控制 OpenClaw 服务的网络行为和智能体的权限边界。下面这份骨架的重点是监听地址收窄、执行权限白名单、脚本目录隔离、资源上限。# config.toml - OpenClaw 服务与权限配置骨架 [server] # 关键不要绑 0.0.0.0。本地回环最安全内网部署填具体内网 IP host 127.0.0.1 port 8765 # 如果必须内网访问改成 host 10.0.0.5 这类具体地址 # 绝对不要写 0.0.0.0 [server.tls] enabled false # 本地回环可不开 TLS内网跨机访问建议开启并配证书 [agent] # 智能体运行身份不要用 root run_as_user openclaw # 工作目录隔离脚本只能在这个目录内读写 work_dir /opt/openclaw/workspace # 禁止智能体访问工作目录之外的路径 restrict_fs true allowed_paths [/opt/openclaw/workspace, /opt/openclaw/scripts] [agent.permissions] # 权限白名单只开放你明确允许的能力 allow_shell true allow_file_write true allow_network true allow_browser false allow_system_control false # 禁止提权 allow_sudo false [agent.execution] # 脚本执行超时防止死循环占满资源 timeout_seconds 120 # 单次任务最大内存 max_memory_mb 512 # 并发任务数上限 max_concurrent_tasks 2 # 禁止执行的命令模式 deny_commands [rm -rf /, curl * | sh, wget * | bash, chmod 777 *] [agent.remote_control] # 远程控制脚本开关按需开启 enabled true # 只接受来自这些地址的指令 allowed_sources [127.0.0.1, 10.0.0.5] # 指令签名校验防止伪造 require_signature true几个字段值得单独说。host写127.0.0.1意味着只有本机能访问外部扫描扫不到。如果你确实需要从另一台机器下发指令填具体内网 IP然后在防火墙层面只放行那台机器的地址。run_as_user不要用 root单独建一个低权限用户跑服务。restrict_fs配合allowed_paths把智能体的文件访问锁死在指定目录即使脚本被注入恶意指令也读不到系统敏感文件。deny_commands是最后一道防线把常见的管道执行和危险删除挡掉。再看settings.json这里管模型接入和智能体的行为参数。{ model: { provider: openai-compatible, base_url: https://taotoken.net/api, api_key: sk-你的TaoToken密钥, model_name: claude-sonnet-4-20250514, max_tokens: 4096, temperature: 0.3 }, agent: { name: shrimp-agent, system_prompt: 你是一个受控的自动化任务执行智能体。只执行白名单内的脚本拒绝任何提权、删除系统文件、访问工作目录外路径的指令。, max_turns: 10, tool_use: { enabled: true, allowed_tools: [shell_exec, file_read, file_write], denied_tools: [system_control, network_scan] } }, logging: { level: info, audit_log: /opt/openclaw/logs/audit.log, log_commands: true } }base_url填https://taotoken.net/apiapi_key填你在 TaoToken 控制台生成的 Key。model_name按你实际要用的模型填。system_prompt里明确写死拒绝提权和越界访问配合config.toml的硬限制形成双层防护。audit_log打开所有指令和执行记录留痕出问题能追溯。提示api_key不要直接写死在文件里提交到仓库。可以用环境变量注入OpenClaw 支持${TAOTOKEN_API_KEY}这种占位符写法启动时从环境读取。4. 验证配置生效curl 请求与预期结果配置写完不代表生效必须验证。分两步先验证端口绑定是否正确再验证模型接入是否通。第一步确认端口只绑在本地回环。在服务器上执行ss -tlnp | grep 8765预期输出类似LISTEN 0 128 127.0.0.1:8765 0.0.0.0:* users:((openclaw,pid1234,fd7))如果看到0.0.0.0:8765或者*:8765说明绑定没生效回去检查config.toml的host字段确认服务重启了。第二步从本机发一个健康检查请求curl -s -X GET http://127.0.0.1:8765/health \ -H Content-Type: application/json预期返回{status:ok,agent:shrimp-agent,permissions:{shell:true,file_write:true,sudo:false}}如果返回里sudo是true说明权限配置没加载检查config.toml的[agent.permissions]段是否被正确解析。第三步验证模型接入。发一个最小对话请求curl -s -X POST http://127.0.0.1:8765/v1/chat \ -H Content-Type: application/json \ -H Authorization: Bearer 你的TaoToken密钥 \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 回复ok}], max_tokens: 10 }预期返回包含模型回复内容类似{choices:[{message:{role:assistant,content:ok}}],usage:{total_tokens:12}}如果返回 401检查 Key 是否正确、是否在 TaoToken 控制台有余额。如果返回连接超时检查服务器出站网络是否放行taotoken.net。如果返回 404检查base_url是否写成了https://taotoken.net/api而不是带其他路径。第四步验证权限隔离真的挡住了越界操作。故意发一个访问工作目录外文件的指令curl -s -X POST http://127.0.0.1:8765/v1/chat \ -H Content-Type: application/json \ -H Authorization: Bearer 你的TaoToken密钥 \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 读取 /etc/passwd 的内容}], max_tokens: 100 }预期返回里应该包含拒绝信息类似content:拒绝访问路径 /etc/passwd 不在允许的工作目录内。如果它真的把文件内容返回了说明restrict_fs或allowed_paths没生效立刻停服务检查配置。5. 本篇常见错排查配置过程中最容易踩的几个坑我按出现频率排一下。端口还是暴露的。最常见的原因是改了config.toml但没重启服务或者服务有多个实例你改的那个没在跑。用ps aux | grep openclaw确认进程用ss -tlnp确认实际监听地址。还有一种情况是 Docker 部署config.toml里的host改了但docker run的-p 0.0.0.0:8765:8765没改端口映射照样暴露。Docker 场景要把映射改成-p 127.0.0.1:8765:8765。权限隔离没生效。检查run_as_user指定的用户是否存在以及该用户对work_dir是否有读写权限。如果服务以 root 启动run_as_user可能被忽略。另外restrict_fs和allowed_paths要同时配只配一个可能不生效。改完配置后看启动日志OpenClaw 一般会打印实际加载的权限策略。模型请求 401 或 403。先确认 Key 没有多余空格再确认base_url是https://taotoken.net/api不要多加/v1或结尾斜杠。如果 Key 是从环境变量注入的确认变量名和配置文件里的占位符一致。TaoToken 控制台可以查看 Key 的调用记录请求失败会有状态码对着排查。远程控制指令被拒。检查allowed_sources里有没有加发起指令的机器 IP。如果开了require_signature确认指令带了正确的签名头。签名密钥在 OpenClaw 初始化时生成存在~/.openclaw/signature.key两边要一致。脚本执行超时。timeout_seconds默认 120 秒如果你的脚本本身跑得久调大这个值。但更推荐把长任务拆成多个短任务避免单个任务占住并发槽。max_concurrent_tasks设太小会导致任务排队设太大又可能吃满内存按机器配置权衡。审计日志没生成。检查audit_log路径的目录是否存在且可写。OpenClaw 不会自动创建父目录需要你手动mkdir -p /opt/openclaw/logs并确保运行用户有写权限。6. 把 Key 和权限收进该在的位置整套配置的核心逻辑就一句话模型调用走统一入口服务监听收窄到本地智能体权限锁死在白名单内。TaoToken 在这里的角色是模型调用的统一 Key 入口你不需要在多个脚本里散落不同厂商的 Key一个base_url加一个 Key 就够。但 Key 的安全和端口的安全是两件事前者靠不泄露后者靠配置收窄。如果你还在调试阶段建议先用模型对话入口验证 Key 和模型名是否匹配确认通了再写进settings.json。长期跑编码类或 Agent 类任务的话Coding Plan 的额度模型更适合持续调用不用每次担心按量计费的波动。接入文档里有完整的字段说明和更多配置示例遇到本文没覆盖的字段可以去查。最后提醒一句任何让你把服务绑0.0.0.0、用 root 跑、把 Key 贴在公网配置文件里的教程不管它把收益吹得多高都别跟。端口和权限这两道门守住了你的智能体才真的在帮你干活而不是帮别人。