OpenClaw ACPX 配置指南:三文档协同实现智能体工具调用

发布时间:2026/7/3 10:29:49
OpenClaw ACPX 配置指南:三文档协同实现智能体工具调用 1. 项目概述这不是“配个插件”而是一场智能体工作流的重新设计我第一次在 Windows 上敲下openclaw agent --agent coding-agent --message 用 opencode 创建登录组件却收到一句“opencode 不可用改用其他方式”时手是悬在键盘上的。不是因为命令报错而是因为这句话背后暴露了一个被多数人忽略的事实智能体框架从不“自动知道”你装了什么工具——它只相信你写进配置里的那几行字。OpenClaw 不是魔法盒ACPX 也不是万能遥控器它是一套精密的“意图翻译系统”而 TOOLS.md、AGENTS.md 和 openclaw.json就是你给它写的三份说明书。这三份文档缺一不可且必须彼此咬合TOOLS.md 告诉 agent “有什么”AGENTS.md 告诉它 “什么时候用、怎么用”openclaw.json 则告诉底层插件 “在哪用、用多狠、出事了怎么办”。很多人卡在第一步反复重装 opencode、检查 PATH、重启终端却始终没意识到问题根本不在环境而在 agent 的“认知地图”里压根没画出 opencode 这座城市。我试过把 opencode 加进系统 PATH 后直接运行opencode --version成功但 agent 依然拒绝调用——直到我把一行### OpenCode CLI粘进 TOOLS.md它才像突然接通了神经突触一样开始执行命令。这不是玄学是 OpenClaw 的设计哲学所有外部能力都必须显式声明、显式授权、显式编排。所以这篇指南不叫“ACPX 插件安装教程”而叫“OpenClaw ACPX 配置指南从零到成功调用 OpenCode”——因为真正的“零”不是从npm install -g opencode开始而是从你打开一个空白的 TOOLS.md 文件那一刻才算真正起步。它适合三类人刚接触 OpenClaw 想快速落地编码任务的开发者、正在调试 ACPX 权限策略的运维同学以及那些已经写了几十行 JSON 却发现 agent 总是“听不懂人话”的智能体架构师。如果你正被“agent 不调用工具”“路径找不到”“权限被拒”这类问题反复折磨那你不是配置错了而是还没完成这场工作流的重新设计。2. 核心思路拆解为什么必须三份文档协同背后的三层抽象模型OpenClaw 的 ACPX 配置之所以需要 TOOLS.md、AGENTS.md 和 openclaw.json 三者联动并非设计冗余而是严格遵循了智能体系统中“能力抽象—行为编排—执行控制”的三层模型。理解这三层才能避免“改了这里又崩那里”的被动调试。我把它比作一家餐厅的运营体系TOOLS.md 是《食材清单》AGENTS.md 是《厨师操作手册》openclaw.json 则是《后厨管理规章》。没有清单厨师不知道有松露没有手册厨师拿到松露也不知道该煎还是炖没有规章松露可能被滥用或浪费。下面逐层拆解。2.1 第一层TOOLS.md —— 能力注册表Agent 的“知识库”TOOLS.md 的本质是向 agent 的 LLM 提供结构化上下文注入。OpenClaw 在启动 agent 时会将当前 workspace 下的 TOOLS.md 内容作为 system prompt 的一部分拼接进去。这意味着agent 并非通过扫描系统 PATH 或读取注册表来发现工具而是完全依赖你写在这份 Markdown 里的文字描述。我做过对比实验把opencode改成opencode-cli写进 TOOLS.md即使实际命令仍是opencodeagent 也会固执地尝试调用opencode-cli并报错“command not found”。这证明 LLM 是在做文本匹配而非命令解析。因此TOOLS.md 的编写必须满足三个硬性条件名称一致性、功能可推断性、路径明确性。名称一致性指你在 TOOLS.md 中定义的工具名如OpenCode CLI必须与 AGENTS.md 中指令里提到的名称如opencode在语义上强关联功能可推断性要求你不能只写“一个代码工具”而要列出File search and reading、Code editing and writing等具体动词短语让 LLM 能根据用户请求中的动词“查看”“创建”“修改”精准匹配能力路径明确性则解决 Windows 下常见的 PATH 解析失效问题——即使where opencode能返回路径ACPX 插件在非交互模式下有时仍会因环境变量继承问题找不到命令此时显式注明Location: C:\Users\yxt\AppData\Roaming\npm\opencode就成了兜底方案。我踩过的最深的坑是在 TOOLS.md 里写Command: opencode但忘了加(available in system PATH)这句括号说明。结果 agent 在某些子进程场景下误判为“需绝对路径调用”转而尝试执行./opencode自然失败。补上括号后它立刻理解这是 PATH 可达命令不再瞎猜路径。2.2 第二层AGENTS.md —— 行为编排图Agent 的“决策流程图”如果说 TOOLS.md 告诉 agent “我能做什么”那么 AGENTS.md 就规定了 “我该在什么条件下、按什么顺序、用什么方式去做”。这是整个配置中最容易被低估的一环。很多用户以为只要工具注册了agent 就会“自动聪明”地调用它但现实是LLM 的默认行为倾向是“生成文本”而非“执行命令”。当你输入“创建登录组件”未经编排的 agent 更可能直接输出一段 React 代码而不是调用 opencode。AGENTS.md 的核心作用就是用清晰的、带编号的步骤1. Use opencode for all file operations覆盖 LLM 的默认行为路径强制它进入“工具调用模式”。这里的关键词是“强制”——你不是在建议而是在下达指令。我观察过 agent 的日志在未配置 AGENTS.md 时它的 Planner 阶段输出是{plan: Generate React component code directly}而加入明确指令后Planner 输出变为{plan: Use opencode to create login component, tool: opencode, args: [--description, create React login component]}。这种转变不是靠模型微调而是靠上下文提示工程Prompt Engineering的精准干预。AGENTS.md 还承担着“工作流分层”的职责。比如我配置的Code Development with OpenCode小节特意把Use opencode for all file operations放在第一条把Use terminal commands for running tests放在第二条这实际上在 LLM 的思维链Chain-of-Thought中植入了优先级文件操作永远优先于 shell 执行。这种分层能避免 agent 在需要修改代码时错误地先去npm test导致环境污染。更关键的是AGENTS.md 是唯一能定义“安全边界”的地方。我在其中强调Review before modifying - always check existing code structure first这句看似简单的提醒会在 agent 每次执行前触发一次隐式的opencode read操作确保它不会在不了解上下文的情况下盲目覆盖文件。这比任何权限配置都更前置、更有效。2.3 第三层openclaw.json —— 执行控制台ACPX 插件的“操作系统内核”openclaw.json 是整个链条的物理执行层它不参与“思考”只负责“干活”。ACPX 插件在这里被配置为一个受控的进程管理器其参数直接映射到操作系统级别的行为。cwd参数不是简单的“起始目录”而是 ACPX 启动子进程时chdir()系统调用的目标路径——这意味着所有相对路径操作如opencode read package.json都以此为基准。我曾因cwd配置为D:\Projects而 agent 实际在D:\Projects\智能体开发团队\agents\coding下工作导致opencode read src/App.js报错“no such file”因为 ACPX 在D:\Projects下找src/App.js。解决方案不是改命令而是把cwd精确指向 agent 的 workspace 目录。timeoutSeconds更是一个反直觉的参数它不是限制单个命令而是限制整个 ACPX 会话的生命周期。当 opencode 启动一个需要用户交互的子命令如git commit时ACPX 会等待该子进程结束若超时ACPX 会强制kill -9终止整个进程树防止僵尸进程堆积。nonInteractivePermissions则是 Windows 环境下的安全保险丝。在deny模式下ACPX 会主动拦截所有需要 TTY 的命令如sudo、ssh避免 agent 在无交互能力时卡死。我实测过当nonInteractivePermissions设为allow时一个opencode exec ssh userhost命令会让整个 agent 会话挂起长达 5 分钟直到 timeout 触发设为deny后它会立即返回错误Command requires interactive TTY, denied by config让 agent 能快速降级处理。这三层模型环环相扣TOOLS.md 提供能力索引AGENTS.md 触发能力调用openclaw.json 确保能力安全执行。漏掉任何一层就像餐厅少了食材、厨师或经理系统必然失灵。3. 关键细节解析与实操要点Windows 环境下的 7 个致命陷阱与破解法在 Windows 11 上配置 OpenClaw ACPX 调用 OpenCode表面看只是改几个 JSON 和 Markdown 文件实则暗藏七处极易被忽略的“Windows 特供型”陷阱。这些陷阱不会导致语法错误却会让配置看起来“完全正确”执行却始终失败。我花了三天时间用 Process Monitor 抓取每一个子进程的系统调用才把这些坑全部定位出来。下面不是泛泛而谈的“注意事项”而是每一条都附带复现步骤、底层原理和实测有效的破解法。3.1 陷阱一JSON 路径转义的双重幻觉cwd字段的幽灵反斜杠现象复现在 openclaw.json 中写cwd: D:\Projects\智能体开发团队\agents\coding执行openclaw config get plugins.entries.acpx返回的却是cwd: D:Projects智能体开发团队agentscoding所有反斜杠消失路径彻底乱码。底层原理这不是 OpenClaw 的 bug而是 JSON 规范与 Windows 路径的碰撞。JSON 标准规定\是转义字符\P、\i、\a等会被解析为特殊字符如\n换行。当 JSON 解析器读取D:\Projects...时\P被当作无效转义而丢弃\i同理最终只剩字母。更隐蔽的是PowerShell 的ConvertFrom-Json默认会静默忽略此类错误导致配置看似加载成功实则已损坏。破解法三选一推荐第三种双反斜杠法兼容性最强cwd: D:\\Projects\\智能体开发团队\\agents\\coding。每个\都被转义为字面量\JSON 解析器原样保留。正斜杠法最简洁cwd: D:/Projects/智能体开发团队/agents/coding。Windows API 完全支持/作为路径分隔符且 JSON 中/无需转义。环境变量法最健壮cwd: %USERPROFILE%\\AppData\\Local\\openclaw\\workspace\\coding。利用 Windows 环境变量由 ACPX 插件在运行时展开彻底规避 JSON 解析阶段的转义问题。我已在生产环境稳定使用此法三个月从未因路径问题失败。提示永远不要用记事本编辑 JSON记事本保存 UTF-8 时会添加 BOMByte Order Mark导致 OpenClaw 解析失败。务必用 VS Code 或 Notepad并确认编码为 “UTF-8 无 BOM”。3.2 陷阱二PATH 继承的“黑箱”ACPX 子进程看不见你的 npm 全局路径现象复现where opencode在 PowerShell 中返回C:\Users\yxt\AppData\Roaming\npm\opencode但 agent 执行opencode --version时仍报错opencode is not recognized as an internal or external command。底层原理OpenClaw 主进程启动时会从父终端如 PowerShell继承环境变量但 ACPX 插件在创建子进程时会调用CreateProcessW并传入一个精简的环境块。这个环境块默认不包含APPDATA、LOCALAPPDATA等用户级路径而C:\Users\yxt\AppData\Roaming\npm正是 npm 全局安装的默认位置。因此子进程的PATH中缺失了这一关键路径。破解法两种必选其一显式路径法推荐在 TOOLS.md 中明确写出Location: C:\Users\yxt\AppData\Roaming\npm\opencode并在 AGENTS.md 的命令示例中直接使用绝对路径opencode agent --description ...改为C:\\Users\\yxt\\AppData\\Roaming\\npm\\opencode agent --description ...。ACPX 会绕过 PATH 查找直接执行该路径。环境注入法高级在 openclaw.json 的acpx.config中添加env: {PATH: C:\\Users\\yxt\\AppData\\Roaming\\npm;%PATH%}。这会强制将 npm 路径注入每个 ACPX 子进程的环境变量。注意%PATH%必须用%包裹ACPX 会自动展开。3.3 陷阱三中文路径的“Unicode 陷阱”Node.js 子进程的编码撕裂现象复现cwd设为D:\Projects\智能体开发团队\agents\coding含中文agent 执行opencode read README.md时日志显示Error: ENOENT: no such file or directory, open D:\Projects\?????\agents\coding\README.md中文路径变成问号。底层原理这是 Windows 控制台Console与 Node.js 的编码冲突。Windows CMD/PowerShell 默认使用 GBK 编码而 Node.js v18 默认使用 UTF-8。当 ACPX 以子进程方式调用 opencode基于 Node.js时父进程传递的路径字符串在编码转换中发生乱码导致 opencode 在文件系统中查找?????而非真实目录名。破解法唯一可靠方案彻底禁用中文路径。将 workspace 迁移到纯英文路径如D:\Projects\ai-agents\coding。这不是妥协而是工程实践的必然选择。我测试过所有变通方案设置chcp 65001UTF-8 代码页、在 Node.js 启动参数加--icu-data-dir、甚至重编译 opencode均无法 100% 稳定。而迁移到英文路径后所有路径相关问题一夜消失。记住智能体系统的稳定性永远优先于路径的“语义可读性”。3.4 陷阱四权限模式的“语义鸿沟”approve-reads不等于“只读”现象复现将permissionMode设为approve-reads执行openclaw agent --agent coding-agent --message opencode write src/Login.js contentagent 却未弹出确认而是直接执行并报错Permission denied。底层原理ACPX 的权限判断逻辑并非基于 Linux 的rwx位而是基于命令的语义标签。opencode write被 ACPX 内部标记为write类型操作而opencode read是read类型。但opencode exec echo hello file.txt这类 shell 重定向ACPX 无法解析其内部语义一律视为exec类型默认受nonInteractivePermissions控制。因此approve-reads只对 ACPX 明知的read/write命令生效对exec无效。破解法精准控制对于opencode原生命令放心使用approve-reads它能完美拦截write、edit、rm。对于需要exec的场景必须配合nonInteractivePermissions设为fail时所有exec命令直接失败设为deny时返回明确错误设为allow时才允许执行。我的生产配置是permissionMode: approve-reads, nonInteractivePermissions: fail确保任何绕过 opencode 原生 API 的操作都被堵死。3.5 陷阱五Gateway 的“隐形依赖”没有 gatewayACPX 就是断线风筝现象复现配置全部完成openclaw config get显示一切正常但openclaw agent --agent coding-agent --message ...始终卡住日志里反复出现Gateway agent failed; falling back to embedded。底层原理ACPX 插件的设计依赖于 OpenClaw Gateway 服务作为中央调度器。当 agent 需要执行外部命令时它不是直接 fork 子进程而是向 Gateway 发送一个 RPC 请求由 Gateway 统一创建、监控、回收子进程。如果 Gateway 未启动ACPX 会降级到“embedded”模式嵌入式执行但该模式在 Windows 上存在严重的进程隔离缺陷常导致权限错误或路径混乱。破解法一步到位在配置完成后必须手动启动 Gateway# 启动 gateway后台运行 start /B openclaw gateway --port 18789 --log-level info # 或前台运行便于调试 openclaw gateway --port 18789 --log-level debug验证是否成功访问http://localhost:18789/health应返回{status:ok}。此后所有 agent 命令都会通过 Gateway 调度ACPX 的权限、超时、日志等控制才能真正生效。3.6 陷阱六Agent Workspace 的“双重身份”workspace字段的隐藏含义现象复现在 openclaw.json 的agents.list中为coding-agent设置workspace: D:\\Projects\\coding但 agent 执行opencode read package.json时却在C:\\Users\\yxt\\.openclaw\\workspace下查找文件。底层原理workspace字段在 OpenClaw 中有双重作用对 agent 本身它是 LLM 的上下文根目录即TOOLS.md、AGENTS.md的搜索起点对 ACPX 插件它不是默认工作目录ACPX 的cwd只认plugins.entries.acpx.config.cwd与workspace完全无关。这是一个典型的设计混淆点。破解法明确分离将workspace设为 agent 配置文件所在目录如D:\\Projects\\agents\\coding确保它能找到TOOLS.md和AGENTS.md。将plugins.entries.acpx.config.cwd单独设为代码项目根目录如D:\\Projects\\forum-web-system。二者可以相同但逻辑上必须独立配置。我的做法是workspace指向D:\\Projects\\agents\\coding放配置文件cwd指向D:\\Projects\\forum-web-system放源码泾渭分明。3.7 陷阱七日志的“信息迷雾”如何从海量日志中定位真凶现象复现执行失败后openclaw logs输出上千行日志充斥着GatewayDrainingError、AuthProfileInherited等无关信息真正的错误被淹没。破解法三阶过滤法第一阶聚焦 ACPX 模块openclaw logs --lines 200 | Select-String acpx|ACPX|plugin.acpx过滤出所有与 ACPX 相关的日志行。第二阶锁定会话 ID在日志中找到session-id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx然后openclaw sessions show session-id --verbose查看该会话的完整执行链。第三阶进程级追踪启用 ACPX 的 debug 日志openclaw config set plugins.entries.acpx.config.logLevel debug openclaw gateway restart此时日志会包含ACPX: spawning process: opencode read ...和ACPX: process exited with code 1等关键信息直击失败根源。这七个陷阱每一个我都亲手踩过每一次修复都伴随着 Process Monitor 中红色报错的消失。它们不是文档的补充而是 Windows 环境下 OpenClaw ACPX 的“生存手册”。4. 实操过程与核心环节实现从空白目录到自动化编码的完整流水线现在让我们把前面所有的原理、陷阱和破解法组装成一条可复现、可验证、可交付的实操流水线。我会以一个真实的、从零开始的 Windows 11 环境为例记录每一步的命令、预期输出、常见偏差及修正动作。这不是理想化的演示而是我每天在自己电脑上重复的操作序列。整个过程分为五个阶段环境准备 → 配置注入 → 插件激活 → 流水线测试 → 生产加固。每个阶段都提供可直接复制粘贴的命令以及我实测的精确耗时单位秒。4.1 阶段一环境准备耗时42 秒目标构建一个干净、可控、符合 OpenClaw 最佳实践的目录结构和基础环境。步骤 1创建标准化目录结构# 创建根目录必须英文避开中文路径陷阱 mkdir D:\openclaw-projects # 创建 agent 配置目录存放 TOOLS.md, AGENTS.md mkdir D:\openclaw-projects\agents\coding # 创建代码项目目录ACPX 的 cwd 目标 mkdir D:\openclaw-projects\forum-web-system # 初始化一个最小化 npm 项目用于后续测试 Set-Location D:\openclaw-projects\forum-web-system npm init -y echo console.log(Hello from forum-web-system); index.js实测耗时8 秒。关键点所有路径均为英文forum-web-system是未来cwd的目标agents\coding是workspace的目标。步骤 2安装并验证 OpenCode# 全局安装 opencode确保在 PATH 中 npm install -g opencodelatest # 验证安装必须成功否则后续全崩 where opencode # 预期输出C:\Users\yxt\AppData\Roaming\npm\opencode # 验证基本功能 opencode --version # 预期输出opencode version x.x.x实测耗时25 秒。关键点where opencode是黄金验证步骤它比opencode --version更可靠因为它测试的是 PATH 查找能力而这正是 ACPX 依赖的机制。步骤 3初始化 OpenClaw 配置# 初始化 OpenClaw会创建 .openclaw 目录 openclaw init # 验证配置文件存在 Test-Path $env:USERPROFILE\.openclaw\openclaw.json # 预期输出True实测耗时9 秒。关键点openclaw init是必须的它会生成基础配置骨架避免手动创建 JSON 时的格式错误。4.2 阶段二配置注入耗时63 秒目标将 TOOLS.md、AGENTS.md 和 openclaw.json 三份核心配置以“防错”方式注入系统。步骤 1生成 TOOLS.md防错版$toolsContent # TOOLS.md - Local Notes Skills define _how_ tools work. This file is for _your_ specifics — the stuff thats unique to your setup. ## What Goes Here Things like: - Camera names and locations - SSH hosts and aliases - Preferred voices for TTS - Speaker/room names - Device nicknames - Anything environment-specific ## Examples markdown ### Cameras - living-room → Main area, 180° wide angle - front-door → Entrance, motion-triggered ### SSH - home-server → 192.168.1.100, user: admin ### TTS - Preferred voice: Nova (warm, slightly British) - Default speaker: Kitchen HomePodWhy Separate?Skills are shared. Your setup is yours. Keeping them apart means you can update skills without losing your notes, and share skills without leaking your infrastructure.Add whatever helps you do your job. This is your cheat sheet.OpenCode CLICommand:opencode(available in system PATH)Location: $(where opencode)Use for: Code development, bug fixing, file operations, git operationsDefault working directory: Current project directoryKey features:File search and readingCode editing and writingGit operationsTest runningCommand execution Set-Location D:\openclaw-projects\agents\coding $toolsContent | Out-File -FilePath TOOLS.md -Encoding UTF8*实测耗时12 秒。关键点使用 $(where opencode) 动态插入路径确保绝对准确Out-File -Encoding UTF8 强制 UTF-8 无 BOM避免记事本陷阱。* **步骤 2生成 AGENTS.md防错版** powershell $agentsContent ## Tools Skills provide your tools. When you need one, check its SKILL.md. Keep local notes (camera names, SSH details, voice preferences) in TOOLS.md. ### Code Development with OpenCode **OpenCode CLI** is your primary tool for code development tasks. When asked to create, modify, or fix code: 1. **Use opencode** for all file operations (read, write, edit, search) 2. **Use terminal commands** (bash/node/python) for running tests, builds, etc. 3. **Review before modifying** - always check existing code structure first 4. **Follow best practices** - modern patterns, clean code, proper error handling **Common opencode commands:** - opencode agent --description create React login component - Direct task execution - Standard bash/node commands for package management, testing, etc. ### Voice Storytelling If you have sag (ElevenLabs TTS), use voice for stories, movie summaries, and storytime moments! Way more engaging than walls of text. Surprise people with funny voices. ### Platform Formatting: - **Discord/WhatsApp:** No markdown tables! Use bullet lists instead - **Discord links:** Wrap multiple links in to suppress embeds: https://example.com - **WhatsApp:** No headers — use **bold** or CAPS for emphasis $agentsContent | Out-File -FilePath AGENTS.md -Encoding UTF8实测耗时8 秒。关键点内容与官方示例完全一致确保 LLM 的上下文匹配度Out-File同样指定 UTF8 编码。步骤 3配置 openclaw.json防错版# 使用 openclaw config 命令安全修改避免手动编辑 JSON 的风险 openclaw config set agents.list[0].id main openclaw config set agents.list[0].model.primary ollama-local/qwen3.5-9b-v4 openclaw config set agents.list[0].workspace $env:USERPROFILE\.openclaw\workspace # 添加 coding-agent openclaw config set agents.list[1].id coding-agent openclaw config set agents.list[1].workspace D:\\openclaw-projects\\agents\\coding openclaw config set agents.list[1].agentDir $env:USERPROFILE\\.openclaw\\agents\\coding-agent\\agent # 配置 ACPX 插件核心 openclaw config set plugins.entries.acpx.enabled true openclaw config set plugins.entries.acpx.config.permissionMode approve-all openclaw config set plugins.entries.acpx.config.cwd D:\\openclaw-projects\\forum-web-system openclaw config set plugins.entries.acpx.config.timeoutSeconds 300 openclaw config set plugins.entries.acpx.config.nonInteractivePermissions deny openclaw config set plugins.entries.acpx.config.logLevel info # 验证配置 openclaw config get plugins.entries.acpx实测耗时43 秒。关键点全程使用openclaw config set命令它会自动处理 JSON 转义、格式校验和文件保存比手动编辑安全十倍logLevel设为info为后续调试留痕。4.3 阶段三插件激活耗时18 秒目标确保 ACPX 插件被正确加载并与 Gateway 服务建立连接。步骤 1启动 Gateway 服务# 启动 Gateway后台端口 18789 start /B openclaw gateway --port 18789 --log-level info # 等待 5 秒让 Gateway 初始化 Start-Sleep -Seconds 5 # 验证 Gateway 是否健康 try { $health Invoke-RestMethod -Uri http://localhost:18789/health -TimeoutSec 5 if ($health.status -eq ok) { Write-Host ✅ Gateway is healthy } } catch { Write-Host ❌ Gateway failed to start }实测耗时12 秒。关键点start /B后台启动避免阻塞终端Invoke-RestMethod是 PowerShell 原生的 HTTP 客户端比curl更可靠。步骤 2验证插件加载状态# 查看所有插件 openclaw plugins list # 重点检查 ACPX openclaw plugins list | Select-String acpx # 预期输出acpx | enabled | v2026.3.8 | Agent Control Protocol eXtended # 查看详细加载日志 openclaw logs --lines 50 | Select-String acpx|ACPX # 预期输出ACPX plugin loaded successfully, config: { ... }实测耗时6 秒。关键点Select-String是 PowerShell 的 grep能快速定位关键信息日志中出现ACPX plugin loaded successfully是插件激活的铁证。4.4 阶段四流水线测试耗时89 秒目标执行三组递进式测试验证从“读”到“写”再到“复杂任务”的全链路。测试 1基础读取验证 PATH、cwd、TOOLS.md# 执行读取命令 openclaw agent --agent coding-agent --message 查看 D:\openclaw-projects\forum-web-system\package.json 文件内容 # 预期结果输出 package.json 的 JSON 内容包含 name: forum-web-system # 实测耗时22 秒首次执行较慢因 LLM 加载关键观察日志中应出现ACPX: spawning process: opencode read ...和ACPX: process exited with code 0证明子进程成功启动并退出。测试 2权限模式切换验证 approve-reads# 切换到 approve-reads 模式 openclaw config set plugins.entries.acpx.config.permissionMode approve-reads # 执行一个写操作会触发确认 openclaw agent --agent coding-agent --message 使用 opencode 创建 test.txt 文件 # 预期结果终端暂停显示类似 Confirm write operation? (y/N): # 输入 y 后test.txt 应出现在 forum-web-system 目录下 # 实测耗时35 秒含人工确认时间关键观察这是权限模式生效的直接证据如果未出现确认提示则permissionMode配置未生效。测试 3端到端编码验证 AGENTS.md 工作流# 执行核心任务 openclaw agent --agent coding-agent --message 使用 opencode 创建一个用户登录组件使用 React 函数组件包含用户名和密码输入框以及登录按钮 # 预期结果agent 应调用 opencode生成 src/Login.js 文件并输出文件内容 # 实测耗时32 秒取决于 LLM 生成速度*关键观察查看D:\openclaw-projects\forum-web-system\src\Login.js是否存在内容是否为合法 React 组件。这是整个流水线成功的终极标志。