AI студия Владимира Ломтева
УСЛУГИПРОЕКТЫСТАТЬИБАЗА ЗНАНИЙМаркетплейсОбучениеПолезные сервисы

Оставьте заявку,
чтобы обсудить проект

Напишите ваш вопрос, не забудьте указать телефон. Мы перезвоним и все расскажем.

Контакты

Москва

Работаем по всей России
и миру (онлайн)

+7 (999) 760-24-41

Ежедневно с 9:00 до 21:00

lamooof@gmail.com

По вопросам сотрудничества

TelegramWhatsApp

Есть предложение?

Напишите нам в мессенджеры

© 2025 AI студия Владимира Ломтева

Политика конфиденциальностиСогласие на обработку ПДн|ИНН 623412173261
    Openclaw Control Center — Скилл для ИИ-агентов | AI Рассвет

    Openclaw Control Center

    Local first, security first control center for OpenClaw agents — visibility dashboard with readonly defaults, token attribution, collaboration tracing, and safe write operations.

    Скиллы для разработки#GitHub#reason-machines/trending-skills#skills.sh
    Скачивания
    0
    В избранном
    0
    Комментарии
    0
    Просмотры
    1

    Установить скилл

    Установить скилл

    Добавьте инструмент одной командой или скачайте проверенный архив версии.

    npx skills add reason-machines/trending-skills --skill openclaw-control-center
    Скачать ZIP
    Версия
    1.0.0+2384a003145a
    Автор
    Владимир Ломтев
    Репозиторий
    reason-machines/trending-skills
    GitHub: reason-machines/trending-skills

    Добавьте инструмент одной командой или скачайте проверенный архив версии.

    npx skills add reason-machines/trending-skills --skill openclaw-control-center
    Скачать ZIP
    Версия
    1.0.0+2384a003145a
    Автор
    Владимир Ломтев
    Репозиторий
    reason-machines/trending-skills
    GitHub: reason-machines/trending-skills

    Как установить

    1. 1Скопируйте команду из блока установки.
    2. 2Запустите её в терминале из каталога проекта.

    Документация

    openclaw-control-center

    Skill by ara.so — Daily 2026 Skills collection

    OpenClaw Control Center transforms OpenClaw from a black box into a local, auditable control center. It provides visibility into agent activity, token spend, task execution chains, cross-session collaboration, memory state, and document sources — with security-first defaults that keep all mutations off by default.

    What It Does

    • Overview: System health, pending items, risk signals, and operational summary
    • Usage: Daily/7d/30d token spend, quota, context pressure, subscription window
    • Staff: Who is actively executing vs. queued — not just "has tasks"
    • Collaboration: Parent-child session handoffs and verified cross-session messages (e.g. Main ⇄ Pandas)
    • Tasks: Task board, approvals, execution chains, run evidence
    • Memory: Per-agent memory health, searchability, and source file editing
    • Documents: Shared and agent-core documents opened from actual source files
    • Settings: Connector wiring status, security risk summary, update status

    Installation

    git clone https://github.com/TianyiDataScience/openclaw-control-center.git
    cd openclaw-control-center
    npm install
    cp .env.example .env
    npm run build
    npm test
    npm run smoke:ui
    npm run dev:ui
    

    Open:

    • http://127.0.0.1:4310/?section=overview&lang=zh
    • http://127.0.0.1:4310/?section=overview&lang=en

    Use npm run dev:ui over UI_MODE=true npm run dev — more stable, especially on Windows shells.

    Project Structure

    openclaw-control-center/
    ├── control-center/          # All modifications must stay within this directory
    │   ├── src/
    │   │   ├── runtime/         # Core runtime, connectors, monitors
    │   │   └── ui/              # Frontend UI components
    │   ├── .env.example
    │   └── package.json
    ├── docs/
    │   └── assets/              # Screenshots and documentation images
    ├── README.md
    └── README.en.md
    

    Critical constraint: Only modify files inside control-center/. Never modify ~/.openclaw/openclaw.json.

    Environment Configuration

    Copy .env.example to .env and configure:

    ## Security defaults — do NOT change without understanding implications
    READONLY_MODE=true
    LOCAL_TOKEN_AUTH_REQUIRED=true
    IMPORT_MUTATION_ENABLED=false
    IMPORT_MUTATION_DRY_RUN=false
    APPROVAL_ACTIONS_ENABLED=false
    APPROVAL_ACTIONS_DRY_RUN=true
    
    ## Connection
    OPENCLAW_GATEWAY_URL=http://127.0.0.1:PORT
    OPENCLAW_HOME=~/.openclaw
    
    ## UI
    PORT=4310
    DEFAULT_LANG=zh
    

    Security Flag Meanings

    Flag Default Effect
    READONLY_MODE true All state-changing endpoints disabled
    LOCAL_TOKEN_AUTH_REQUIRED true Import/export and write APIs require local token
    IMPORT_MUTATION_ENABLED false Import mutations blocked entirely
    IMPORT_MUTATION_DRY_RUN false Dry-run mode for imports when enabled
    APPROVAL_ACTIONS_ENABLED false Approval actions hard-disabled
    APPROVAL_ACTIONS_DRY_RUN true Approval actions run as dry-run when enabled

    Key Commands

    ## Development
    npm run dev:ui          # Start UI server (recommended)
    npm run dev             # One-shot monitor run, no HTTP UI
    
    ## Build & Test
    npm run build           # TypeScript compile
    npm test                # Run test suite
    npm run smoke:ui        # Smoke test the UI endpoints
    
    ## Lint
    npm run lint            # ESLint check
    npm run lint:fix        # Auto-fix lint issues
    

    TypeScript Code Examples

    Connecting to the Runtime Monitor

    import { createMonitor } from './src/runtime/monitor';
    
    const monitor = createMonitor({
      gatewayUrl: process.env.OPENCLAW_GATEWAY_URL ?? 'http://127.0.0.1:4310',
      readonlyMode: process.env.READONLY_MODE !== 'false',
      localTokenAuthRequired: process.env.LOCAL_TOKEN_AUTH_REQUIRED !== 'false',
    });
    
    // Fetch current system overview
    const overview = await monitor.getOverview();
    console.log(overview.systemStatus);      // 'healthy' | 'degraded' | 'critical'
    console.log(overview.pendingItems);      // number
    console.log(overview.activeAgents);      // Agent[]
    

    Reading Agent Staff Status

    import { StaffConnector } from './src/runtime/connectors/staff';
    
    const staff = new StaffConnector({ gatewayUrl: process.env.OPENCLAW_GATEWAY_URL });
    
    // Get agents actively executing (not just queued)
    const activeAgents = await staff.getActiveAgents();
    activeAgents.forEach(agent => {
      console.log(`${agent.name}: ${agent.status}`);
      // 'executing' | 'queued' | 'idle' | 'blocked'
      console.log(`Current task: ${agent.currentTask?.title ?? 'none'}`);
      console.log(`Last output: ${agent.lastOutput}`);
    });
    
    // Get the full staff roster including queue depth
    const roster = await staff.getRoster();
    

    Tracing Cross-Session Collaboration

    import { CollaborationTracer } from './src/runtime/connectors/collaboration';
    
    const tracer = new CollaborationTracer({ gatewayUrl: process.env.OPENCLAW_GATEWAY_URL });
    
    // Get parent-child session handoffs
    const handoffs = await tracer.getSessionHandoffs();
    handoffs.forEach(handoff => {
      console.log(`${handoff.parentSession} → ${handoff.childSession}`);
      console.log(`Delegated task: ${handoff.taskTitle}`);
      console.log(`Status: ${handoff.status}`);
    });
    
    // Get verified cross-session messages (e.g. Main ⇄ Pandas)
    const crossSessionMessages = await tracer.getCrossSessionMessages();
    crossSessionMessages.forEach(msg => {
      console.log(`${msg.fromAgent} ⇄ ${msg.toAgent}: ${msg.messageType}`);
      // messageType: 'sessions_send' | 'inter-session message'
    });
    

    Fetching Token Usage and Spend

    import { UsageConnector } from './src/runtime/connectors/usage';
    
    const usage = new UsageConnector({ gatewayUrl: process.env.OPENCLAW_GATEWAY_URL });
    
    // Today's usage
    const today = await usage.getUsageSummary('today');
    console.log(`Tokens used: ${today.tokensUsed}`);
    console.log(`Cost: $${today.costUsd.toFixed(4)}`);
    console.log(`Context pressure: ${today.contextPressure}`);
    // contextPressure: 'low' | 'medium' | 'high' | 'critical'
    
    // Usage trend over 7 days
    const trend = await usage.getUsageTrend(7);
    trend.forEach(day => {
      console.log(`${day.date}: ${day.tokensUsed} tokens, $${day.costUsd.toFixed(4)}`);
    });
    
    // Token attribution by task (who ate the scheduled task tokens)
    const attribution = await usage.getTokenAttribution();
    attribution.tasks.forEach(task => {
      console.log(`${task.title}: ${task.tokensUsed} (${task.percentOfTotal}%)`);
    });
    

    Reading Memory State

    import { MemoryConnector } from './src/runtime/connectors/memory';
    
    const memory = new MemoryConnector({
      openclawHome: process.env.OPENCLAW_HOME ?? '~/.openclaw',
    });
    
    // Get memory health per active agent (scoped to openclaw.json)
    const memoryState = await memory.getMemoryState();
    memoryState.agents.forEach(agent => {
      console.log(`${agent.name}:`);
      console.log(`  Available: ${agent.memoryAvailable}`);
      console.log(`  Searchable: ${agent.memorySearchable}`);
      console.log(`  Needs review: ${agent.needsReview}`);
    });
    
    // Read daily memory for an agent
    const dailyMemory = await memory.readDailyMemory('main-agent');
    console.log(dailyMemory.content);
    
    // Edit memory (requires READONLY_MODE=false and valid local token)
    await memory.writeDailyMemory('main-agent', updatedContent, { token: localToken });
    

    Checking Wiring Status

    import { WiringChecker } from './src/runtime/connectors/wiring';
    
    const wiring = new WiringChecker({ gatewayUrl: process.env.OPENCLAW_GATEWAY_URL });
    
    const status = await wiring.getWiringStatus();
    status.connectors.forEach(connector => {
      console.log(`${connector.name}: ${connector.status}`);
      // status: 'connected' | 'partial' | 'disconnected'
      if (connector.status !== 'connected') {
        console.log(`  Fix: ${connector.nextStep}`);
      }
    });
    

    Approving Tasks (Gated Endpoint)

    import { TaskConnector } from './src/runtime/connectors/tasks';
    
    const tasks = new TaskConnector({
      gatewayUrl: process.env.OPENCLAW_GATEWAY_URL,
      approvalActionsEnabled: process.env.APPROVAL_ACTIONS_ENABLED === 'true',
      approvalActionsDryRun: process.env.APPROVAL_ACTIONS_DRY_RUN !== 'false',
    });
    
    // This throws if APPROVAL_ACTIONS_ENABLED=false (default)
    try {
      const result = await tasks.approveTask('task-id-123', { token: localToken });
      if (result.dryRun) {
        console.log('Dry run — no actual state change');
      }
    } catch (err) {
      if (err.code === 'APPROVAL_ACTIONS_DISABLED') {
        console.log('Set APPROVAL_ACTIONS_ENABLED=true to enable approvals');
      }
    }
    

    UI Section Navigation

    Navigate via query params:

    http://127.0.0.1:4310/?section=overview&lang=zh
    http://127.0.0.1:4310/?section=usage&lang=en
    http://127.0.0.1:4310/?section=staff&lang=zh
    http://127.0.0.1:4310/?section=collaboration&lang=en
    http://127.0.0.1:4310/?section=tasks&lang=zh
    http://127.0.0.1:4310/?section=memory&lang=en
    http://127.0.0.1:4310/?section=documents&lang=zh
    http://127.0.0.1:4310/?section=settings&lang=en
    

    Sections: overview | usage | staff | collaboration | tasks | memory | documents | settings

    Languages: zh (Chinese, default) | en (English)

    Integration Patterns

    Embedding in an Existing OpenClaw Workflow

    If your OpenClaw agent needs to hand off instructions to the control center for setup, use the documented install block:

    // In your OpenClaw agent task
    const installInstructions = `
    cd openclaw-control-center
    npm install
    cp .env.example .env
    ## Edit .env: set OPENCLAW_GATEWAY_URL and OPENCLAW_HOME
    npm run build && npm test && npm run dev:ui
    `;
    

    Adding a Custom Connector

    All connectors live in control-center/src/runtime/connectors/. Follow this pattern:

    // control-center/src/runtime/connectors/my-connector.ts
    import { BaseConnector, ConnectorOptions } from './base';
    
    export interface MyData {
      id: string;
      value: string;
    }
    
    export class MyConnector extends BaseConnector {
      constructor(options: ConnectorOptions) {
        super(options);
      }
    
      async getData(): Promise<MyData[]> {
        // Always check readonly mode for any write operation
        this.assertNotReadonly('getData is readonly-safe');
    
        const response = await this.fetch('/api/my-endpoint');
        return response.json() as Promise<MyData[]>;
      }
    }
    

    Custom UI Section

    // control-center/src/ui/sections/MySection.tsx
    import React from 'react';
    import { useConnector } from '../hooks/useConnector';
    import { MyConnector } from '../../runtime/connectors/my-connector';
    
    export const MySection: React.FC = () => {
      const { data, loading, error } = useConnector(MyConnector, 'getData');
    
      if (loading) return <div>Loading...</div>;
      if (error) return <div>Error: {error.message}</div>;
    
      return (
        <ul>
          {data?.map(item => (
            <li key={item.id}>{item.value}</li>
          ))}
        </ul>
      );
    };
    

    Troubleshooting

    "Missing src/runtime" or "Missing core source"

    This almost always means the working directory is wrong:

    ## Ensure you're in the repo root
    pwd  # should end in /openclaw-control-center
    ls control-center/src/runtime  # should exist
    

    If cloned correctly but still missing: the clone was incomplete. Re-clone:

    git clone https://github.com/TianyiDataScience/openclaw-control-center.git
    

    UI Doesn't Start / Port Conflicts

    ## Check if port 4310 is in use
    lsof -i :4310
    ## or on Windows
    netstat -ano | findstr :4310
    
    ## Change port in .env
    PORT=4311
    

    Data Not Showing (Partial or Empty Sections)

    1. Open Settings → 接线状态 (Wiring Status) — it lists exactly which connectors are connected, partial, or missing.
    2. Common causes:
      • OPENCLAW_GATEWAY_URL not set or wrong port
      • OPENCLAW_HOME doesn't point to actual ~/.openclaw
      • OpenClaw subscription snapshot not at default path

    Token Auth Failures

    ## Generate a local token (see openclaw docs for token location)
    cat ~/.openclaw/local-token
    
    ## Pass via header in API calls
    curl -H "X-Local-Token: <token>" http://127.0.0.1:4310/api/tasks/approve
    

    Approval Actions Silently Do Nothing

    Check your .env:

    APPROVAL_ACTIONS_ENABLED=true   # Must be true
    APPROVAL_ACTIONS_DRY_RUN=false  # Must be false for real execution
    

    Both must be explicitly set. Default is disabled + dry-run.

    Memory Section Shows Inactive Agents

    The memory section is scoped to agents listed in openclaw.json. If deleted agents still appear:

    ## Check active agents
    cat ~/.openclaw/openclaw.json | grep -A5 '"agents"'
    

    Remove stale entries from openclaw.json — the memory section will update on next load.

    Windows Shell Issues

    Prefer npm run dev:ui over UI_MODE=true npm run dev. Cross-env variable setting behaves differently in PowerShell/CMD. The dev:ui script handles this internally.

    Prerequisites

    • Node.js + npm
    • A running OpenClaw installation with accessible Gateway
    • Read access to ~/.openclaw on the local machine
    • (Optional) ~/.codex and OpenClaw subscription snapshot for full usage data

    Требования и возможности

    Источник пакета
    https://github.com/reason-machines/trending-skills/tree/2384a003145a59276aa204b10c47262aab65a3c9/skills/openclaw-control-center

    Файлы версии

    ПутьРазмерSHA256
    SKILL.md13677649aa33b4bc7a2dd...

    Частые вопросы

    Как установить Openclaw Control Center?
    Используйте команду npx skills add reason-machines/trending-skills --skill openclaw-control-center или скачайте ZIP-архив.
    Можно ли скачать Openclaw Control Center бесплатно?
    Да, опубликованную версию можно скачать из маркетплейса бесплатно.

    Похожие инструменты

    Смотреть все
    Terraform Style GuideGenerate Terraform HCL code following HashiCorp's official style conventions and best practices. Use when writing, reviewing, or generating Terraform configurations.2ГИС: Матрица расстояний 2ГИСРассчитать время и расстояния между наборами точек.React DoctorUse when finishing a feature, fixing a bug, before committing React code, or when the user types `/doctor`, asks to scan, triage, or clean up React diagnostics. Covers lint, accessibility, bundle size, architecture. Includes a regression check and a full local-triage workflow that fetches the canonical playbook.Agent DeviceAutomates Apple-platform apps (iOS, tvOS, macOS), Android devices, and Amazon Vega OS TV apps in Vega Virtual Devices. Use when navigating apps, taking snapshots/screenshots where supported, driving TV remotes, tapping, typing, scrolling, extracting UI info, collecting evidence, or planning agent-device CLI commands.
    Комментарии

    Войдите, чтобы оставить комментарий.

    Комментариев пока нет.