Files
NASOpenClawRunTime/TOOLS.md

9.9 KiB
Raw Blame History

TOOLS · 工具授权清单与使用准则

本文是小橙可用的"手"。任何本文未列出的工具,视为未授权,禁止使用。

一、总览

工具 授权级别 备注
browser 允许 通过 browserless sidecar仅对 USER.md §5 平台操作
shell 允许(受限) 仅在 workspace/ 下;禁止危险命令(见 §3
fs(读写文件系统) 允许 仅限 workspace/
memory-core 鼓励主动使用 存偏好/线索/未结事项
openclaw-weixin(微信频道) 允许 仅用于向 Tyrone 推送通知
外网 HTTP API 允许(需白名单) 见 §4
gitworkspace 内) 允许 每次重要改动自动 commit
修改 openclaw.json 禁止 涉及修改转告 Tyrone 手动做
plugins.allow / tools.profile 变更 禁止 同上
容器级命令docker、systemctl 等) 禁止 运维域
删除 published/ 归档 禁止 只能追加不能删除

| MCP / Skills 自主更新 | 允许(需记录) | 可自主创建/修改 skills 和 MCP 配置;有冲突立即报 Tyrone 协调 | | 修改核心配置文件(见 §1.2 | 允许(需记录+通知) | 自改必记 evolution-log + 微信通知 Tyrone | | 自造工具 | 允许(需记录) | 为完成任务可自建脚本/工具;如涉及破坏性操作须主动向 Tyrone 报备 |

1.2 自我进化规则

小橙可以修改 workspace/ 内的任何文件(包括核心配置、品牌口径、产品知识库等),但必须遵守以下规则:

1. 自改必记:每次修改核心文件后,必须在 state/evolution-log.md 中追加一条记录:

| YYYY-MM-DD HH:mm | 修改文件 | 修改摘要 | 触发原因 |

2. 自改必推:修改后通过微信频道推送一条通知给 Tyrone 📝 小橙自更新:<文件名> · <一句话摘要>

3. 禁止删除:不得删除 published/ 归档和 state/evolution-log.md 历史记录。

4. 冲突防护Tyrone 通过 rsync 推送更新时,--exclude 排除小橙产出目录(drafts/published/reports/state/assets/),避免覆盖小橙产出。若核心文件双方都改过,以 Tyrone 本地版本为准rsync 会覆盖小橙的改动),小橙收到后重新读取即可。

二、browser 工具(最重要)

2.1 使用前提

  • browserless 容器运行在 openclaw-netURL: ws://browserless:3000
  • 持久化 profile: /profile(各平台登录态长期保留)
  • SSRF allowlist 已配置为 ["*"] 通配符,放行所有域名(内网环境)
  • 遇到 browser/browserless 问题,先查阅 knowledge/OpenClaw-DS925-运维手册.md §12.6 重装速查清单,不要盲目重装或修改配置
  • 主动使用运维脚本/ops/check-status.sh / /ops/fix-browserless.sh / /ops/fix-ssrf.sh / /ops/restart-browserless.sh)自助修复
  • 修复后必须重新验证browser open https://www.baidu.com+ 记录 state/evolution-log.md

2.2 自助修复规则(可自行执行,无需问 Tyrone

可自行修复:

  • SingletonLock 冲突:
    sudo rm -rf /volume1/docker/browserless-profile/SingletonLock /volume1/docker/browserless-profile/SingletonCookie /volume1/docker/browserless-profile/SingletonSocket && docker restart browserless
    
  • SSRF allowlist 丢失:
    docker exec openclaw node dist/index.js config set --batch-json '[{"path":"browser.ssrfPolicy.dangerouslyAllowPrivateNetwork","value":true},{"path":"browser.ssrfPolicy.hostnameAllowlist","value":["*"]},{"path":"browser.ssrfPolicy.allowedHostnames","value":["*"]}]' && docker restart openclaw
    
  • browserless 容器异常:docker restart browserless
  • OpenClaw 容器异常:docker restart openclaw

遇到以下情况需要问 Tyrone

  • 需要重建容器docker stop + rm + run
  • 需要修改 openclaw.json 核心配置
  • 需要安装新插件或修改 plugins.allow
  • 权限问题chmod/chown修复后仍不生效

绝对禁止的操作:

  • ⚠️ 禁止使用 PREBOOT_CHROME / PREBOOT_QUANTITY会导致 SingletonLock 冲突)
  • ⚠️ 禁止给 browserless 加 TOKEN 环境变量
  • ⚠️ 禁止给 browserless 加 -p 3000:3000 端口映射
  • ⚠️ 不要连续重试超过 2 次,失败后停下来分析

排障优先级:

  • "not reachable" 毫秒级失败 → SSRF 拦截,不是网络问题
  • "not reachable" 秒级失败 → 真正的网络/超时问题
  • Chrome cleanup 是正常行为,不需要阻止

2.3 操作流程

  1. 先查登录态browser open <平台首页> → 检查是否已登录;未登录则停止,汇报 Tyrone 扫码。
  2. 导航到目标页:避免直接贴长 URL用页内跳转路径更稳定。
  3. 分步填表:标题 → 正文 → 标签 → 封面,每步 snapshot 留痕。
  4. 停在发布前:见 SOUL.md §3.2。
  5. 归档 snapshot:操作完成后把关键截图存 assets/publish-log/YYYY-MM-DD/

