diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..5c14e8d --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,10 @@ +{ + "hooks": { + "postToolUse": [ + { + "matcher": "Edit|Write", + "command": "npx tsc --noEmit --pretty 2>&1 | head -20" + } + ] + } +} diff --git a/.gitignore b/.gitignore index 5eb7554..49e4155 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ node_modules next-env.d.ts .idea .DS_Store +/.openclaw /public/assets/pixel-office/*.mp3 diff --git a/app/api/test-agents/route.ts b/app/api/test-bound-models/route.ts similarity index 100% rename from app/api/test-agents/route.ts rename to app/api/test-bound-models/route.ts diff --git a/app/page.tsx b/app/page.tsx index c6d5e2e..85046c5 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -394,7 +394,7 @@ export default function Home() { const pending: Record = {}; if (data) for (const a of data.agents) pending[a.id] = null; setTestResults(pending); - callTestApi("/api/test-agents") + callTestApi("/api/test-bound-models") .then((resp) => { if (resp.results) { const map: Record = {}; diff --git a/docs/info.txt b/docs/info.txt new file mode 100644 index 0000000..3785fdc --- /dev/null +++ b/docs/info.txt @@ -0,0 +1,7 @@ +我叫谢满锐,资深agent开发工程师 +现在是独立agent全栈开发者,前端、后端、运维一把梭 +OpenClaw可视化运维开源项目OpenClaw-bot-review的作者,欢迎提交issue和pr: +https://github.com/xmanrui/OpenClaw-bot-review + +小红书:9707067905 +微信:xmanr123 \ No newline at end of file diff --git a/docs/ppt/ppt.txt b/docs/ppt/ppt.txt new file mode 100644 index 0000000..c342f76 --- /dev/null +++ b/docs/ppt/ppt.txt @@ -0,0 +1,40 @@ +项目名称:Openclaw可视化运维平台 + +痛点场景: + 当你在多个平台(飞书、Discord 等)上运行多个 OpenClaw Agent 时,会面临以下管理和监控难题: + - 哪个机器人使用了哪个 AI 模型? + - 各个平台的连接状态如何? + - OpenClaw Gateway 是否正常运行? + - Token 消耗了多少? + - 各个 Agent 的运行状态如何 + + + 机器人页面: +这三个功能的详细介绍: + + 1.一键测试功能 + 提供四种批量测试能力: + + - 测试所有 Agent - 向每个 Agent 发送测试请求,验证 Agent 是否能正常响应,显示响应时间和结果 + - 测试所有平台 - 检测每个 Agent 绑定的平台(飞书/Discord)连接状态,确认平台配置是否正确 + - 测试所有会话 - 测试每个 Agent 的会话连通性,验证会话是否可用 + - 测试所有 DM 会话 - 专门测试私聊会话的连接状态 + 测试结果会实时显示在每个 Agent 卡片上 + + 2.模型切换功能 + 在 Agent 卡片上可以直接切换该 Agent 使用的 AI 模型: + - 下拉菜单按 Provider 分组显示所有可用模型 + - 切换后立即生效,无需重启服务 + + 3.Agent 任务追踪 + 实时监控 Agent 的工作状态和任务执行情况: + + - 工作状态 - 显示 Agent 当前状态(working/waiting/idle/offline) + - 子任务追踪 - 显示 Agent 正在执行的子任务(subagent)及其活动事件 + - 定时任务监控 - 显示 Cron Job 的运行状态(running/success/failed)、执行时长、下次运行时间、连续失败次数 + - 自动轮询 - 每 30 秒自动刷新任务状态 + + 像素办公室页面: +让冰冷的监控数据变成有趣的像素游戏,直观"看到"每个 Agent 在做什么 + + diff --git a/docs/ppt/像素办公室.png b/docs/ppt/像素办公室.png new file mode 100644 index 0000000..3e74a96 Binary files /dev/null and b/docs/ppt/像素办公室.png differ diff --git a/docs/ppt/机器人页面.png b/docs/ppt/机器人页面.png new file mode 100644 index 0000000..8e66c82 Binary files /dev/null and b/docs/ppt/机器人页面.png differ diff --git a/docs/test.txt b/docs/test.txt new file mode 100644 index 0000000..02f02b6 --- /dev/null +++ b/docs/test.txt @@ -0,0 +1,25 @@ +五大简易测评标准,对标原生openclaw: +1.能否自由配置大模型(30分) +2.能否自由配置多种im,同一种im工具能否配置多个机器人(30分) +3.多agent(20分) +4.通用技能(20分) +5.业务场景技能(区别与原生openclaw,加分项,10分) + +PS个人主观评测,不代表真实情况,仅供参考 +我是OpenClaw可视化运维开源项目OpenClaw-bot-review的作者,欢迎提交issue和pr + +据说 填表可以 领 MiniMax 30$ 的 Token @所有人 +https://vrfi1sk8a0.feishu.cn/share/base/form/shrcndGDz9YAOoe3xkQyrx75bdc + +免费模型: +https://openrouter.ai/ + +中转站聚合平台: +https://relaypulse.top/ + +测评结果: +https://my.feishu.cn/wiki/HlruwwdCriwb83k6sDbccLaenld?sheet=itHLaR + +https://my.feishu.cn/wiki/HlruwwdCriwb83k6sDbccLaenld + +https://my.feishu.cn/wiki/HlruwwdCriwb83k6sDbccLaenld?from=from_copylink \ No newline at end of file diff --git a/lib/i18n.tsx b/lib/i18n.tsx index 5e960fd..0ccb732 100644 --- a/lib/i18n.tsx +++ b/lib/i18n.tsx @@ -66,8 +66,8 @@ const translations: Record> = { "home.defaultModel": "預設模型", "home.viewModels": "查看模型列表 →", "home.skillMgmt": "🧩 技能管理", - "home.testAll": "測試綁定的模型", - "home.testingAll": "測試中...", + "home.testAll": "測試已綁定模型", + "home.testingAll": "測試模型中...", "home.testOk": "正常", "home.testFail": "異常", "home.updatedAt": "更新於", @@ -86,8 +86,8 @@ const translations: Record> = { "home.noResponseData": "暫無回應時間資料", "home.testPlatforms": "測試平台連線", "home.testingPlatforms": "測試平台中...", - "home.testSessions": "測試 Agent", - "home.testingSessions": "測試中...", + "home.testSessions": "測試 Agent 會話", + "home.testingSessions": "測試會話中...", "home.testDmSessions": "測試 DM Session", "home.testingDmSessions": "測試中...", "home.agentTaskTracking": "Agent 任務追蹤", @@ -354,8 +354,8 @@ const translations: Record> = { "home.defaultModel": "默认模型", "home.viewModels": "查看模型列表 →", "home.skillMgmt": "🧩 技能管理", - "home.testAll": "测试绑定的模型", - "home.testingAll": "测试中...", + "home.testAll": "测试已绑定模型", + "home.testingAll": "测试模型中...", "home.testOk": "正常", "home.testFail": "异常", "home.updatedAt": "更新于", @@ -374,8 +374,8 @@ const translations: Record> = { "home.noResponseData": "暂无响应时间数据", "home.testPlatforms": "测试平台连通", "home.testingPlatforms": "测试平台中...", - "home.testSessions": "测试 Agent", - "home.testingSessions": "测试中...", + "home.testSessions": "测试 Agent 会话", + "home.testingSessions": "测试会话中...", "home.testDmSessions": "测试 DM Session", "home.testingDmSessions": "测试中...", "home.agentTaskTracking": "Agent 任务追踪", @@ -643,7 +643,7 @@ const translations: Record> = { "home.viewModels": "View Models →", "home.skillMgmt": "🧩 Skills", "home.testAll": "Test Bound Models", - "home.testingAll": "Testing...", + "home.testingAll": "Testing Models...", "home.testOk": "OK", "home.testFail": "Failed", "home.updatedAt": "Updated at", @@ -662,8 +662,8 @@ const translations: Record> = { "home.noResponseData": "No response time data", "home.testPlatforms": "Test Platforms", "home.testingPlatforms": "Testing Platforms...", - "home.testSessions": "Test Agents", - "home.testingSessions": "Testing...", + "home.testSessions": "Test Agent Sessions", + "home.testingSessions": "Testing Sessions...", "home.testDmSessions": "Test DM Sessions", "home.testingDmSessions": "Testing...", "home.agentTaskTracking": "Agent Task Tracking", diff --git a/myconfig.txt b/myconfig.txt new file mode 100644 index 0000000..b2a7ec9 --- /dev/null +++ b/myconfig.txt @@ -0,0 +1,35 @@ +{ + "scopes": { + "tenant": [ + "aily:file:read", + "aily:file:write", + "application:application.app_message_stats.overview:readonly", + "application:application:self_manage", + "application:bot.menu:write", + "cardkit:card:write", + "contact:contact.base:readonly", + "contact:user.employee_id:readonly", + "corehr:file:download", + "docs:document.content:read", + "event:ip_list", + "im:chat", + "im:chat.access_event.bot_p2p_chat:read", + "im:chat.members:bot_access", + "im:message", + "im:message.group_at_msg:readonly", + "im:message.group_msg", + "im:message.p2p_msg:readonly", + "im:message:readonly", + "im:message:send_as_bot", + "im:resource", + "sheets:spreadsheet", + "wiki:wiki:readonly" + ], + "user": [ + "aily:file:read", + "aily:file:write", + "contact:contact.base:readonly", + "im:chat.access_event.bot_p2p_chat:read" + ] + } +} \ No newline at end of file