Skip to main content

openclaw-admin-vue

AI agent management platform built with Vue 3 for OpenClaw Gateway and Hermes Agent

跳到安装

来源信息

仓库
reason-machines/hermes-skills
最近来源活动
2026年5月17日 22:48
检测到的 SKILL.md 语言
英语
星标
5
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
openclaw-admin-vue
description
AI agent management platform built with Vue 3 for OpenClaw Gateway and Hermes Agent
triggers
["set up openclaw admin dashboard","how do i configure the claw admin interface","install openclaw admin frontend","manage ai agents with openclaw","connect hermes agent to openclaw admin","deploy openclaw admin ui","configure openclaw gateway dashboard","troubleshoot openclaw admin connection"]
# OpenClaw Admin Vue Skill > Skill by [ara.so](https://ara.so) — Hermes Skills collection. OpenClaw Admin is a modern AI agent management platform built with Vue 3 that provides a comprehensive web interface for both OpenClaw Gateway and Hermes Agent. It enables visual management of AI agents, sessions, models, channels, skills, and includes a full-featured Web CLI terminal with session persistence. ## What OpenClaw Admin Does - **Dual Gateway Support**: Manages both OpenClaw Gateway and Hermes Agent from a single interface - **Web CLI Terminal**: Real terminal emulation using xterm.js with session persistence and reconnection - **Multi-Agent Orchestration**: Create and coordinate multiple AI agents for complex workflows - **Real-time Monitoring**: System resources, session states, token usage, and event streams - **Channel Management**: Configure QQ, Feishu, DingTalk, WeChat integrations - **Skill Management**: Install, update, and configure agent skills/plugins - **Memory Management**: Edit agent identity, personality (SOUL.md), and instructions ## Installation ### Prerequisites ```bash # Required node >= 18.0.0 npm >= 9.0.0 # For Hermes CLI terminal feature python >= 3.10 # Must be deployed on the same node as the gateway # .env only supports 127.0.0.1 or localhost ``` ### Setup Steps ```bash # Clone repository git clone https://github.com/itq5/OpenClaw-Admin.git cd OpenClaw-Admin # Install dependencies npm install # Initialize environment configuration cp .env.example .env # Edit .env file vim .env ``` ### Environment Configuration ```bash # .env # Server Port VITE_PORT=3001 # OpenClaw Gateway Configuration VITE_OPENCLAW_WS_URL=ws://localhost:8081 VITE_OPENCLAW_HTTP_URL=http://localhost:8081 # Hermes Agent Configuration VITE_HERMES_API_URL=http://localhost:8642 VITE_HERMES_WEB_URL=http://localhost:9119 VITE_HERMES_API_KEY= # CLI Terminal Configuration (for Hermes CLI) VITE_CLI_SESSION_DB=./cli-sessions.db ``` ### Development Mode ```bash # Start frontend only npm run dev # Start backend only (for CLI terminal) npm run dev:server # Start both frontend and backend npm run dev:all # Access at http://localhost:3001 ``` ### Production Build ```bash # Build for production npm run build # Start production server npm run start # Access at configured port (default 3001) ``` ## Hermes Agent Integration ### Install Hermes Agent ```bash # Official installation script curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash # Run configuration wizard hermes setup ``` ### Configure Hermes Agent ```bash # Configure AI model provider hermes setup model # Or edit ~/.hermes/.env directly # Example for OpenRouter: OPENROUTER_API_KEY=${OPENROUTER_API_KEY} # Example for Anthropic: ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} # Enable API Server vim ~/.hermes/.env # Add: API_SERVER_ENABLED=true GATEWAY_ALLOW_ALL_USERS=true API_SERVER_KEY=${API_SERVER_KEY} ``` ### Start Hermes Gateway ```bash # Install gateway hermes gateway install # Start gateway (background) hermes gateway start # Start Web UI dashboard hermes dashboard # Verify services curl http://localhost:8642/v1/health curl http://localhost:9119/api/status ``` ## Key Features and API Usage ### OpenClaw Gateway Module #### Session Management API ```typescript // Create new session import { sessionApi } from '@/api/openclaw/session' const createSession = async () => { const response = await sessionApi.createSession({ session_id: 'my-session', agent_id: 'default', metadata: { user_id: 'user123', channel: 'web' } }) return response.data } // List sessions with filters const listSessions = async () => { const sessions = await sessionApi.listSessions({ agent_id: 'default', active: true, limit: 20 }) return sessions.data } // Reset session await sessionApi.resetSession('session-id') // Delete session await sessionApi.deleteSession('session-id') ``` #### Model Management API ```typescript import { modelApi } from '@/api/openclaw/model' // Add model provider const addModel = async () => { await modelApi.addModel({ provider: 'openrouter', api_key: process.env.OPENROUTER_API_KEY, base_url: 'https://openrouter.ai/api/v1', models: ['anthropic/claude-3.5-sonnet'] }) } // Set default model await modelApi.setDefaultModel('anthropic/claude-3.5-sonnet') // Probe model availability const probeResult = await modelApi.probeModel({ provider: 'openrouter', model: 'anthropic/claude-3.5-sonnet', api_key: process.env.OPENROUTER_API_KEY }) ``` #### Skill Management API ```typescript import { skillApi } from '@/api/openclaw/skill' // List available skills const skills = await skillApi.listSkills() // Install skill await skillApi.installSkill({ name: 'web-search', version: 'latest' }) // Update skill await skillApi.updateSkill('web-search') // Toggle skill visibility in chat await skillApi.toggleSkillVisibility('web-search', true) ``` #### Cron Task API ```typescript import { cronApi } from '@/api/openclaw/cron' // Create scheduled task const createTask = async () => { await cronApi.createTask({ name: 'morning-report', schedule_type: 'cron', cron_expression: '0 9 * * *', // Every day at 9 AM prompt: 'Generate daily summary report', agent_id: 'default', enabled: true }) } // List tasks const tasks = await cronApi.listTasks() // Trigger task manually await cronApi.triggerTask('task-id') ``` ### Hermes Agent Module #### Chat API Integration ```typescript import { hermesApi } from '@/api/hermes' // Send chat message (SSE streaming) const sendMessage = async (message: string) => { const eventSource = hermesApi.chat.sendMessageStream({ message, session_id: 'session-123', model: 'anthropic/claude-sonnet-4', stream: true }) eventSource.onmessage = (event) => { const data = JSON.parse(event.data) if (data.type === 'content') { console.log('Chunk:', data.content) } else if (data.type === 'tool_call') { console.log('Tool invoked:', data.tool_name) } } return eventSource } // Execute slash command await hermesApi.chat.executeCommand('/skills enable web-search') ``` #### Session Management ```typescript import { hermesApi } from '@/api/hermes/session' // List sessions const sessions = await hermesApi.listSessions({ page: 1, page_size: 20, search: 'keyword' }) // Get session messages const messages = await hermesApi.getSessionMessages('session-id') // Delete session await hermesApi.deleteSession('session-id') ``` #### Configuration Management ```typescript import { hermesApi } from '@/api/hermes/config' // Get configuration const config = await hermesApi.getConfig() // Update configuration await hermesApi.updateConfig({ model: 'anthropic/claude-sonnet-4', provider: 'anthropic', max_turns: 10, temperature: 0.7 }) // Get environment variables const envVars = await hermesApi.getEnvVars() // Set environment variable await hermesApi.setEnvVar('MY_API_KEY', process.env.MY_API_KEY) ``` ### Web CLI Terminal #### Using the CLI Terminal UI The CLI terminal provides a real terminal experience with full Hermes CLI support: ```typescript // Component usage import CliTerminal from '@/components/hermes/cli/CliTerminal.vue' // In your Vue component <template> <CliTerminal :session-id="currentSessionId" :auto-connect="true" @session-created="handleSessionCreated" /> </template> ``` #### CLI Session API ```typescript import axios from 'axios' // Create CLI session with startup parameters const createCliSession = async () => { const response = await axios.post('/api/cli/sessions', { name: 'My CLI Session', startup_params: { model: 'anthropic/claude-sonnet-4', provider: 'anthropic', skills: ['web-search', 'code-execution'], yolo: false, verbose: true } }) return response.data.session_id } // List CLI sessions const sessions = await axios.get('/api/cli/sessions') // Reconnect to existing session const reconnect = async (sessionId: string) => { const response = await axios.post(`/api/cli/sessions/${sessionId}/connect`) return response.data } // Send input to CLI await axios.post(`/api/cli/sessions/${sessionId}/input`, { data: 'what skills are enabled?\n' }) // Resize terminal await axios.post(`/api/cli/sessions/${sessionId}/resize`, { cols: 120, rows: 30 }) // Destroy session await axios.delete(`/api/cli/sessions/${sessionId}`) ``` #### CLI Commands Available in Terminal ```bash # Hermes CLI-specific commands (work in Web Terminal) /skills # List all skills /skills enable web-search # Enable a skill /tools # List available tools /cron list # List scheduled tasks /config # Show configuration /browser # Open browser tool /help # Show all commands # Regular slash commands /new # Start new session /model claude-sonnet-4 # Switch model /status # Show system status ``` ### WebSocket Event Handling ```typescript import { useOpenClawStore } from '@/stores/openclaw' const store = useOpenClawStore() // Connect to OpenClaw Gateway await store.connect() // Listen to events store.on('session.message', (data) => { console.log('New message:', data) }) store.on('system.stats', (stats) => { console.log('System stats:', stats) }) // Send command store.sendCommand({ type: 'chat.send', data: { session_id: 'my-session', message: 'Hello AI' } }) ``` ## Configuration Patterns ### Connecting to Multiple Gateways ```typescript // stores/settings.ts export const useSettingsStore = defineStore('settings', { state: () => ({ connections: { openclaw: { wsUrl: 'ws://localhost:8081', httpUrl: 'http://localhost:8081', enabled: true }, hermes: { apiUrl: 'http://localhost:8642', webUrl: 'http://localhost:9119', apiKey: '', enabled: true } } }), actions: { async testConnection(type: 'openclaw' | 'hermes') { if (type === 'openclaw') { const ws = new WebSocket(this.connections.openclaw.wsUrl) return new Promise((resolve, reject) => { ws.onopen = () => { ws.close(); resolve(true) } ws.onerror = reject }) } else { const response = await fetch(`${this.connections.hermes.webUrl}/api/status`) return response.ok } } } }) ``` ### Slash Command Implementation ```typescript // components/chat/CommandProcessor.ts export class CommandProcessor { private commands = { '/new': () => this.newSession(), '/model': (args: string) => this.switchModel(args), '/skills': () => this.listSkills(), '/status': () => this.showStatus(), '/help': () => this.showHelp() } async process(input: string) { const [command, ...args] = input.split(' ') const handler = this.commands[command]
在 GitHub 查看
这个 SKILL.md 很大,SkillsMP 这里只预览前一段内容。 在 GitHub 查看