OpenClaw Dev Harness 是一套用于搭建和管理隔离 OpenClaw 开发环境的工具,主要面向扩展(插件、钩子、技能)的构建与调试场景。其核心机制是利用 OpenClaw 的 --dev 标志,将所有开发状态隔离在 ~/.openclaw-dev/ 目录下,网关默认运行在 19001 端口,扩展则从开发工作区 ~/.openclaw-dev/workspace/extensions/ 加载。官方将 TUI 作为主要交互界面。
快速开始流程为:先执行 bash scripts/setup-harness.sh 搭建隔离开发环境;在第一个终端执行 bash scripts/dev-gateway.sh 启动开发网关;在第二个终端执行 bash scripts/dev-tui.sh 打开 TUI;再用 bash scripts/scaffold-extension.sh my-plugin --type plugin 脚手架生成扩展。
支持的扩展类型分为三类。插件(Plugins)是常驻网关的代码,可提供 RPC 方法、CLI 命令、服务、代理工具和通道;钩子(Hooks)是事件驱动的 TypeScript 处理器,响应命令事件、代理生命周期和网关启动事件;技能(Skills)是基于 SKILL.md 的知识扩展。
工作流方面,初始设置通过 scripts/setup-harness.sh 创建开发环境,可选参数包括 --reset(先清空现有开发状态)、--auth-choice <choice>(设置认证提供方,默认 skip)、--port <port>(网关端口,默认 19001)。如需带认证测试可传入提供方,例如 bash scripts/setup-harness.sh --auth-choice setup-token。开发扩展时,用 scripts/scaffold-extension.sh <name> --type <plugin|hook|skill> 生成脚手架,编辑生成的文件后重启网关以加载变更:openclaw --dev gateway restart;也可用 bash scripts/dev-gateway.sh 在前台运行网关以获取实时输出。
通过 TUI 测试时,运行 scripts/dev-tui.sh 与扩展交互。快捷键包括:Enter 发送消息、Esc 停止运行、Ctrl+L 模型选择器、Ctrl+G 代理选择器、Ctrl+O 切换工具输出、Ctrl+T 切换思维过程。TUI 斜杠命令有 /status、/help、/agent <id>、/session <key>、/new、/debug。在行首加 ! 可直接从 TUI 运行 shell 命令。
调试方面,运行 scripts/debug-session.sh 收集诊断信息,可选 --deep(包含安全审计与深度 doctor 扫描)、--logs <n>(日志行数,默认 50)。如需协议级检查可启用原始流调试:OPENCLAW_RAW_STREAM=1 openclaw --dev gateway --port 19001 --verbose。也可直接测试 RPC 方法:openclaw --dev gateway call pluginId.action --params '{}'。
测试方面,插件单元测试(Vitest)可运行:npx vitest run ~/.openclaw-dev/workspace/extensions/my-plugin/my-plugin.test.ts。网关级验证可运行:openclaw --dev doctor --non-interactive、openclaw --dev plugins doctor、openclaw --dev hooks check。
关键路径包括:~/.openclaw-dev/ 为开发状态根目录;~/.openclaw-dev/workspace/extensions/ 为插件源码;~/.openclaw-dev/workspace/hooks/ 为钩子源码;~/.openclaw-dev/workspace/skills/ 为技能源码;~/.openclaw-dev/openclaw.json 为开发配置;~/.openclaw-dev/credentials/ 为认证配置。参考文档包括 references/plugin-api.md(插件 API 细节)、references/hooks-api.md(钩子 API 细节)、references/testing.md(测试细节)。脚本涵盖 setup-harness.sh、dev-gateway.sh、dev-tui.sh、scaffold-extension.sh、debug-session.sh,分别用于初始化开发环境、以开发模式启动网关、将 TUI 连接到开发网关、脚手架生成插件/钩子/技能以及收集诊断信息。