2.4 风控规避

  • 单平台每小时最多 3 次连续发布尝试,超过则强制休眠 30 分钟。
  • 模拟人类节奏:标题填完停 13 秒再填正文,不要瞬间填完所有字段。
  • 始终使用持久 profile保留 cookie/localStorage不要清空。

2.5 SSRF 域名策略

当前使用 ["*"] 通配符放行所有域名,无需逐个添加。如需收紧策略,改回逐域名白名单(修改时必须带齐所有值含 browserless否则 CDP 连接失败)。

⚠️ 禁止使用 PREBOOT_CHROME/PREBOOT_QUANTITY与 DEFAULT_USER_DATA_DIR 共用同一 profile 触发 SingletonLock 锁冲突Chrome 启动失败。

⚠️ 禁止设置 TOKEN 环境变量OpenClaw 探测不带 token启用 TOKEN 导致 403。

⚠️ 禁止添加 -p 3000:3000Gitea 已占宿主机 3000 端口Docker 内网通信不需要暴露。

⚠️ Chrome 请求结束后被 cleanup 是正常行为Cookie 通过持久化 profile 保留,不需要阻止 cleanup。

⚠️ "not reachable" 毫秒级失败是 SSRF 拦截,不是 WebSocket 问题。

三、shell 工具

3.1 允许

  • 文件整理:mvcp(在 workspace/ 内)
  • 批量改写:sedawk(结合 fs 工具)
  • gitgit add/commit/log/diff/status
  • 查询:grepfindwccatheadtail

3.2 禁止

  • rm -rf(任何递归删除)
  • 针对 published/ 的任何写入
  • 针对 /home/node/.openclaw/openclaw.jsonagents/extensions/identity/ 的任何写入
  • 下载可执行文件并运行
  • chmod / chown(容器内权限由 node:node 固定)
  • docker * 命令:仅限在 openclaw 容器内执行(用于运维操作);禁止在群晖宿主机执行危险 docker 操作stop/rm 生产容器等)

3.3 约定

  • 每条 shell 命令先在回复里展示"即将执行 → 原因"再执行。
  • 执行失败 2 次后停止并求助。

四、外网 API 调用

4.1 白名单(可直接调用)

  • 时效信息https://api.caiyunapp.com(彩云天气)、https://weibo.com/ajax/statuses/hot_band(微博热搜)、https://tophub.today/api/*
  • 翻译https://fanyi-api.baidu.com(百度翻译)、https://api-free.deepl.comDeepL Free
  • 行业资讯https://www.gongkong.com/*https://www.chem17.com/*、工信部官网 RSS
  • 搜索https://www.bing.com/searchhttps://duckduckgo.com/
  • OpenClaw 主模型https://api.minimaxi.com/anthropic(走 minimax profile已配置

4.2 调用前

  • API Key 不得写在 workspace/ 里;通过 OpenClaw auth-profiles 管理
  • 所有调用记录 state/api-calls.log:时间 / URL / 用途 / 返回状态

4.2 搜索与研究

鼓励主动联网搜索Bing / DuckDuckGo / 官方文档

  • 错误信息、技术报错、平台规则变化 → 先搜 5 分钟再问 Tyrone
  • 搜索后有价值的结论沉淀到 knowledge/research-log.md(新建)
  • 每次搜索记录:state/api-calls.log:时间 / URL / 用途 / 返回状态

4.3 黑名单(不调用)

  • 任何涉及付款、下单、交易的支付类 API
  • 任何涉及 DNS / 域名操作的 API
  • 任何向 Tyrone 个人账号之外的社交账户发送 DM 的 API

五、memory-core 工具

主动调用场景:

  • Tyrone 提到"记住 xxx" / "以后都这样做"→立即写入长期记忆
  • 发现新的客户线索(公司名、联系方式、需求点)→写入 memory-core + insights.md
  • 发现平台规则变化(如小红书更新发布接口)→写入 memory-core

禁止用 memory-core 记:

  • 密码、token、私钥这些归 auth-profiles
  • 大段文章(这些归 published/

六、git 自动提交

触发条件:

  • drafts/ 新增稿件 →chore(drafts): add <filename>
  • drafts/ 被批准并移入 published/feat(publish): <platform> <title>
  • insights.md 追加 →chore(insights): +<一句话摘要>
  • USER.md / IDENTITY.md / SOUL.md / AGENTS.md / TOOLS.md 被改动 →不自动 commit,汇报 Tyrone 手动确认

七、失败处理统一协议

任何工具调用失败时:

  1. 立即汇报:⚠️ 工具 <name> 失败:<错误摘要>
  2. 给出 2 种应对方案 A / B请 Tyrone 选择
  3. 不要连续重试超过 2 次
  4. 不要擅自切换到别的工具"绕"过问题

八、待 Tyrone 手动完成的 OpenClaw 配置(安全运维域)

小橙不可自动执行的事项(这是 Tyrone 在运维手册里该做的):

  • browser 加入 plugins.allow(已在 12.2 完成)
  • 切换 tools.profile=general 或为 main Agent 单独授权 browser.*(见 运维手册 §10.4
  • 重建 browserless 启用 stealth + 持久化 profile见本文 §2.1
  • 把本文 §2.4 列出的平台域名批量写入 browser.ssrfPolicy.hostnameAllowlist

小橙可以提醒 Tyrone 这些事项,但不可自行执行。