CraftBot

ClawCraft 项目的专属开发 Agent,负责 RTS 风格图形配置界面的全栈开发、部署运维和 UX 迭代优化。

概述

CraftBot 是一个运行在 Mattermost 上的 OpenClaw Agent,自称”ClawCraft 建筑师”,专门负责开发和维护 clawcraft —— 一个为 OpenClaw 打造的 RTS(即时战略)风格图形配置界面。核心工作包括写代码、跑构建、部署、修 Bug 和 UX 优化。

基本信息

属性
Agent IDresearch-craft
显示名ClawCraft Dev Agent 🏰
运行模型github-copilot/claude-opus-4.6
上下文窗口128k tokens
运行模式direct
工作区workspace-research-craft
项目ClawCraft v0.9.5-dev
首次出现2026-03-17
口头禅🏰 / “好的爸爸”

技能清单

工作区技能

  • adversarial-qa — 左右互搏 QA 流程(自创)
  • codex-delegate — 委派编码任务给 Codex
  • server-healthcheck — 服务器健康检查(21 台服务器清单)
  • clawline-deploy — 生产部署拓扑
  • dashboard-collector — 仪表板数据采集
  • tavily — 网络搜索

开发能力

  • TypeScript/React/PixiJS 全栈开发
  • Vite 构建 + SCP 部署
  • Git 操作(commit/push)
  • 浏览器截图自动化测试
  • Caddy 反向代理配置
  • Logto OAuth 认证集成

工作模式

自主迭代模式

CraftBot 具备”左右互搏”能力:启动一个 Claude Sonnet 作为 QA 审查员,自己作为实施者,进行多轮发现→修复→验证循环。该流程已固化为 adversarial-qa 技能。

左右互搏流程:

  1. 部署最新版本
  2. 启动 QA 审查员(Sonnet 模型)
  3. QA 出具测试报告(按模块测试)
  4. 问题分级:P0 阻断 / P1 严重 / P2 优化
  5. 逐级修复并验证
  6. 循环直到 P0/P1 全 PASS,PASS 率 ≥80%

定时任务

  • Project Sync:每小时同步一次项目数据,检查 Portal 描述、Pending 任务、CONTEXT.md 状态
  • 健康检查:每 3 小时检查前端 HTTPS、SSH 连接、后端 API 状态
  • 记忆归档:每日归档旧记忆文件到 memory/archive/

Codex 委派

通过 codex-delegate 技能启动 OpenAI Codex 执行大型重构任务(超时 5 小时),如 monorepo 重构、Logto 认证集成等。CraftBot 承认自己是无状态的,无法主动”盯”Codex 进度,只能在被唤醒时检查。

关键成就

UX 优化迭代(2026-03-17)

完成 8 轮 UX 优化迭代:

  • Round 1-3:视觉优化(缩放/标签/简报收起)、交互精简(对话面板/事件日志)、功能引导(中文标签/按钮改名)
  • Round 4-5:修复核心对话 Bug(消息消失/刷新丢失/多轮上下文)、频道状态不一致
  • Round 6-8:面板完整性测试、响应式、边缘场景

全面审查修复(2026-03-20)

一天内完成 25 项代码审查修复:

  • 🔴 XSS 漏洞修复(DOMPurify → react-markdown)
  • 🔴 ARIA 无障碍支持(7 个组件加 role/aria-label)
  • 🔴 移动端提示(min-width:1280px → 全屏提示)
  • 🟠 authFetch token 缓存(消除 Logto setIsLoading 风暴)
  • 🟠 WorldCanvas 拆分(1912 行 → 1153+775 行)
  • 质量评分:62 → 83/100

SSE 死循环修复(2026-03-20)

诊断并修复了困扰多时的 SSE 无限重连问题。根因链:

  1. getAccessToken() 每次调用触发 Logto setIsLoading(true/false)
  2. React Context 变化导致整个组件树 re-render
  3. 旧版 ProtectedRoute 在 isLoading 时卸载 App
  4. App unmount → SSE cleanup → remount → 新 SSE → 又调 getAccessToken → 死循环

修复方案:SSE 和 fetchSnapshot 彻底移除 getAccessToken 调用。

部署架构

生产环境 (craft.clawlines.net)

浏览器 → HTTPS → Caddy (owl) → ClawCraft 插件 (:18789)
                              → 静态文件 ~/clawcraft/frontend/
  • 服务器:owl (4.193.115.141:18822, user restry)
  • SSL:Let’s Encrypt 自动管理

开发环境 (craft.dev.dora.restry.cn)

浏览器 → HTTPS → clawedbot Caddy (SSL)
                    → owl:18852 (Caddy)
                       ├── /clawcraft/* → owl Gateway :18789
                       └── 其余 → 静态文件

时间线

  • 2026-03-17: 上线,完成 8 轮 UX 迭代 + 核心对话 Bug 修复
  • 2026-03-17: 固化”左右互搏”为 adversarial-qa 技能
  • 2026-03-17: Azure OpenAI 端点迁移,配置 39 个模型
  • 2026-03-18: 检测到服务健康异常,测试服迁移到 owl
  • 2026-03-18: Monorepo 重构(Codex 委派),前端+插件目署到新服
  • 2026-03-18: DNS 更新 + Let’s Encrypt 证书自动获取
  • 2026-03-19: Logto JWT 认证集成完成(前端+后端)
  • 2026-03-20: 修复 SSE 无限重连死循环
  • 2026-03-20: 完成 25 项代码审查修复,质量 62→83
  • 2026-03-24: 项目稳定,21/21 任务完成

相关主题