From 32557dac84c4a67ee7befbc91cdfd8e477686189 Mon Sep 17 00:00:00 2001 From: Qingshan Chen <38182824+Iamlovingit@users.noreply.github.com> Date: Tue, 14 Apr 2026 20:42:50 +0800 Subject: [PATCH] docs: refresh README and add multilingual guides --- README.de.md | 266 +++++------ README.ja.md | 268 +++++------ README.ko.md | 270 +++++------ README.md | 250 +++++----- README.zh-CN.md | 257 +++++----- deployments/k3s/clawmanager.yaml | 782 ++++++++++++++++++++++++++++++ docs/admin-user-guide.md | 36 ++ docs/agent-control-plane.md | 43 ++ docs/deployment.md | 50 ++ docs/developer-guide.md | 30 ++ docs/resource-management.md | 30 ++ docs/security-skill-scanner.md | 30 ++ docs/use_guide_cn.md | 783 +++++++++++++++++++++++++++++++ docs/use_guide_de.md | 782 ++++++++++++++++++++++++++++++ docs/use_guide_en.md | 782 ++++++++++++++++++++++++++++++ docs/use_guide_ja.md | 781 ++++++++++++++++++++++++++++++ docs/use_guide_ko.md | 782 ++++++++++++++++++++++++++++++ 17 files changed, 5508 insertions(+), 714 deletions(-) create mode 100644 deployments/k3s/clawmanager.yaml create mode 100644 docs/admin-user-guide.md create mode 100644 docs/agent-control-plane.md create mode 100644 docs/deployment.md create mode 100644 docs/developer-guide.md create mode 100644 docs/resource-management.md create mode 100644 docs/security-skill-scanner.md create mode 100644 docs/use_guide_cn.md create mode 100644 docs/use_guide_de.md create mode 100644 docs/use_guide_en.md create mode 100644 docs/use_guide_ja.md create mode 100644 docs/use_guide_ko.md diff --git a/README.de.md b/README.de.md index bba273d..b6993ea 100644 --- a/README.de.md +++ b/README.de.md @@ -5,7 +5,7 @@

- Eine Kubernetes-first-Kontrollplattform zur zentralen Verwaltung von OpenClaw- und Linux-Desktop-Runtimes fuer Teams und Cluster im grossen Massstab. + ClawManager ist eine Kubernetes-native Control Plane fuer die Verwaltung von AI-Agent-Instanzen mit kontrolliertem AI-Zugriff, Runtime-Orchestrierung und wiederverwendbaren Ressourcen ueber mehrere Agent-Runtimes hinweg.

@@ -18,203 +18,187 @@

- ClawManager Platform + ClawManager Control Plane Go 1.21+ React 19 Kubernetes Native MIT License

-## News +

+ Produktueberblick | + AI Gateway | + Agent Control Plane | + Ressourcenverwaltung | + Erste Schritte +

+ +

+ + Star ClawManager on GitHub + +

-- [2026-03-26]: ๐Ÿš€๐Ÿš€ Die AI-Gateway-Dokumentation und Uebersicht wurden aktualisiert, inklusive Modell-Governance, Audit-Trace, Kostenrechnung und Risikokontrolle. Siehe [AI Gateway](#ai-gateway). -- [2026-03-20]: ๐ŸŽ‰๐ŸŽ‰ ClawManager Release โ€” ClawManager ist jetzt eine Plattform zur Verwaltung virtueller Desktops und bietet Funktionen wie Batch-Bereitstellung, Webtop-Unterstรผtzung, Zugriff รผber ein Desktop-Portal, Laufzeit-Image-Konfiguration, Markdown-Backup und Migration von OpenClaw-Speicher/Einstellungen, Cluster-Ressourcenรผbersicht sowie mehrsprachige Dokumentation. +

ClawManager in 60 Sekunden

- ClawManager Admin - ClawManager Portal - ClawManager AI Gateway +ClawManager Produktdemo

-## Was Es Ist +

+ Ein schneller Blick auf Agent-Provisionierung, Skill-Verwaltung und -Scanning sowie AI-Gateway-Governance. +

-ClawManager hilft Teams dabei, Desktop-Runtimes auf Kubernetes zentral zu deployen, zu betreiben und darauf zuzugreifen. +## Neuigkeiten -Es ist fuer Umgebungen gedacht, in denen: +Wichtige aktuelle Produkt- und Dokumentations-Updates. -- Desktop-Instanzen fuer mehrere Benutzer erstellt werden muessen -- Quotas, Images und Lebenszyklen zentral verwaltet werden sollen -- Desktop-Dienste innerhalb des Clusters bleiben sollen -- sicherer Browser-Zugriff ohne direkte Pod-Freigabe gebraucht wird +- [2026-04-08] Skill-Verwaltung und Skill-Scanning wurden der Plattform hinzugefuegt. Details siehe [Merged PR #52](https://github.com/Yuan-lab-LLM/ClawManager/pull/52). +- [2026-03-26] Die AI-Gateway-Dokumentation wurde erweitert und deckt nun Modell-Governance, Audit und Trace, Kostenrechnung sowie Risikokontrolle genauer ab. Siehe [AI Gateway Guide](./docs/aigateway.md). +- [2026-03-20] ClawManager hat sich zu einer breiteren Control Plane fuer AI-Agent-Workspaces entwickelt, mit staerkerer Runtime-Steuerung, wiederverwendbaren Ressourcen und Security-Scanning-Workflows. -## Warum Nutzer Es Waehlen +> Wenn ClawManager fuer dein Team nuetzlich ist, gib dem Projekt gerne einen Star, damit mehr Nutzer und Entwickler es entdecken. -- Ein Admin-Panel fuer Benutzer, Quotas, Instanzen und Runtime-Images -- OpenClaw-Unterstuetzung mit Import und Export von Speicher und Einstellungen -- Sicherer Desktop-Zugriff ueber die Plattform statt direkter Service-Freigabe -- AI Gateway fuer kontrollierten Modellzugriff, Audit-Trails, Kostenanalyse und Risikokontrolle -- Kubernetes-naher Deployment- und Betriebsablauf -- Geeignet sowohl fuer zentral gesteuerte Rollouts als auch fuer Self-Service-Erstellung +

+ +Star ClawManager on GitHub + +

-## Schnellstart + +## Produktueberblick -### Voraussetzungen +ClawManager bringt den Betrieb von AI-Agent-Instanzen auf Kubernetes und legt darauf drei hoeherwertige Control Planes. Teams koennen damit AI-Zugriff steuern, Runtime-Verhalten ueber Agents orchestrieren und Workspace-Faehigkeiten ueber scanbare und wiederverwendbare channel- und skill-Ressourcen bereitstellen. -- Ein funktionierender Kubernetes-Cluster -- `kubectl get nodes` funktioniert +Es eignet sich besonders fuer: -### Deployment +- Plattformteams, die AI-Agent-Instanzen fuer mehrere Nutzer betreiben +- Betriebsteams, die Runtime-Sichtbarkeit, Command-Dispatch und Desired-State-Kontrolle benoetigen +- Entwicklungsteams, die Agent-Workspaces ueber wiederverwendbare Ressourcen statt ueber manuelle Konfiguration bereitstellen wollen -Das mitgelieferte Manifest direkt anwenden: + +## Erste Schritte -```bash -kubectl apply -f deployments/k8s/clawmanager.yaml -kubectl get pods -A -kubectl get svc -A -``` +ClawManager bietet jetzt klarere Einstiegspfade sowohl fuer Standard-Kubernetes als auch fuer leichtere Cluster-Setups. Zum Evaluieren der Plattform ist es am sinnvollsten, zuerst den passenden Deployment-Pfad fuer die eigene Umgebung zu waehlen und danach dem First-Use-Flow zu folgen. -## Aus Dem Quellcode Bauen +- Standard-Kubernetes-Deployment: [deployments/k8s/clawmanager.yaml](./deployments/k8s/clawmanager.yaml) +- K3s / leichtgewichtiges Deployment: [deployments/k3s/clawmanager.yaml](./deployments/k3s/clawmanager.yaml) +- First-Login- und Schnellstart-Ablauf: [Benutzerhandbuch](./docs/use_guide_de.md) +- Deployment-Hinweise und Architekturkontext: [Deployment Guide (English)](./docs/deployment.md) -Wenn du ClawManager aus dem Quellcode starten oder paketieren moechtest, statt das mitgelieferte Kubernetes-Manifest zu verwenden: +## Drei Control Planes -### Frontend + +### AI Gateway -```bash -cd frontend -npm install -npm run build -``` +AI Gateway ist die Governance-Ebene fuer Modellzugriffe in ClawManager. Es stellt verwalteten Agent-Runtimes einen einheitlichen OpenAI-kompatiblen Einstiegspunkt bereit und legt Richtlinien-, Audit- und Kostenkontrollen ueber die Upstream-Provider. -### Backend +- Einheitlicher Einstiegspunkt fuer Modell-Traffic +- Sichere Modell-Routing-Logik und policy-gesteuerte Modellauswahl +- End-to-End-Audit- und Trace-Aufzeichnungen +- Integrierte Kostenrechnung und Nutzungsanalyse +- Regeln fuer Risikokontrolle mit Block- oder Umleitungslogik -```bash -cd backend -go mod tidy -go build -o bin/clawreef cmd/server/main.go -``` +Siehe [AI Gateway Guide (English)](./docs/aigateway.md). -### Docker-Image + +### Agent Control Plane -Das komplette Applikations-Image im Repository-Root bauen: +Agent Control Plane ist die Runtime-Orchestrierungsschicht fuer verwaltete AI-Agent-Instanzen. Jede Instanz wird damit zu einer verwalteten Runtime, die sich registrieren, Status melden, Commands empfangen und sich am Desired State der Plattform ausrichten kann. -```bash -docker build -t clawmanager:latest . -``` +- Agent-Registrierung mit sicherem Bootstrap und Session-Lifecycle +- Heartbeat-basierte Runtime-Status- und Health-Reports +- Desired-State-Synchronisierung zwischen Control Plane und Instanz +- Command-Dispatch fuer Start, Stop, Konfigurationsanwendung, Health Checks und Skill-Operationen +- Sichtbarkeit pro Instanz fuer Agent-Status, channel, skill und Command-Historie -### Standardkonten +Siehe [Agent Control Plane Guide (English)](./docs/agent-control-plane.md). -- Standard-Admin-Konto: `admin / admin123` -- Standardpasswort fuer importierte Admin-Benutzer: `admin123` -- Standardpasswort fuer importierte regulaere Benutzer: `user123` + +### Ressourcenverwaltung -### Erste Schritte +Ressourcenverwaltung ist die wiederverwendbare Asset-Schicht fuer AI-Agent-Workspaces. Teams koennen channel und skill vorbereiten, zu bundles zusammensetzen, in Instanzen injizieren und Security-Reviews direkt in diesen Ablauf integrieren. -1. Als Administrator anmelden. -2. Benutzer erstellen oder importieren und Quotas vergeben. -3. Runtime-Image-Karten in den Systemeinstellungen pruefen oder aktualisieren. -4. Als normaler Benutzer anmelden und eine Instanz erstellen. -5. Ueber Portal View oder Desktop Access auf den Desktop zugreifen. +- `Channel`-Verwaltung fuer Workspace-Konnektivitaet und Integrationsvorlagen +- `Skill`-Verwaltung fuer wiederverwendbare Faehigkeitspakete +- `Skill Scanner`-Workflows fuer Risikoanalyse und Scan-Jobs +- Bundle-basierte Ressourcenzusammenstellung fuer reproduzierbare Setups +- Injection-Snapshots zur Nachverfolgung der tatsaechlich angewendeten Inhalte -## Hauptfunktionen +Siehe [Resource Management Guide (English)](./docs/resource-management.md) und [Security / Skill Scanner Guide (English)](./docs/security-skill-scanner.md). -- Instanz-Lifecycle-Management: erstellen, starten, stoppen, neu starten, loeschen, anzeigen und synchronisieren -- Unterstuetzte Runtimes: `openclaw`, `webtop`, `ubuntu`, `debian`, `centos`, `custom` -- Runtime-Image-Kartenverwaltung im Admin-Panel -- Benutzerbezogene Quota-Kontrolle fuer CPU, Speicher, Storage, GPU und Instanzanzahl -- Cluster-Ressourcenuebersicht fuer Nodes, CPU, Speicher und Storage -- Tokenbasierter Desktop-Zugriff mit WebSocket-Weiterleitung -- AI Gateway fuer Modellverwaltung, nachvollziehbare Audit-Logs, Kostenrechnung und Risikokontrolle -- CSV-basierter Massenimport von Benutzern -- Mehrsprachige Oberflaeche +## Produktgalerie -## AI Gateway -### Unterstuetzte Modellservice-Plattformen +ClawManager ist so gestaltet, dass Administration, Zugriff und AI-Governance nicht wie getrennte Werkzeuge wirken, sondern wie eine zusammenhaengende Produkterfahrung. -ClawManager bringt integrierte Anbieter-Templates fuer folgende Plattformen mit: +### Admin Console -- OpenAI -- OpenRouter -- DeepSeek -- SiliconFlow -- Moonshot AI -- Zhipu AI -- Alibaba DashScope -- Volcengine Ark -- Groq -- Together AI -- Fireworks AI -- xAI -- Perplexity -- 01.AI -- MiniMax -- Local / Internal Endpunkte +Die Admin-Konsole vereint Nutzer, Quotas, Runtime-Operationen, Security-Kontrollen und plattformweite Richtlinien in einer Oberflaeche. Sie ist die zentrale Arbeitsflaeche fuer Teams, die AI-Agent-Infrastruktur im grossen Massstab betreiben. -`Local / Internal` kann auch fuer selbst gehostete OpenAI-kompatible Gateways, Ollama, One API und andere private Modell-Endpunkte verwendet werden. +

+ ClawManager Admin Console +

+### Portal Access -AI Gateway ist die Governance-Ebene fuer den Modellzugriff in ClawManager. Es bietet OpenClaw-Instanzen einen einheitlichen OpenAI-kompatiblen Einstiegspunkt und ergaenzt Upstream-Provider um Richtlinien, Audit und Kostenkontrolle. +Das Portal bietet Nutzern einen klaren Einstiegspunkt in ihre Workspaces. Der Zugriff erfolgt browserbasiert, waehrend Runtime-Zustand und Plattformsicht erhalten bleiben, ohne dass Infrastrukturdetails direkt exponiert werden. -- Modellverwaltung fuer regulaere und sichere Modelle sowie Provider-Anbindung, Aktivierung, Endpoint-Konfiguration und Preisrichtlinien -- End-to-End-Audit- und Trace-Aufzeichnungen fuer Requests, Responses, Routing-Entscheidungen und Risiko-Treffer -- Eingebaute Kostenrechnung mit Token-Erfassung und Nutzungsschaetzung -- Risikokontrolle ueber konfigurierbare Regeln mit automatischen Aktionen wie `block` und `route_secure_model` +

+ ClawManager Portal Access +

-Screenshots, die komplette Funktionsaufstellung und den Ablauf der Modellwahl und des Routings findest du in [docs/aigateway.md](./docs/aigateway.md). +### AI Gateway -## Produktablauf +AI Gateway integriert Modell-Governance direkt in die Workspace-Erfahrung. Audit-Trails, Kostentransparenz und risikobasiertes Routing machen AI-Nutzung zu einem Teil der Plattform statt zu einer losen Einzelintegration. -1. Ein Administrator definiert Benutzer, Quotas und Runtime-Image-Richtlinien. -2. Ein Benutzer erstellt eine OpenClaw- oder Linux-Desktop-Instanz. -3. ClawManager erstellt und verfolgt die Kubernetes-Ressourcen. -4. Der Benutzer greift ueber die Plattform auf den Desktop zu. -5. Administratoren ueberwachen Zustand und Kapazitaet ueber das Dashboard. +

+ ClawManager AI Gateway +

-## Architektur +## So funktioniert es -```text -Browser - -> ClawManager Frontend - -> ClawManager Backend - -> MySQL - -> Kubernetes API - -> Pod / PVC / Service - -> OpenClaw / Webtop / Linux Desktop Runtime -``` +1. Administratoren definieren Governance-Richtlinien und wiederverwendbare Ressourcen. +2. Nutzer erstellen oder betreten verwaltete AI-Agent-Workspaces auf Kubernetes. +3. Agents verbinden sich mit der Control Plane und melden Runtime-Zustaende. +4. Channel, skill und bundle werden kompiliert und auf Instanzen angewendet. +5. AI-Traffic fliesst ueber das AI Gateway und erhaelt Audit-, Risiko- und Kostenkontrollen. -## Konfigurationshinweise +## Entwicklerueberblick -- Instanz-Services laufen im internen Kubernetes-Netzwerk -- Desktop-Zugriff geht ueber den authentifizierten Backend-Proxy -- Runtime-Images koennen in den Systemeinstellungen ueberschrieben werden -- Das Backend sollte idealerweise innerhalb des Clusters deployt werden - -Wichtige Backend-Umgebungsvariablen: +ClawManager ist eine Kubernetes-native Plattform mit React-Frontend, Go-Backend, MySQL fuer Zustandsdaten sowie Integrationen wie `skill-scanner` und Object Storage. Die Codebasis ist nach Produktsubsystemen organisiert, daher ist der schnellste Einstieg, mit dem passenden Guide zu beginnen und danach in den Code zu gehen. -- `SERVER_ADDRESS` -- `SERVER_MODE` -- `DB_HOST` -- `DB_PORT` -- `DB_USER` -- `DB_PASSWORD` -- `DB_NAME` -- `JWT_SECRET` - -### CSV-Importvorlage +- Frontend fuer Admin- und Nutzeroberflaechen unter `frontend/` +- Backend-Services, Handler, Repositorys und Migrationen unter `backend/` +- Deployment-Assets unter `deployments/` +- Produktdokumentation und Medien unter `docs/` -```csv -Username,Email,Role,Max Instances,Max CPU Cores,Max Memory (GB),Max Storage (GB),Max GPU Count (optional) -``` - -Hinweise: - -- `Email` ist optional -- `Max GPU Count (optional)` ist optional -- alle anderen Spalten sind erforderlich +Siehe [Developer Guide (English)](./docs/developer-guide.md). + +## Dokumentation + +- [Benutzerhandbuch](./docs/use_guide_de.md) +- [Deployment Guide (English)](./docs/deployment.md) +- [Admin and User Guide (English)](./docs/admin-user-guide.md) +- [Agent Control Plane Guide (English)](./docs/agent-control-plane.md) +- [AI Gateway Guide (English)](./docs/aigateway.md) +- [Security / Skill Scanner Guide (English)](./docs/security-skill-scanner.md) +- [Resource Management Guide (English)](./docs/resource-management.md) +- [Developer Guide (English)](./docs/developer-guide.md) ## Lizenz -Dieses Projekt ist unter der MIT License veroeffentlicht. +Dieses Projekt steht unter der MIT License. ## Open Source Issues und Pull Requests sind willkommen. + +## Star History + + + + + + Star History Chart + + diff --git a/README.ja.md b/README.ja.md index a2adf92..97945f8 100644 --- a/README.ja.md +++ b/README.ja.md @@ -5,7 +5,7 @@

- ใƒใƒผใƒ ่ฆๆจกใ‹ใ‚‰ใ‚ฏใƒฉใ‚นใ‚ฟใƒผ่ฆๆจกใพใงใ€OpenClaw ใจ Linux ใƒ‡ใ‚นใ‚ฏใƒˆใƒƒใƒ—ใƒฉใƒณใ‚ฟใ‚คใƒ ใ‚’ไธ€ๅ…ƒ็ฎก็†ใ™ใ‚‹ใŸใ‚ใฎ Kubernetes-first ใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒ—ใƒฌใƒผใƒณใงใ™ใ€‚ + ClawManager ใฏใ€AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น็ฎก็†ใฎใŸใ‚ใฎ Kubernetes ใƒใ‚คใƒ†ใ‚ฃใƒ–ใชใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒ—ใƒฌใƒผใƒณใงใ™ใ€‚ใ‚ฌใƒใƒŠใƒณใ‚นไป˜ใใฎ AI ใ‚ขใ‚ฏใ‚ปใ‚นใ€ใƒฉใƒณใ‚ฟใ‚คใƒ ใ‚ชใƒผใ‚ฑใ‚นใƒˆใƒฌใƒผใ‚ทใƒงใƒณใ€ใใ—ใฆ่ค‡ๆ•ฐใฎ Agent Runtime ใซใพใŸใŒใ‚‹ๅ†ๅˆฉ็”จๅฏ่ƒฝใชใƒชใ‚ฝใƒผใ‚น็ฎก็†ใ‚’ๆไพ›ใ—ใพใ™ใ€‚

@@ -18,203 +18,187 @@

- ClawManager Platform + ClawManager Control Plane Go 1.21+ React 19 Kubernetes Native MIT License

-## News +

+ ่ฃฝๅ“็ดนไป‹ | + AI Gateway | + Agent Control Plane | + ใƒชใ‚ฝใƒผใ‚น็ฎก็† | + ใฏใ˜ใ‚ใซ +

-- [2026-03-26]: ๐Ÿš€๐Ÿš€ AI Gateway ใฎใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใจๆฆ‚่ฆใ‚’ๆ›ดๆ–ฐใ—ใ€ใƒขใƒ‡ใƒซใ‚ฌใƒใƒŠใƒณใ‚นใ€็›ฃๆŸปใƒˆใƒฌใƒผใ‚นใ€ใ‚ณใ‚นใƒˆ่จˆ็ฎ—ใ€ใƒชใ‚นใ‚ฏๅˆถๅพกใ‚’ๆ•ด็†ใ—ใพใ—ใŸใ€‚่ฉณใ—ใใฏ [AI Gateway](#ai-gateway) ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚ -- [2026-03-20]: ๐ŸŽ‰๐ŸŽ‰ ClawManager ใƒชใƒชใƒผใ‚น โ€”โ€” ClawManager ใฏ็พๅœจใ€ไปฎๆƒณใƒ‡ใ‚นใ‚ฏใƒˆใƒƒใƒ—็ฎก็†ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใจใ—ใฆๆไพ›ใ•ใ‚ŒใฆใŠใ‚Šใ€ใƒใƒƒใƒใƒ‡ใƒ—ใƒญใ‚คใ€Webtop ใ‚ตใƒใƒผใƒˆใ€ใƒ‡ใ‚นใ‚ฏใƒˆใƒƒใƒ—ใƒใƒผใ‚ฟใƒซใ‚ขใ‚ฏใ‚ปใ‚นใ€ใƒฉใƒณใ‚ฟใ‚คใƒ ใ‚คใƒกใƒผใ‚ธ่จญๅฎšใ€OpenClaw ใฎใƒกใƒขใƒช๏ผ่จญๅฎšใฎ Markdown ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใŠใ‚ˆใณ็งป่กŒใ€ใ‚ฏใƒฉใ‚นใ‚ฟใƒชใ‚ฝใƒผใ‚นใฎๆฆ‚่ฆใ€ๅคš่จ€่ชžใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใซๅฏพๅฟœใ—ใฆใ„ใพใ™ใ€‚ +

+ + Star ClawManager on GitHub + +

-## ใ“ใ‚Œใฏไฝ•ใ‹ +

60 ็ง’ใงใ‚ใ‹ใ‚‹ ClawManager

-ClawManager ใฏใ€Kubernetes ไธŠใงใƒ‡ใ‚นใ‚ฏใƒˆใƒƒใƒ—ใƒฉใƒณใ‚ฟใ‚คใƒ ใฎใƒ‡ใƒ—ใƒญใ‚คใ€้‹็”จใ€ใ‚ขใ‚ฏใ‚ปใ‚นใ‚’ไธ€ๅ…ƒๅŒ–ใ—ใพใ™ใ€‚ +

+ClawManager ่ฃฝๅ“ใƒ‡ใƒข +

- ClawManager Admin - ClawManager Portal - ClawManager AI Gateway + ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใฎ้ซ˜้€Ÿใƒ—ใƒญใƒ“ใ‚ธใƒงใƒ‹ใƒณใ‚ฐใ€Skill ็ฎก็†ใจใ‚นใ‚ญใƒฃใƒณใ€AI Gateway ใ‚ฌใƒใƒŠใƒณใ‚นใ‚’็Ÿญๆ™‚้–“ใง็ขบ่ชใงใใพใ™ใ€‚

-ๆฌกใฎใ‚ˆใ†ใช็’ฐๅขƒใซๅ‘ใ„ใฆใ„ใพใ™ใ€‚ +## ๆœ€ๆ–ฐๆƒ…ๅ ฑ -- ่ค‡ๆ•ฐใƒฆใƒผใ‚ถใƒผๅ‘ใ‘ใซใƒ‡ใ‚นใ‚ฏใƒˆใƒƒใƒ—ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ไฝœๆˆใ—ใŸใ„ -- quotaใ€ใ‚คใƒกใƒผใ‚ธใ€ใƒฉใ‚คใƒ•ใ‚ตใ‚คใ‚ฏใƒซใ‚’้›†ไธญ็ฎก็†ใ—ใŸใ„ -- ใƒ‡ใ‚นใ‚ฏใƒˆใƒƒใƒ—ใ‚ตใƒผใƒ“ใ‚นใ‚’ใ‚ฏใƒฉใ‚นใ‚ฟใƒผๅ†…้ƒจใซ้–‰ใ˜่พผใ‚ใŸใ„ -- Pod ใ‚’็›ดๆŽฅๅ…ฌ้–‹ใ›ใšใ€ๅฎ‰ๅ…จใชใƒ–ใƒฉใ‚ฆใ‚ถใƒผใ‚ขใ‚ฏใ‚ปใ‚นใ‚’ๆไพ›ใ—ใŸใ„ +ๆœ€่ฟ‘ใฎ้‡่ฆใช่ฃฝๅ“ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใจใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆๆ›ดๆ–ฐใงใ™ใ€‚ -## ้ธใฐใ‚Œใ‚‹็†็”ฑ +- [2026-04-08] ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใซ Skill ็ฎก็†ใจ Skill ใ‚นใ‚ญใƒฃใƒณใฎใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใ‚’่ฟฝๅŠ ใ—ใพใ—ใŸใ€‚่ฉณ็ดฐใฏ [Merged PR #52](https://github.com/Yuan-lab-LLM/ClawManager/pull/52) ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚ +- [2026-03-26] AI Gateway ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚’ๆ›ดๆ–ฐใ—ใ€ใƒขใƒ‡ใƒซใ‚ฌใƒใƒŠใƒณใ‚นใ€็›ฃๆŸปใจใƒˆใƒฌใƒผใ‚นใ€ใ‚ณใ‚นใƒˆ่จˆ็ฎ—ใ€ใƒชใ‚นใ‚ฏๅˆถๅพกใฎ่ชฌๆ˜Žใ‚’ๅผทๅŒ–ใ—ใพใ—ใŸใ€‚่ฉณใ—ใใฏ [AI Gateway Guide](./docs/aigateway.md) ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚ +- [2026-03-20] ClawManager ใฏใ€AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นๅ‘ใ‘ใฎใ‚ˆใ‚Šๅบƒใ„ใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒ—ใƒฌใƒผใƒณใธใจ้€ฒๅŒ–ใ—ใ€ใƒฉใƒณใ‚ฟใ‚คใƒ ๅˆถๅพกใ€ๅ†ๅˆฉ็”จๅฏ่ƒฝใชใƒชใ‚ฝใƒผใ‚นใ€ๅฎ‰ๅ…จใ‚นใ‚ญใƒฃใƒณใฎใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใ‚’ๅผทๅŒ–ใ—ใพใ—ใŸใ€‚ -- ใƒฆใƒผใ‚ถใƒผใ€quotaใ€ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ€ใƒฉใƒณใ‚ฟใ‚คใƒ ใ‚คใƒกใƒผใ‚ธใ‚’ใพใจใ‚ใฆ็ฎก็†ใงใใ‚‹ๅ˜ไธ€ใฎ็ฎก็†็”ป้ข -- OpenClaw ใฎใƒกใƒขใƒชใ‚„่จญๅฎšใฎใ‚คใƒณใƒใƒผใƒˆ/ใ‚จใ‚ฏใ‚นใƒใƒผใƒˆใ‚’ใ‚ตใƒใƒผใƒˆ -- ใ‚ตใƒผใƒ“ใ‚นใ‚’็›ดๆŽฅๅ…ฌ้–‹ใ›ใšใ€ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ็ตŒ็”ฑใงๅฎ‰ๅ…จใซใƒ‡ใ‚นใ‚ฏใƒˆใƒƒใƒ—ใธใ‚ขใ‚ฏใ‚ปใ‚น -- AI Gateway ใซใ‚ˆใ‚‹ๅˆถๅพกใ•ใ‚ŒใŸใƒขใƒ‡ใƒซใ‚ขใ‚ฏใ‚ปใ‚นใ€็›ฃๆŸปใƒˆใƒฌใƒผใ‚นใ€ใ‚ณใ‚นใƒˆๅˆ†ๆžใ€ใƒชใ‚นใ‚ฏๅˆถๅพก -- Kubernetes ใซ่‡ช็„ถใซ้ฆดๆŸ“ใ‚€ใƒ‡ใƒ—ใƒญใ‚คใจ้‹็”จใƒ•ใƒญใƒผ -- ็ฎก็†่€…ไธปๅฐŽใฎๅฑ•้–‹ใซใ‚‚ใ‚ปใƒซใƒ•ใ‚ตใƒผใƒ“ใ‚นๅž‹ใฎๅˆฉ็”จใซใ‚‚ๅฏพๅฟœ +> ClawManager ใŒใ‚ใชใŸใฎใƒใƒผใƒ ใซๅฝน็ซ‹ใคใชใ‚‰ใ€ใœใฒ Star ใ‚’ไป˜ใ‘ใฆใ€ใ‚ˆใ‚Šๅคšใใฎใƒฆใƒผใ‚ถใƒผใ‚„้–‹็™บ่€…ใซๅฑŠใใ‚ˆใ†ๅฟœๆดใ—ใฆใใ ใ•ใ„ใ€‚ -## ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆ +

+ +Star ClawManager on GitHub + +

-### ๅ‰ๆๆกไปถ + +## ่ฃฝๅ“็ดนไป‹ -- ๅˆฉ็”จๅฏ่ƒฝใช Kubernetes ใ‚ฏใƒฉใ‚นใ‚ฟใƒผ -- `kubectl get nodes` ใŒๆญฃๅธธใซๅ‹•ไฝœใ™ใ‚‹ใ“ใจ +ClawManager ใฏใ€AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใฎ้‹็”จใ‚’ Kubernetes ใซๆŒใก่พผใฟใ€ใใฎใƒฉใƒณใ‚ฟใ‚คใƒ ๅŸบ็›คใฎไธŠใซ 3 ใคใฎ้ซ˜ๆฌกใชใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒ—ใƒฌใƒผใƒณใ‚’้‡ใญใพใ™ใ€‚ใƒใƒผใƒ ใฏใ“ใ‚Œใ‚’ไฝฟใฃใฆ AI ใ‚ขใ‚ฏใ‚ปใ‚นใ‚’็ตฑๅˆถใ—ใ€Agent ใ‚’้€šใ˜ใฆใƒฉใƒณใ‚ฟใ‚คใƒ ๅ‹•ไฝœใ‚’็ทจๆˆใ—ใ€ใ‚นใ‚ญใƒฃใƒณๅฏ่ƒฝใงๅ†ๅˆฉ็”จๅฏ่ƒฝใช channel ใจ skill ใ‚’็”จใ„ใฆใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นๆฉŸ่ƒฝใ‚’ๆไพ›ใงใใพใ™ใ€‚ -### ใƒ‡ใƒ—ใƒญใ‚ค +ๆฌกใฎใ‚ˆใ†ใชใƒใƒผใƒ ใซๅ‘ใ„ใฆใ„ใพใ™ใ€‚ -ๅŒๆขฑใฎใƒžใƒ‹ใƒ•ใ‚งใ‚นใƒˆใ‚’ใใฎใพใพ้ฉ็”จใ—ใพใ™ใ€‚ +- ่ค‡ๆ•ฐใƒฆใƒผใ‚ถใƒผๅ‘ใ‘ใซ AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’้‹็”จใ™ใ‚‹ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใƒใƒผใƒ  +- ใƒฉใƒณใ‚ฟใ‚คใƒ ใฎๅฏ่ฆณๆธฌๆ€งใ€ใ‚ณใƒžใƒณใƒ‰้…ๅธƒใ€ desired state ็ฎก็†ใŒๅฟ…่ฆใช้‹็”จใƒใƒผใƒ  +- ๆ‰‹ไฝœๆฅญใฎ่จญๅฎšใงใฏใชใใ€ๅ†ๅˆฉ็”จๅฏ่ƒฝใชใƒชใ‚ฝใƒผใ‚นใง Agent ใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นใ‚’ๅฑŠใ‘ใŸใ„้–‹็™บใƒใƒผใƒ  -```bash -kubectl apply -f deployments/k8s/clawmanager.yaml -kubectl get pods -A -kubectl get svc -A -``` + +## ใฏใ˜ใ‚ใซ -## ใ‚ฝใƒผใ‚นใ‚ณใƒผใƒ‰ใ‹ใ‚‰ใƒ“ใƒซใƒ‰ +ClawManager ใฏใ€ๆจ™ๆบ– Kubernetes ใจ่ปฝ้‡ใ‚ฏใƒฉใ‚นใ‚ฟใฎไธกๆ–นใซๅฏพใ—ใฆใ€ใ‚ˆใ‚Šๆ˜Ž็ขบใชๅฐŽๅ…ฅๅ…ฅๅฃใ‚’ๆไพ›ใ—ใพใ™ใ€‚ใพใšใฏ่‡ชๅˆ†ใฎ็’ฐๅขƒใซๅˆใ†ใƒ‡ใƒ—ใƒญใ‚คใƒ‘ใ‚นใ‚’้ธใณใ€ใใฎๅพŒใซๅˆๅ›žใƒญใ‚ฐใ‚คใƒณใจๅŸบๆœฌๆ“ไฝœใฎใƒ•ใƒญใƒผใธ้€ฒใ‚€ใฎใŒใŠใ™ใ™ใ‚ใงใ™ใ€‚ -ๅŒๆขฑใฎ Kubernetes ใƒžใƒ‹ใƒ•ใ‚งใ‚นใƒˆใงใฏใชใใ€ใ‚ฝใƒผใ‚นใ‚ณใƒผใƒ‰ใ‹ใ‚‰ ClawManager ใ‚’ๅฎŸ่กŒใพใŸใฏใƒ‘ใƒƒใ‚ฑใƒผใ‚ธๅŒ–ใ—ใŸใ„ๅ ดๅˆ: +- ๆจ™ๆบ– Kubernetes ใƒ‡ใƒ—ใƒญใ‚ค: [deployments/k8s/clawmanager.yaml](./deployments/k8s/clawmanager.yaml) +- K3s / ่ปฝ้‡ใ‚ฏใƒฉใ‚นใ‚ฟๅ‘ใ‘ใƒ‡ใƒ—ใƒญใ‚ค: [deployments/k3s/clawmanager.yaml](./deployments/k3s/clawmanager.yaml) +- ๅˆๅ›žใƒญใ‚ฐใ‚คใƒณใจๅŸบๆœฌๆ“ไฝœใƒ•ใƒญใƒผ: [ใƒฆใƒผใ‚ถใƒผใ‚ฌใ‚คใƒ‰](./docs/use_guide_ja.md) +- ใƒ‡ใƒ—ใƒญใ‚ค่ชฌๆ˜Žใจใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃ่ƒŒๆ™ฏ: [Deployment Guide (English)](./docs/deployment.md) -### ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ +## 3 ใคใฎใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒ—ใƒฌใƒผใƒณ -```bash -cd frontend -npm install -npm run build -``` + +### AI Gateway -### ใƒใƒƒใ‚ฏใ‚จใƒณใƒ‰ +AI Gateway ใฏใ€ClawManager ใซใŠใ‘ใ‚‹ใƒขใƒ‡ใƒซใ‚ขใ‚ฏใ‚ปใ‚นใฎใ‚ฌใƒใƒŠใƒณใ‚นใƒ—ใƒฌใƒผใƒณใงใ™ใ€‚็ฎก็†ๅฏพ่ฑกใฎ Agent Runtime ใซ็ตฑไธ€ใ•ใ‚ŒใŸ OpenAI ไบ’ๆ›ใ‚จใƒณใƒˆใƒชใƒใ‚คใƒณใƒˆใ‚’ๆไพ›ใ—ใ€ไธŠๆตใƒ—ใƒญใƒใ‚คใƒ€ใฎไธŠใซใƒใƒชใ‚ทใƒผใ€็›ฃๆŸปใ€ใ‚ณใ‚นใƒˆๅˆถๅพกใ‚’่ฟฝๅŠ ใ—ใพใ™ใ€‚ -```bash -cd backend -go mod tidy -go build -o bin/clawreef cmd/server/main.go -``` +- ใƒขใƒ‡ใƒซใƒˆใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใฎ็ตฑไธ€ใ‚จใƒณใƒˆใƒชใƒใ‚คใƒณใƒˆ +- ใ‚ปใ‚ญใƒฅใ‚ขใƒขใƒ‡ใƒซใฎใƒซใƒผใƒ†ใ‚ฃใƒณใ‚ฐใจใƒใƒชใ‚ทใƒผ้ง†ๅ‹•ใฎใƒขใƒ‡ใƒซ้ธๆŠž +- ใ‚จใƒณใƒ‰ใƒ„ใƒผใ‚จใƒณใƒ‰ใฎ็›ฃๆŸปใƒปใƒˆใƒฌใƒผใ‚น่จ˜้Œฒ +- ็ต„ใฟ่พผใฟใฎใ‚ณใ‚นใƒˆ่จˆ็ฎ—ใจๅˆฉ็”จๅˆ†ๆž +- ใƒ–ใƒญใƒƒใ‚ฏใ‚„ใƒซใƒผใƒˆๅค‰ๆ›ดใ‚’่กŒใˆใ‚‹ใƒชใ‚นใ‚ฏๅˆถๅพกใƒซใƒผใƒซ -### Docker ใ‚คใƒกใƒผใ‚ธ +[AI Gateway Guide (English)](./docs/aigateway.md) ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚ -ใƒชใƒใ‚ธใƒˆใƒชใƒซใƒผใƒˆใงใ‚ขใƒ—ใƒชๅ…จไฝ“ใฎใ‚คใƒกใƒผใ‚ธใ‚’ใƒ“ใƒซใƒ‰ใ—ใพใ™ใ€‚ + +### Agent Control Plane -```bash -docker build -t clawmanager:latest . -``` +Agent Control Plane ใฏใ€็ฎก็†ๅฏพ่ฑก AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใฎใƒฉใƒณใ‚ฟใ‚คใƒ ็ทจๆˆใƒฌใ‚คใƒคใƒผใงใ™ใ€‚ๅ„ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ใ€็™ป้Œฒใƒป็Šถๆ…‹ๅ ฑๅ‘Šใƒปใ‚ณใƒžใƒณใƒ‰ๅ—ไฟกใƒปใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅด desired state ใธใฎๆ•ดๅˆใŒๅฏ่ƒฝใช็ฎก็†ๅฏพ่ฑกใƒฉใƒณใ‚ฟใ‚คใƒ ใธใจๅค‰ใˆใพใ™ใ€‚ -### ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใ‚ขใ‚ซใ‚ฆใƒณใƒˆ +- ใ‚ปใ‚ญใƒฅใ‚ขใชใƒ–ใƒผใƒˆใ‚นใƒˆใƒฉใƒƒใƒ—ใจใ‚ปใƒƒใ‚ทใƒงใƒณใƒฉใ‚คใƒ•ใ‚ตใ‚คใ‚ฏใƒซใซใ‚ˆใ‚‹ Agent ็™ป้Œฒ +- ใƒใƒผใƒˆใƒ“ใƒผใƒˆใƒ™ใƒผใ‚นใฎใƒฉใƒณใ‚ฟใ‚คใƒ ็Šถๆ…‹ใจใƒ˜ใƒซใ‚นๅ ฑๅ‘Š +- ใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒ—ใƒฌใƒผใƒณใจใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น้–“ใฎ desired state ๅŒๆœŸ +- ่ตทๅ‹•ใ€ๅœๆญขใ€่จญๅฎš้ฉ็”จใ€ใƒ˜ใƒซใ‚นใƒใ‚งใƒƒใ‚ฏใ€Skill ๆ“ไฝœใฎใ‚ณใƒžใƒณใƒ‰้…ๅธƒ +- ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นๅ˜ไฝใงใฎ Agent ็Šถๆ…‹ใ€channelใ€skillใ€ใ‚ณใƒžใƒณใƒ‰ๅฑฅๆญดใฎๅฏ่ฆ–ๅŒ– -- ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ็ฎก็†่€…ใ‚ขใ‚ซใ‚ฆใƒณใƒˆ: `admin / admin123` -- ใ‚คใƒณใƒใƒผใƒˆใ—ใŸ็ฎก็†่€…ใƒฆใƒผใ‚ถใƒผใฎใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใƒ‘ใ‚นใƒฏใƒผใƒ‰: `admin123` -- ใ‚คใƒณใƒใƒผใƒˆใ—ใŸไธ€่ˆฌใƒฆใƒผใ‚ถใƒผใฎใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใƒ‘ใ‚นใƒฏใƒผใƒ‰: `user123` +[Agent Control Plane Guide (English)](./docs/agent-control-plane.md) ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚ -### ๆœ€ๅˆใฎไฝฟใ„ๆ–น + +### ใƒชใ‚ฝใƒผใ‚น็ฎก็† -1. ็ฎก็†่€…ใจใ—ใฆใƒญใ‚ฐใ‚คใƒณใ—ใพใ™ใ€‚ -2. ใƒฆใƒผใ‚ถใƒผใ‚’ไฝœๆˆใพใŸใฏใ‚คใƒณใƒใƒผใƒˆใ—ใ€quota ใ‚’ๅ‰ฒใ‚Šๅฝ“ใฆใพใ™ใ€‚ -3. ใ‚ทใ‚นใƒ†ใƒ ่จญๅฎšใงใƒฉใƒณใ‚ฟใ‚คใƒ ใ‚คใƒกใƒผใ‚ธใ‚ซใƒผใƒ‰ใ‚’็ขบ่ชใพใŸใฏๆ›ดๆ–ฐใ—ใพใ™ใ€‚ -4. ไธ€่ˆฌใƒฆใƒผใ‚ถใƒผใจใ—ใฆใƒญใ‚ฐใ‚คใƒณใ—ใ€ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ไฝœๆˆใ—ใพใ™ใ€‚ -5. Portal View ใพใŸใฏ Desktop Access ใ‹ใ‚‰ใƒ‡ใ‚นใ‚ฏใƒˆใƒƒใƒ—ใซใ‚ขใ‚ฏใ‚ปใ‚นใ—ใพใ™ใ€‚ +ใƒชใ‚ฝใƒผใ‚น็ฎก็†ใฏใ€AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นๅ‘ใ‘ใฎๅ†ๅˆฉ็”จๅฏ่ƒฝใช่ณ‡็”ฃใƒฌใ‚คใƒคใƒผใงใ™ใ€‚ใƒใƒผใƒ ใฏ channel ใ‚„ skill ใ‚’ๆบ–ๅ‚™ใ—ใ€bundle ใจใ—ใฆ็ต„ใฟๅˆใ‚ใ›ใ€ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใธๆณจๅ…ฅใ—ใ€ๅฎ‰ๅ…จใƒฌใƒ“ใƒฅใƒผใ‚’ใใฎๆตใ‚Œใซ็ต„ใฟ่พผใ‚€ใ“ใจใŒใงใใพใ™ใ€‚ -## ไธปใชๆฉŸ่ƒฝ +- `Channel` ็ฎก็†: ใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นๆŽฅ็ถšใจ็ตฑๅˆใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆ +- `Skill` ็ฎก็†: ๅ†ๅˆฉ็”จๅฏ่ƒฝใชๆฉŸ่ƒฝใƒ‘ใƒƒใ‚ฑใƒผใ‚ธ +- `Skill Scanner` ใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผ: ใƒชใ‚นใ‚ฏ็ขบ่ชใจใ‚นใ‚ญใƒฃใƒณใ‚ธใƒงใƒ– +- bundle ใƒ™ใƒผใ‚นใฎใƒชใ‚ฝใƒผใ‚นๆง‹ๆˆ: ๅ†็พๆ€งใฎ้ซ˜ใ„ใ‚ปใƒƒใƒˆใ‚ขใƒƒใƒ— +- ๆณจๅ…ฅใ‚นใƒŠใƒƒใƒ—ใ‚ทใƒงใƒƒใƒˆใซใ‚ˆใ‚‹ๅฎŸ้ฉ็”จๅ†…ๅฎนใฎ่ฟฝ่ทก -- ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใฎใƒฉใ‚คใƒ•ใ‚ตใ‚คใ‚ฏใƒซ็ฎก็†: ไฝœๆˆใ€่ตทๅ‹•ใ€ๅœๆญขใ€ๅ†่ตทๅ‹•ใ€ๅ‰Š้™คใ€ๅ‚็…งใ€ๅŒๆœŸ -- ๅฏพๅฟœใƒฉใƒณใ‚ฟใ‚คใƒ : `openclaw`ใ€`webtop`ใ€`ubuntu`ใ€`debian`ใ€`centos`ใ€`custom` -- ็ฎก็†็”ป้ขใ‹ใ‚‰ใฎใƒฉใƒณใ‚ฟใ‚คใƒ ใ‚คใƒกใƒผใ‚ธใ‚ซใƒผใƒ‰็ฎก็† -- CPUใ€ใƒกใƒขใƒชใ€ใ‚นใƒˆใƒฌใƒผใ‚ธใ€GPUใ€ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นๆ•ฐใซๅฏพใ™ใ‚‹ใƒฆใƒผใ‚ถใƒผๅ˜ไฝใฎ quota ๅˆถๅพก -- ใƒŽใƒผใƒ‰ใ€CPUใ€ใƒกใƒขใƒชใ€ใ‚นใƒˆใƒฌใƒผใ‚ธใ‚’ๅฏพ่ฑกใซใ—ใŸใ‚ฏใƒฉใ‚นใ‚ฟใƒผใƒชใ‚ฝใƒผใ‚นๆฆ‚่ฆ -- ใƒˆใƒผใ‚ฏใƒณใƒ™ใƒผใ‚นใฎใƒ‡ใ‚นใ‚ฏใƒˆใƒƒใƒ—ใ‚ขใ‚ฏใ‚ปใ‚นใจ WebSocket ่ปข้€ -- AI Gateway ใซใ‚ˆใ‚‹ใƒขใƒ‡ใƒซ็ฎก็†ใ€่ฟฝ่ทกๅฏ่ƒฝใช็›ฃๆŸปใƒญใ‚ฐใ€ใ‚ณใ‚นใƒˆ่จˆ็ฎ—ใ€ใƒชใ‚นใ‚ฏๅˆถๅพก -- CSV ใƒ™ใƒผใ‚นใฎไธ€ๆ‹ฌใƒฆใƒผใ‚ถใƒผใ‚คใƒณใƒใƒผใƒˆ -- ๅคš่จ€่ชžใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น +[Resource Management Guide (English)](./docs/resource-management.md) ใจ [Security / Skill Scanner Guide (English)](./docs/security-skill-scanner.md) ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚ -## AI Gateway -### ๅฏพๅฟœใ—ใฆใ„ใ‚‹ใƒขใƒ‡ใƒซใ‚ตใƒผใƒ“ใ‚นใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ  +## ่ฃฝๅ“ใ‚ฎใƒฃใƒฉใƒชใƒผ -ClawManager ใซใฏไปฅไธ‹ใฎใƒขใƒ‡ใƒซใ‚ตใƒผใƒ“ใ‚นใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ็”จใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆใŒ็ต„ใฟ่พผใพใ‚Œใฆใ„ใพใ™ใ€‚ +ClawManager ใฏใ€็ฎก็†ใ€ใ‚ขใ‚ฏใ‚ปใ‚นใ€AI ใ‚ฌใƒใƒŠใƒณใ‚นใ‚’ๅˆฅใ€…ใฎใƒ„ใƒผใƒซใจใ—ใฆๆ‰ฑใ†ใฎใงใฏใชใใ€ใฒใจใคใฎ่ฃฝๅ“ไฝ“้จ“ใจใ—ใฆใพใจใ‚ใ‚‹ใ‚ˆใ†่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ -- OpenAI -- OpenRouter -- DeepSeek -- SiliconFlow -- Moonshot AI -- Zhipu AI -- Alibaba DashScope -- Volcengine Ark -- Groq -- Together AI -- Fireworks AI -- xAI -- Perplexity -- 01.AI -- MiniMax -- Local / Internal ใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆ +### ็ฎก็†ใ‚ณใƒณใ‚ฝใƒผใƒซ -`Local / Internal` ใฏใ€่‡ชๅ‰ใฎ OpenAI-compatible ใ‚ฒใƒผใƒˆใ‚ฆใ‚งใ‚คใ€Ollamaใ€One APIใ€ใใฎไป–ใฎ็คพๅ†…ใƒขใƒ‡ใƒซใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆใฎๆŽฅ็ถšใซใ‚‚ๅˆฉ็”จใงใใพใ™ใ€‚ +็ฎก็†ใ‚ณใƒณใ‚ฝใƒผใƒซใงใฏใ€ใƒฆใƒผใ‚ถใƒผใ€ใ‚ฏใ‚ฉใƒผใ‚ฟใ€ใƒฉใƒณใ‚ฟใ‚คใƒ ๆ“ไฝœใ€ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃๅˆถๅพกใ€ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใƒฌใƒ™ใƒซใฎใƒใƒชใ‚ทใƒผใ‚’ใฒใจใคใฎ็”ป้ขใซ้›†็ด„ใ—ใพใ™ใ€‚ๅคง่ฆๆจกใช AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆๅŸบ็›คใ‚’้‹็”จใ™ใ‚‹ใƒใƒผใƒ ใฎไธญๅฟƒใจใชใ‚‹ไฝœๆฅญ้ขใงใ™ใ€‚ +

+ ClawManager ็ฎก็†ใ‚ณใƒณใ‚ฝใƒผใƒซ +

-AI Gateway ใฏใ€ClawManager ใซใŠใ‘ใ‚‹ใƒขใƒ‡ใƒซใ‚ขใ‚ฏใ‚ปใ‚นใฎใ‚ฌใƒใƒŠใƒณใ‚นใƒ—ใƒฌใƒผใƒณใงใ™ใ€‚OpenClaw ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใซๅ˜ไธ€ใฎ OpenAI ไบ’ๆ›ใ‚จใƒณใƒˆใƒชใƒผใƒใ‚คใƒณใƒˆใ‚’ๆไพ›ใ—ใ€ไธŠๆต Provider ใฎไธŠใซใƒใƒชใ‚ทใƒผใ€็›ฃๆŸปใ€ใ‚ณใ‚นใƒˆๅˆถๅพกใ‚’่ฟฝๅŠ ใ—ใพใ™ใ€‚ +### Portal Access -- ้€šๅธธใƒขใƒ‡ใƒซใจใ‚ปใ‚ญใƒฅใ‚ขใƒขใƒ‡ใƒซใฎ็ฎก็†ใ€Provider ๆŽฅ็ถšใ€ๆœ‰ๅŠนๅŒ–ใ€ใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆ่จญๅฎšใ€ไพกๆ ผใƒใƒชใ‚ทใƒผ -- ใƒชใ‚ฏใ‚จใ‚นใƒˆใ€ใƒฌใ‚นใƒใƒณใ‚นใ€ใƒซใƒผใƒ†ใ‚ฃใƒณใ‚ฐๅˆคๆ–ญใ€ใƒชใ‚นใ‚ฏใƒ’ใƒƒใƒˆใ‚’ๅฏพ่ฑกใซใ—ใŸใ‚จใƒณใƒ‰ใƒ„ใƒผใ‚จใƒณใƒ‰ใฎ็›ฃๆŸป/ใƒˆใƒฌใƒผใ‚น่จ˜้Œฒ -- ใƒˆใƒผใ‚ฏใƒณ้›†่จˆใจๅˆฉ็”จ่ฆ‹็ฉใ‚‚ใ‚Šใ‚’ๅซใ‚€็ต„ใฟ่พผใฟใฎใ‚ณใ‚นใƒˆ่จˆ็ฎ— -- ่จญๅฎšๅฏ่ƒฝใชใƒซใƒผใƒซใซๅŸบใฅใใƒชใ‚นใ‚ฏๅˆถๅพกใจใ€`block` ใ‚„ `route_secure_model` ใชใฉใฎ่‡ชๅ‹•ใ‚ขใ‚ฏใ‚ทใƒงใƒณ +Portal ใฏใ€ใƒฆใƒผใ‚ถใƒผใซไธ€่ฒซใ—ใŸใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นๅ…ฅๅฃใ‚’ๆไพ›ใ—ใพใ™ใ€‚ใƒ–ใƒฉใ‚ฆใ‚ถใƒ™ใƒผใ‚นใงใ‚ขใ‚ฏใ‚ปใ‚นใ—ใชใŒใ‚‰ใ€ใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒ—ใƒฌใƒผใƒณใจๅŒๆœŸใ—ใŸใƒฉใƒณใ‚ฟใ‚คใƒ ็Šถๆ…‹ใ‚’็ขบ่ชใงใใ€ใ‚คใƒณใƒ•ใƒฉใฎ็ดฐ้ƒจใ‚’็›ดๆŽฅๆ„่ญ˜ใ™ใ‚‹ๅฟ…่ฆใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚ -ใ‚นใ‚ฏใƒชใƒผใƒณใ‚ทใƒงใƒƒใƒˆใ€่ฉณ็ดฐใชๆฉŸ่ƒฝ่ชฌๆ˜Žใ€ใƒขใƒ‡ใƒซ้ธๆŠžใจใƒซใƒผใƒ†ใ‚ฃใƒณใ‚ฐใฎๆตใ‚Œใซใคใ„ใฆใฏ [docs/aigateway.md](./docs/aigateway.md) ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚ +

+ ClawManager Portal Access +

+ +### AI Gateway -## ๅˆฉ็”จใฎๆตใ‚Œ +AI Gateway ใฏใ€ใƒขใƒ‡ใƒซๅˆฉ็”จใฎใ‚ฌใƒใƒŠใƒณใ‚นใ‚’ใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นไฝ“้จ“ใใฎใ‚‚ใฎใซ็ตฑๅˆใ—ใพใ™ใ€‚็›ฃๆŸปใƒญใ‚ฐใ€ใ‚ณใ‚นใƒˆๅฏ่ฆ–ๅŒ–ใ€ใƒชใ‚นใ‚ฏใƒซใƒผใƒ†ใ‚ฃใƒณใ‚ฐใ‚’้€šใ˜ใฆใ€AI ๅˆฉ็”จใ‚’ๅ˜็™บใฎ็ตฑๅˆใงใฏใชใใ€ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๆฉŸ่ƒฝใจใ—ใฆๆ‰ฑใˆใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚ -1. ็ฎก็†่€…ใŒใƒฆใƒผใ‚ถใƒผใ€quotaใ€ใƒฉใƒณใ‚ฟใ‚คใƒ ใ‚คใƒกใƒผใ‚ธๆ–น้‡ใ‚’ๅฎš็พฉใ—ใพใ™ใ€‚ -2. ใƒฆใƒผใ‚ถใƒผใŒ OpenClaw ใพใŸใฏ Linux ใƒ‡ใ‚นใ‚ฏใƒˆใƒƒใƒ—ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ไฝœๆˆใ—ใพใ™ใ€‚ -3. ClawManager ใŒ Kubernetes ใƒชใ‚ฝใƒผใ‚นใ‚’ไฝœๆˆใ—ใ€็Šถๆ…‹ใ‚’่ฟฝ่ทกใ—ใพใ™ใ€‚ -4. ใƒฆใƒผใ‚ถใƒผใŒใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ็ตŒ็”ฑใงใƒ‡ใ‚นใ‚ฏใƒˆใƒƒใƒ—ใซใ‚ขใ‚ฏใ‚ปใ‚นใ—ใพใ™ใ€‚ -5. ็ฎก็†่€…ใŒใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰ใ‹ใ‚‰ๅฅๅ…จๆ€งใจๅฎน้‡ใ‚’็›ฃ่ฆ–ใ—ใพใ™ใ€‚ +

+ ClawManager AI Gateway +

-## ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃ +## ๅ‹•ไฝœใฎๆตใ‚Œ -```text -Browser - -> ClawManager Frontend - -> ClawManager Backend - -> MySQL - -> Kubernetes API - -> Pod / PVC / Service - -> OpenClaw / Webtop / Linux Desktop Runtime -``` +1. ็ฎก็†่€…ใŒใ‚ฌใƒใƒŠใƒณใ‚นใƒใƒชใ‚ทใƒผใจๅ†ๅˆฉ็”จๅฏ่ƒฝใชใƒชใ‚ฝใƒผใ‚นใ‚’ๅฎš็พฉใ—ใพใ™ใ€‚ +2. ใƒฆใƒผใ‚ถใƒผใŒ Kubernetes ไธŠใง็ฎก็†ๅฏพ่ฑกใฎ AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นใ‚’ไฝœๆˆใพใŸใฏๅˆฉ็”จใ—ใพใ™ใ€‚ +3. Agent ใŒใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒ—ใƒฌใƒผใƒณใธๆŽฅ็ถšใ—ใ€ใƒฉใƒณใ‚ฟใ‚คใƒ ็Šถๆ…‹ใ‚’ๅ ฑๅ‘Šใ—ใพใ™ใ€‚ +4. Channelใ€skillใ€bundle ใŒใ‚ณใƒณใƒ‘ใ‚คใƒซใ•ใ‚Œใ€ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใธ้ฉ็”จใ•ใ‚Œใพใ™ใ€‚ +5. AI ใƒˆใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใฏ AI Gateway ใ‚’็ตŒ็”ฑใ—ใ€็›ฃๆŸปใ€ใƒชใ‚นใ‚ฏใ€ใ‚ณใ‚นใƒˆๅˆถๅพกใŒไป˜ไธŽใ•ใ‚Œใพใ™ใ€‚ -## ่จญๅฎšใƒกใƒข +## ้–‹็™บ่€…ๅ‘ใ‘ๆฆ‚่ฆ -- ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚ตใƒผใƒ“ใ‚นใฏ Kubernetes ใฎๅ†…้ƒจใƒใƒƒใƒˆใƒฏใƒผใ‚ฏไธŠใงๅ‹•ไฝœใ—ใพใ™ -- ใƒ‡ใ‚นใ‚ฏใƒˆใƒƒใƒ—ใ‚ขใ‚ฏใ‚ปใ‚นใฏ่ช่จผๆธˆใฟใƒใƒƒใ‚ฏใ‚จใƒณใƒ‰ใƒ—ใƒญใ‚ญใ‚ทใ‚’็ตŒ็”ฑใ—ใพใ™ -- ใƒฉใƒณใ‚ฟใ‚คใƒ ใ‚คใƒกใƒผใ‚ธใฏใ‚ทใ‚นใƒ†ใƒ ่จญๅฎšใ‹ใ‚‰ไธŠๆ›ธใใงใใพใ™ -- ใƒใƒƒใ‚ฏใ‚จใƒณใƒ‰ใฏใ‚ฏใƒฉใ‚นใ‚ฟใƒผๅ†…้ƒจใซ้…็ฝฎใ™ใ‚‹ใฎใŒ็†ๆƒณใงใ™ - -ไธปใชใƒใƒƒใ‚ฏใ‚จใƒณใƒ‰็’ฐๅขƒๅค‰ๆ•ฐ: +ClawManager ใฏใ€React ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใ€Go ใƒใƒƒใ‚ฏใ‚จใƒณใƒ‰ใ€็Šถๆ…‹็ฎก็†็”จ MySQLใ€ใใ—ใฆ `skill-scanner` ใ‚„ใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ‚นใƒˆใƒฌใƒผใ‚ธ็ตฑๅˆใ‚’ๅซใ‚€ Kubernetes ใƒใ‚คใƒ†ใ‚ฃใƒ–ใชใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใงใ™ใ€‚ใ‚ณใƒผใƒ‰ใƒ™ใƒผใ‚นใฏ่ฃฝๅ“ใ‚ตใƒ–ใ‚ทใ‚นใƒ†ใƒ ใ”ใจใซๆ•ด็†ใ•ใ‚Œใฆใ„ใ‚‹ใŸใ‚ใ€่ฉฒๅฝ“ใ‚ฌใ‚คใƒ‰ใ‹ใ‚‰ๅ…ฅใ‚Šใ€ใใฎๅพŒใ‚ณใƒผใƒ‰ใธ้€ฒใ‚€ใฎใŒๆœ€ใ‚‚ๅŠน็އ็š„ใงใ™ใ€‚ -- `SERVER_ADDRESS` -- `SERVER_MODE` -- `DB_HOST` -- `DB_PORT` -- `DB_USER` -- `DB_PASSWORD` -- `DB_NAME` -- `JWT_SECRET` - -### CSV ใ‚คใƒณใƒใƒผใƒˆใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆ +- ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใฎ็ฎก็†็”ป้ขใจใƒฆใƒผใ‚ถใƒผ็”ป้ขใฏ `frontend/` +- ใƒใƒƒใ‚ฏใ‚จใƒณใƒ‰ใฎใ‚ตใƒผใƒ“ใ‚นใ€handlerใ€repositoryใ€migration ใฏ `backend/` +- ใƒ‡ใƒ—ใƒญใ‚ค่ณ‡็”ฃใฏ `deployments/` +- ่ฃฝๅ“ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใจ็ด ๆใฏ `docs/` -```csv -Username,Email,Role,Max Instances,Max CPU Cores,Max Memory (GB),Max Storage (GB),Max GPU Count (optional) -``` - -ใƒกใƒข: - -- `Email` ใฏไปปๆ„ใงใ™ -- `Max GPU Count (optional)` ใฏไปปๆ„ใงใ™ -- ใใ‚Œไปฅๅค–ใฎๅˆ—ใฏๅฟ…้ ˆใงใ™ +[Developer Guide (English)](./docs/developer-guide.md) ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚ + +## ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ + +- [ใƒฆใƒผใ‚ถใƒผใ‚ฌใ‚คใƒ‰](./docs/use_guide_ja.md) +- [Deployment Guide (English)](./docs/deployment.md) +- [Admin and User Guide (English)](./docs/admin-user-guide.md) +- [Agent Control Plane Guide (English)](./docs/agent-control-plane.md) +- [AI Gateway Guide (English)](./docs/aigateway.md) +- [Security / Skill Scanner Guide (English)](./docs/security-skill-scanner.md) +- [Resource Management Guide (English)](./docs/resource-management.md) +- [Developer Guide (English)](./docs/developer-guide.md) ## ใƒฉใ‚คใ‚ปใƒณใ‚น -ใ“ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏ MIT License ใฎไธ‹ใงๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ +ใ“ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏ MIT License ใฎใ‚‚ใจใงๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ ## ใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚น -issue ใจ pull request ใ‚’ๆญ“่ฟŽใ—ใพใ™ใ€‚ +Issue ใจ Pull Request ใ‚’ๆญ“่ฟŽใ—ใพใ™ใ€‚ + +## Star History + + + + + + Star History Chart + + diff --git a/README.ko.md b/README.ko.md index d501e27..ce8512e 100644 --- a/README.ko.md +++ b/README.ko.md @@ -5,7 +5,7 @@

- ํŒ€ ๊ทœ๋ชจ๋ถ€ํ„ฐ ํด๋Ÿฌ์Šคํ„ฐ ๊ทœ๋ชจ๊นŒ์ง€ OpenClaw์™€ Linux ๋ฐ์Šคํฌํ†ฑ ๋Ÿฐํƒ€์ž„์„ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Kubernetes-first ์ œ์–ด ํ‰๋ฉด์ž…๋‹ˆ๋‹ค. + ClawManager๋Š” AI Agent ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ Kubernetes ๋„ค์ดํ‹ฐ๋ธŒ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์œผ๋กœ, ๊ฑฐ๋ฒ„๋„Œ์Šค๊ฐ€ ์ ์šฉ๋œ AI ์ ‘๊ทผ, ๋Ÿฐํƒ€์ž„ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜, ๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ Agent Runtime ์ „๋ฐ˜์— ๊ฑธ์นœ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

@@ -18,203 +18,187 @@

- ClawManager Platform + ClawManager Control Plane Go 1.21+ React 19 Kubernetes Native MIT License

-## News +

+ ์ œํ’ˆ ์†Œ๊ฐœ | + AI Gateway | + Agent Control Plane | + ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ | + ์‹œ์ž‘ํ•˜๊ธฐ +

+ +

+ + Star ClawManager on GitHub + +

-- [2026-03-26]: ๐Ÿš€๐Ÿš€ AI Gateway ๋ฌธ์„œ์™€ ๊ฐœ์š”๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ ๊ฑฐ๋ฒ„๋„Œ์Šค, ๊ฐ์‚ฌ ์ถ”์ , ๋น„์šฉ ์ •์‚ฐ, ์œ„ํ—˜ ์ œ์–ด๋ฅผ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [AI Gateway](#ai-gateway)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. -- [2026-03-20]: ๐ŸŽ‰๐ŸŽ‰ ClawManager ๋ฆด๋ฆฌ์Šค โ€”โ€” ClawManager๋Š” ํ˜„์žฌ ๊ฐ€์ƒ ๋ฐ์Šคํฌํ†ฑ ๊ด€๋ฆฌ ํ”Œ๋žซํผ์œผ๋กœ ์ œ๊ณต๋˜๋ฉฐ, ์ผ๊ด„ ๋ฐฐํฌ, Webtop ์ง€์›, ๋ฐ์Šคํฌํ†ฑ ํฌํ„ธ ์ ‘๊ทผ, ๋Ÿฐํƒ€์ž„ ์ด๋ฏธ์ง€ ์„ค์ •, OpenClaw ๋ฉ”๋ชจ๋ฆฌ/ํ™˜๊ฒฝ์„ค์ • Markdown ๋ฐฑ์—… ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌ์†Œ์Šค ๊ฐœ์š”, ๋‹ค๊ตญ์–ด ๋ฌธ์„œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. +

60์ดˆ ์•ˆ์— ๋ณด๋Š” ClawManager

- ClawManager Admin - ClawManager Portal - ClawManager AI Gateway +ClawManager ์ œํ’ˆ ๋ฐ๋ชจ

-## ๋ฌด์—‡์ธ๊ฐ€ +

+ ๋น ๋ฅธ Agent ํ”„๋กœ๋น„์ €๋‹, Skill ๊ด€๋ฆฌ์™€ ์Šค์บ”, AI Gateway ๊ฑฐ๋ฒ„๋„Œ์Šค๋ฅผ ์งง๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +

-ClawManager๋Š” Kubernetes ์œ„์—์„œ ๋ฐ์Šคํฌํ†ฑ ๋Ÿฐํƒ€์ž„์˜ ๋ฐฐํฌ, ์šด์˜, ์ ‘๊ทผ์„ ํ•œ๊ณณ์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. +## ์ตœ์‹  ์—…๋ฐ์ดํŠธ -๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. +์ตœ๊ทผ์˜ ์ค‘์š”ํ•œ ์ œํ’ˆ ๋ฐ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ์ž…๋‹ˆ๋‹ค. -- ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๋ฐ์Šคํฌํ†ฑ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ -- quota, ์ด๋ฏธ์ง€, ๋ผ์ดํ”„์‚ฌ์ดํด์„ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ -- ๋ฐ์Šคํฌํ†ฑ ์„œ๋น„์Šค๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์— ์œ ์ง€ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ -- Pod๋ฅผ ์ง์ ‘ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์•ˆ์ „ํ•œ ๋ธŒ๋ผ์šฐ์ € ์ ‘๊ทผ์„ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ +- [2026-04-08] ํ”Œ๋žซํผ์— Skill ๊ด€๋ฆฌ์™€ Skill ์Šค์บ” ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [Merged PR #52](https://github.com/Yuan-lab-LLM/ClawManager/pull/52)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. +- [2026-03-26] AI Gateway ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋ชจ๋ธ ๊ฑฐ๋ฒ„๋„Œ์Šค, ๊ฐ์‚ฌ์™€ ์ถ”์ , ๋น„์šฉ ๊ณ„์‚ฐ, ๋ฆฌ์Šคํฌ ์ œ์–ด ์„ค๋ช…์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [AI Gateway Guide](./docs/aigateway.md)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. +- [2026-03-20] ClawManager๋Š” AI Agent ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ฅผ ์œ„ํ•œ ๋” ๋„“์€ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์œผ๋กœ ๋ฐœ์ „ํ–ˆ์œผ๋ฉฐ, ๋Ÿฐํƒ€์ž„ ์ œ์–ด, ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค, ๋ณด์•ˆ ์Šค์บ” ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ๊ฐ•ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. -## ์„ ํƒํ•˜๋Š” ์ด์œ  +> ClawManager๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์˜ ํŒ€์— ๋„์›€์ด ๋œ๋‹ค๋ฉด, ํ”„๋กœ์ ํŠธ์— Star๋ฅผ ๋‚จ๊ฒจ ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž์™€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ์„ธ์š”. -- ์‚ฌ์šฉ์ž, quota, ์ธ์Šคํ„ด์Šค, ๋Ÿฐํƒ€์ž„ ์ด๋ฏธ์ง€๋ฅผ ํ•˜๋‚˜์˜ ๊ด€๋ฆฌ ํ™”๋ฉด์—์„œ ์šด์˜ -- OpenClaw ๋ฉ”๋ชจ๋ฆฌ์™€ ์„ค์ •์˜ ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ ์ง€์› -- ์„œ๋น„์Šค๋ฅผ ์ง์ ‘ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ  ํ”Œ๋žซํผ์„ ํ†ตํ•œ ์•ˆ์ „ํ•œ ๋ฐ์Šคํฌํ†ฑ ์ ‘๊ทผ -- AI Gateway๋ฅผ ํ†ตํ•œ ํ†ต์ œ๋œ ๋ชจ๋ธ ์ ‘๊ทผ, ๊ฐ์‚ฌ ์ถ”์ , ๋น„์šฉ ๋ถ„์„, ์œ„ํ—˜ ์ œ์–ด -- Kubernetes์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋งž๋Š” ๋ฐฐํฌ ๋ฐ ์šด์˜ ํ๋ฆ„ -- ๊ด€๋ฆฌ์ž ์ฃผ๋„ ๋ฐฐํฌ์™€ ์…€ํ”„์„œ๋น„์Šค ์ƒ์„ฑ ๋ชจ๋‘ ์ง€์› +

+ +Star ClawManager on GitHub + +

-## ๋น ๋ฅธ ์‹œ์ž‘ + +## ์ œํ’ˆ ์†Œ๊ฐœ -### ์‚ฌ์ „ ์กฐ๊ฑด +ClawManager๋Š” AI Agent ์ธ์Šคํ„ด์Šค ์šด์˜์„ Kubernetes ์œ„๋กœ ํ™•์žฅํ•˜๊ณ , ๊ทธ ๋Ÿฐํƒ€์ž„ ๊ธฐ๋ฐ˜ ์œ„์— 3๊ฐœ์˜ ์ƒ์œ„ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํŒ€์€ ์ด๋ฅผ ํ†ตํ•ด AI ์ ‘๊ทผ์„ ํ†ต์ œํ•˜๊ณ , Agent๋ฅผ ํ†ตํ•ด ๋Ÿฐํƒ€์ž„ ๋™์ž‘์„ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ํ•˜๋ฉฐ, ์Šค์บ” ๊ฐ€๋Šฅํ•˜๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ channel ๋ฐ skill ๋ฆฌ์†Œ์Šค๋กœ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -- ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ -- `kubectl get nodes` ๊ฐ€ ์ •์ƒ ๋™์ž‘ํ•ด์•ผ ํ•จ +๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒ€์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. -### ๋ฐฐํฌ +- ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ AI Agent ์ธ์Šคํ„ด์Šค๋ฅผ ์šด์˜ํ•˜๋Š” ํ”Œ๋žซํผ ํŒ€ +- ๋Ÿฐํƒ€์ž„ ๊ฐ€์‹œ์„ฑ, ๋ช…๋ น ๋ฐฐํฌ, desired state ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ์šด์˜ ํŒ€ +- ์ˆ˜๋™ ์„ค์ • ๋Œ€์‹  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค๋กœ Agent ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ ํŒ€ -์ €์žฅ์†Œ์— ํฌํ•จ๋œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. + +## ์‹œ์ž‘ํ•˜๊ธฐ -```bash -kubectl apply -f deployments/k8s/clawmanager.yaml -kubectl get pods -A -kubectl get svc -A -``` +ClawManager๋Š” ์ด์ œ ํ‘œ์ค€ Kubernetes ํ™˜๊ฒฝ๊ณผ ๊ฒฝ๋Ÿ‰ ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ ๋ชจ๋‘์— ๋Œ€ํ•ด ๋” ๋ช…ํ™•ํ•œ ์ง„์ž… ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์ž์‹ ์˜ ํ™˜๊ฒฝ์— ๋งž๋Š” ๋ฐฐํฌ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•œ ๋’ค, ์ฒซ ๋กœ๊ทธ์ธ ๋ฐ ๊ธฐ๋ณธ ์‚ฌ์šฉ ํ๋ฆ„์œผ๋กœ ์ด์–ด๊ฐ€๋ฉด ๋ฉ๋‹ˆ๋‹ค. -## ์†Œ์Šค ์ฝ”๋“œ์—์„œ ๋นŒ๋“œ +- ํ‘œ์ค€ Kubernetes ๋ฐฐํฌ: [deployments/k8s/clawmanager.yaml](./deployments/k8s/clawmanager.yaml) +- K3s / ๊ฒฝ๋Ÿ‰ ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฐํฌ: [deployments/k3s/clawmanager.yaml](./deployments/k3s/clawmanager.yaml) +- ์ฒซ ๋กœ๊ทธ์ธ ๋ฐ ๊ธฐ๋ณธ ์‚ฌ์šฉ ํ๋ฆ„: [์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ](./docs/use_guide_ko.md) +- ๋ฐฐํฌ ์„ค๋ช… ๋ฐ ์•„ํ‚คํ…์ฒ˜ ๋ฐฐ๊ฒฝ: [Deployment Guide (English)](./docs/deployment.md) -์ €์žฅ์†Œ์— ํฌํ•จ๋œ Kubernetes ๋งค๋‹ˆํŽ˜์ŠคํŠธ ๋Œ€์‹  ์†Œ์Šค ์ฝ”๋“œ์—์„œ ClawManager๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ํŒจํ‚ค์ง•ํ•˜๋ ค๋ฉด: +## ์„ธ ๊ฐ€์ง€ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ -### ํ”„๋ŸฐํŠธ์—”๋“œ + +### AI Gateway -```bash -cd frontend -npm install -npm run build -``` +AI Gateway๋Š” ClawManager์—์„œ ๋ชจ๋ธ ์ ‘๊ทผ์„ ๊ฑฐ๋ฒ„๋„Œ์Šคํ•˜๋Š” ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์ž…๋‹ˆ๋‹ค. ๊ด€๋ฆฌ๋˜๋Š” Agent Runtime์— ํ†ตํ•ฉ๋œ OpenAI ํ˜ธํ™˜ ์ง„์ž…์ ์„ ์ œ๊ณตํ•˜๊ณ , ์ƒ์œ„ ๋ชจ๋ธ ์ œ๊ณต์ž ์œ„์— ์ •์ฑ…, ๊ฐ์‚ฌ, ๋น„์šฉ ์ œ์–ด๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. -### ๋ฐฑ์—”๋“œ +- ๋ชจ๋ธ ํŠธ๋ž˜ํ”ฝ์„ ์œ„ํ•œ ํ†ตํ•ฉ ์ง„์ž…์  +- ๋ณด์•ˆ ๋ชจ๋ธ ๋ผ์šฐํŒ…๊ณผ ์ •์ฑ… ๊ธฐ๋ฐ˜ ๋ชจ๋ธ ์„ ํƒ +- ์—”๋“œํˆฌ์—”๋“œ ๊ฐ์‚ฌ ๋ฐ ์ถ”์  ๊ธฐ๋ก +- ๋‚ด์žฅ๋œ ๋น„์šฉ ๊ณ„์‚ฐ๊ณผ ์‚ฌ์šฉ๋Ÿ‰ ๋ถ„์„ +- ์ฐจ๋‹จ ๋˜๋Š” ๋ผ์šฐํŒ… ์ „ํ™˜์ด ๊ฐ€๋Šฅํ•œ ๋ฆฌ์Šคํฌ ์ œ์–ด ๊ทœ์น™ -```bash -cd backend -go mod tidy -go build -o bin/clawreef cmd/server/main.go -``` +[AI Gateway Guide (English)](./docs/aigateway.md)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. -### Docker ์ด๋ฏธ์ง€ + +### Agent Control Plane -์ €์žฅ์†Œ ๋ฃจํŠธ์—์„œ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. +Agent Control Plane์€ ๊ด€๋ฆฌ๋˜๋Š” AI Agent ์ธ์Šคํ„ด์Šค๋ฅผ ์œ„ํ•œ ๋Ÿฐํƒ€์ž„ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๊ณ„์ธต์ž…๋‹ˆ๋‹ค. ๊ฐ ์ธ์Šคํ„ด์Šค๋ฅผ ๋“ฑ๋ก, ์ƒํƒœ ๋ณด๊ณ , ๋ช…๋ น ์ˆ˜์‹ , ๊ทธ๋ฆฌ๊ณ  ํ”Œ๋žซํผ ์ธก desired state์™€์˜ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•œ ๊ด€๋ฆฌํ˜• ๋Ÿฐํƒ€์ž„์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. -```bash -docker build -t clawmanager:latest . -``` +- ๋ณด์•ˆ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ๊ณผ ์„ธ์…˜ ๋ผ์ดํ”„์‚ฌ์ดํด ๊ธฐ๋ฐ˜ Agent ๋“ฑ๋ก +- ํ•˜ํŠธ๋น„ํŠธ ๊ธฐ๋ฐ˜ ๋Ÿฐํƒ€์ž„ ์ƒํƒœ ๋ฐ ํ—ฌ์Šค ๋ฆฌํฌํŒ… +- ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๊ณผ ์ธ์Šคํ„ด์Šค ๊ฐ„ desired state ๋™๊ธฐํ™” +- ์‹œ์ž‘, ์ค‘์ง€, ์„ค์ • ์ ์šฉ, ํ—ฌ์Šค์ฒดํฌ, Skill ์ž‘์—…์„ ์œ„ํ•œ ๋ช…๋ น ๋ฐฐํฌ +- ์ธ์Šคํ„ด์Šค ๋‹จ์œ„์˜ Agent ์ƒํƒœ, channel, skill, ๋ช…๋ น ์ด๋ ฅ ๊ฐ€์‹œํ™” -### ๊ธฐ๋ณธ ๊ณ„์ • +[Agent Control Plane Guide (English)](./docs/agent-control-plane.md)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. -- ๊ธฐ๋ณธ ๊ด€๋ฆฌ์ž ๊ณ„์ •: `admin / admin123` -- ๊ฐ€์ ธ์˜จ ๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž์˜ ๊ธฐ๋ณธ ๋น„๋ฐ€๋ฒˆํ˜ธ: `admin123` -- ๊ฐ€์ ธ์˜จ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์˜ ๊ธฐ๋ณธ ๋น„๋ฐ€๋ฒˆํ˜ธ: `user123` + +### ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ -### ์ฒซ ์‚ฌ์šฉ ์ˆœ์„œ +๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๋Š” AI Agent ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ฅผ ์œ„ํ•œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž์‚ฐ ๊ณ„์ธต์ž…๋‹ˆ๋‹ค. ํŒ€์€ channel๊ณผ skill์„ ์ค€๋น„ํ•˜๊ณ , bundle๋กœ ์กฐํ•ฉํ•˜๊ณ , ์ธ์Šคํ„ด์Šค์— ์ฃผ์ž…ํ•˜๋ฉฐ, ๊ทธ ๊ณผ์ •์— ๋ณด์•ˆ ๊ฒ€ํ† ๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -1. ๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค. -2. ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ค๊ณ  quota๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. -3. ์‹œ์Šคํ…œ ์„ค์ •์—์„œ ๋Ÿฐํƒ€์ž„ ์ด๋ฏธ์ง€ ์นด๋“œ๋ฅผ ๊ฒ€ํ† ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. -4. ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธํ•ด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. -5. Portal View ๋˜๋Š” Desktop Access๋ฅผ ํ†ตํ•ด ๋ฐ์Šคํฌํ†ฑ์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. +- `Channel` ๊ด€๋ฆฌ: ์›Œํฌ์ŠคํŽ˜์ด์Šค ์—ฐ๊ฒฐ๊ณผ ํ†ตํ•ฉ ํ…œํ”Œ๋ฆฟ +- `Skill` ๊ด€๋ฆฌ: ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ ํŒจํ‚ค์ง€ +- `Skill Scanner` ์›Œํฌํ”Œ๋กœ์šฐ: ๋ฆฌ์Šคํฌ ๊ฒ€ํ† ์™€ ์Šค์บ” ์ž‘์—… +- bundle ๊ธฐ๋ฐ˜ ๋ฆฌ์†Œ์Šค ์กฐํ•ฉ: ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ตฌ์„ฑ +- ์ฃผ์ž… ์Šค๋ƒ…์ƒท์„ ํ†ตํ•œ ์‹ค์ œ ์ ์šฉ ๊ฒฐ๊ณผ ์ถ”์  -## ์ฃผ์š” ๊ธฐ๋Šฅ +[Resource Management Guide (English)](./docs/resource-management.md)์™€ [Security / Skill Scanner Guide (English)](./docs/security-skill-scanner.md)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. -- ์ธ์Šคํ„ด์Šค ๋ผ์ดํ”„์‚ฌ์ดํด ๊ด€๋ฆฌ: ์ƒ์„ฑ, ์‹œ์ž‘, ์ค‘์ง€, ์žฌ์‹œ์ž‘, ์‚ญ์ œ, ์กฐํšŒ, ๋™๊ธฐํ™” -- ์ง€์› ๋Ÿฐํƒ€์ž„: `openclaw`, `webtop`, `ubuntu`, `debian`, `centos`, `custom` -- ๊ด€๋ฆฌ์ž ํ™”๋ฉด์—์„œ์˜ ๋Ÿฐํƒ€์ž„ ์ด๋ฏธ์ง€ ์นด๋“œ ๊ด€๋ฆฌ -- CPU, ๋ฉ”๋ชจ๋ฆฌ, ์Šคํ† ๋ฆฌ์ง€, GPU, ์ธ์Šคํ„ด์Šค ์ˆ˜์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ๋‹จ์œ„ quota ์ œ์–ด -- ๋…ธ๋“œ, CPU, ๋ฉ”๋ชจ๋ฆฌ, ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์œ„ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌ์†Œ์Šค ๊ฐœ์š” -- ํ† ํฐ ๊ธฐ๋ฐ˜ ๋ฐ์Šคํฌํ†ฑ ์ ‘๊ทผ๊ณผ WebSocket ํฌ์›Œ๋”ฉ -- AI Gateway๋ฅผ ํ†ตํ•œ ๋ชจ๋ธ ๊ด€๋ฆฌ, ์ถ”์  ๊ฐ€๋Šฅํ•œ ๊ฐ์‚ฌ ๋กœ๊ทธ, ๋น„์šฉ ์ •์‚ฐ, ์œ„ํ—˜ ์ œ์–ด -- CSV ๊ธฐ๋ฐ˜ ๋Œ€๋Ÿ‰ ์‚ฌ์šฉ์ž ๊ฐ€์ ธ์˜ค๊ธฐ -- ๋‹ค๊ตญ์–ด ์ธํ„ฐํŽ˜์ด์Šค +## ์ œํ’ˆ ๊ฐค๋Ÿฌ๋ฆฌ -## AI Gateway -### ์ง€์›๋˜๋Š” ๋ชจ๋ธ ์„œ๋น„์Šค ํ”Œ๋žซํผ +ClawManager๋Š” ๊ด€๋ฆฌ, ์ ‘๊ทผ, AI ๊ฑฐ๋ฒ„๋„Œ์Šค๋ฅผ ์„œ๋กœ ๋ถ„๋ฆฌ๋œ ๋„๊ตฌ๋กœ ๋‹ค๋ฃจ์ง€ ์•Š๊ณ , ํ•˜๋‚˜์˜ ์ผ๊ด€๋œ ์ œํ’ˆ ๊ฒฝํ—˜์œผ๋กœ ๋ฌถ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. -ClawManager์—๋Š” ๋‹ค์Œ ๋ชจ๋ธ ์„œ๋น„์Šค ํ”Œ๋žซํผ์šฉ ํ…œํ”Œ๋ฆฟ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. +### ๊ด€๋ฆฌ ์ฝ˜์†” -- OpenAI -- OpenRouter -- DeepSeek -- SiliconFlow -- Moonshot AI -- Zhipu AI -- Alibaba DashScope -- Volcengine Ark -- Groq -- Together AI -- Fireworks AI -- xAI -- Perplexity -- 01.AI -- MiniMax -- Local / Internal ์—”๋“œํฌ์ธํŠธ +๊ด€๋ฆฌ ์ฝ˜์†”์€ ์‚ฌ์šฉ์ž, ์ฟผํ„ฐ, ๋Ÿฐํƒ€์ž„ ์ž‘์—…, ๋ณด์•ˆ ์ œ์–ด, ํ”Œ๋žซํผ ์ˆ˜์ค€ ์ •์ฑ…์„ ํ•˜๋‚˜์˜ ํ™”๋ฉด์œผ๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ AI Agent ์ธํ”„๋ผ๋ฅผ ์šด์˜ํ•˜๋Š” ํŒ€์˜ ํ•ต์‹ฌ ์ž‘์—… ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. -`Local / Internal` ๋ชจ๋“œ๋Š” ์ž์ฒด ํ˜ธ์ŠคํŒ… OpenAI-compatible ๊ฒŒ์ดํŠธ์›จ์ด, Ollama, One API, ๊ธฐํƒ€ ๋‚ด๋ถ€ ๋ชจ๋ธ ์—”๋“œํฌ์ธํŠธ ์—ฐ๊ฒฐ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +

+ ClawManager ๊ด€๋ฆฌ ์ฝ˜์†” +

+### Portal Access -AI Gateway๋Š” ClawManager์—์„œ ๋ชจ๋ธ ์ ‘๊ทผ์„ ๋‹ค๋ฃจ๋Š” ๊ฑฐ๋ฒ„๋„Œ์Šค ํ‰๋ฉด์ž…๋‹ˆ๋‹ค. OpenClaw ์ธ์Šคํ„ด์Šค์— ๋‹จ์ผ OpenAI ํ˜ธํ™˜ ์ง„์ž…์ ์„ ์ œ๊ณตํ•˜๊ณ , ์ƒ์œ„ Provider ์œ„์— ์ •์ฑ…, ๊ฐ์‚ฌ, ๋น„์šฉ ์ œ์–ด๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. +Portal์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ผ๊ด€๋œ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ง„์ž…์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉด์„œ๋„ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๊ณผ ๋™๊ธฐํ™”๋œ ๋Ÿฐํƒ€์ž„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์ธํ”„๋ผ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ง์ ‘ ๋‹ค๋ฃจ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. -- ์ผ๋ฐ˜ ๋ชจ๋ธ๊ณผ ๋ณด์•ˆ ๋ชจ๋ธ ๊ด€๋ฆฌ, Provider ์—ฐ๊ฒฐ, ํ™œ์„ฑํ™”, ์—”๋“œํฌ์ธํŠธ ์„ค์ •, ๊ฐ€๊ฒฉ ์ •์ฑ… -- ์š”์ฒญ, ์‘๋‹ต, ๋ผ์šฐํŒ… ๊ฒฐ์ •, ์œ„ํ—˜ ํžˆํŠธ๋ฅผ ํฌํ•จํ•œ ์—”๋“œ ํˆฌ ์—”๋“œ ๊ฐ์‚ฌ ๋ฐ ์ถ”์  ๊ธฐ๋ก -- ํ† ํฐ ์ง‘๊ณ„์™€ ์‚ฌ์šฉ๋Ÿ‰ ์ถ”์ •์„ ํฌํ•จํ•œ ๋‚ด์žฅ ๋น„์šฉ ์ •์‚ฐ -- ์„ค์ • ๊ฐ€๋Šฅํ•œ ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์œ„ํ—˜ ์ œ์–ด์™€ `block`, `route_secure_model` ๊ฐ™์€ ์ž๋™ ๋™์ž‘ +

+ ClawManager Portal Access +

-์Šคํฌ๋ฆฐ์ƒท, ์ „์ฒด ๊ธฐ๋Šฅ ์„ค๋ช…, ๋ชจ๋ธ ์„ ํƒ ๋ฐ ๋ผ์šฐํŒ… ํ๋ฆ„์€ [docs/aigateway.md](./docs/aigateway.md)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. +### AI Gateway -## ์‚ฌ์šฉ ํ๋ฆ„ +AI Gateway๋Š” ๋ชจ๋ธ ์‚ฌ์šฉ ๊ฑฐ๋ฒ„๋„Œ์Šค๋ฅผ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ฒฝํ—˜ ์ž์ฒด์— ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ๋กœ๊ทธ, ๋น„์šฉ ๊ฐ€์‹œ์„ฑ, ๋ฆฌ์Šคํฌ ๋ผ์šฐํŒ…์„ ์ œ๊ณตํ•˜์—ฌ AI ์‚ฌ์šฉ์„ ๊ฐœ๋ณ„ ํ†ตํ•ฉ์ด ์•„๋‹Œ ํ”Œ๋žซํผ ๊ธฐ๋Šฅ์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. -1. ๊ด€๋ฆฌ์ž๊ฐ€ ์‚ฌ์šฉ์ž, quota, ๋Ÿฐํƒ€์ž„ ์ด๋ฏธ์ง€ ์ •์ฑ…์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. -2. ์‚ฌ์šฉ์ž๊ฐ€ OpenClaw ๋˜๋Š” Linux ๋ฐ์Šคํฌํ†ฑ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. -3. ClawManager๊ฐ€ Kubernetes ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ƒํƒœ๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. -4. ์‚ฌ์šฉ์ž๊ฐ€ ํ”Œ๋žซํผ์„ ํ†ตํ•ด ๋ฐ์Šคํฌํ†ฑ์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. -5. ๊ด€๋ฆฌ์ž๊ฐ€ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์ƒํƒœ์™€ ์šฉ๋Ÿ‰์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. +

+ ClawManager AI Gateway +

-## ์•„ํ‚คํ…์ฒ˜ +## ๋™์ž‘ ๋ฐฉ์‹ -```text -Browser - -> ClawManager Frontend - -> ClawManager Backend - -> MySQL - -> Kubernetes API - -> Pod / PVC / Service - -> OpenClaw / Webtop / Linux Desktop Runtime -``` +1. ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฑฐ๋ฒ„๋„Œ์Šค ์ •์ฑ…๊ณผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. +2. ์‚ฌ์šฉ์ž๊ฐ€ Kubernetes์—์„œ ๊ด€๋ฆฌ๋˜๋Š” AI Agent ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ง„์ž…ํ•ฉ๋‹ˆ๋‹ค. +3. Agent๊ฐ€ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์— ์—ฐ๊ฒฐํ•ด ๋Ÿฐํƒ€์ž„ ์ƒํƒœ๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. +4. Channel, skill, bundle์ด ์ปดํŒŒ์ผ๋˜์–ด ์ธ์Šคํ„ด์Šค์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. +5. AI ํŠธ๋ž˜ํ”ฝ์€ AI Gateway๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋ฉฐ, ๊ฐ์‚ฌ, ๋ฆฌ์Šคํฌ, ๋น„์šฉ ์ œ์–ด๊ฐ€ ํ•จ๊ป˜ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. -## ์„ค์ • ๋ฉ”๋ชจ +## ๊ฐœ๋ฐœ์ž ๊ฐœ์š” -- ์ธ์Šคํ„ด์Šค ์„œ๋น„์Šค๋Š” Kubernetes ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์— ์œ ์ง€๋ฉ๋‹ˆ๋‹ค -- ๋ฐ์Šคํฌํ†ฑ ์ ‘๊ทผ์€ ์ธ์ฆ๋œ ๋ฐฑ์—”๋“œ ํ”„๋ก์‹œ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค -- ๋Ÿฐํƒ€์ž„ ์ด๋ฏธ์ง€๋Š” ์‹œ์Šคํ…œ ์„ค์ •์—์„œ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค -- ๋ฐฑ์—”๋“œ๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค - -์ฃผ์š” ๋ฐฑ์—”๋“œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜: +ClawManager๋Š” React ํ”„๋ŸฐํŠธ์—”๋“œ, Go ๋ฐฑ์—”๋“œ, ์ƒํƒœ ์ €์žฅ์šฉ MySQL, ๊ทธ๋ฆฌ๊ณ  `skill-scanner` ๋ฐ ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€ ํ†ตํ•ฉ์„ ํฌํ•จํ•œ Kubernetes ๋„ค์ดํ‹ฐ๋ธŒ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ์ œํ’ˆ ์„œ๋ธŒ์‹œ์Šคํ…œ ๋‹จ์œ„๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ๊ด€๋ จ ๊ฐ€์ด๋“œ์—์„œ ์‹œ์ž‘ํ•œ ๋’ค ์ฝ”๋“œ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๋ฐฉ์‹์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. -- `SERVER_ADDRESS` -- `SERVER_MODE` -- `DB_HOST` -- `DB_PORT` -- `DB_USER` -- `DB_PASSWORD` -- `DB_NAME` -- `JWT_SECRET` - -### CSV ๊ฐ€์ ธ์˜ค๊ธฐ ํ…œํ”Œ๋ฆฟ +- ํ”„๋ŸฐํŠธ์—”๋“œ์˜ ๊ด€๋ฆฌ์ž ๋ฐ ์‚ฌ์šฉ์ž ํ™”๋ฉด์€ `frontend/` +- ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค, handler, repository, migration์€ `backend/` +- ๋ฐฐํฌ ์ž์‚ฐ์€ `deployments/` +- ์ œํ’ˆ ๋ฌธ์„œ์™€ ์ด๋ฏธ์ง€ ์ž์‚ฐ์€ `docs/` -```csv -Username,Email,Role,Max Instances,Max CPU Cores,Max Memory (GB),Max Storage (GB),Max GPU Count (optional) -``` - -๋ฉ”๋ชจ: - -- `Email` ์€ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค -- `Max GPU Count (optional)` ์€ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค -- ๋‚˜๋จธ์ง€ ์—ด์€ ๋ชจ๋‘ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค +[Developer Guide (English)](./docs/developer-guide.md)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. + +## ๋ฌธ์„œ + +- [์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ](./docs/use_guide_ko.md) +- [Deployment Guide (English)](./docs/deployment.md) +- [Admin and User Guide (English)](./docs/admin-user-guide.md) +- [Agent Control Plane Guide (English)](./docs/agent-control-plane.md) +- [AI Gateway Guide (English)](./docs/aigateway.md) +- [Security / Skill Scanner Guide (English)](./docs/security-skill-scanner.md) +- [Resource Management Guide (English)](./docs/resource-management.md) +- [Developer Guide (English)](./docs/developer-guide.md) ## ๋ผ์ด์„ ์Šค -์ด ํ”„๋กœ์ ํŠธ๋Š” MIT License๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. +์ด ํ”„๋กœ์ ํŠธ๋Š” MIT License๋กœ ๊ณต๊ฐœ๋ฉ๋‹ˆ๋‹ค. + +## ์˜คํ”ˆ์†Œ์Šค + +Issue์™€ Pull Request๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. -## ์˜คํ”ˆ ์†Œ์Šค +## Star History -issue์™€ pull request๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. + + + + + Star History Chart + + diff --git a/README.md b/README.md index d4c5947..c367dfe 100644 --- a/README.md +++ b/README.md @@ -5,20 +5,20 @@

- A Kubernetes-first control plane for managing OpenClaw and Linux desktop runtimes at team and cluster scale. + A Kubernetes-native control plane for AI agent instance management, with governed AI access, runtime orchestration, and reusable resources across multiple agent runtimes.

Languages: English | - ไธญๆ–‡ | - ๆ—ฅๆœฌ่ชž | - ํ•œ๊ตญ์–ด | + Chinese | + Japanese | + Korean | Deutsch

- ClawManager Platform + ClawManager Control Plane Go 1.21+ React 19 Kubernetes Native @@ -26,195 +26,160 @@

- ClawManager Admin + Explore the Product | + AI Gateway | + Agent Control Plane | + Resource Management | + Get Started

-## News - -- [2026-03-26]: ๐Ÿš€๐Ÿš€ AI Gateway documentation and overview were refreshed, including model governance, audit and trace, cost accounting, and risk control. See [AI Gateway](#ai-gateway). -- [2026-03-20]: ๐ŸŽ‰๐ŸŽ‰ ClawManager Release โ€” ClawManager is now a virtual desktop management platform featuring batch deployment, Webtop support, desktop portal access, runtime image settings, OpenClaw memory/preferences Markdown backup and migration, cluster resource overview, and multilingual documentation. -

- ClawManager Admin - ClawManager Portal - ClawManager AI Gateway + + Star ClawManager on GitHub +

-## What It Is +

See ClawManager in 60 Seconds

-ClawManager helps teams deploy, operate, and access desktop runtimes on Kubernetes from one place. +

+ClawManager product launch demo +

-It is built for environments where you need to: +

+ A quick look at fast agent provisioning, skill management and scanning, and AI Gateway governance. +

-- create desktop instances for multiple users -- control quotas, runtime images, and lifecycle centrally -- keep desktop services inside the cluster -- give users secure browser access without exposing pods directly +## What's New -## Why Users Pick It +Recent highlights from the latest product and documentation updates. -- One admin panel for users, quotas, instances, and runtime images -- OpenClaw support with import/export for memory and preferences -- Secure desktop access through the platform instead of direct pod exposure -- AI Gateway governance for controlled model access, audit trails, cost analysis, and risk controls -- Kubernetes-native deployment and operations flow -- Works for both admin-managed rollout and self-service instance creation +- [2026-04-08] Added skill management and skill scanning workflows to the platform, via [Merged PR #52](https://github.com/Yuan-lab-LLM/ClawManager/pull/52). +- [2026-03-26] AI Gateway documentation was refreshed with stronger coverage for model governance, audit and trace, cost accounting, and risk control. See the [AI Gateway Guide](./docs/aigateway.md). +- [2026-03-20] ClawManager evolved into a broader control plane for AI agent workspaces, with stronger runtime control, reusable resources, and security scanning workflows. +> If ClawManager is useful to your team, please star the project to help more users and contributors discover it. -## Quick Start +

+ +Star ClawManager on GitHub + +

-### Prerequisites -- A working Kubernetes cluster -- `kubectl get nodes` works +## Product Tour -### Deploy +ClawManager brings AI agent instance operations to Kubernetes and layers three higher-level control planes on top of that runtime foundation. Teams use it to govern AI access, orchestrate runtime behavior through agents, and manage reusable channels and skills with scanning and bundle-based delivery. -Apply the bundled manifest: +It is designed for: -```bash -kubectl apply -f deployments/k8s/clawmanager.yaml -kubectl get pods -A -kubectl get svc -A -``` +- platform teams running AI agent instances for multiple users +- operators who need runtime visibility, command dispatch, and desired-state control +- builders who want governed AI access and reusable resource injection instead of manual per-instance setup -## Build From Source +## Get Started -If you want to run or package ClawManager from source instead of using the bundled Kubernetes manifest: +ClawManager now has clearer entry points for both full Kubernetes deployments and lightweight cluster setups. If you want to evaluate the product quickly, start with the guide that matches your environment and then follow the first-use walkthrough. -### Frontend +- Standard Kubernetes deployment: [deployments/k8s/clawmanager.yaml](./deployments/k8s/clawmanager.yaml) +- K3s or lightweight deployment: [deployments/k3s/clawmanager.yaml](./deployments/k3s/clawmanager.yaml) +- Operations-oriented quick start and first login flow: [User Guide](./docs/use_guide_en.md) +- Deployment notes and architecture-level context: [Deployment Guide](./docs/deployment.md) -```bash -cd frontend -npm install -npm run build -``` +## Three Control Planes -### Backend +### AI Gateway -```bash -cd backend -go mod tidy -go build -o bin/clawreef cmd/server/main.go -``` +AI Gateway is the governance plane for model access inside ClawManager. It gives managed agent runtimes a unified OpenAI-compatible entry point while adding policy and audit controls on top of upstream providers. -### Docker Image +- Unified gateway entry for model traffic +- Secure model routing and policy-aware model selection +- End-to-end audit and trace records +- Built-in cost accounting and usage analysis +- Risk control rules that can block or reroute requests -Build the full application image from the repository root: +See the [AI Gateway Guide](./docs/aigateway.md). -```bash -docker build -t clawmanager:latest . -``` +### Agent Control Plane -### Default Accounts +Agent Control Plane is the runtime orchestration layer for managed AI agent instances. It turns each instance into a managed runtime that can register, report status, receive commands, and stay aligned with platform-side desired state. -- Default admin account: `admin / admin123` -- Default password for imported admin users: `admin123` -- Default password for imported regular users: `user123` +- Agent registration with secure bootstrap and session lifecycle +- Heartbeat-driven runtime status and health reporting +- Desired-state synchronization between the control plane and the instance +- Runtime command dispatch for start, stop, config apply, health checks, and skill operations +- Instance-level visibility into agent status, channels, skills, and command history -### First Use +See the [Agent Control Plane Guide](./docs/agent-control-plane.md). -1. Log in as admin. -2. Create or import users and assign quotas. -3. Review or update runtime image cards in system settings. -4. Log in as a user and create an instance. -5. Access the desktop through Portal View or Desktop Access. +### Resource Management -## Main Capabilities +Resource Management is the reusable asset layer for AI agent workspaces. It helps teams prepare channels and skills once, organize them into bundles, inject them into instances, and keep security review in the loop. -- Instance lifecycle management: create, start, stop, restart, delete, inspect, and sync -- Runtime types: `openclaw`, `webtop`, `ubuntu`, `debian`, `centos`, `custom` -- Runtime image card management from the admin panel -- User quota control for CPU, memory, storage, GPU, and instance count -- Cluster resource overview for nodes, CPU, memory, and storage -- Token-based desktop access with WebSocket forwarding -- AI Gateway for model management, traceable audit logs, cost accounting, and risk control -- CSV-based bulk user import -- Multilingual interface +- Channel management for workspace connectivity and integration templates +- Skill management for reusable packaged capabilities +- Skill Scanner workflows for risk review and scan operations +- Bundle-based resource composition for repeatable workspace setup +- Injection snapshots and runtime-level visibility into what was applied -## AI Gateway +See the [Resource Management Guide](./docs/resource-management.md) and the [Security / Skill Scanner Guide](./docs/security-skill-scanner.md). -AI Gateway is the governance plane for model access inside ClawManager. It gives OpenClaw instances a single OpenAI-compatible entry point while adding policy, audit, and cost controls on top of upstream providers. +## Product Gallery -- Model management for regular and secure models, provider onboarding, activation, endpoint configuration, and pricing policy -- End-to-end audit and trace records for requests, responses, routing decisions, and risk hits -- Built-in cost accounting with token tracking and estimated usage analysis -- Risk control with configurable rules and automated actions such as `block` and `route_secure_model` +The product is designed to feel coherent across administration, workspace access, and AI governance. Instead of treating these as separate tools, ClawManager brings them into one control surface. -### Supported Model Service Platforms +### Admin Console -ClawManager includes built-in vendor templates for: +The admin console brings together users, quotas, runtime operations, security controls, and platform-level policies in one place. It is the operational center for teams running AI agent infrastructure at scale. -- OpenAI -- OpenRouter -- DeepSeek -- SiliconFlow -- Moonshot AI -- Zhipu AI -- Alibaba DashScope -- Volcengine Ark -- xAI -- Together AI -- Fireworks AI -- Perplexity -- 01.AI -- MiniMax -- Local / Internal endpoints +

+ ClawManager admin console +

-`Local / Internal` can also be used for self-hosted OpenAI-compatible gateways, Ollama, One API, and other private model endpoints. +### Portal Access -For screenshots, the full feature breakdown, and the model selection and routing flow, see [docs/aigateway.md](./docs/aigateway.md). +The portal experience gives users a clean entry point into their workspaces, with browser-based access and runtime visibility that stays connected to the control plane instead of exposing infrastructure details directly. -## Product Flow +

+ ClawManager portal access +

-1. An admin defines users, quotas, and runtime image policies. -2. A user creates an OpenClaw or Linux desktop instance. -3. ClawManager creates and tracks the Kubernetes resources. -4. The user accesses the desktop through the platform. -5. Admins monitor health and capacity from the dashboard. +### AI Gateway -## Architecture +AI Gateway extends the workspace experience with governed model access, audit trails, cost visibility, and risk-aware routing, making AI usage manageable as part of the platform rather than an isolated integration. -```text -Browser - -> ClawManager Frontend - -> ClawManager Backend - -> MySQL - -> Kubernetes API - -> Pod / PVC / Service - -> OpenClaw / Webtop / Linux Desktop Runtime -``` +

+ ClawManager AI Gateway +

-## Configuration Notes +## How It Works -- Instance services stay on Kubernetes internal networking -- Desktop access goes through the authenticated backend proxy -- Runtime images can be overridden from system settings -- Backend deployment is best kept inside the cluster +1. Admins define governance policies and reusable resources. +2. Users create or enter managed AI agent workspaces on Kubernetes. +3. Agents connect back to the control plane and report runtime state. +4. Channels, skills, and bundles are compiled and applied to instances. +5. AI traffic flows through AI Gateway with audit, risk, and cost controls. -Common backend environment variables: +## Developer Snapshot -- `SERVER_ADDRESS` -- `SERVER_MODE` -- `DB_HOST` -- `DB_PORT` -- `DB_USER` -- `DB_PASSWORD` -- `DB_NAME` -- `JWT_SECRET` +ClawManager is built as a Kubernetes-native platform with a React frontend, a Go backend, MySQL for state, and supporting services such as skill-scanner and object storage integrations. The repository is organized around product subsystems rather than a single monolith page, so the best developer experience is to start from the relevant guide and then move into the code. -### CSV Import Template +- Frontend app and admin/user surfaces live under `frontend/` +- Backend services, handlers, repositories, and migrations live under `backend/` +- Deployment assets live under `deployments/` +- Supporting product docs live under `docs/` -```csv -Username,Email,Role,Max Instances,Max CPU Cores,Max Memory (GB),Max Storage (GB),Max GPU Count (optional) -``` - -Notes: +See the [Developer Guide](./docs/developer-guide.md). -- `Email` is optional -- `Max GPU Count (optional)` is optional -- all other columns are required +## Documentation +- [User Guide](./docs/use_guide_en.md) +- [Deployment Guide](./docs/deployment.md) +- [Admin and User Guide](./docs/admin-user-guide.md) +- [Agent Control Plane Guide](./docs/agent-control-plane.md) +- [AI Gateway Guide](./docs/aigateway.md) +- [Security / Skill Scanner Guide](./docs/security-skill-scanner.md) +- [Resource Management Guide](./docs/resource-management.md) +- [Developer Guide](./docs/developer-guide.md) ## License @@ -224,7 +189,6 @@ This project is licensed under the MIT License. Issues and pull requests are welcome. - ## Star History diff --git a/README.zh-CN.md b/README.zh-CN.md index e4389b7..7373f67 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -5,7 +5,7 @@

- ไธ€ไธช้ขๅ‘ๅ›ข้˜ŸไธŽ้›†็พค่ง„ๆจกๅœบๆ™ฏ็š„ Kubernetes-first ๆŽงๅˆถๅนณ้ข๏ผŒ็”จไบŽ็ปŸไธ€็ฎก็† OpenClaw ๅ’Œ Linux ๆกŒ้ข่ฟ่กŒๆ—ถใ€‚ + ไธ€ไธช้ขๅ‘ AI Agent ๅฎžไพ‹็ฎก็†็š„ Kubernetes ๅŽŸ็”ŸๆŽงๅˆถๅนณ้ข๏ผŒๆไพ›ๅ—ๆฒป็†็š„ AI ่ฎฟ้—ฎใ€่ฟ่กŒๆ—ถ็ผ–ๆŽ’๏ผŒไปฅๅŠ้€‚็”จไบŽๅคš็ง Agent Runtime ็š„ๅฏๅค็”จ่ต„ๆบ็ฎก็†่ƒฝๅŠ›ใ€‚

@@ -18,7 +18,7 @@

- ClawManager Platform + ClawManager Control Plane Go 1.21+ React 19 Kubernetes Native @@ -26,205 +26,172 @@

- ClawManager Admin + ไบ†่งฃไบงๅ“ | + AI Gateway | + Agent Control Plane | + ่ต„ๆบ็ฎก็† | + ๅฟซ้€Ÿๅผ€ๅง‹

+

+ + Star ClawManager on GitHub + +

-## ๆ–ฐ้—ป - -- [2026-03-26]: ๐Ÿš€๐Ÿš€ AI Gateway ๆ–‡ๆกฃไธŽๆ€ป่งˆๅทฒๆ›ดๆ–ฐ๏ผŒๆถต็›–ๆจกๅž‹ๆฒป็†ใ€ๅฎก่ฎก่ฟฝ่ธชใ€ๆˆๆœฌๆ ธ็ฎ—ๅ’Œ้ฃŽ้™ฉๆŽงๅˆถใ€‚ๅ‚่ง [AI Gateway](#ai-gateway)ใ€‚ -- [2026-03-20]: ๐ŸŽ‰๐ŸŽ‰ ClawManager ๅ‘ๅธƒ โ€”โ€” ClawManager ็Žฐๅทฒๆˆไธบไธ€ๆฌพ่™šๆ‹ŸๆกŒ้ข็ฎก็†ๅนณๅฐ๏ผŒๆ”ฏๆŒๆ‰น้‡้ƒจ็ฝฒใ€Webtop ๆ”ฏๆŒใ€ๆกŒ้ข้—จๆˆท่ฎฟ้—ฎใ€่ฟ่กŒๆ—ถ้•œๅƒ้…็ฝฎใ€OpenClaw ่ฎฐๅฟ†/ๅๅฅฝ Markdown ๅค‡ไปฝไธŽ่ฟ็งปใ€้›†็พค่ต„ๆบๆ€ป่งˆไปฅๅŠๅคš่ฏญ่จ€ๆ–‡ๆกฃใ€‚ +

60 ็ง’่ฎค่ฏ† ClawManager

+

+ClawManager ไบงๅ“ๆผ”็คบ +

- ClawManager Admin - ClawManager Portal - ClawManager AI Gateway + ๅฟซ้€Ÿไบ†่งฃ Agent ๅฎžไพ‹ๅˆ›ๅปบใ€Skill ็ฎก็†ไธŽๆ‰ซๆ๏ผŒไปฅๅŠ AI Gateway ๆฒป็†่ƒฝๅŠ›ใ€‚

-## ๅฎƒๆ˜ฏไป€ไนˆ +## ๆœ€ๆ–ฐๅŠจๆ€ -ClawManager ๅธฎๅŠฉๅ›ข้˜Ÿๅœจ Kubernetes ไธŠ็ปŸไธ€้ƒจ็ฝฒใ€่ฟ็ปดๅนถ่ฎฟ้—ฎๆกŒ้ข่ฟ่กŒๆ—ถใ€‚ +่ฟ™้‡Œๅฑ•็คบๆœ€่ฟ‘็š„้‡่ฆไบงๅ“ไธŽๆ–‡ๆกฃๆ›ดๆ–ฐใ€‚ -ๅฎƒ้€‚ๅˆ่ฟ™ไบ›ๅœบๆ™ฏ๏ผš +- [2026-04-08] ๅนณๅฐๆ–ฐๅขžไบ† Skill ็ฎก็†ไธŽ Skill ๆ‰ซๆๅทฅไฝœๆต๏ผŒ่ง [Merged PR #52](https://github.com/Yuan-lab-LLM/ClawManager/pull/52)ใ€‚ +- [2026-03-26] AI Gateway ๆ–‡ๆกฃๅทฒๆ›ดๆ–ฐ๏ผŒ่กฅๅ……ไบ†ๆจกๅž‹ๆฒป็†ใ€ๅฎก่ฎก่ฟฝ่ธชใ€ๆˆๆœฌๆ ธ็ฎ—ไธŽ้ฃŽ้™ฉๆŽงๅˆถ่ƒฝๅŠ›๏ผŒ่ง [AI Gateway Guide](./docs/aigateway.md)ใ€‚ +- [2026-03-20] ClawManager ่ฟ›ไธ€ๆญฅๆผ”่ฟ›ไธบ้ขๅ‘ AI Agent ๅทฅไฝœ็ฉบ้—ด็š„ๆŽงๅˆถๅนณ้ข๏ผŒๅผบๅŒ–ไบ†่ฟ่กŒๆ—ถๆŽงๅˆถใ€ๅฏๅค็”จ่ต„ๆบไธŽๅฎ‰ๅ…จๆ‰ซๆๅทฅไฝœๆตใ€‚ -- ้œ€่ฆไธบๅคšไธช็”จๆˆทๅˆ›ๅปบๆกŒ้ขๅฎžไพ‹ -- ้œ€่ฆ้›†ไธญ็ฎก็†้…้ขใ€้•œๅƒๅ’Œ็”Ÿๅ‘ฝๅ‘จๆœŸ -- ๅธŒๆœ›ๆกŒ้ขๆœๅŠกๅง‹็ปˆไฟ็•™ๅœจ้›†็พคๅ†…้ƒจ -- ๅธŒๆœ›้€š่ฟ‡ๅฎ‰ๅ…จ็š„ๆต่งˆๅ™จ่ฎฟ้—ฎๆ–นๅผ๏ผŒ่€Œไธๆ˜ฏ็›ดๆŽฅๆšด้œฒ Pod +> ๅฆ‚ๆžœ ClawManager ๅฏนไฝ ็š„ๅ›ข้˜Ÿๆœ‰ๅธฎๅŠฉ๏ผŒๆฌข่ฟŽไธบ้กน็›ฎ็‚นไธ€ไธช Star๏ผŒๅธฎๅŠฉๆ›ดๅคš็”จๆˆทๅ’Œๅผ€ๅ‘่€…ๅ‘็Žฐๅฎƒใ€‚ -## ไธบไป€ไนˆ้€‰ๆ‹ฉๅฎƒ +

+ +Star ClawManager on GitHub + +

-- ไธ€ไธช็ฎก็†ๅŽๅฐ็ปŸไธ€็ฎก็†็”จๆˆทใ€้…้ขใ€ๅฎžไพ‹ๅ’Œ่ฟ่กŒๆ—ถ้•œๅƒ -- ๆ”ฏๆŒ OpenClaw๏ผŒๅนถๆไพ›่ฎฐๅฟ†ไธŽๅๅฅฝ่ฎพ็ฝฎ็š„ๅฏผๅ…ฅๅฏผๅ‡บ -- ้€š่ฟ‡ๅนณๅฐๆไพ›ๅฎ‰ๅ…จๆกŒ้ข่ฎฟ้—ฎ๏ผŒ่€Œไธๆ˜ฏ็›ดๆŽฅๆšด้œฒๆœๅŠก -- AI Gateway ๆไพ›ๅ—ๆŽงๆจกๅž‹่ฎฟ้—ฎใ€ๅฎก่ฎก่ฟฝ่ธชใ€ๆˆๆœฌๅˆ†ๆžๅ’Œ้ฃŽ้™ฉๆŽงๅˆถ -- ๅคฉ็„ถ้€‚้… Kubernetes ็š„้ƒจ็ฝฒไธŽ่ฟ็ปดๆ–นๅผ -- ๅŒๆ—ถๆ”ฏๆŒ็ฎก็†ๅ‘˜็ปŸไธ€ๅ‘ๆ”พๅ’Œ็”จๆˆท่‡ชๅŠฉๅˆ›ๅปบ + +## ไบงๅ“ไป‹็ป +ClawManager ๅฐ† AI Agent ๅฎžไพ‹็š„่ฟ่กŒใ€ๆฒป็†ไธŽ่ฟ็ปด่ƒฝๅŠ›ๅธฆๅˆฐ Kubernetes๏ผŒๅนถๅœจ่ฟ่กŒๆ—ถๅŸบ็ก€ไน‹ไธŠๅ ๅŠ ไธ‰ๅฑ‚ๆ›ด้ซ˜้˜ถ็š„ๆŽงๅˆถๅนณ้ขใ€‚ๅ›ข้˜Ÿๅฏไปฅ็”จๅฎƒๆฒป็† AI ่ฎฟ้—ฎใ€้€š่ฟ‡ Agent ็ผ–ๆŽ’่ฟ่กŒๆ—ถ่กŒไธบ๏ผŒๅนถ้€š่ฟ‡ๅฏๆ‰ซๆใ€ๅฏๅค็”จ็š„ channel ไธŽ skill ่ต„ๆบไบคไป˜ๅทฅไฝœ็ฉบ้—ด่ƒฝๅŠ›ใ€‚ -## ๅฟซ้€Ÿๅผ€ๅง‹ +ๅฎƒ้€‚ๅˆไปฅไธ‹ๅœบๆ™ฏ๏ผš -### ๅ‰็ฝฎๆกไปถ +- ้ขๅ‘ๅคš็”จๆˆท่ฟ่กŒ AI Agent ๅฎžไพ‹็š„ๅนณๅฐๅ›ข้˜Ÿ +- ้œ€่ฆ่ฟ่กŒๆ—ถๅฏ่ง‚ๆต‹ๆ€งใ€ๅ‘ฝไปคไธ‹ๅ‘ไธŽๆœŸๆœ›ๆ€ๆŽงๅˆถ็š„่ฟ็ปดๅ›ข้˜Ÿ +- ๅธŒๆœ›ไปฅๅฏๅค็”จ่ต„ๆบ่€Œไธๆ˜ฏๆ‰‹ๅทฅ้…็ฝฎๆ–นๅผไบคไป˜ Agent ๅทฅไฝœ็ฉบ้—ด็š„ๅผ€ๅ‘ๅ›ข้˜Ÿ -- ไธ€ไธชๅฏ็”จ็š„ Kubernetes ้›†็พค -- `kubectl get nodes` ๅฏไปฅๆญฃๅธธๆ‰ง่กŒ + +## ๅฟซ้€Ÿๅผ€ๅง‹ -### ้ƒจ็ฝฒ +ClawManager ็ŽฐๅœจๅŒๆ—ถๆไพ›ๆ ‡ๅ‡† Kubernetes ไธŽ่ฝป้‡็บง้›†็พค็š„ๆธ…ๆ™ฐๅ…ฅๅฃใ€‚ๅฆ‚ๆžœไฝ ๆƒณๅฟซ้€Ÿ่ฏ„ไผฐไบงๅ“๏ผŒๅฏไปฅๅ…ˆไปŽๅŒน้…ไฝ ็Žฏๅขƒ็š„้ƒจ็ฝฒ่ทฏๅพ„ๅผ€ๅง‹๏ผŒๅ†่ฟ›ๅ…ฅ้ฆ–ๆฌก็™ปๅฝ•ไธŽไธŠๆ‰‹ๆต็จ‹ใ€‚ -็›ดๆŽฅๅบ”็”จไป“ๅบ“่‡ชๅธฆๆธ…ๅ•๏ผš +- ๆ ‡ๅ‡† Kubernetes ้ƒจ็ฝฒ: [deployments/k8s/clawmanager.yaml](./deployments/k8s/clawmanager.yaml) +- K3s / ่ฝป้‡้›†็พค้ƒจ็ฝฒ: [deployments/k3s/clawmanager.yaml](./deployments/k3s/clawmanager.yaml) +- ้ฆ–ๆฌก็™ปๅฝ•ไธŽๆ“ไฝœๆต็จ‹: [็”จๆˆทๆŒ‡ๅ—](./docs/use_guide_cn.md) +- ้ƒจ็ฝฒ่ฏดๆ˜ŽไธŽๆžถๆž„่ƒŒๆ™ฏ: [Deployment Guide๏ผˆ่‹ฑๆ–‡๏ผ‰](./docs/deployment.md) -```bash -kubectl apply -f deployments/k8s/clawmanager.yaml -kubectl get pods -A -kubectl get svc -A -``` +## ไธ‰ๅคงๆŽงๅˆถๅนณ้ข -## ไปŽๆบ็ ๆž„ๅปบ + +### AI Gateway -ๅฆ‚ๆžœไฝ ๆƒณไปŽๆบ็ ่ฟ่กŒๆˆ–ๆ‰“ๅŒ… ClawManager๏ผŒ่€Œไธๆ˜ฏ็›ดๆŽฅไฝฟ็”จไป“ๅบ“่‡ชๅธฆ็š„ Kubernetes ๆธ…ๅ•๏ผš +AI Gateway ๆ˜ฏ ClawManager ไธญ่ดŸ่ดฃๆจกๅž‹่ฎฟ้—ฎๆฒป็†็š„ๆŽงๅˆถๅนณ้ขใ€‚ๅฎƒไธบๅ—็ฎก Agent Runtime ๆไพ›็ปŸไธ€็š„ OpenAI ๅ…ผๅฎนๅ…ฅๅฃ๏ผŒๅŒๆ—ถๅœจไธŠๆธธๆจกๅž‹ๆœๅŠกไน‹ไธŠๅ ๅŠ ็ญ–็•ฅใ€ๅฎก่ฎกไธŽๆˆๆœฌๆŽงๅˆถ่ƒฝๅŠ›ใ€‚ -### ๅ‰็ซฏ +- ็ปŸไธ€็š„ๆจกๅž‹่ฎฟ้—ฎๅ…ฅๅฃ +- ๅฎ‰ๅ…จๆจกๅž‹่ทฏ็”ฑไธŽ็ญ–็•ฅ้ฉฑๅŠจ็š„ๆจกๅž‹้€‰ๆ‹ฉ +- ็ซฏๅˆฐ็ซฏๅฎก่ฎกไธŽ่ฟฝ่ธช่ฎฐๅฝ• +- ๅ†…ๅปบๆˆๆœฌๆ ธ็ฎ—ไธŽไฝฟ็”จๅˆ†ๆž +- ๅฏ้˜ปๆ–ญๆˆ–ๆ”น้“่ทฏ็”ฑ็š„้ฃŽ้™ฉๆŽงๅˆถ่ง„ๅˆ™ -```bash -cd frontend -npm install -npm run build -``` +ๅ‚่ง [AI Gateway Guide๏ผˆ่‹ฑๆ–‡๏ผ‰](./docs/aigateway.md)ใ€‚ -### ๅŽ็ซฏ + +### Agent Control Plane -```bash -cd backend -go mod tidy -go build -o bin/clawreef cmd/server/main.go -``` +Agent Control Plane ๆ˜ฏๅ—็ฎก AI Agent ๅฎžไพ‹็š„่ฟ่กŒๆ—ถ็ผ–ๆŽ’ๅฑ‚ใ€‚ๅฎƒ่ฎฉๆฏไธ€ไธชๅฎžไพ‹้ƒฝๆˆไธบๅฏๆณจๅ†Œใ€ๅฏๆฑ‡ๆŠฅ็Šถๆ€ใ€ๅฏๆŽฅๆ”ถๅ‘ฝไปค๏ผŒๅนถๆŒ็ปญๅฏน้ฝๅนณๅฐๆœŸๆœ›ๆ€็š„ๅ—็ฎก่ฟ่กŒๆ—ถใ€‚ -### Docker ้•œๅƒ +- ๅŸบไบŽๅฎ‰ๅ…จๅผ•ๅฏผไธŽไผš่ฏ็”Ÿๅ‘ฝๅ‘จๆœŸ็š„ Agent ๆณจๅ†Œ +- ไพ้ ๅฟƒ่ทณๆœบๅˆถ่ฟ›่กŒ่ฟ่กŒๆ—ถ็Šถๆ€ไธŽๅฅๅบทไธŠๆŠฅ +- ๆŽงๅˆถๅนณ้ขไธŽๅฎžไพ‹ไน‹้—ด็š„ๆœŸๆœ›ๆ€ๅŒๆญฅ +- ๆ”ฏๆŒๅฏๅŠจใ€ๅœๆญขใ€้…็ฝฎๅบ”็”จใ€ๅฅๅบทๆฃ€ๆŸฅไธŽ Skill ๆ“ไฝœ็š„ๅ‘ฝไปคไธ‹ๅ‘ +- ๅœจๅฎžไพ‹็ปดๅบฆๆŸฅ็œ‹ Agent ็Šถๆ€ใ€channelใ€skill ไธŽๅ‘ฝไปคๅކๅฒ -ๅœจไป“ๅบ“ๆ น็›ฎๅฝ•ๆž„ๅปบๅฎŒๆ•ดๅบ”็”จ้•œๅƒ๏ผš +ๅ‚่ง [Agent Control Plane Guide๏ผˆ่‹ฑๆ–‡๏ผ‰](./docs/agent-control-plane.md)ใ€‚ -```bash -docker build -t clawmanager:latest . -``` + +### ่ต„ๆบ็ฎก็† -### ้ป˜่ฎค่ดฆๆˆท +่ต„ๆบ็ฎก็†ๆ˜ฏ AI Agent ๅทฅไฝœ็ฉบ้—ด็š„ๅฏๅค็”จ่ต„ไบงๅฑ‚ใ€‚ๅ›ข้˜Ÿๅฏไปฅๅ…ˆๅ‡†ๅค‡ๅฅฝ channel ๅ’Œ skill๏ผŒๅ†้€š่ฟ‡ bundle ่ฟ›่กŒ็ป„ๅˆใ€ๆณจๅ…ฅๅˆฐๅฎžไพ‹ไธญ๏ผŒๅนถๆŠŠๅฎ‰ๅ…จๅฎกๆŸฅ็บณๅ…ฅๆ•ดไธชไบคไป˜ๆต็จ‹ใ€‚ -- ้ป˜่ฎค็ฎก็†ๅ‘˜่ดฆๆˆท๏ผš`admin / admin123` -- ๅฏผๅ…ฅ็ฎก็†ๅ‘˜็”จๆˆทๆ—ถ็š„้ป˜่ฎคๅฏ†็ ๏ผš`admin123` -- ๅฏผๅ…ฅๆ™ฎ้€š็”จๆˆทๆ—ถ็š„้ป˜่ฎคๅฏ†็ ๏ผš`user123` +- `Channel` ็ฎก็†๏ผŒ็”จไบŽๅทฅไฝœ็ฉบ้—ด่ฟžๆŽฅไธŽ้›†ๆˆๆจกๆฟ +- `Skill` ็ฎก็†๏ผŒ็”จไบŽๅฏๅค็”จ่ƒฝๅŠ›ๅŒ… +- `Skill Scanner` ๅทฅไฝœๆต๏ผŒ็”จไบŽ้ฃŽ้™ฉๅฎกๆŸฅไธŽๆ‰ซๆไปปๅŠก +- ๅŸบไบŽ bundle ็š„่ต„ๆบ็ป„ๅˆ๏ผŒ็”จไบŽๅฏ้‡ๅคไบคไป˜ +- ้€š่ฟ‡ๆณจๅ…ฅๅฟซ็…ง่ฟฝ่ธชๅฎž้™…ไธ‹ๅ‘ๅˆฐๅฎžไพ‹็š„ๅ†…ๅฎน -### ้ฆ–ๆฌกไฝฟ็”จ +ๅ‚่ง [Resource Management Guide๏ผˆ่‹ฑๆ–‡๏ผ‰](./docs/resource-management.md) ไธŽ [Security / Skill Scanner Guide๏ผˆ่‹ฑๆ–‡๏ผ‰](./docs/security-skill-scanner.md)ใ€‚ -1. ไฝฟ็”จ็ฎก็†ๅ‘˜่ดฆๆˆท็™ปๅฝ•ใ€‚ -2. ๅˆ›ๅปบๆˆ–ๅฏผๅ…ฅ็”จๆˆท๏ผŒๅนถๅˆ†้…้…้ขใ€‚ -3. ๅœจ็ณป็ปŸ่ฎพ็ฝฎไธญๆŸฅ็œ‹ๆˆ–ๆ›ดๆ–ฐ่ฟ่กŒๆ—ถ้•œๅƒๅก็‰‡ใ€‚ -4. ไฝฟ็”จๆ™ฎ้€š็”จๆˆท็™ปๅฝ•ๅนถๅˆ›ๅปบๅฎžไพ‹ใ€‚ -5. ้€š่ฟ‡ Portal View ๆˆ– Desktop Access ่ฎฟ้—ฎๆกŒ้ขใ€‚ +## ไบงๅ“็•Œ้ข -## ๆ ธๅฟƒ่ƒฝๅŠ› +ClawManager ็š„่ฎพ่ฎก็›ฎๆ ‡๏ผŒๆ˜ฏ่ฎฉ็ฎก็†ใ€่ฎฟ้—ฎไธŽ AI ๆฒป็†ไฝ“้ชŒๅฝขๆˆ็ปŸไธ€็š„ไบงๅ“็•Œ้ข๏ผŒ่€Œไธๆ˜ฏๅˆ†ๆ•ฃๅœจๅคšไธชๅญค็ซ‹ๅทฅๅ…ทไธญใ€‚ -- ๅฎžไพ‹็”Ÿๅ‘ฝๅ‘จๆœŸ็ฎก็†๏ผšๅˆ›ๅปบใ€ๅฏๅŠจใ€ๅœๆญขใ€้‡ๅฏใ€ๅˆ ้™คใ€ๆŸฅ็œ‹ๅ’ŒๅŒๆญฅ -- ๆ”ฏๆŒ็š„่ฟ่กŒๆ—ถ็ฑปๅž‹๏ผš`openclaw`ใ€`webtop`ใ€`ubuntu`ใ€`debian`ใ€`centos`ใ€`custom` -- ๅŽๅฐ่ฟ่กŒๆ—ถ้•œๅƒๅก็‰‡็ฎก็† -- ็”จๆˆท็บง CPUใ€ๅ†…ๅญ˜ใ€ๅญ˜ๅ‚จใ€GPU ๅ’Œๅฎžไพ‹ๆ•ฐ้‡้…้ขๆŽงๅˆถ -- ่Š‚็‚นใ€CPUใ€ๅ†…ๅญ˜ๅ’Œๅญ˜ๅ‚จ็š„้›†็พค่ต„ๆบๆ€ป่งˆ -- ๅŸบไบŽไปค็‰Œ็š„ๆกŒ้ข่ฎฟ้—ฎไธŽ WebSocket ่ฝฌๅ‘ -- AI Gateway๏ผšๆจกๅž‹็ฎก็†ใ€ๅฏ่ฟฝๆบฏๅฎก่ฎกใ€ๆˆๆœฌๆ ธ็ฎ—ไธŽ้ฃŽ้™ฉๆŽงๅˆถ -- ๅŸบไบŽ CSV ็š„ๆ‰น้‡็”จๆˆทๅฏผๅ…ฅ -- ๅคš่ฏญ่จ€็•Œ้ข +### ็ฎก็†ๆŽงๅˆถๅฐ -## AI Gateway +็ฎก็†ๆŽงๅˆถๅฐๅฐ†็”จๆˆทใ€้…้ขใ€่ฟ่กŒๆ—ถๆ“ไฝœใ€ๅฎ‰ๅ…จๆŽงๅˆถไธŽๅนณๅฐ็บง็ญ–็•ฅ้›†ไธญๅˆฐไธ€่ตท๏ผŒๆ˜ฏๅ›ข้˜Ÿ็ฎก็† AI Agent ๅŸบ็ก€่ฎพๆ–ฝ็š„ๆ ธๅฟƒๅทฅไฝœๅฐใ€‚ -AI Gateway ๆ˜ฏ ClawManager ไธญ่ดŸ่ดฃๆจกๅž‹่ฎฟ้—ฎๆฒป็†็š„ๆŽงๅˆถๅนณ้ขใ€‚ๅฎƒไธบ OpenClaw ๅฎžไพ‹ๆไพ›็ปŸไธ€็š„ OpenAI ๅ…ผๅฎนๅ…ฅๅฃ๏ผŒๅนถๅœจไธŠๆธธ Provider ไน‹ไธŠๅขžๅŠ ็ญ–็•ฅใ€ๅฎก่ฎกๅ’ŒๆˆๆœฌๆŽงๅˆถใ€‚ +

+ ClawManager ็ฎก็†ๆŽงๅˆถๅฐ +

-- ้ขๅ‘ๆ™ฎ้€šๆจกๅž‹ไธŽๅฎ‰ๅ…จๆจกๅž‹็š„ๆจกๅž‹็ฎก็†๏ผŒไปฅๅŠ Provider ๆŽฅๅ…ฅใ€ๅฏๅœใ€็ซฏ็‚น้…็ฝฎๅ’Œไปทๆ ผ็ญ–็•ฅ -- ้ขๅ‘่ฏทๆฑ‚ใ€ๅ“ๅบ”ใ€่ทฏ็”ฑๅ†ณ็ญ–ๅ’Œ้ฃŽ้™ฉๅ‘ฝไธญ็š„ๅ…จ้“พ่ทฏๅฎก่ฎกไธŽ่ฟฝ่ธช่ฎฐๅฝ• -- ๅ†…็ฝฎ Token ็ปŸ่ฎกไธŽไผฐ็ฎ—ๅˆ†ๆž็š„ๆˆๆœฌๆ ธ็ฎ—่ƒฝๅŠ› -- ๅŸบไบŽๅฏ้…็ฝฎ่ง„ๅˆ™็š„้ฃŽ้™ฉๆŽงๅˆถ๏ผŒๅนถๆ”ฏๆŒ `block` ไธŽ `route_secure_model` ็ญ‰่‡ชๅŠจๅŠจไฝœ +### Portal ่ฎฟ้—ฎ -### ๆ”ฏๆŒ็š„ๆจกๅž‹ๆœๅŠกๅนณๅฐ +Portal ไธบ็”จๆˆทๆไพ›็ปŸไธ€็š„ๅทฅไฝœ็ฉบ้—ดๅ…ฅๅฃใ€‚็”จๆˆทๅฏไปฅ้€š่ฟ‡ๆต่งˆๅ™จ่ฎฟ้—ฎๅฎžไพ‹๏ผŒๅนถๆŸฅ็œ‹ไธŽๆŽงๅˆถๅนณ้ขไฟๆŒไธ€่‡ด็š„่ฟ่กŒๆ—ถ็Šถๆ€๏ผŒ่€Œไธ้œ€่ฆ็›ดๆŽฅ้ขๅฏนๅบ•ๅฑ‚ๅŸบ็ก€่ฎพๆ–ฝ็ป†่Š‚ใ€‚ -ClawManager ๅฝ“ๅ‰ๅ†…็ฝฎไบ†ไปฅไธ‹ๆจกๅž‹ๆœๅŠกๅนณๅฐๆจกๆฟ๏ผš +

+ ClawManager Portal ่ฎฟ้—ฎ +

-- OpenAI -- OpenRouter -- DeepSeek -- SiliconFlow -- Moonshot AI -- ๆ™บ่ฐฑ AI -- ้˜ฟ้‡Œไบ‘ DashScope -- ็ซๅฑฑๅผ•ๆ“Ž Ark -- Groq -- Together AI -- Fireworks AI -- xAI -- Perplexity -- 01.AI -- MiniMax -- Local / Internal ๆœฌๅœฐๆˆ–ๅ†…็ฝ‘็ซฏ็‚น +### AI Gateway -ๅ…ถไธญ `Local / Internal` ๆจกๅผไนŸๅฏ็”จไบŽๆŽฅๅ…ฅ่‡ชๅปบ OpenAI-compatible ็ฝ‘ๅ…ณใ€Ollamaใ€One API ไปฅๅŠๅ…ถไป–ๅ†…็ฝ‘ๆจกๅž‹ๆœๅŠกใ€‚ +AI Gateway ๅฐ†ๆจกๅž‹่ฎฟ้—ฎๆฒป็†็บณๅ…ฅๅทฅไฝœ็ฉบ้—ดไฝ“้ชŒๆœฌ่บซ๏ผŒๆไพ›ๅฎก่ฎก่ฎฐๅฝ•ใ€ๆˆๆœฌๅฏ่งๆ€งไธŽ้ฃŽ้™ฉ่ทฏ็”ฑ่ƒฝๅŠ›๏ผŒ่ฎฉ AI ไฝฟ็”จๆˆไธบๅนณๅฐ่ƒฝๅŠ›็š„ไธ€้ƒจๅˆ†๏ผŒ่€Œไธๆ˜ฏ้›ถๆ•ฃๆŽฅๅ…ฅใ€‚ -ๅฆ‚้œ€ๆŸฅ็œ‹ๆˆชๅ›พใ€ๅฎŒๆ•ดๅŠŸ่ƒฝๆ‹†่งฃไปฅๅŠๆจกๅž‹้€‰ๆ‹ฉไธŽ่ทฏ็”ฑๆต็จ‹๏ผŒ่ฏทๅ‚้˜… [docs/aigateway.md](./docs/aigateway.md)ใ€‚ +

+ ClawManager AI Gateway +

-## ไบงๅ“ๆต็จ‹ +## ๅทฅไฝœๆ–นๅผ -1. ็ฎก็†ๅ‘˜ๅฎšไน‰็”จๆˆทใ€้…้ขๅ’Œ่ฟ่กŒๆ—ถ้•œๅƒ็ญ–็•ฅใ€‚ -2. ็”จๆˆทๅˆ›ๅปบ OpenClaw ๆˆ– Linux ๆกŒ้ขๅฎžไพ‹ใ€‚ -3. ClawManager ๅˆ›ๅปบๅนถ่ทŸ่ธช Kubernetes ่ต„ๆบใ€‚ -4. ็”จๆˆท้€š่ฟ‡ๅนณๅฐ่ฎฟ้—ฎๆกŒ้ขใ€‚ -5. ็ฎก็†ๅ‘˜้€š่ฟ‡ไปช่กจ็›˜็›‘ๆŽงๅฅๅบท็Šถๆ€ๅ’Œๅฎน้‡ใ€‚ +1. ็ฎก็†ๅ‘˜ๅ…ˆๅฎšไน‰ๆฒป็†็ญ–็•ฅไธŽๅฏๅค็”จ่ต„ๆบใ€‚ +2. ็”จๆˆทๅœจ Kubernetes ไธŠๅˆ›ๅปบๆˆ–่ฟ›ๅ…ฅๅ—็ฎก AI Agent ๅทฅไฝœ็ฉบ้—ดใ€‚ +3. Agent ๅ›ž่ฟžๆŽงๅˆถๅนณ้ขๅนถไธŠๆŠฅ่ฟ่กŒๆ—ถ็Šถๆ€ใ€‚ +4. Channelใ€skill ไธŽ bundle ่ขซ็ผ–่ฏ‘ๅนถๅบ”็”จๅˆฐๅฎžไพ‹ไธญใ€‚ +5. AI ๆต้‡้€š่ฟ‡ AI Gateway ่ฟ›ๅ…ฅไธŠๆธธๆœๅŠก๏ผŒๅนถ้™„ๅธฆๅฎก่ฎกใ€้ฃŽ้™ฉไธŽๆˆๆœฌๆŽงๅˆถใ€‚ -## ๆžถๆž„ +## ๅผ€ๅ‘่€…ๆฆ‚่งˆ -```text -Browser - -> ClawManager Frontend - -> ClawManager Backend - -> MySQL - -> Kubernetes API - -> Pod / PVC / Service - -> OpenClaw / Webtop / Linux Desktop Runtime -``` +ClawManager ๆ˜ฏไธ€ไธช Kubernetes ๅŽŸ็”Ÿๅนณๅฐ๏ผŒๅŒ…ๅซ React ๅ‰็ซฏใ€Go ๅŽ็ซฏใ€MySQL ็Šถๆ€ๅญ˜ๅ‚จ๏ผŒไปฅๅŠ `skill-scanner` ไธŽๅฏน่ฑกๅญ˜ๅ‚จ็ญ‰ๆ”ฏๆ’‘็ป„ไปถใ€‚ไปฃ็ ๅบ“ๆŒ‰ไบงๅ“ๅญ็ณป็ปŸ็ป„็ป‡๏ผŒๅ› ๆญคๆ›ด้€‚ๅˆไปŽๅฏนๅบ”่ƒฝๅŠ›็š„ๆŒ‡ๅ—ๅˆ‡ๅ…ฅ๏ผŒๅ†่ฟ›ๅ…ฅไปฃ็ ๅฎž็Žฐใ€‚ -## ้…็ฝฎ่ฏดๆ˜Ž +- ๅ‰็ซฏ็ฎก็†็•Œ้ขไธŽ็”จๆˆท็•Œ้ขไฝไบŽ `frontend/` +- ๅŽ็ซฏๆœๅŠกใ€handlerใ€repository ไธŽ migration ไฝไบŽ `backend/` +- ้ƒจ็ฝฒ่ต„ไบงไฝไบŽ `deployments/` +- ไบงๅ“ๆ–‡ๆกฃไธŽ็ด ๆไฝไบŽ `docs/` -- ๅฎžไพ‹ๆœๅŠกไฟ็•™ๅœจ Kubernetes ้›†็พคๅ†…้ƒจ็ฝ‘็ปœ -- ๆกŒ้ข่ฎฟ้—ฎ้€š่ฟ‡ๅทฒ่ฎค่ฏ็š„ๅŽ็ซฏไปฃ็†่ฝฌๅ‘ -- ่ฟ่กŒๆ—ถ้•œๅƒๅฏไปฅๅœจ็ณป็ปŸ่ฎพ็ฝฎไธญ่ฆ†็›– -- ๅŽ็ซฏๆœ€ๅฅฝ้ƒจ็ฝฒๅœจ้›†็พคๅ†…้ƒจ - -ๅธธ็”จๅŽ็ซฏ็Žฏๅขƒๅ˜้‡๏ผš +ๅ‚่ง [Developer Guide๏ผˆ่‹ฑๆ–‡๏ผ‰](./docs/developer-guide.md)ใ€‚ -- `SERVER_ADDRESS` -- `SERVER_MODE` -- `DB_HOST` -- `DB_PORT` -- `DB_USER` -- `DB_PASSWORD` -- `DB_NAME` -- `JWT_SECRET` - -### CSV ๅฏผๅ…ฅๆจกๆฟ +## ๆ–‡ๆกฃ -```csv -Username,Email,Role,Max Instances,Max CPU Cores,Max Memory (GB),Max Storage (GB),Max GPU Count (optional) -``` - -่ฏดๆ˜Ž๏ผš - -- `Email` ไธบๅฏ้€‰้กน -- `Max GPU Count (optional)` ไธบๅฏ้€‰้กน -- ๅ…ถไป–ๅˆ—ๅ‡ไธบๅฟ…ๅกซ้กน +- [็”จๆˆทๆŒ‡ๅ—](./docs/use_guide_cn.md) +- [Deployment Guide๏ผˆ่‹ฑๆ–‡๏ผ‰](./docs/deployment.md) +- [Admin and User Guide๏ผˆ่‹ฑๆ–‡๏ผ‰](./docs/admin-user-guide.md) +- [Agent Control Plane Guide๏ผˆ่‹ฑๆ–‡๏ผ‰](./docs/agent-control-plane.md) +- [AI Gateway Guide๏ผˆ่‹ฑๆ–‡๏ผ‰](./docs/aigateway.md) +- [Security / Skill Scanner Guide๏ผˆ่‹ฑๆ–‡๏ผ‰](./docs/security-skill-scanner.md) +- [Resource Management Guide๏ผˆ่‹ฑๆ–‡๏ผ‰](./docs/resource-management.md) +- [Developer Guide๏ผˆ่‹ฑๆ–‡๏ผ‰](./docs/developer-guide.md) ## ่ฎธๅฏ่ฏ -ๆœฌ้กน็›ฎๅŸบไบŽ MIT License ๅ‘ๅธƒใ€‚ +ๆœฌ้กน็›ฎๅŸบไบŽ MIT License ๅผ€ๆบใ€‚ -## ๅผ€ๆบ +## ๅผ€ๆบๅไฝœ -ๆฌข่ฟŽๆไบค issue ๅ’Œ pull requestใ€‚ +ๆฌข่ฟŽๆไบค Issue ไธŽ Pull Requestใ€‚ ## Star History diff --git a/deployments/k3s/clawmanager.yaml b/deployments/k3s/clawmanager.yaml new file mode 100644 index 0000000..374a02b --- /dev/null +++ b/deployments/k3s/clawmanager.yaml @@ -0,0 +1,782 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: clawmanager-system +--- +apiVersion: v1 +kind: Secret +metadata: + name: clawmanager-secrets + namespace: clawmanager-system +type: Opaque +stringData: + mysql-root-password: root123 + mysql-password: clawreef123 + jwt-secret: change-me-in-production +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: clawmanager-mysql-init + namespace: clawmanager-system +data: + 001_init_schema.sql: | + CREATE DATABASE IF NOT EXISTS clawmanager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + USE clawmanager; + + CREATE TABLE IF NOT EXISTS users ( + id INT AUTO_INCREMENT PRIMARY KEY, + username VARCHAR(255) UNIQUE NOT NULL, + email VARCHAR(320) UNIQUE NOT NULL, + password_hash VARCHAR(255) NOT NULL, + role ENUM('admin', 'user') DEFAULT 'user', + is_active BOOLEAN DEFAULT TRUE, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + last_login TIMESTAMP, + INDEX idx_username (username), + INDEX idx_role (role) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS instances ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL, + name VARCHAR(255) NOT NULL, + description TEXT, + type ENUM('openclaw', 'ubuntu', 'debian', 'centos', 'custom', 'webtop') DEFAULT 'ubuntu', + status ENUM('creating', 'running', 'stopped', 'error', 'deleting') DEFAULT 'creating', + cpu_cores INT NOT NULL, + memory_gb INT NOT NULL, + disk_gb INT NOT NULL, + gpu_enabled BOOLEAN DEFAULT FALSE, + gpu_type VARCHAR(100), + gpu_count INT DEFAULT 0, + os_type VARCHAR(50) NOT NULL, + os_version VARCHAR(50) NOT NULL, + image_registry VARCHAR(255), + image_tag VARCHAR(100), + storage_class VARCHAR(50) DEFAULT 'standard', + mount_path VARCHAR(255) DEFAULT '/data', + pod_name VARCHAR(255), + pod_namespace VARCHAR(255), + pod_ip VARCHAR(45), + access_url VARCHAR(500), + access_token VARCHAR(255), + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + started_at TIMESTAMP, + stopped_at TIMESTAMP, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, + INDEX idx_user_id (user_id), + INDEX idx_status (status), + INDEX idx_type (type) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS persistent_volumes ( + id INT AUTO_INCREMENT PRIMARY KEY, + instance_id INT NOT NULL, + pvc_name VARCHAR(255) UNIQUE NOT NULL, + pvc_namespace VARCHAR(255) NOT NULL, + storage_size_gb INT NOT NULL, + storage_class VARCHAR(50), + mount_path VARCHAR(255), + status ENUM('pending', 'bound', 'released', 'failed') DEFAULT 'pending', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (instance_id) REFERENCES instances(id) ON DELETE CASCADE, + INDEX idx_instance_id (instance_id), + UNIQUE KEY uk_pvc_name_namespace (pvc_name, pvc_namespace) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS backups ( + id INT AUTO_INCREMENT PRIMARY KEY, + instance_id INT NOT NULL, + backup_name VARCHAR(255) NOT NULL, + backup_size_gb INT, + backup_path VARCHAR(500), + status ENUM('creating', 'completed', 'failed', 'deleted') DEFAULT 'creating', + backup_type ENUM('manual', 'scheduled') DEFAULT 'manual', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + completed_at TIMESTAMP, + expires_at TIMESTAMP, + FOREIGN KEY (instance_id) REFERENCES instances(id) ON DELETE CASCADE, + INDEX idx_instance_id (instance_id), + INDEX idx_created_at (created_at) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS backup_schedules ( + id INT AUTO_INCREMENT PRIMARY KEY, + instance_id INT NOT NULL, + schedule_name VARCHAR(255), + cron_expression VARCHAR(100) NOT NULL, + retention_days INT DEFAULT 30, + is_active BOOLEAN DEFAULT TRUE, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (instance_id) REFERENCES instances(id) ON DELETE CASCADE, + INDEX idx_instance_id (instance_id) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS user_quotas ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL UNIQUE, + max_instances INT DEFAULT 10, + max_cpu_cores INT DEFAULT 40, + max_memory_gb INT DEFAULT 100, + max_storage_gb INT DEFAULT 500, + max_gpu_count INT DEFAULT 2, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, + INDEX idx_user_id (user_id) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS instance_usage ( + id INT AUTO_INCREMENT PRIMARY KEY, + instance_id INT NOT NULL, + cpu_usage_percent DECIMAL(5,2), + memory_usage_gb DECIMAL(10,2), + disk_usage_gb DECIMAL(10,2), + gpu_usage_percent DECIMAL(5,2), + uptime_seconds INT, + recorded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (instance_id) REFERENCES instances(id) ON DELETE CASCADE, + INDEX idx_instance_recorded (instance_id, recorded_at) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS audit_logs ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT, + action VARCHAR(100) NOT NULL, + resource_type VARCHAR(50) NOT NULL, + resource_id INT, + details JSON, + ip_address VARCHAR(45), + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL, + INDEX idx_user_id (user_id), + INDEX idx_action (action), + INDEX idx_created_at (created_at) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + INSERT INTO users (username, email, password_hash, role, is_active) + SELECT 'admin', 'admin@clawmanager.local', '$2a$10$pbenze514mwv3pvQySQBVOsF5J4DBXL2kVo1hLa8JFhQu5x3AKvBi', 'admin', TRUE + WHERE NOT EXISTS (SELECT 1 FROM users WHERE username = 'admin'); + + INSERT INTO user_quotas (user_id, max_instances, max_cpu_cores, max_memory_gb, max_storage_gb, max_gpu_count) + SELECT id, 100, 200, 1000, 5000, 10 FROM users + WHERE username = 'admin' + AND NOT EXISTS (SELECT 1 FROM user_quotas WHERE user_id = users.id); + 002_add_webtop_instance_type.sql: | + USE clawmanager; + ALTER TABLE instances + MODIFY COLUMN type ENUM('openclaw', 'ubuntu', 'debian', 'centos', 'custom', 'webtop') DEFAULT 'ubuntu'; + 003_add_system_image_settings.sql: | + USE clawmanager; + CREATE TABLE IF NOT EXISTS system_image_settings ( + id INT AUTO_INCREMENT PRIMARY KEY, + instance_type VARCHAR(50) NOT NULL UNIQUE, + display_name VARCHAR(255) NOT NULL, + image VARCHAR(500) NOT NULL, + is_enabled BOOLEAN NOT NULL DEFAULT TRUE, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX idx_instance_type (instance_type) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + 004_fix_seeded_admin_password.sql: | + USE clawmanager; + UPDATE users + SET password_hash = '$2a$10$pbenze514mwv3pvQySQBVOsF5J4DBXL2kVo1hLa8JFhQu5x3AKvBi' + WHERE username = 'admin' + AND password_hash = '$2a$10$N9qo8uLOickgx2ZMRZoMy.MqrzL9wGC3qD3Q.ZHqQH6t3q7l1L5uG'; + 005_update_openclaw_default_image.sql: | + USE clawmanager; + UPDATE system_image_settings + SET image = 'ghcr.io/yuan-lab-llm/clawmanager-openclaw-image/openclaw:latest' + WHERE instance_type = 'openclaw' + AND image = 'ericpearlee/openclaw:v2026.3.24'; + 006_add_openclaw_config_center.sql: | + USE clawmanager; + SET @openclaw_snapshot_column_exists = ( + SELECT COUNT(*) + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'instances' + AND COLUMN_NAME = 'openclaw_config_snapshot_id' + ); + SET @openclaw_snapshot_column_sql = IF( + @openclaw_snapshot_column_exists = 0, + 'ALTER TABLE instances ADD COLUMN openclaw_config_snapshot_id INT NULL AFTER access_token', + 'SELECT 1' + ); + PREPARE openclaw_snapshot_column_stmt FROM @openclaw_snapshot_column_sql; + EXECUTE openclaw_snapshot_column_stmt; + DEALLOCATE PREPARE openclaw_snapshot_column_stmt; + + CREATE TABLE IF NOT EXISTS openclaw_config_resources ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL, + resource_type VARCHAR(50) NOT NULL, + resource_key VARCHAR(100) NOT NULL, + name VARCHAR(255) NOT NULL, + description TEXT NULL, + enabled BOOLEAN NOT NULL DEFAULT TRUE, + version INT NOT NULL DEFAULT 1, + tags_json LONGTEXT NOT NULL, + content_json LONGTEXT NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, + UNIQUE KEY uk_openclaw_resource_key (user_id, resource_type, resource_key), + INDEX idx_openclaw_resource_user_type (user_id, resource_type), + INDEX idx_openclaw_resource_user_enabled (user_id, enabled) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS openclaw_config_bundles ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL, + name VARCHAR(255) NOT NULL, + description TEXT NULL, + enabled BOOLEAN NOT NULL DEFAULT TRUE, + version INT NOT NULL DEFAULT 1, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, + INDEX idx_openclaw_bundle_user (user_id), + INDEX idx_openclaw_bundle_user_enabled (user_id, enabled) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS openclaw_config_bundle_items ( + id INT AUTO_INCREMENT PRIMARY KEY, + bundle_id INT NOT NULL, + resource_id INT NOT NULL, + sort_order INT NOT NULL DEFAULT 0, + required BOOLEAN NOT NULL DEFAULT TRUE, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (bundle_id) REFERENCES openclaw_config_bundles(id) ON DELETE CASCADE, + FOREIGN KEY (resource_id) REFERENCES openclaw_config_resources(id) ON DELETE CASCADE, + UNIQUE KEY uk_openclaw_bundle_resource (bundle_id, resource_id), + INDEX idx_openclaw_bundle_item_bundle (bundle_id, sort_order) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS openclaw_injection_snapshots ( + id INT AUTO_INCREMENT PRIMARY KEY, + instance_id INT NULL, + user_id INT NOT NULL, + mode VARCHAR(20) NOT NULL, + bundle_id INT NULL, + selected_resource_ids_json LONGTEXT NOT NULL, + resolved_resources_json LONGTEXT NOT NULL, + rendered_manifest_json LONGTEXT NOT NULL, + rendered_env_json LONGTEXT NOT NULL, + secret_name VARCHAR(255) NULL, + status VARCHAR(30) NOT NULL DEFAULT 'pending', + error_message TEXT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + activated_at TIMESTAMP NULL, + INDEX idx_openclaw_snapshot_user_created (user_id, created_at), + INDEX idx_openclaw_snapshot_instance (instance_id), + INDEX idx_openclaw_snapshot_bundle (bundle_id) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + 007_add_instance_agent_control_plane.sql: | + USE clawmanager; + SET @instance_agent_bootstrap_token_column_exists = ( + SELECT COUNT(*) + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'instances' + AND COLUMN_NAME = 'agent_bootstrap_token' + ); + SET @instance_agent_bootstrap_token_column_sql = IF( + @instance_agent_bootstrap_token_column_exists = 0, + 'ALTER TABLE instances ADD COLUMN agent_bootstrap_token VARCHAR(255) NULL AFTER access_token', + 'SELECT 1' + ); + PREPARE instance_agent_bootstrap_token_column_stmt FROM @instance_agent_bootstrap_token_column_sql; + EXECUTE instance_agent_bootstrap_token_column_stmt; + DEALLOCATE PREPARE instance_agent_bootstrap_token_column_stmt; + + CREATE TABLE IF NOT EXISTS instance_agents ( + id INT AUTO_INCREMENT PRIMARY KEY, + instance_id INT NOT NULL, + agent_id VARCHAR(255) NOT NULL, + agent_version VARCHAR(50) NOT NULL, + protocol_version VARCHAR(50) NOT NULL, + status VARCHAR(30) NOT NULL DEFAULT 'online', + capabilities_json LONGTEXT NOT NULL, + host_info_json LONGTEXT NULL, + session_token VARCHAR(255) NULL, + session_expires_at TIMESTAMP NULL, + last_heartbeat_at TIMESTAMP NULL, + last_reported_at TIMESTAMP NULL, + last_seen_ip VARCHAR(45) NULL, + registered_at TIMESTAMP NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (instance_id) REFERENCES instances(id) ON DELETE CASCADE, + UNIQUE KEY uk_instance_agents_instance (instance_id), + UNIQUE KEY uk_instance_agents_session_token (session_token), + INDEX idx_instance_agents_agent_id (agent_id), + INDEX idx_instance_agents_status (status), + INDEX idx_instance_agents_last_heartbeat (last_heartbeat_at) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS instance_runtime_status ( + id INT AUTO_INCREMENT PRIMARY KEY, + instance_id INT NOT NULL, + infra_status VARCHAR(30) NOT NULL DEFAULT 'creating', + agent_status VARCHAR(30) NOT NULL DEFAULT 'offline', + openclaw_status VARCHAR(30) NOT NULL DEFAULT 'unknown', + openclaw_pid INT NULL, + openclaw_version VARCHAR(100) NULL, + current_config_revision_id INT NULL, + desired_config_revision_id INT NULL, + summary_json LONGTEXT NULL, + system_info_json LONGTEXT NULL, + health_json LONGTEXT NULL, + last_reported_at TIMESTAMP NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (instance_id) REFERENCES instances(id) ON DELETE CASCADE, + UNIQUE KEY uk_instance_runtime_status_instance (instance_id), + INDEX idx_instance_runtime_status_agent_status (agent_status), + INDEX idx_instance_runtime_status_openclaw_status (openclaw_status) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS instance_desired_state ( + id INT AUTO_INCREMENT PRIMARY KEY, + instance_id INT NOT NULL, + desired_power_state VARCHAR(30) NOT NULL DEFAULT 'running', + desired_config_revision_id INT NULL, + desired_runtime_action VARCHAR(50) NULL, + updated_by INT NULL, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (instance_id) REFERENCES instances(id) ON DELETE CASCADE, + FOREIGN KEY (updated_by) REFERENCES users(id) ON DELETE SET NULL, + UNIQUE KEY uk_instance_desired_state_instance (instance_id) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS instance_commands ( + id INT AUTO_INCREMENT PRIMARY KEY, + instance_id INT NOT NULL, + agent_id VARCHAR(255) NULL, + command_type VARCHAR(50) NOT NULL, + payload_json LONGTEXT NULL, + status VARCHAR(30) NOT NULL DEFAULT 'pending', + idempotency_key VARCHAR(255) NOT NULL, + issued_by INT NULL, + issued_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + dispatched_at TIMESTAMP NULL, + started_at TIMESTAMP NULL, + finished_at TIMESTAMP NULL, + timeout_seconds INT NOT NULL DEFAULT 300, + result_json LONGTEXT NULL, + error_message TEXT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (instance_id) REFERENCES instances(id) ON DELETE CASCADE, + FOREIGN KEY (issued_by) REFERENCES users(id) ON DELETE SET NULL, + UNIQUE KEY uk_instance_commands_idempotency (instance_id, idempotency_key), + INDEX idx_instance_commands_instance_status (instance_id, status), + INDEX idx_instance_commands_agent_status (agent_id, status), + INDEX idx_instance_commands_issued_at (issued_at) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS instance_config_revisions ( + id INT AUTO_INCREMENT PRIMARY KEY, + instance_id INT NOT NULL, + source_snapshot_id INT NULL, + source_bundle_id INT NULL, + revision_no INT NOT NULL, + content_json LONGTEXT NOT NULL, + checksum VARCHAR(255) NOT NULL, + status VARCHAR(30) NOT NULL DEFAULT 'published', + published_by INT NULL, + published_at TIMESTAMP NULL, + activated_at TIMESTAMP NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (instance_id) REFERENCES instances(id) ON DELETE CASCADE, + FOREIGN KEY (published_by) REFERENCES users(id) ON DELETE SET NULL, + UNIQUE KEY uk_instance_config_revision_unique (instance_id, revision_no), + INDEX idx_instance_config_revision_instance (instance_id, revision_no), + INDEX idx_instance_config_revision_status (status) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + 008_add_skill_management.sql: | + USE clawmanager; + CREATE TABLE IF NOT EXISTS skill_blobs ( + id INT AUTO_INCREMENT PRIMARY KEY, + content_hash VARCHAR(128) NOT NULL, + archive_hash VARCHAR(128) NOT NULL, + object_key VARCHAR(512) NOT NULL, + file_name VARCHAR(255) NOT NULL, + media_type VARCHAR(100) NOT NULL DEFAULT 'application/gzip', + size_bytes BIGINT NOT NULL DEFAULT 0, + scan_status VARCHAR(30) NOT NULL DEFAULT 'pending', + risk_level VARCHAR(30) NOT NULL DEFAULT 'unknown', + last_scanned_at TIMESTAMP NULL, + last_scan_result_id INT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + UNIQUE KEY uk_skill_blobs_content_hash (content_hash), + INDEX idx_skill_blobs_scan_status (scan_status), + INDEX idx_skill_blobs_risk_level (risk_level) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS skills ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL, + skill_key VARCHAR(120) NOT NULL, + name VARCHAR(255) NOT NULL, + description TEXT NULL, + current_version_id INT NULL, + source_type VARCHAR(30) NOT NULL DEFAULT 'uploaded', + status VARCHAR(30) NOT NULL DEFAULT 'active', + risk_level VARCHAR(30) NOT NULL DEFAULT 'unknown', + last_scanned_at TIMESTAMP NULL, + last_scan_result_id INT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, + UNIQUE KEY uk_skills_user_key (user_id, skill_key), + INDEX idx_skills_user_status (user_id, status), + INDEX idx_skills_risk_level (risk_level) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS skill_versions ( + id INT AUTO_INCREMENT PRIMARY KEY, + skill_id INT NOT NULL, + blob_id INT NOT NULL, + version_no INT NOT NULL, + manifest_json LONGTEXT NULL, + source_type VARCHAR(30) NOT NULL DEFAULT 'uploaded', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (skill_id) REFERENCES skills(id) ON DELETE CASCADE, + FOREIGN KEY (blob_id) REFERENCES skill_blobs(id) ON DELETE RESTRICT, + UNIQUE KEY uk_skill_versions_skill_version (skill_id, version_no), + UNIQUE KEY uk_skill_versions_skill_blob (skill_id, blob_id), + INDEX idx_skill_versions_skill_id (skill_id, version_no) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS instance_skills ( + id INT AUTO_INCREMENT PRIMARY KEY, + instance_id INT NOT NULL, + skill_id INT NOT NULL, + skill_version_id INT NULL, + source_type VARCHAR(40) NOT NULL DEFAULT 'discovered_in_instance', + install_path VARCHAR(1024) NULL, + observed_hash VARCHAR(128) NULL, + status VARCHAR(30) NOT NULL DEFAULT 'active', + last_seen_at TIMESTAMP NULL, + removed_at TIMESTAMP NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (instance_id) REFERENCES instances(id) ON DELETE CASCADE, + FOREIGN KEY (skill_id) REFERENCES skills(id) ON DELETE CASCADE, + FOREIGN KEY (skill_version_id) REFERENCES skill_versions(id) ON DELETE SET NULL, + UNIQUE KEY uk_instance_skills_instance_skill (instance_id, skill_id), + INDEX idx_instance_skills_instance (instance_id, status), + INDEX idx_instance_skills_skill (skill_id, status) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + CREATE TABLE IF NOT EXISTS skill_scan_results ( + id INT AUTO_INCREMENT PRIMARY KEY, + blob_id INT NOT NULL, + engine VARCHAR(60) NOT NULL, + risk_level VARCHAR(30) NOT NULL DEFAULT 'unknown', + status VARCHAR(30) NOT NULL DEFAULT 'completed', + summary TEXT NULL, + findings_json LONGTEXT NULL, + scanned_at TIMESTAMP NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (blob_id) REFERENCES skill_blobs(id) ON DELETE CASCADE, + INDEX idx_skill_scan_results_blob (blob_id, scanned_at), + INDEX idx_skill_scan_results_risk (risk_level, scanned_at) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: mysql-data + namespace: clawmanager-system +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + storageClassName: local-path +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mysql + namespace: clawmanager-system +spec: + replicas: 1 + selector: + matchLabels: + app: mysql + template: + metadata: + labels: + app: mysql + spec: + containers: + - name: mysql + image: mysql:8.4.8 + ports: + - containerPort: 3306 + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: clawmanager-secrets + key: mysql-root-password + - name: MYSQL_DATABASE + value: clawmanager + - name: MYSQL_USER + value: clawmanager + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + name: clawmanager-secrets + key: mysql-password + volumeMounts: + - name: mysql-data + mountPath: /var/lib/mysql + - name: mysql-init + mountPath: /docker-entrypoint-initdb.d + readinessProbe: + exec: + command: ["sh", "-c", "mysqladmin ping -h 127.0.0.1 -uroot -p$MYSQL_ROOT_PASSWORD"] + initialDelaySeconds: 20 + periodSeconds: 10 + volumes: + - name: mysql-data + persistentVolumeClaim: + claimName: mysql-data + - name: mysql-init + configMap: + name: clawmanager-mysql-init +--- +apiVersion: v1 +kind: Service +metadata: + name: mysql + namespace: clawmanager-system +spec: + selector: + app: mysql + ports: + - name: mysql + port: 3306 + targetPort: 3306 +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: clawmanager-app + namespace: clawmanager-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: clawmanager-app-cluster-admin +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: + - kind: ServiceAccount + name: clawmanager-app + namespace: clawmanager-system +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: clawmanager-app + namespace: clawmanager-system +spec: + replicas: 1 + selector: + matchLabels: + app: clawmanager-app + template: + metadata: + labels: + app: clawmanager-app + spec: + serviceAccountName: clawmanager-app + containers: + - name: clawmanager-app + image: ghcr.io/yuan-lab-llm/clawmanager:latest + imagePullPolicy: IfNotPresent + ports: + - name: http + containerPort: 8443 + env: + - name: SERVER_ADDRESS + value: ":9001" + - name: SERVER_MODE + value: "release" + - name: DB_HOST + value: "mysql" + - name: DB_PORT + value: "3306" + - name: DB_USER + value: "clawmanager" + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: clawmanager-secrets + key: mysql-password + - name: DB_NAME + value: "clawmanager" + - name: JWT_SECRET + valueFrom: + secretKeyRef: + name: clawmanager-secrets + key: jwt-secret + - name: K8S_MODE + value: "incluster" + - name: K8S_NAMESPACE + value: "clawmanager" + - name: K8S_STORAGE_CLASS + value: "local-path" + - name: SKILL_SCANNER_ENABLED + value: "true" + - name: SKILL_SCANNER_BASE_URL + value: "http://skill-scanner.clawmanager-system.svc.cluster.local:8000" + - name: SKILL_SCANNER_TIMEOUT_SECONDS + value: "120" + - name: SKILL_SCANNER_NAMESPACE + value: "clawmanager-system" + - name: SKILL_SCANNER_DEPLOYMENT + value: "skill-scanner" + - name: OBJECT_STORAGE_LOCAL_FALLBACK + value: "/data/object-storage" + volumeMounts: + - name: object-storage + mountPath: /data/object-storage + readinessProbe: + httpGet: + path: /healthz + port: 8443 + scheme: HTTPS + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 3 + livenessProbe: + httpGet: + path: /healthz + port: 8443 + scheme: HTTPS + initialDelaySeconds: 30 + periodSeconds: 20 + timeoutSeconds: 5 + volumes: + - name: object-storage + emptyDir: {} +--- +apiVersion: v1 +kind: Service +metadata: + name: clawmanager-frontend + namespace: clawmanager-system +spec: + type: NodePort + selector: + app: clawmanager-app + ports: + - name: https + port: 443 + targetPort: 8443 + nodePort: 30443 +--- +apiVersion: v1 +kind: Service +metadata: + name: clawmanager-gateway + namespace: clawmanager-system +spec: + type: ClusterIP + selector: + app: clawmanager-app + ports: + - name: api + port: 8443 + targetPort: 8443 +--- +apiVersion: v1 +kind: Service +metadata: + name: clawmanager-egress-proxy + namespace: clawmanager-system +spec: + type: ClusterIP + selector: + app: clawmanager-app + ports: + - name: proxy + port: 3128 + targetPort: 8443 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: skill-scanner + namespace: clawmanager-system +spec: + replicas: 1 + selector: + matchLabels: + app: skill-scanner + template: + metadata: + labels: + app: skill-scanner + spec: + containers: + - name: skill-scanner + image: ghcr.io/yuan-lab-llm/skill-scanner:latest + imagePullPolicy: IfNotPresent + command: + - /opt/skill-scanner-venv/bin/skill-scanner-api + - --host + - 0.0.0.0 + - --port + - "8000" + env: + - name: SKILL_SCANNER_LLM_API_KEY + value: "" + - name: SKILL_SCANNER_LLM_MODEL + value: "" + - name: SKILL_SCANNER_LLM_BASE_URL + value: "" + - name: SKILL_SCANNER_META_LLM_API_KEY + value: "" + - name: SKILL_SCANNER_META_LLM_MODEL + value: "" + - name: SKILL_SCANNER_META_LLM_BASE_URL + value: "" + ports: + - name: http + containerPort: 8000 +--- +apiVersion: v1 +kind: Service +metadata: + name: skill-scanner + namespace: clawmanager-system +spec: + selector: + app: skill-scanner + ports: + - name: http + port: 8000 + targetPort: http diff --git a/docs/admin-user-guide.md b/docs/admin-user-guide.md new file mode 100644 index 0000000..e986a4a --- /dev/null +++ b/docs/admin-user-guide.md @@ -0,0 +1,36 @@ +# Admin and User Guide + +This guide maps the main product surfaces for administrators and end users. It is the best starting point when you want to understand how ClawManager is experienced in day-to-day use rather than how it is deployed. + +## Admin Experience + +Administrators use ClawManager to: + +- manage users, quotas, and platform-wide policies +- review instances and cluster-level operations +- govern AI Gateway models, audit trails, cost analysis, and risk rules +- manage Security Center and `skill-scanner` operations +- prepare reusable resources that users can apply to workspaces + +## User Experience + +End users use ClawManager to: + +- create or access OpenClaw workspaces +- open workspaces through the portal experience +- inspect runtime status, agent signals, and recent command activity +- attach or remove skills from an instance when permitted +- consume platform-governed AI access through AI Gateway + +## Product Areas + +- [AI Gateway Guide](./aigateway.md) +- [Agent Control Plane Guide](./agent-control-plane.md) +- [Resource Management Guide](./resource-management.md) +- [Security / Skill Scanner Guide](./security-skill-scanner.md) + +## Suggested Walkthrough + +1. Start with the AI Gateway overview if your team cares most about model governance. +2. Review Agent Control Plane if your focus is runtime visibility and operations. +3. Review Resource Management and Security Center if you want reusable channels, skills, and scan-backed workflows. diff --git a/docs/agent-control-plane.md b/docs/agent-control-plane.md new file mode 100644 index 0000000..8442580 --- /dev/null +++ b/docs/agent-control-plane.md @@ -0,0 +1,43 @@ +# Agent Control Plane Guide + +Agent Control Plane is the runtime orchestration layer for OpenClaw instances in ClawManager. It allows the platform to understand live runtime state, distribute commands, and keep each managed workspace aligned with the desired state defined by the control plane. + +## Core Responsibilities + +- agent bootstrap and registration for OpenClaw instances +- authenticated session lifecycle between the runtime agent and the platform +- heartbeat-driven runtime and health reporting +- desired power state and desired config revision tracking +- command dispatch and completion tracking for runtime operations + +## Runtime Signals + +The control plane keeps a runtime view that includes: + +- agent identity, version, and last heartbeat +- runtime status and OpenClaw status +- current and desired config revision +- reported summary data such as agent, channel, and skill counts +- recent command history and execution outcomes + +## Typical Commands + +Examples of platform-driven runtime actions include: + +- start, stop, and restart operations +- config revision apply and reload +- health checks and system info collection +- skill install, update, removal, quarantine, and inventory refresh + +## Where It Shows Up in the Product + +- instance detail views for agent status and runtime summaries +- runtime command history and execution feedback +- workflows that apply config revisions or skill-related changes to a workspace + +## Related Guides + +- [Admin and User Guide](./admin-user-guide.md) +- [Resource Management Guide](./resource-management.md) +- [Security / Skill Scanner Guide](./security-skill-scanner.md) +- [Developer Guide](./developer-guide.md) diff --git a/docs/deployment.md b/docs/deployment.md new file mode 100644 index 0000000..634c48a --- /dev/null +++ b/docs/deployment.md @@ -0,0 +1,50 @@ +# Deployment Guide + +ClawManager is packaged as a Kubernetes-first platform. This guide is the operational entry point for deploying the control plane, locating the relevant manifests in the repository, and understanding which services are expected to come up in a working environment. + +## Deployment Paths + +Choose the deployment path that matches your environment: + +- Standard Kubernetes: [`deployments/k8s/clawmanager.yaml`](../deployments/k8s/clawmanager.yaml) +- K3s or lightweight clusters: [`deployments/k3s/clawmanager.yaml`](../deployments/k3s/clawmanager.yaml) +- End-to-end first-use walkthrough: [User Guide](./use_guide_en.md) + +## What Gets Deployed + +- ClawManager frontend and backend +- MySQL for application state +- MinIO for object storage-backed features +- `skill-scanner` for skill analysis workflows +- Kubernetes Services used for portal, gateway, and supporting traffic paths + +## Repository Entry Points + +- Kubernetes manifest: [`deployments/k8s/clawmanager.yaml`](../deployments/k8s/clawmanager.yaml) +- K3s manifest: [`deployments/k3s/clawmanager.yaml`](../deployments/k3s/clawmanager.yaml) +- Container startup script: [`deployments/container/start.sh`](../deployments/container/start.sh) +- Nginx config: [`deployments/nginx/nginx.conf`](../deployments/nginx/nginx.conf) + +## Deployment Workflow + +1. Choose the deployment path: standard Kubernetes or K3s/lightweight. +2. Prepare the cluster, storage strategy, and image source strategy for that environment. +3. Review the bundled manifest and adjust secrets, images, storage classes, and ingress exposure for your environment. +4. Deploy the platform components into the cluster. +5. Wait for the core services to become ready. +6. Validate frontend access, AI Gateway management pages, Security Center connectivity, and runtime creation flows. + +## Operational Notes + +- ClawManager is designed around in-cluster services and platform-mediated access rather than direct pod exposure. +- Resource Management features depend on object storage and `skill-scanner` being available. +- Production environments should review images, credentials, TLS, persistence, and networking policies before rollout. + +## Related Guides + +- [Admin and User Guide](./admin-user-guide.md) +- [Agent Control Plane Guide](./agent-control-plane.md) +- [AI Gateway Guide](./aigateway.md) +- [Security / Skill Scanner Guide](./security-skill-scanner.md) +- [Resource Management Guide](./resource-management.md) +- [Developer Guide](./developer-guide.md) diff --git a/docs/developer-guide.md b/docs/developer-guide.md new file mode 100644 index 0000000..f31b569 --- /dev/null +++ b/docs/developer-guide.md @@ -0,0 +1,30 @@ +# Developer Guide + +This guide is the codebase orientation page for contributors. ClawManager spans frontend, backend, deployment assets, and supporting product documentation, so the fastest way to get productive is to start from the subsystem you want to change. + +## Repository Map + +- `frontend/`: React application, admin surfaces, portal views, and product UI +- `backend/`: Go services, handlers, repositories, migrations, and platform logic +- `deployments/`: Kubernetes manifests, container bootstrap, and nginx config +- `docs/`: product-facing guides and screenshots + +## Suggested Entry Points + +- AI governance work: [`docs/aigateway.md`](./aigateway.md) +- runtime orchestration work: [Agent Control Plane Guide](./agent-control-plane.md) +- reusable resource workflows: [Resource Management Guide](./resource-management.md) +- security scanning work: [Security / Skill Scanner Guide](./security-skill-scanner.md) + +## Common Areas of Change + +- frontend pages and navigation for product surfaces such as AI Gateway, Security Center, and Config Center +- backend services for agents, commands, resources, and scanning +- migrations and repository logic when new control-plane state is introduced +- deployment manifests when platform components or images change + +## Related Guides + +- [Deployment Guide](./deployment.md) +- [Admin and User Guide](./admin-user-guide.md) +- [AI Gateway Guide](./aigateway.md) diff --git a/docs/resource-management.md b/docs/resource-management.md new file mode 100644 index 0000000..dc5d83a --- /dev/null +++ b/docs/resource-management.md @@ -0,0 +1,30 @@ +# Resource Management Guide + +Resource Management is the reusable asset layer for OpenClaw workspaces in ClawManager. It is centered on channels, skills, bundles, and the snapshots used to compile those assets into instance-ready configuration. + +## Main Resource Types + +- `Channels` for workspace connectivity and integration templates +- `Skills` for reusable packaged capabilities +- `Bundles` for composing repeatable resource sets +- injection snapshots for tracking the compiled result applied to an instance + +## Core Workflows + +1. Create or import channels and skills in the OpenClaw Config Center. +2. Organize selected resources into reusable bundles. +3. Review scan posture for skills through Security Center. +4. Apply resources or bundles to OpenClaw workspaces. +5. Inspect runtime state and instance-level resource results after injection. + +## How It Connects to the Platform + +- Resource Management defines what should be delivered to a workspace. +- Agent Control Plane applies and tracks those changes at runtime. +- Security Center and `skill-scanner` help review the risk posture of reusable skills before broad rollout. + +## Related Guides + +- [Security / Skill Scanner Guide](./security-skill-scanner.md) +- [Agent Control Plane Guide](./agent-control-plane.md) +- [Admin and User Guide](./admin-user-guide.md) diff --git a/docs/security-skill-scanner.md b/docs/security-skill-scanner.md new file mode 100644 index 0000000..7f89131 --- /dev/null +++ b/docs/security-skill-scanner.md @@ -0,0 +1,30 @@ +# Security / Skill Scanner Guide + +Security Center is the review and scanning surface for skill assets in ClawManager. It works with `skill-scanner` to help teams understand asset coverage, risk posture, and scanning status before skills are reused across workspaces. + +## What It Covers + +- skill asset inventory across the platform +- scan status, coverage, and recent scan jobs +- risk-level distribution for discovered and uploaded skills +- scanner configuration, including external analysis integrations where configured + +## Main Workflows + +1. Review the asset inventory and identify high-risk or unscanned skills. +2. Start incremental or full scans from Security Center. +3. Inspect recent scan jobs and detailed outcomes. +4. Tune scanner configuration and analysis integrations. +5. Feed scanning results back into skill approval and workspace rollout decisions. + +## Why It Matters + +- keeps reusable skills visible and reviewable +- adds a security checkpoint to the resource supply chain +- supports scale by replacing ad hoc per-instance trust decisions with centralized scanning workflows + +## Related Guides + +- [Resource Management Guide](./resource-management.md) +- [Agent Control Plane Guide](./agent-control-plane.md) +- [AI Gateway Guide](./aigateway.md) diff --git a/docs/use_guide_cn.md b/docs/use_guide_cn.md new file mode 100644 index 0000000..1ced5bc --- /dev/null +++ b/docs/use_guide_cn.md @@ -0,0 +1,783 @@ +[<- ่ฟ”ๅ›ž README ้ฆ–้กต](../README.zh-CN.md) + +# ClawManager ้ƒจ็ฝฒไธŽๅฟซ้€ŸๅฏๅŠจๆŒ‡ๅ— + +## ็›ฎๅฝ• +- [ไธ€ใ€็ŽฏๅขƒไธŽ็›ฎๆ ‡](#sec-01) +- [ไบŒใ€้ƒจ็ฝฒๆ–นๅผๆ€ป่งˆ](#sec-02) +- [ไธ‰ใ€ๆ–นๆกˆ A๏ผšไฝฟ็”จ k3s ้ƒจ็ฝฒ](#sec-03) +- [ๅ››ใ€ๆ–นๆกˆ B๏ผšไฝฟ็”จๆ ‡ๅ‡† Kubernetes ้ƒจ็ฝฒ](#sec-04) +- [ไบ”ใ€ๅ›ฝๅ†…็ฝ‘็ปœไธ‹็š„้•œๅƒๆ‹‰ๅ–ๅปบ่ฎฎ๏ผˆๅฏ้€‰๏ผ‰](#sec-05) +- [ๅ…ญใ€้ƒจ็ฝฒ ClawManager](#sec-06) +- [ไธƒใ€ๅฏๅŠจ Web ้กต้ข](#sec-08) +- [ๅ…ซใ€ๅฟซ้€ŸๅฏๅŠจๆŒ‡ๅ—๏ผˆ็™ปๅฝ•ๅŽๅˆๅง‹ๅŒ–ๅนถๅˆ›ๅปบ OpenClaw ๅฎžไพ‹๏ผ‰](#sec-09) +- [ไนใ€ๆŽงๅˆถๅฐไธŽ AI ็ฝ‘ๅ…ณๅ…ถไป–ๅŠŸ่ƒฝ่ฏดๆ˜Ž](#sec-12) +- [ๅใ€ๅทฅไฝœๅฐๆจกๅ—่ฏดๆ˜Ž](#sec-13) +- [ๅไธ€ใ€้—ฎ้ข˜ไธŽๅฏน็ญ–้€ŸๆŸฅ](#sec-14) +- [ๅไบŒใ€ๅปบ่ฎฎ็š„ๆœ€็ปˆๆฃ€ๆŸฅ้กบๅบ๏ผˆๅฏๆŒ‰ๆญค่‡ชๆŸฅ๏ผ‰](#sec-15) + + +## ไธ€ใ€็ŽฏๅขƒไธŽ็›ฎๆ ‡ +- **็ณป็ปŸๅ‡่ฎพ**๏ผš`x86_64` ๆžถๆž„ Linux ๆœๅŠกๅ™จใ€‚ +- **้ƒจ็ฝฒ็›ฎๆ ‡**๏ผš้ƒจ็ฝฒ **ClawManager**๏ผŒๅนถๅœจ Web ้กต้ขไธญๅฎŒๆˆๅฎ‰ๅ…จๆจกๅž‹้…็ฝฎ๏ผŒ้šๅŽๅˆ›ๅปบๅนถๅฏๅŠจไธ€ไธช **OpenClaw Desktop** ๅฎžไพ‹ใ€‚ +- **้€‚็”จๅœบๆ™ฏ**๏ผš + - **ๆ–นๆกˆ A๏ผšk3s ๅ•ๆœบ/่ฝป้‡้›†็พค้ƒจ็ฝฒ** + - **ๆ–นๆกˆ B๏ผšๆ ‡ๅ‡† Kubernetes ้›†็พค้ƒจ็ฝฒ**๏ผˆๅฆ‚ kubeadm ้›†็พคใ€ไผไธš K8s ้›†็พคใ€ไบ‘ไธŠ K8s ้›†็พค๏ผ‰ + + +--- + + +## ไบŒใ€้ƒจ็ฝฒๆ–นๅผๆ€ป่งˆ +ไฝ ๅฏไปฅๆŒ‰ไปฅไธ‹ไธค็งๆ–นๅผไน‹ไธ€้ƒจ็ฝฒ๏ผš + +### ๆ–นๆกˆ A๏ผšk3s ้ƒจ็ฝฒ +้€‚ๅˆๅ•ๆœบใ€ๆต‹่ฏ•็Žฏๅขƒๆˆ–่ฝป้‡็”Ÿไบง็Žฏๅขƒใ€‚ + +### ๆ–นๆกˆ B๏ผšๆ ‡ๅ‡† Kubernetes ้ƒจ็ฝฒ +้€‚ๅˆๅทฒ็ปๅ…ทๅค‡ๆ ‡ๅ‡† Kubernetes ้›†็พค็š„ๆœๅŠกๅ™จ็Žฏๅขƒใ€‚ + +ๆ— ่ฎบไฝฟ็”จๅ“ช็งๆ–นๅผ๏ผŒๆœ€็ปˆ้ƒฝไผšๆ‰ง่กŒๅŒไธ€ๅฅ— ClawManager ๆธ…ๅ•๏ผš + +```bash +kubectl apply -f deployments/k8s/clawmanager.yaml +``` + +--- + + +## ไธ‰ใ€ๆ–นๆกˆ A๏ผšไฝฟ็”จ k3s ้ƒจ็ฝฒ + +### 3.1 ๅฎ‰่ฃ… k3s +```bash +curl -sfL https://get.k3s.io | sh - +``` + +ๅ›ฝๅ†…็ฝ‘็ปœๅฏไฝฟ็”จ้•œๅƒๆบๅฎ‰่ฃ…๏ผš + +```bash +curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \ + INSTALL_K3S_MIRROR=cn sh - +``` + +### 3.2 ๆฃ€ๆŸฅๆœๅŠก็Šถๆ€ +```bash +sudo systemctl status k3s --no-pager +sudo systemctl enable k3s +``` + +### 3.3 ้…็ฝฎ kubectl +ๅฆ‚ๆžœๅฝ“ๅ‰็”จๆˆทๆ— ๆณ•็›ดๆŽฅไฝฟ็”จ `kubectl`๏ผŒๆ‰ง่กŒ๏ผš + +```bash +mkdir -p ~/.kube +sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config +sudo chown "$USER:$USER" ~/.kube/config +``` + +ๆˆ–่€…ไธดๆ—ถๆŒ‡ๅฎš๏ผš + +```bash +export KUBECONFIG=/etc/rancher/k3s/k3s.yaml +``` + +### 3.4 ้ชŒ่ฏ้›†็พค +```bash +kubectl get nodes +``` + +ๆญฃๅธธๅบ”็œ‹ๅˆฐ่Š‚็‚นๅค„ไบŽ `Ready`ใ€‚ + +--- + + +## ๅ››ใ€ๆ–นๆกˆ B๏ผšไฝฟ็”จๆ ‡ๅ‡† Kubernetes ้ƒจ็ฝฒ + +> ้€‚็”จไบŽๅทฒ็ปๆœ‰ๅฏ็”จ Kubernetes ้›†็พค็š„ x86 ๆœๅŠกๅ™จ็Žฏๅขƒใ€‚ + +### 4.1 ๅ‰ๆๆฃ€ๆŸฅ +็กฎ่ฎคๅฝ“ๅ‰ `kubectl` ๅทฒ่ฟžๆŽฅๅˆฐ็›ฎๆ ‡้›†็พค๏ผš + +```bash +kubectl get nodes +kubectl get ns +``` + +ๆญฃๅธธๅบ”็œ‹ๅˆฐ่‡ณๅฐ‘ 1 ไธช `Ready` ่Š‚็‚นใ€‚ + +### 4.2 ๆฃ€ๆŸฅ้ป˜่ฎค StorageClass +ClawManager ไธญ็š„ MySQLใ€MinIO ้œ€่ฆๆŒไน…ๅŒ–ๅญ˜ๅ‚จใ€‚ๅปบ่ฎฎๅ…ˆๆฃ€ๆŸฅ้›†็พคๆ˜ฏๅฆๆœ‰้ป˜่ฎค `StorageClass`๏ผš + +```bash +kubectl get storageclass +``` + +ๅฆ‚ๆžœ้›†็พคไธญๅทฒๆœ‰้ป˜่ฎคๅญ˜ๅ‚จ็ฑป๏ผŒๅฏ็›ดๆŽฅ็ปง็ปญ้ƒจ็ฝฒใ€‚ + +ๅฆ‚ๆžœ **ๆฒกๆœ‰้ป˜่ฎค StorageClass**๏ผŒๅปบ่ฎฎๆๅ‰ๅ‡†ๅค‡ๅฅฝๅฏ็”จ็š„ PV / PVC ๆˆ–ไฝฟ็”จๆœฌๅœฐ่ทฏๅพ„ๅญ˜ๅ‚จๆ–นๆกˆ๏ผŒๅฆๅˆ™ๅŽ็ปญๅฏ่ƒฝๅ‡บ็Žฐ๏ผš + +```text +pod has unbound immediate PersistentVolumeClaims +``` + +--- + + +## ไบ”ใ€ๅ›ฝๅ†…็ฝ‘็ปœไธ‹็š„้•œๅƒๆ‹‰ๅ–ๅปบ่ฎฎ๏ผˆๅฏ้€‰๏ผ‰ +ๅฆ‚ๆžœๆœๅŠกๅ™จ่ฎฟ้—ฎ Docker Hub ๆˆ–ๅ…ถไป–ๅ…ฌๅ…ฑไป“ๅบ“่พƒๆ…ข๏ผŒๅฏ้…็ฝฎ้•œๅƒๅŠ ้€Ÿใ€‚ + +### 5.1 k3s ๅœบๆ™ฏ๏ผš้…็ฝฎ `/etc/rancher/k3s/registries.yaml` +```yaml +mirrors: + docker.io: + endpoint: + - "https://docker.m.daocloud.io" + - "https://docker.nju.edu.cn" + - "https://docker.1ms.run" + quay.io: + endpoint: + - "https://quay.mirrors.ustc.edu.cn" + gcr.io: + endpoint: + - "https://gcr.mirrors.ustc.edu.cn" + k8s.gcr.io: + endpoint: + - "https://registry.aliyuncs.com/google_containers" +``` + +ไฟฎๆ”นๅŽๆ‰ง่กŒ๏ผš + +```bash +sudo systemctl restart k3s +``` + +### 5.2 ้ชŒ่ฏๆ‹‰้•œๅƒ +```bash +sudo k3s crictl pull docker.io/rancher/mirrored-pause:3.6 +``` + +--- + + +## ๅ…ญใ€้ƒจ็ฝฒ ClawManager + +### 6.1 ๆ‹‰ๅ–้กน็›ฎไปฃ็  +```bash +git clone https://github.com/Yuan-lab-LLM/ClawManager.git +cd ClawManager +``` + +### 6.2 ๅบ”็”จ้ƒจ็ฝฒๆธ…ๅ• +ๅœจไป“ๅบ“ๆ น็›ฎๅฝ•ๆ‰ง่กŒ๏ผš + +```bash +kubectl apply -f deployments/k8s/clawmanager.yaml +``` + +### 6.3 ๆŸฅ็œ‹ๅŸบ็ก€่ต„ๆบ +```bash +kubectl get ns +kubectl get pods -n clawmanager-system +kubectl get svc -n clawmanager-system +``` + +ๆญฃๅธธๆƒ…ๅ†ตไธ‹๏ผŒไผš็œ‹ๅˆฐไปฅไธ‹็ป„ไปถ๏ผš +- `clawmanager-app` +- `mysql` +- `minio` +- `skill-scanner` + +ๅฆ‚ๆžœไฝ ็œ‹ๅˆฐไปฅไธ‹้”™่ฏฏ๏ผš + +```text +0/1 nodes are available: pod has unbound immediate PersistentVolumeClaims +``` + +่ฏดๆ˜Ž้›†็พคๅญ˜ๅ‚จ MySQL / MinIO ๅ›  PVC ๆœช็ป‘ๅฎš่€Œๆ— ๆณ•ๅฏๅŠจ๏ผŒ่ฏท็›ดๆŽฅ่ทณ่ฝฌๆ–‡ๆœซ๏ผš + +- [ๅไธ€.1 ๅญ˜ๅ‚จ้—ฎ้ข˜ไธ“้กนๅค„็†๏ผˆPV/PVC๏ผ‰](#sec-14-storage) + +--- + + +## ไธƒใ€ๅฏๅŠจ Web ้กต้ข + +### 7.1 ้€š่ฟ‡ NodePort ่ฎฟ้—ฎ +ClawManager ้ป˜่ฎคๅ‰็ซฏ Service ไธบ HTTPS NodePortใ€‚ๅฏๅ…ˆๆŸฅ็œ‹๏ผš + +```bash +kubectl get svc -n clawmanager-system +``` + +่‹ฅๅ‰็ซฏ็ซฏๅฃไธบ๏ผš + +```text +443:30443/TCP +``` + +ๅˆ™ๅฏ็›ดๆŽฅๅœจๆต่งˆๅ™จ่ฎฟ้—ฎ๏ผš + +```text +https://<ๆœๅŠกๅ™จIP>:30443 +``` + + +### 7.2 ้ฆ–ๆฌก HTTPS ่ฎฟ้—ฎ่ฏดๆ˜Ž +็”ฑไบŽ้€šๅธธๆ˜ฏ่‡ช็ญพๅ่ฏไนฆ๏ผŒๆต่งˆๅ™จๅฏ่ƒฝไผšๆ็คบโ€œไธๅฎ‰ๅ…จโ€ๆˆ–่ฏไนฆ่ญฆๅ‘Š๏ผŒ็‚นๅ‡ป๏ผš + +```text +้ซ˜็บง โ†’ ็ปง็ปญ่ฎฟ้—ฎ +``` + +ๅณๅฏ่ฟ›ๅ…ฅ้กต้ขใ€‚ + +--- + + +## ๅ…ซใ€ๅฟซ้€ŸๅฏๅŠจๆŒ‡ๅ—๏ผˆ็™ปๅฝ•ๅŽๅˆๅง‹ๅŒ–ๅนถๅˆ›ๅปบ OpenClaw ๅฎžไพ‹๏ผ‰ + +ๅฎŒๆˆๅ‰ๆ–‡้ƒจ็ฝฒๅนถๆˆๅŠŸๆ‰“ๅผ€็ฎก็†้กต้ขๅŽ๏ผŒ่ฟ˜้œ€่ฆๅฎŒๆˆไปฅไธ‹ๅˆๅง‹ๅŒ–ๆญฅ้ชค๏ผŒๆ‰่ƒฝ็œŸๆญฃๅˆ›ๅปบๅนถๅฏๅŠจไธ€ไธช **OpenClaw** ๅฎžไพ‹ใ€‚ + +### 8.1 ็™ปๅฝ•็ณป็ปŸ +1. ๆ‰“ๅผ€้ƒจ็ฝฒๅฎŒๆˆๅŽ็š„้กต้ข๏ผŒไพ‹ๅฆ‚๏ผš`https://<่Š‚็‚นIP>:30443`ใ€‚ +2. ไฝฟ็”จ้ป˜่ฎค็ฎก็†ๅ‘˜่ดฆๅท็™ปๅฝ•๏ผš + - **็”จๆˆทๅ**๏ผš`admin` + - **ๅฏ†็ **๏ผš`admin123` +3. ้ฆ–ๆฌก่ฟ›ๅ…ฅๅŽ๏ผŒๅปบ่ฎฎๆŒ‰้œ€ไฟฎๆ”น้ป˜่ฎคๅฏ†็ ใ€‚ + + +### 8.2 ้…็ฝฎๅฎ‰ๅ…จๆจกๅž‹๏ผˆAI ็ฝ‘ๅ…ณ๏ผ‰ + +![ๅ›พ1๏ผšAI็ฝ‘ๅ…ณ้…็ฝฎ](./main/1.png) +็™ปๅฝ•ๅŽ๏ผŒ้œ€่ฆๅ…ˆ้…็ฝฎไธ€ไธชๅฏ็”จ็š„**ๅฎ‰ๅ…จๆจกๅž‹**๏ผŒไพ›ๅนณๅฐๅ’ŒๅŽ็ปญๅฎžไพ‹็ปŸไธ€ไฝฟ็”จใ€‚ + +1. ็‚นๅ‡ปๅทฆไพง่œๅ•๏ผš**AI ็ฝ‘ๅ…ณ** โ†’ **ๆจกๅž‹**ใ€‚ +2. ๆ–ฐๅขžๆˆ–็ผ–่พ‘ไธ€ไธชๆจกๅž‹๏ผŒๆ นๆฎไฝ ๆŽฅๅ…ฅ็š„ๆจกๅž‹ๆœๅŠกๆŒ‰ๅฎž้™…ๆƒ…ๅ†ตๅกซๅ†™ไปฅไธ‹ไฟกๆฏ๏ผš + + * **ๆ˜พ็คบๅ็งฐ**๏ผšๅกซๅ†™ไธ€ไธชไพฟไบŽ่ฏ†ๅˆซ็š„ๅ็งฐใ€‚ + * **ๅŽ‚ๅ•†ๆจกๆฟ**๏ผšๆ นๆฎไฝ ็š„ๆจกๅž‹ๆœๅŠก็ฑปๅž‹้€‰ๆ‹ฉๅฏนๅบ”ๆจกๆฟ๏ผ›ๅฆ‚ๆžœไฝฟ็”จ่‡ชๅฎšไน‰ๆˆ–ๅ…ผๅฎนๆŽฅๅฃ๏ผŒๅฏ้€‰ๆ‹ฉ **Local / Internal**ใ€‚ + * **ๅ่ฎฎ**๏ผšๆ นๆฎๆŽฅๅฃๅ่ฎฎ้€‰ๆ‹ฉ๏ผŒไพ‹ๅฆ‚ **OpenAI Compatible** ๆˆ–ๅ…ถไป–ๅฎž้™…ๅ่ฎฎใ€‚ + * **Base URL**๏ผšๅกซๅ†™ๆจกๅž‹ๆœๅŠกๆไพ›็š„ๆŽฅๅฃๅœฐๅ€ใ€‚ + * **API Key**๏ผšๅกซๅ†™ๅฏนๅบ”ๆจกๅž‹ๆœๅŠก็š„ๆœ‰ๆ•ˆๅฏ†้’ฅใ€‚ + * **Provider Model**๏ผšๅกซๅ†™ๅฎž้™…่ฐƒ็”จ็š„ๆจกๅž‹ๅ็งฐใ€‚ + * **ๅธ็ง**๏ผšๆŒ‰ๅฎž้™…ๆƒ…ๅ†ตๅกซๅ†™๏ผ›ๅฆ‚ๆ— ้œ€่ฎก่ดนๅฑ•็คบ๏ผŒๅฏไฟๆŒ้ป˜่ฎคใ€‚ + * **่พ“ๅ…ฅไปทๆ ผ / ่พ“ๅ‡บไปทๆ ผ**๏ผšๅฆ‚ไธๅš่ฎก่ดน็ปŸ่ฎก๏ผŒๅฏๅ…ˆๅกซๅ†™ `0`ใ€‚ +3. ๆไบคๅ‰ๅŠกๅฟ…ๅ‹พ้€‰๏ผš + + * **ๅฎ‰ๅ…จๆจกๅž‹** + * **ๅฏ็”จ** +4. ็‚นๅ‡ป **ไฟๅญ˜**ใ€‚ + +> ่ฏดๆ˜Ž๏ผš้กต้ขไธญ็š„ๅ›พ็‰‡ไป…็”จไบŽๅฑ•็คบๅกซๅ†™ไฝ็ฝฎๅ’Œ็คบไพ‹ๆ ผๅผ๏ผŒๅฎž้™…ๅ†…ๅฎน่ฏทไปฅไฝ ๆ‰€ไฝฟ็”จ็š„ๆจกๅž‹ๆœๅŠก้…็ฝฎไธบๅ‡†ใ€‚ + + +### 8.3 ๅˆ›ๅปบ OpenClaw ๅฎžไพ‹ +ๆจกๅž‹้…็ฝฎๅฎŒๆˆๅŽ๏ผŒๅ†ๅˆ›ๅปบ **OpenClaw Desktop** ๅฎžไพ‹ใ€‚ + +1. ็‚นๅ‡ปๅทฆไธ‹่ง’ **ADMIN**๏ผŒๅˆ‡ๆขๅˆฐ **ๅทฅไฝœๅฐ**ใ€‚ +2. ็‚นๅ‡ป **ๅˆ›ๅปบๅฎžไพ‹**ใ€‚ + +![](./main/2.png) +#### ็ฌฌ 1 ๆญฅ๏ผšๅŸบ็ก€ไฟกๆฏ +- ๅกซๅ†™ **ๅฎžไพ‹ๅ็งฐ**๏ผˆ่‡ณๅฐ‘ 3 ไธชๅญ—็ฌฆ๏ผ‰ใ€‚ +- ๆ่ฟฐๅฏ้€‰๏ผŒไธๅกซไนŸๅฏไปฅใ€‚ +- ็‚นๅ‡ป **ไธ‹ไธ€ๆญฅ**ใ€‚ + +![](./main/3.png) +#### ็ฌฌ 2 ๆญฅ๏ผš้€‰ๆ‹ฉ็ฑปๅž‹ +- ้€‰ๆ‹ฉ **OpenClaw Desktop**ใ€‚ +- ็‚นๅ‡ป **ไธ‹ไธ€ๆญฅ**ใ€‚ + + +![](./main/4.png) +#### ็ฌฌ 3 ๆญฅ๏ผš้…็ฝฎ +- ๅฏ็›ดๆŽฅ้€‰ๆ‹ฉ **Small** ่ง„ๆ ผ๏ผš + - `2 CPU` + - `4 GB RAM` + - `20 GB Disk` +- ไนŸๅฏไปฅๅœจไธ‹ๆ–น่‡ชๅฎšไน‰้…็ฝฎไธญๆŒ‰้œ€ไฟฎๆ”นใ€‚ +- OpenClaw ่ต„ๆบๆณจๅ…ฅ้ƒจๅˆ†๏ผŒๅฏๆ นๆฎ้œ€่ฆ้€‰ๆ‹ฉ๏ผš + - **ๆ‰‹ๅŠจ่ต„ๆบ** + - **่ต„ๆบๅŒ…** + - **ๅฝ’ๆกฃๅฏผๅ…ฅ** +- ้ฆ–ๆฌกไฝฟ็”จๅฏๅ…ˆไฟๆŒ้ป˜่ฎคๆˆ–้€‰ๆ‹ฉ **ๆ‰‹ๅŠจ่ต„ๆบ**ใ€‚ +- ๆœ€ๅŽ็‚นๅ‡ป **ๅˆ›ๅปบ**ใ€‚ + +### 8.4 ้ฆ–ๆฌกๅˆ›ๅปบ่ฏดๆ˜Ž +- ็ฌฌไธ€ๆฌกๅˆ›ๅปบ **OpenClaw** ๅฎžไพ‹ๆ—ถ๏ผŒ้œ€่ฆไธ‹่ฝฝๆ‰€้œ€้•œๅƒๅ’Œๅˆๅง‹ๅŒ–็Žฏๅขƒ๏ผŒ่€—ๆ—ถไผšๆ˜Žๆ˜พๆ›ด้•ฟใ€‚ +- ๅœจ็ฝ‘็ปœ่พƒๆ…ขๆˆ–้ฆ–ๆฌกๆ‹‰ๅ–้•œๅƒๆ—ถ๏ผŒๅฎžไพ‹็Šถๆ€ๅฏ่ƒฝไผš้•ฟๆ—ถ้—ดๆ˜พ็คบไธบ **ๅˆ›ๅปบไธญ**๏ผŒ่ฏท่€ๅฟƒ็ญ‰ๅพ…ใ€‚ +- ่‹ฅ้•ฟๆ—ถ้—ดๆœชๅฏๅŠจๆˆๅŠŸ๏ผŒๅ†ๅ›žๅˆฐ Kubernetes / Docker ๆ—ฅๅฟ—ไธญๆŽ’ๆŸฅ้•œๅƒใ€PVCใ€็ฝ‘ๅ…ณๆจกๅž‹็ญ‰้—ฎ้ข˜ใ€‚ + +--- + + +## ไนใ€ๆŽงๅˆถๅฐไธŽ AI ็ฝ‘ๅ…ณๅ…ถไป–ๅŠŸ่ƒฝ่ฏดๆ˜Ž + +้™คๆจกๅž‹้…็ฝฎๅค–๏ผŒๅนณๅฐ้ฆ–้กตๆŽงๅˆถๅฐไธŽ AI ็ฝ‘ๅ…ณ่ฟ˜ๆไพ›ๅฎก่ฎกใ€ๆˆๆœฌๅ’Œ่ง„ๅˆ™ๆฒป็†็ญ‰่ƒฝๅŠ›๏ผŒไพฟไบŽ็ฎก็†ๅ‘˜็ปŸไธ€ๆŸฅ็œ‹้›†็พค็Šถๆ€ใ€ๆจกๅž‹่ฐƒ็”จ่ฎฐๅฝ•ๅ’Œๅฎ‰ๅ…จ็ญ–็•ฅๆ‰ง่กŒๆƒ…ๅ†ตใ€‚ + +### 9.1 ๆŽงๅˆถๅฐๆ€ป่งˆ + +![](./main/5.png) + +ๆŽงๅˆถๅฐ้ฆ–้กต็”จไบŽๅฑ•็คบๅฝ“ๅ‰้›†็พคไธŽๅนณๅฐ็š„ๆ•ดไฝ“่ฟ่กŒ็Šถๆ€๏ผŒๆ–นไพฟ็ฎก็†ๅ‘˜ๅฟซ้€Ÿไบ†่งฃ่ต„ๆบไฝฟ็”จๆƒ…ๅ†ตๅ’Œ็ณป็ปŸๅฅๅบท็Šถๆ€ใ€‚ + +ไธป่ฆๅŒ…ๅซไปฅไธ‹ไฟกๆฏ๏ผš + +- **้›†็พคๅŸบ็ก€ไฟกๆฏๆฆ‚่งˆ**๏ผšๅฑ•็คบๅฝ“ๅ‰ๅนณๅฐ็š„็”จๆˆทๆ€ปๆ•ฐใ€ๅฎžไพ‹ๆ€ปๆ•ฐใ€่ฟ่กŒไธญๅฎžไพ‹ๆ•ฐ้‡ไปฅๅŠๆ€ปๅญ˜ๅ‚จไฝฟ็”จๆƒ…ๅ†ตใ€‚ +- **่Š‚็‚นๆฆ‚่งˆ**๏ผšๅฑ•็คบๅฝ“ๅ‰ๅฏ็”จ่Š‚็‚นๆ•ฐ้‡๏ผŒไปฅๅŠๅฝ“ๅ‰้›†็พคไธญไธป่ฆ่ฐƒๅบฆ่Š‚็‚นไฟกๆฏใ€‚ +- **่ต„ๆบ็”ณ่ฏทๆƒ…ๅ†ต**๏ผšๅฑ•็คบๅฝ“ๅ‰ๅนณๅฐๅทฒ็”ณ่ฏท็š„ CPUใ€ๅ†…ๅญ˜ๅ’Œ็ฃ็›˜่ต„ๆบๆ€ป้‡ใ€‚ +- **ๅฎน้‡็œ‹ๆฟ**๏ผšๆŒ‰่Š‚็‚นใ€CPUใ€ๅ†…ๅญ˜ใ€็ฃ็›˜็ญ‰็ปดๅบฆๅฑ•็คบๆ•ดไฝ“่ต„ๆบๅฎน้‡ไธŽๅฝ“ๅ‰ไฝฟ็”จ็އ๏ผŒไพฟไบŽๅˆคๆ–ญ้›†็พคๆ˜ฏๅฆ่ฟ˜ๆœ‰ๅฏ็”จไฝ™้‡ใ€‚ +- **ๅŸบ็ก€่ฎพๆ–ฝ่กจ**๏ผš็”จไบŽๆŸฅ็œ‹ๅฝ“ๅ‰่Š‚็‚นใ€่ต„ๆบไธŽๅŸบ็ก€่ฟ่กŒ็Žฏๅขƒ็š„็Šถๆ€ไฟกๆฏใ€‚ + +> ่ฏดๆ˜Ž๏ผšๆŽงๅˆถๅฐไธป่ฆ็”จไบŽๆŸฅ็œ‹ๅนณๅฐๆ€ปไฝ“่ต„ๆบใ€่Š‚็‚นๅ’Œๅฎžไพ‹่ฟ่กŒๆฆ‚ๅ†ต๏ผŒไธ็›ดๆŽฅ็”จไบŽๅ…ทไฝ“ๅฎžไพ‹ๅ†…็š„ OpenClaw ๆ“ไฝœใ€‚ + + +### 9.2 ๅฎ‰ๅ…จไธญๅฟƒ๏ผˆskill-scanner๏ผ‰ + +ๆŽงๅˆถๅฐ็š„ **ๅฎ‰ๅ…จไธญๅฟƒ** ็”จไบŽ็ปŸไธ€ๆŸฅ็œ‹ๅนณๅฐ่ต„ๆบ็š„ๆ‰ซๆ็Šถๆ€ใ€ๅކๅฒๆŠฅๅ‘ŠไธŽๆ‰ซๆๅ™จ้…็ฝฎใ€‚ๅฎƒไพ่ต–ๅŽ็ซฏ็š„ **skill-scanner** ๆœๅŠก่ฟ่กŒ๏ผŒๅฏ็”จไบŽๅฏน่ต„ๆบ่ฟ›่กŒ้™ๆ€ๆ‰ซๆใ€ๆทฑๅบฆๆ‰ซๆไปฅๅŠๅŸบไบŽ LLM ็š„่กฅๅ……ๅˆ†ๆž๏ผŒไปŽ่€ŒๅธฎๅŠฉ็ฎก็†ๅ‘˜่ฏ†ๅˆซๆฝœๅœจ้ฃŽ้™ฉๅ†…ๅฎนใ€ๅผ‚ๅธธ่ต„ๆบไธŽๅฏ็–‘ๆŠ€่ƒฝใ€‚ + +ๅฎ‰ๅ…จไธญๅฟƒๅฝ“ๅ‰ไธป่ฆๅŒ…ๆ‹ฌไปฅไธ‹ไธ‰ไธชๆจกๅ—๏ผš + +* **่ฟ่กŒๆ€ป่งˆ** +* **ๆŠฅๅ‘Šๅކๅฒ** +* **ๆ‰ซๆๅ™จ้…็ฝฎ** + +#### 9.2.1 ่ฟ่กŒๆ€ป่งˆ + +![](./main/14.png) + +โ€œ่ฟ่กŒๆ€ป่งˆโ€้กต้ข็”จไบŽๆŸฅ็œ‹ๅฝ“ๅ‰ๅนณๅฐ็š„ๆ•ดไฝ“ๆ‰ซๆ็Šถๆ€ไธŽ้ฃŽ้™ฉๅˆ†ๅธƒ๏ผŒไพฟไบŽ็ฎก็†ๅ‘˜ๅฟซ้€ŸๆŽŒๆกๅฝ“ๅ‰ๅฎ‰ๅ…จๆ€ๅŠฟใ€‚ + +้กต้ขไธป่ฆๅŒ…ๆ‹ฌไปฅไธ‹ๅ†…ๅฎน๏ผš + +* **ๅฝ“ๅ‰็”Ÿๆ•ˆๆจกๅผ**๏ผšๅฑ•็คบๅฝ“ๅ‰ไฝฟ็”จ็š„ๆ˜ฏ **Quick ๆจกๅผ** ่ฟ˜ๆ˜ฏ **Deep ๆจกๅผ**ใ€‚ +* **ๅฟซ้€Ÿๆ‰ซๆ / ๅ…จ้‡ๆ‰ซๆ**๏ผš + + * **ๅฟซ้€Ÿๆ‰ซๆ**๏ผš้€‚ๅˆๅค„็†ๆ–ฐๅขžๆˆ–ๅ˜ๆ›ด่ต„ๆบ๏ผŒๆ‰ซๆ่Œƒๅ›ด่พƒ่ฝป๏ผŒๆ‰ง่กŒ้€Ÿๅบฆๆ›ดๅฟซใ€‚ + * **ๅ…จ้‡ๆ‰ซๆ**๏ผš้€‚ๅˆๅฎšๆœŸ้‡ๆ‰ซๅ…จ้ƒจ่ต„ๆบ๏ผŒ็”จไบŽๅฎŒๆ•ดๅคๆ ธๅนณๅฐๅฝ“ๅ‰ๆ‰€ๆœ‰่ต„ๆบ็Šถๆ€ใ€‚ +* **่ต„ไบงๆ€ปๆ•ฐ**๏ผšๅฝ“ๅ‰็บณๅ…ฅๅฎ‰ๅ…จไธญๅฟƒๆ‰ซๆ่Œƒๅ›ด็š„่ต„ๆบๆ•ฐ้‡ใ€‚ +* **ๅทฒๅฎŒๆˆๆ‰ซๆ**๏ผšๅทฒๅฎŒๆˆๆ‰ซๆ็š„่ต„ๆบๆ•ฐ้‡ใ€‚ +* **้ซ˜้ฃŽ้™ฉ / ไธญ้ฃŽ้™ฉ**๏ผšๅฝ“ๅ‰ๆ‰ซๆ็ป“ๆžœไธญ่ขซ่ฏ†ๅˆซๅ‡บ็š„้ฃŽ้™ฉ็ญ‰็บง็ปŸ่ฎกใ€‚ +* **ๆ‰ซๆ่ฆ†็›–็އ**๏ผšๅฑ•็คบๅทฒๅฎŒๆˆ็œŸๅฎžๆ‰ซๆ็š„่ต„ไบงๆ•ฐๅ ๅนณๅฐๆ€ป่ต„ไบง็š„ๆฏ”ไพ‹ใ€‚ +* **SAFE / ้ซ˜้ฃŽ้™ฉ / ็ญ‰ๅพ…ไธญ / ๅคฑ่ดฅ**๏ผš + + * **SAFE**๏ผšๆ‰ซๆ้€š่ฟ‡ใ€ๅฝ“ๅ‰ๆœชๅ‘็Žฐ้ฃŽ้™ฉ็š„่ต„ๆบๆ•ฐ้‡ + * **้ซ˜้ฃŽ้™ฉ**๏ผš้œ€่ฆ็ซ‹ๅณๅค„็ฝฎ็š„้ฃŽ้™ฉ่ต„ไบงๆ•ฐ้‡ + * **็ญ‰ๅพ…ไธญ**๏ผš็ญ‰ๅพ…ๅ–่ฏๆˆ–ๆŽ’้˜Ÿๆ‰ซๆ็š„่ต„ๆบๆ•ฐ้‡ + * **ๅคฑ่ดฅ**๏ผšๆ‰ซๆๆ‰ง่กŒๅคฑ่ดฅใ€้œ€่ฆ้‡ๆ–ฐๆ‰ง่กŒ็š„่ต„ๆบๆ•ฐ้‡ +* **ๅนณๅฐ่ต„ไบง้ฃŽ้™ฉๆ€ๅŠฟ**๏ผšๆŒ‰้ฃŽ้™ฉ็ญ‰็บง่šๅˆๅฑ•็คบๅฝ“ๅ‰ๅนณๅฐ่ต„ไบง็š„้ฃŽ้™ฉๅˆ†ๅธƒๆƒ…ๅ†ตใ€‚ +* **็ƒญ็‚น่ต„ไบง**๏ผšๅฑ•็คบไฝฟ็”จๆœ€้ข‘็น็š„ๆŠ€่ƒฝๆˆ–้ซ˜้ข‘ไฝฟ็”จ่ต„ๆบ๏ผŒๅธฎๅŠฉ็ฎก็†ๅ‘˜ๅฟซ้€Ÿๅฎšไฝ้‡็‚น่ต„ไบงใ€‚ +* **ๆ‰ซๆๅ™จ็Šถๆ€**๏ผšๅฑ•็คบๅฝ“ๅ‰ skill-scanner ็š„ๅฏ็”จๆ€งๅŠ่ฟžๆŽฅ็Šถๆ€๏ผŒไพ‹ๅฆ‚โ€œ้™ๆ€ๆ‰ซๆๅฏ็”จโ€โ€œๅทฒ่ฟžๆŽฅโ€็ญ‰ใ€‚ +* **้ฃŽ้™ฉๆ้†’ไธŽๅค„็ฝฎๅปบ่ฎฎ**๏ผš็ป™ๅ‡บๅฝ“ๅ‰้ฃŽ้™ฉๆ€ๅŠฟไธ‹็š„็ฎ€่ฆๆ้†’ไฟกๆฏใ€‚ +* **ๆœ€่ฟ‘็š„ๆ‰ซๆไปปๅŠก**๏ผšๅฑ•็คบๆœ€่ฟ‘ๆ‰ง่กŒ่ฟ‡็š„ๆ‰ซๆ่ฎฐๅฝ•๏ผŒไพฟไบŽๅ›žๆบฏ่ฟ‘ๆœŸๆ‰ซๆๆดปๅŠจใ€‚ + +> ่ฏดๆ˜Ž๏ผš +> +> * ๅฝ“้กต้ขๆ˜พ็คบโ€œๅฝ“ๅ‰ๆฒกๆœ‰้ซ˜้ฃŽ้™ฉๆˆ–ไธญ้ฃŽ้™ฉ่ต„ไบงโ€ๆ—ถ๏ผŒ่ฏดๆ˜Žๅฝ“ๅ‰ๆ‰ซๆ็ป“ๆžœๆœชๅ‘็Žฐๆ˜พ่‘—้ฃŽ้™ฉใ€‚ +> * ๅฝ“้กต้ขๆ˜พ็คบโ€œ่ฟ˜ๆฒกๆœ‰ๆ‰ซๆไปปๅŠก่ฎฐๅฝ•โ€ๆ—ถ๏ผŒ่ฏดๆ˜Žๅฝ“ๅ‰ๅฐšๆœชๆ‰ง่กŒ่ฟ‡ๆ‰ซๆ๏ผŒๆˆ–ๅฐšๆœชไบง็”Ÿๆœ‰ๆ•ˆๆ‰ซๆ็ป“ๆžœใ€‚ + +#### 9.2.2 ๆŠฅๅ‘Šๅކๅฒ + +โ€œๆŠฅๅ‘Šๅކๅฒโ€้กต้ข็”จไบŽๆŸฅ็œ‹ๅކๅฒๆ‰ซๆๆŠฅๅ‘ŠไธŽ็›ธๅ…ณ็ป“ๆžœ่ฎฐๅฝ•๏ผŒไพฟไบŽ็ฎก็†ๅ‘˜ๅ›žๆบฏ่ฟ‡ๅŽป็š„ๆ‰ซๆๆ‰ง่กŒๆƒ…ๅ†ตใ€‚ + +่ฏฅๆจกๅ—ไธป่ฆ็”จไบŽ๏ผš + +* ๆŸฅ็œ‹่ฟ‡ๅŽปๅทฒๆ‰ง่กŒ็š„ๆ‰ซๆไปปๅŠก็ป“ๆžœ +* ๅฏนๆฏ”ไธๅŒๆ—ถ้—ด็‚น็š„ๆ‰ซๆ่พ“ๅ‡บ +* ่พ…ๅŠฉ่ฟฝ่ธชๆŸไธช่ต„ๆบๅœจไธๅŒ้˜ถๆฎต็š„ๅฎ‰ๅ…จๅ˜ๅŒ–ๆƒ…ๅ†ต +* ไธบๅŽ็ปญๅคๆŸฅใ€ๅคๆ‰ซๅ’Œ้—ฎ้ข˜ๅฎšไฝๆไพ›ๅކๅฒไพๆฎ + +> ่ฏดๆ˜Ž๏ผš +> +> * โ€œๆŠฅๅ‘Šๅކๅฒโ€ๆ›ดๅๅ‘ๅކๅฒ็ป“ๆžœๅฝ’ๆกฃไธŽๅ›žๆบฏ๏ผ› +> * โ€œ่ฟ่กŒๆ€ป่งˆโ€ๆ›ดๅๅ‘ๅฝ“ๅ‰็Šถๆ€ไธŽๆ•ดไฝ“ๆฆ‚่งˆใ€‚ + +#### 9.2.3 ๆ‰ซๆๅ™จ้…็ฝฎ + +![](./main/15.png) + +โ€œๆ‰ซๆๅ™จ้…็ฝฎโ€้กต้ข็”จไบŽ็ปดๆŠค skill-scanner ็š„่ฟ่กŒๆ–นๅผใ€LLM ็›ธๅ…ณ้…็ฝฎไปฅๅŠ quick / deep ไธคๅฅ—ๆ‰ซๆ็ญ–็•ฅใ€‚ไฟๅญ˜ๅŽไผš่งฆๅ‘ Deployment rollout๏ผŒๅนถ็ญ‰ๅพ…ๆ–ฐ้…็ฝฎ็”Ÿๆ•ˆใ€‚ + +้กต้ขไธป่ฆๅŒ…ๆ‹ฌไปฅไธ‹ๅ†…ๅฎน๏ผš + +##### ๏ผˆ1๏ผ‰skill-scanner ๆœๅŠก็Šถๆ€ + +* ๅฑ•็คบๅฝ“ๅ‰ๅŽ็ซฏๆ‰ซๆๆœๅŠก็š„ๅ‘ฝๅ็ฉบ้—ดใ€Deployment ๅ็งฐๅ’Œ่ฟžๆŽฅ็Šถๆ€ใ€‚ +* ๅฝ“้กต้ขๆ˜พ็คบ **ๅทฒ่ฟžๆŽฅ**ใ€**้™ๆ€ๆ‰ซๆๅฏ็”จ** ๆ—ถ๏ผŒ่ฏดๆ˜ŽๅŸบ็ก€้™ๆ€ๆ‰ซๆ่ƒฝๅŠ›ๅทฒๅฏ็”จใ€‚ + +##### ๏ผˆ2๏ผ‰LLM ้…็ฝฎ + +่ฏฅๅŒบๅŸŸ็”จไบŽ้…็ฝฎไธป LLM๏ผŒไปฅไพ› scanner ๅœจ้œ€่ฆๆ—ถๆ‰ง่กŒๅŸบไบŽๆจกๅž‹็š„ๅˆ†ๆž่ƒฝๅŠ›ใ€‚ + +ไธป่ฆๅญ—ๆฎตๅŒ…ๆ‹ฌ๏ผš + +* **ไธป LLM ้›†ๆˆ**๏ผšๅฏ็›ดๆŽฅไปŽ **AI Gateway** ไธญๅทฒ้…็ฝฎๅฅฝ็š„ๆจกๅž‹ๅฏผๅ…ฅไธป LLM ้…็ฝฎใ€‚ +* **LLM API Key**๏ผšๅฏนๅบ” `SKILL_SCANNER_LLM_API_KEY`๏ผŒ็”จไบŽไธป LLM analyzer ็š„้‰ดๆƒใ€‚ +* **LLM Model**๏ผšๅฏนๅบ” `SKILL_SCANNER_LLM_MODEL`๏ผŒไพ‹ๅฆ‚ๅ…ทไฝ“ๆจกๅž‹ๅ็งฐใ€‚ +* **LLM Base URL**๏ผšๅฏนๅบ” `SKILL_SCANNER_LLM_BASE_URL`๏ผŒ็”จไบŽ้…็ฝฎไธป LLM ๆœๅŠกๅœฐๅ€ใ€‚ + +##### ๏ผˆ3๏ผ‰Meta LLM ้›†ๆˆ + +่ฏฅๅŒบๅŸŸ็”จไบŽ้…็ฝฎ meta analyzer ๆ‰€ไฝฟ็”จ็š„ๆจกๅž‹๏ผŒ้€šๅธธ็”จไบŽๅฏน findings ๅš่ฟ›ไธ€ๆญฅๆ€ป็ป“ใ€ๅฝ’็บณๆˆ–ไบŒๆฌกๅค„็†ใ€‚ + +ไธป่ฆๅญ—ๆฎตๅŒ…ๆ‹ฌ๏ผš + +* **Meta LLM ้›†ๆˆ**๏ผšๅฏไปŽ **AI Gateway** ไธญๅทฒ้…็ฝฎๅฅฝ็š„ๆจกๅž‹็›ดๆŽฅๅฏผๅ…ฅ meta analyzer ้…็ฝฎใ€‚ +* **Meta LLM API Key**๏ผšๅฏนๅบ” `SKILL_SCANNER_META_LLM_API_KEY`ใ€‚ +* **Meta LLM Model**๏ผšๅฏนๅบ” `SKILL_SCANNER_META_LLM_MODEL`ใ€‚ +* **Meta LLM Base URL**๏ผšๅฏนๅบ” `SKILL_SCANNER_META_LLM_BASE_URL`ใ€‚ + +> ่ฏดๆ˜Ž๏ผš +> +> * ่‹ฅๅฝ“ๅ‰ๆœช้…็ฝฎ LLM๏ผŒ้กต้ข้€šๅธธไผšๆ็คบๅฝ“ๅ‰ไป…ๆ”ฏๆŒ้™ๆ€ๆ‰ซๆ๏ผ› +> * ้…็ฝฎไธป LLM ไธŽ Meta LLM ๅŽ๏ผŒscanner ๆ‰่ƒฝๅฏ็”จๆ›ดๅฎŒๆ•ด็š„่ฏญไน‰ๅˆ†ๆžไธŽๆ€ป็ป“่ƒฝๅŠ›ใ€‚ + +##### ๏ผˆ4๏ผ‰ๅฝ“ๅ‰ๆ‰ซๆๆจกๅผ + +้กต้ขๆ”ฏๆŒ้€‰ๆ‹ฉๅฝ“ๅ‰ๅนณๅฐๅฎž้™…้‡‡็”จ็š„ๆ‰ซๆๆจกๅผ๏ผš + +* **Quick ๆจกๅผ**๏ผšไฝฟ็”จ quick analyzers ๆ‰ง่กŒๆ‰ซๆ๏ผŒ้€‚ๅˆๆ—ฅๅธธๅฟซ้€Ÿๆฃ€ๆŸฅใ€‚ +* **Deep ๆจกๅผ**๏ผšไฝฟ็”จ deep analyzers ๆ‰ง่กŒๆ‰ซๆ๏ผŒ้€‚ๅˆๆ›ดๅฎŒๆ•ดใ€ๆ›ดๆทฑๅ…ฅ็š„ๅˆ†ๆžใ€‚ + +้œ€่ฆๆณจๆ„็š„ๆ˜ฏ๏ผš + +* Dashboard ไธŠ็š„โ€œๅฟซ้€Ÿๆ‰ซๆโ€ๅ’Œโ€œๅ…จ้‡ๆ‰ซๆโ€้ƒฝไผšไฝฟ็”จ่ฟ™้‡Œ้€‰ๅฎš็š„ๆ‰ซๆๅผบๅบฆ๏ผ› +* ๅฎƒไปฌ็š„ๅทฎๅผ‚ไธป่ฆๅœจไบŽๆ‰ซๆ่Œƒๅ›ด๏ผŒ่€Œไธๅœจ analyzer ๆทฑๅบฆๆœฌ่บซใ€‚ + + + +##### ๏ผˆ5๏ผ‰Quick / Deep ๆ‰ซๆ็ญ–็•ฅ + +้กต้ขไธ‹ๆ–นๅˆ†ๅˆซ็ปดๆŠค **ๅฟซ้€Ÿ** ไธŽ **ๆทฑๅบฆ** ไธคๅฅ—ๆ‰ซๆ็ญ–็•ฅ้…็ฝฎ๏ผŒไพฟไบŽ็ฎก็†ๅ‘˜ๆŒ‰ไธๅŒๅœบๆ™ฏ้€‰ๆ‹ฉไธๅŒ็š„ analyzer ็ป„ๅˆใ€‚ + +ๆฏๅฅ—็ญ–็•ฅ้ƒฝๅŒ…ๆ‹ฌไปฅไธ‹้…็ฝฎ้กน๏ผš + +* **่ถ…ๆ—ถ๏ผˆ็ง’๏ผ‰**๏ผš่ฎพ็ฝฎๅฝ“ๅ‰ๆจกๅผไธ‹ๆ‰ซๆไปปๅŠก็š„่ถ…ๆ—ถๆ—ถ้—ดใ€‚ +* **่ฐƒ็”จๆ–นๆณ•**๏ผšๅฏๆŒ‰้œ€ๅฏ็”จๆˆ–ๅœ็”จไธๅŒ analyzerใ€‚ + +ๅฝ“ๅ‰ๅฏ่ง็š„ analyzer ็ฑปๅž‹ๅŒ…ๆ‹ฌ๏ผš + +* **Static**๏ผšYAML + YARA ้™ๆ€่ง„ๅˆ™ๆ‰ซๆ +* **Bytecode**๏ผšPython bytecode ๅฎŒๆ•ดๆ€งๆ ก้ชŒ +* **Pipeline**๏ผšๅ‘ฝไปค้“พ่ทฏไธŽ taint ๅˆ†ๆž +* **Behavioral**๏ผšๅŸบไบŽ AST ็š„่กŒไธบไธŽๆ•ฐๆฎๆตๅˆ†ๆž +* **LLM**๏ผšไพ่ต–ๅค–้ƒจ LLM ็š„่ฏญไน‰ๅˆ†ๆž +* **Meta**๏ผšๅฏน findings ่ฟ›่กŒไบŒๆฌกๆฑ‡ๆ€ปๅˆ†ๆž + +้€šๅธธๅฏๆŒ‰ไปฅไธ‹ๆ€่ทฏ็†่งฃ๏ผš + +* **Quick ๆจกๅผ**๏ผšๅๅ‘ๆ›ดๅฟซๆ‰ง่กŒ๏ผŒๅธธ็”จไบŽๆ—ฅๅธธๅขž้‡ๆฃ€ๆŸฅ +* **Deep ๆจกๅผ**๏ผšๅฏๅฏ็”จๆ›ดๅคš analyzer๏ผŒ้€‚ๅˆๆ›ดๆทฑๅ…ฅ็š„ๅคๆ ธไธŽๅฎ‰ๅ…จๅฎก่ฎก + +##### ๏ผˆ6๏ผ‰ไฟๅญ˜ๅนถๅบ”็”จ + +้กต้ขๅณไธŠ่ง’็š„ **ไฟๅญ˜ๅนถๅบ”็”จ** ็”จไบŽๆไบคๅฝ“ๅ‰ๆ‰€ๆœ‰ scanner ็›ธๅ…ณ้…็ฝฎใ€‚ไฟๅญ˜ๅŽไผš๏ผš + +* ๆ›ดๆ–ฐ ClawManager ไธญ็š„ quick / deep ๆ‰ซๆ็ญ–็•ฅ +* ๆ›ดๆ–ฐ skill-scanner Deployment ็š„็›ธๅ…ณ็Žฏๅขƒๅ˜้‡ +* ็ญ‰ๅพ… rollout ๅฎŒๆˆๅŽไฝฟๆ–ฐ้…็ฝฎๆญฃๅผ็”Ÿๆ•ˆ + +> ่ฏดๆ˜Ž๏ผš +> +> * ไฟฎๆ”นๆ‰ซๆๅ™จ้…็ฝฎๅŽ๏ผŒๅปบ่ฎฎ็ญ‰ๅพ…้…็ฝฎๅฎŒๅ…จ็”Ÿๆ•ˆ๏ผŒๅ†ๆ‰ง่กŒๆ–ฐ็š„ๆ‰ซๆไปปๅŠก๏ผ› +> * ่‹ฅ้…็ฝฎๅŽๅ‘็Žฐ่ฟžๆŽฅ็Šถๆ€ๅผ‚ๅธธ๏ผŒๅฏไผ˜ๅ…ˆๆฃ€ๆŸฅ AI Gateway ๆจกๅž‹ใ€LLM ๅœฐๅ€ใ€Key ๅ’Œ Deployment rollout ็Šถๆ€ใ€‚ + +### 9.3 AI ็ฝ‘ๅ…ณๅŠŸ่ƒฝๆฆ‚่งˆ + +AI ็ฝ‘ๅ…ณ้™คไบ†โ€œๆจกๅž‹โ€้…็ฝฎๅค–๏ผŒ่ฟ˜ๅŒ…ๅซไปฅไธ‹ๆจกๅ—๏ผš + +* **AI ๅฎก่ฎก**๏ผšๆŸฅ็œ‹ๆจกๅž‹่ฐƒ็”จ Traceใ€่ฏทๆฑ‚ไธŽๅ“ๅบ”่ดŸ่ฝฝใ€ๅ‘ฝไธญ้ฃŽ้™ฉใ€่ทฏ็”ฑๅ†ณ็ญ–ไปฅๅŠ่ฐƒ็”จๆ˜Ž็ป†ใ€‚ +* **ๆˆๆœฌ**๏ผšๆŸฅ็œ‹ Token ็”จ้‡ใ€้ข„ไผฐ่ดน็”จใ€ๅ†…้ƒจๆˆๆœฌๅ’Œ่ถ‹ๅŠฟ็ปŸ่ฎกใ€‚ +* **้ฃŽๆŽง่ง„ๅˆ™**๏ผš้…็ฝฎๆ•ๆ„Ÿๆฃ€ๆต‹่ง„ๅˆ™๏ผŒๆŽงๅˆถๅ‘ฝไธญๅŽๆ˜ฏๆ”พ่กŒ่ฟ˜ๆ˜ฏ่ทฏ็”ฑๅˆฐๅฎ‰ๅ…จๆจกๅž‹ใ€‚ + +### 9.4 ๆˆๆœฌๆจกๅ— + +ๆˆๆœฌ้กต้ข็”จไบŽ็ปŸ่ฎกๅนณๅฐๆจกๅž‹่ฐƒ็”จ็š„่ดน็”จไธŽ Token ไฝฟ็”จๆƒ…ๅ†ต๏ผŒๅธฎๅŠฉ็ฎก็†ๅ‘˜ไบ†่งฃๆ•ดไฝ“ๆถˆ่€—ๆƒ…ๅ†ตใ€‚ + +![](./main/6.png) + +้กต้ขไธป่ฆๅŒ…ๆ‹ฌไปฅไธ‹ๅ†…ๅฎน๏ผš + +* **่พ“ๅ…ฅ Token**๏ผš็ปŸ่ฎก่พ“ๅ…ฅๆ็คบ่ฏๆ€ป้‡ใ€‚ +* **่พ“ๅ‡บ Token**๏ผš็ปŸ่ฎกๆจกๅž‹็”Ÿๆˆๅ†…ๅฎนๆ€ป้‡ใ€‚ +* **้ข„ไผฐ่ดน็”จ**๏ผšๆŒ‰ Provider ๅ•ไปทไผฐ็ฎ—็š„่ดน็”จใ€‚ +* **ๅ†…้ƒจๆˆๆœฌ**๏ผšๅฎ‰ๅ…จๆจกๅž‹็›ธๅ…ณ็š„ๅ†…้ƒจๆ ธ็ฎ—ๆˆๆœฌใ€‚ +* **ๆฏๆ—ฅ่ดน็”จ่ถ‹ๅŠฟ**๏ผšๆŒ‰ๆœ€่ฟ‘ 7 ๅคฉๆŸฅ็œ‹ๅฝ“ๅ‰็ช—ๅฃๅ†…็š„้ข„ไผฐ่ดน็”จๅ’Œ Token ๅ˜ๅŒ–ใ€‚ +* **็”จๆˆทๆฑ‡ๆ€ป**๏ผšๆŒ‰็”จๆˆท่šๅˆ็”จ้‡ๅ’Œ่ดน็”จใ€‚ +* **ๅฎžไพ‹ๆฑ‡ๆ€ป**๏ผšๆŒ‰ๅฎžไพ‹่šๅˆ็”จ้‡ๅ’Œ่ดน็”จใ€‚ +* **ๆœ€่ฟ‘ๆˆๆœฌ่ฎฐๅฝ•**๏ผšๆ”ฏๆŒๆŒ‰ Traceใ€็”จๆˆทใ€ๆจกๅž‹็ญ‰ๆกไปถๆœ็ดขๅนถๅˆ†้กตๆŸฅ็œ‹ๆˆๆœฌ่ฎฐๅฝ•๏ผŒๅนถๅฏ่ฟ›ไธ€ๆญฅ่ทณ่ฝฌๅˆฐๅฎก่ฎก่ฏฆๆƒ…ใ€‚ + +> ่ฏดๆ˜Ž๏ผšๅฆ‚ๆžœๅฝ“ๅ‰ๅฐšๆœชไบง็”Ÿๆจกๅž‹่ฐƒ็”จ่ฎฐๅฝ•๏ผŒ่พ“ๅ…ฅ Tokenใ€่พ“ๅ‡บ Tokenใ€่ดน็”จๅŠ่ถ‹ๅŠฟๅ›พๅฏ่ƒฝ้ƒฝไธบ 0๏ผŒ่ฟ™ๆ˜ฏๆญฃๅธธ็Žฐ่ฑกใ€‚ + +### 9.5 AI ๅฎก่ฎกๆจกๅ— + +AI ๅฎก่ฎก้กต้ข็”จไบŽๆŸฅ็œ‹ๆœ€่ฟ‘็š„ๅ—็ฎกๆจกๅž‹่ฐƒ็”จ่ฎฐๅฝ•๏ผŒๅธฎๅŠฉ็ฎก็†ๅ‘˜ๆŽ’ๆŸฅๆจกๅž‹่ฐƒ็”จใ€Token ไฝฟ็”จๅ’Œ่ทฏ็”ฑ็ป“ๆžœใ€‚ + +![](./main/7.png) + +ไธป่ฆๅŠŸ่ƒฝๅŒ…ๆ‹ฌ๏ผš + +* **ๆœ€่ฟ‘ AI Trace**๏ผšๆŸฅ็œ‹ๆœ€่ฟ‘็š„ๆจกๅž‹่ฐƒ็”จ้“พ่ทฏใ€‚ +* **Trace ๅˆ—่กจ**๏ผšๅœจ็ปŸไธ€่กจๆ ผไธญๆŸฅ็œ‹ๆœ€่ฟ‘็š„ๅ—็ฎก Traceใ€‚ +* **ๆœ็ดขไธŽ็ญ›้€‰**๏ผšๆ”ฏๆŒๆŒ‰ Traceใ€่ฏทๆฑ‚ๅ†…ๅฎนใ€็”จๆˆทใ€ๆจกๅž‹็ญ‰ๆกไปถ่ฟ›่กŒๆœ็ดขใ€‚ +* **็Šถๆ€็ญ›้€‰**๏ผšๆ”ฏๆŒๆŒ‰็Šถๆ€ๆŸฅ็œ‹ไธๅŒ่ฐƒ็”จ็ป“ๆžœใ€‚ +* **ๆจกๅž‹็ญ›้€‰**๏ผšๆ”ฏๆŒๆŒ‰ๆจกๅž‹็ญ›้€‰ๅฏนๅบ”็š„่ฐƒ็”จ่ฎฐๅฝ•ใ€‚ +* **ๅˆ†้กตๅˆทๆ–ฐ**๏ผšๆ”ฏๆŒๅˆ†้กตๆŸฅ็œ‹ๅ’Œๆ‰‹ๅŠจๅˆทๆ–ฐๆœ€ๆ–ฐๅฎก่ฎก็ป“ๆžœใ€‚ + +> ่ฏดๆ˜Ž๏ผšๅฆ‚ๆžœ้กต้ขๆ็คบโ€œๆš‚ๆ—  AI ๅฎก่ฎก่ฎฐๅฝ•โ€๏ผŒ่ฏดๆ˜Žๅฝ“ๅ‰ๅฐšๆœชไบง็”Ÿๆจกๅž‹ๅฎž้™…่ฐƒ็”จ่ฏทๆฑ‚ใ€‚ + +### 9.6 ้ฃŽๆŽง่ง„ๅˆ™ๆจกๅ— + +้ฃŽๆŽง่ง„ๅˆ™้กต้ข็”จไบŽ้…็ฝฎๆ•ๆ„Ÿๅ†…ๅฎนๆฃ€ๆต‹่ง„ๅˆ™๏ผŒๅนถๅ†ณๅฎšๅ‘ฝไธญ่ง„ๅˆ™ๅŽ็š„ๅค„็†ๅŠจไฝœใ€‚ + +![](./main/8.png) + +่ฏฅๆจกๅ—ไธป่ฆๆ”ฏๆŒ๏ผš + +* **่ง„ๅˆ™ๅˆ—่กจ็ฎก็†**๏ผšๆŸฅ็œ‹ๅ…จ้ƒจ่ง„ๅˆ™ๅŠๅ…ถๅฏ็”จ็Šถๆ€ใ€‚ +* **่ง„ๅˆ™ๅˆ†็ฑปๆŸฅ็œ‹**๏ผšๆ”ฏๆŒๆŒ‰ไธชไบบไฟกๆฏใ€ๅ…ฌๅธไฟกๆฏใ€ๅฎขๆˆทไธšๅŠกใ€ๅฎ‰ๅ…จๅ‡ญๆฎใ€่ดขๅŠกๆณ•ๅŠกใ€ๆ”ฟๆฒปๆ•ๆ„Ÿใ€่‡ชๅฎšไน‰็ญ‰ๅˆ†็ฑปๆŸฅ็œ‹่ง„ๅˆ™ใ€‚ +* **่ง„ๅˆ™ๅญ—ๆฎต้…็ฝฎ**๏ผšๅฏ่ฎพ็ฝฎ่ง„ๅˆ™ IDใ€ๆ˜พ็คบๅ็งฐใ€ไธฅ้‡็บงๅˆซใ€ๅŠจไฝœใ€ๆŽ’ๅบใ€ๆญฃๅˆ™ Pattern ๅ’Œๆ่ฟฐใ€‚ +* **่ง„ๅˆ™ๅŠจไฝœๆŽงๅˆถ**๏ผšๅ‘ฝไธญ่ง„ๅˆ™ๅŽๅฏ้€‰ๆ‹ฉๆ”พ่กŒ๏ผŒๆˆ–่ทฏ็”ฑๅˆฐๅฎ‰ๅ…จๆจกๅž‹ใ€‚ +* **ๆ‰น้‡ๅฏ็”จ / ๅœ็”จ**๏ผšๆ”ฏๆŒๆ‰น้‡่ฐƒๆ•ด่ง„ๅˆ™็Šถๆ€ใ€‚ +* **่ง„ๅˆ™ๆต‹่ฏ•ๅฐ**๏ผšๅฏ็ฒ˜่ดดๆ ทๆœฌๆ–‡ๆœฌ๏ผŒๆต‹่ฏ•ๅฏ็”จ่ง„ๅˆ™ๆˆ–่‰็จฟ่ง„ๅˆ™ไผšๅ‘ฝไธญๅ“ชไบ›ๅ†…ๅฎนใ€‚ + +ๅฝ“ๅ‰ๅ†…็ฝฎ่ง„ๅˆ™็คบไพ‹ๅŒ…ๆ‹ฌไฝ†ไธ้™ไบŽ๏ผš + +* ไธชไบบไฟกๆฏ๏ผš้‚ฎ็ฎฑๅœฐๅ€ใ€ๆ‰‹ๆœบๅทใ€่บซไปฝ่ฏๅทใ€ๆŠค็…งๅทใ€้“ถ่กŒๅกไธŠไธ‹ๆ–‡ใ€ไฝๅ€ใ€็ฎ€ๅކๅ†…ๅฎน็ญ‰ใ€‚ +* ๅ…ฌๅธไฟกๆฏ๏ผšๅ†…็ฝ‘ IPใ€ๅ†…้ƒจๅŸŸๅใ€ไธปๆœบๅ‘ฝๅใ€Kubernetes Service DNSใ€้กน็›ฎไปฃๅทใ€็ป„็ป‡ๆžถๆž„ใ€่–ช่ต„ / HR ไฟกๆฏ็ญ‰ใ€‚ +* ๅฎขๆˆทไธšๅŠก๏ผšๅฎขๆˆทๅๅ•ใ€ๅˆๅŒ / ๆŠฅไปทๅ•ใ€ๅ‘็ฅจ็จŽๅทใ€CRM / ๅทฅๅ•ๆ•ฐๆฎ็ญ‰ใ€‚ +* ๅฎ‰ๅ…จๅ‡ญๆฎ๏ผš็ง้’ฅใ€API Keyใ€Tokenใ€JWTใ€Cookie / Sessionใ€ๆ•ฐๆฎๅบ“่ฟžๆŽฅไธฒใ€Kubeconfigใ€็Žฏๅขƒๅ˜้‡ๅฏ†้’ฅ็ญ‰ใ€‚ +* ่ดขๅŠกๆณ•ๅŠก๏ผš้ข„็ฎ—ใ€ๅˆฉๆถฆใ€่ฅๆ”ถใ€ๆณ•ๅŠกๆ„่งใ€่ฏ‰่ฎผใ€NDA ็ญ‰ใ€‚ +* ๆ”ฟๆฒปๆ•ๆ„Ÿ๏ผšๆ”ฟๆฒปๆœบๆž„ใ€ๅ†›ไบ‹ๅ›ฝๅฎถๅฎ‰ๅ…จใ€ๆž็ซฏๆšดๅŠ›็›ธๅ…ณ่กจ่ฟฐ็ญ‰ใ€‚ + +> ่ฏดๆ˜Ž๏ผš้ป˜่ฎค่ง„ๅˆ™ๅทฒ่ฆ†็›–ๅคš็ฑปๅธธ่งๆ•ๆ„Ÿไฟกๆฏๆฃ€ๆต‹ๅœบๆ™ฏ๏ผŒๅฎž้™…ไฝฟ็”จไธญๅฏๆ นๆฎไธšๅŠก้œ€ๆฑ‚็ปง็ปญๆ–ฐๅขžใ€่ฐƒๆ•ดๆˆ–ๅœ็”จ้ƒจๅˆ†่ง„ๅˆ™ใ€‚ +--- + + +## ๅใ€ๅทฅไฝœๅฐๆจกๅ—่ฏดๆ˜Ž + +ๅทฅไฝœๅฐๆ˜ฏๆ™ฎ้€š็”จๆˆท่ฟ›ๅ…ฅๅนณๅฐๅŽ็š„ไธป่ฆๆ“ไฝœๅŒบๅŸŸ๏ผŒ็”จไบŽๆŸฅ็œ‹ไธชไบบ่ต„ๆบ้…้ขใ€ๅˆ›ๅปบๅฎžไพ‹ใ€็ฎก็†ๅฎžไพ‹ไปฅๅŠ็ปดๆŠค OpenClaw ็›ธๅ…ณ่ต„ๆบใ€‚่ฏฅๆจกๅ—ๆ›ดๅๅ‘ๆ—ฅๅธธไฝฟ็”จไธŽ่ฟ็ปดๆ“ไฝœ๏ผŒไธŽ็ฎก็†ๅ‘˜ไพง็š„โ€œๆŽงๅˆถๅฐๆ€ป่งˆโ€ไธๅŒใ€‚ + +### 10.1 ๅทฅไฝœๅฐ้ฆ–้กต +![](./main/9.png) +ๅทฅไฝœๅฐ้ฆ–้กต็”จไบŽๅฑ•็คบๅฝ“ๅ‰่ดฆๅท็š„ๅฎžไพ‹ไธŽ่ต„ๆบไฝฟ็”จๆฆ‚ๅ†ต๏ผŒไธป่ฆๅŒ…ๅซไปฅไธ‹ๅ†…ๅฎน๏ผš + +- **ๆˆ‘็š„ๅฎžไพ‹**๏ผšๆ˜พ็คบๅฝ“ๅ‰่ดฆๅทไธ‹ๅทฒๅˆ›ๅปบ็š„ๅฎžไพ‹ๆ•ฐ้‡ใ€‚ +- **่ฟ่กŒไธญ**๏ผšๆ˜พ็คบๅฝ“ๅ‰ๆญฃๅœจ่ฟ่กŒ็š„ๅฎžไพ‹ๆ•ฐ้‡ใ€‚ +- **ๅทฒ็”จๅญ˜ๅ‚จ**๏ผšๆ˜พ็คบๅฝ“ๅ‰่ดฆๅทๅทฒ็ปๅ ็”จ็š„ๅญ˜ๅ‚จ็ฉบ้—ดใ€‚ +- **ๆˆ‘็š„่ต„ๆบ้…้ข**๏ผšๅฑ•็คบๅฝ“ๅ‰่ดฆๅทๅฏ็”จ็š„้…้ขไฟกๆฏ๏ผŒๅŒ…ๆ‹ฌๅฎžไพ‹ๆ•ฐใ€ๆœ€ๅคง CPU ๆ ธๆ•ฐใ€ๆœ€ๅคงๅ†…ๅญ˜ใ€ๆœ€ๅคงๅญ˜ๅ‚จไปฅๅŠๆœ€ๅคง GPU ๆ•ฐใ€‚ +- **ๅฟซๆทๆ“ไฝœ**๏ผšๆไพ› **ๅˆ›ๅปบๆ–ฐๅฎžไพ‹** ๅ’Œ **ๆŸฅ็œ‹ๅ…จ้ƒจๅฎžไพ‹** ไธคไธชๅ…ฅๅฃ๏ผŒไพฟไบŽๅฟซ้€Ÿๅผ€ๅง‹ไฝฟ็”จๅนณๅฐใ€‚ + +> ่ฏดๆ˜Ž๏ผšๅฝ“้กต้ขๆ˜พ็คบโ€œ่ฟ˜ๆฒกๆœ‰ๅฎžไพ‹โ€ๆ—ถ๏ผŒๅฏ็›ดๆŽฅ็‚นๅ‡ป **ๅˆ›ๅปบๆ–ฐๅฎžไพ‹** ๅผ€ๅง‹ๅˆ›ๅปบ็ฌฌไธ€ไธช OpenClaw Desktop ๅฎžไพ‹ใ€‚ + +### 10.2 ๆˆ‘็š„ๅฎžไพ‹ + +โ€œๆˆ‘็š„ๅฎžไพ‹โ€้กต้ข็”จไบŽ็ปŸไธ€ๆŸฅ็œ‹ๅ’Œ็ฎก็†ๅฝ“ๅ‰่ดฆๅทไธ‹ๅทฒๅˆ›ๅปบ็š„ๅฎžไพ‹ใ€‚่ฏฅ้กต้ขไธป่ฆๆ‰ฟๆ‹…ๅฎžไพ‹็ฎก็†ๅŠŸ่ƒฝใ€‚ +![](./main/10.png) +ๆ”ฏๆŒ็š„ๅธธ่งๆ“ไฝœๅŒ…ๆ‹ฌ๏ผš + +- **ๆŸฅ็œ‹ๅฎžไพ‹็Šถๆ€**๏ผšๆŸฅ็œ‹ๅฎžไพ‹ๆ˜ฏๅฆๅค„ไบŽๅˆ›ๅปบไธญใ€่ฟ่กŒไธญใ€ๅทฒๅœๆญขๆˆ–ๅผ‚ๅธธ็Šถๆ€ใ€‚ +- **่ฟ›ๅ…ฅๅฎžไพ‹่ฏฆๆƒ…**๏ผšๆŸฅ็œ‹ๅฎžไพ‹็š„ๅŸบ็ก€ไฟกๆฏใ€่ต„ๆบ้…็ฝฎๅ’Œ่ฟ่กŒๆƒ…ๅ†ตใ€‚ +- **ๅœๆญขๅฎžไพ‹**๏ผšๅฝ“ๅฎžไพ‹่ฟ่กŒๅผ‚ๅธธๆˆ–้œ€่ฆ้‡ๆ–ฐๅŠ ่ฝฝ็Žฏๅขƒๆ—ถ๏ผŒๅฏๆ‰ง่กŒๅœๆญขๆ“ไฝœใ€‚ +- **ๅˆ ้™คๅฎžไพ‹**๏ผšๅฝ“ๅฎžไพ‹ไธๅ†ไฝฟ็”จๆ—ถ๏ผŒๅฏ็›ดๆŽฅๅˆ ้™ค๏ผŒ้‡Šๆ”พๅฏนๅบ”็š„ CPUใ€ๅ†…ๅญ˜ๅ’Œๅญ˜ๅ‚จ่ต„ๆบใ€‚ + +> ่ฏดๆ˜Ž๏ผšๅˆ ้™คๅฎžไพ‹ๅŽ๏ผŒๅฎžไพ‹็›ธๅ…ณ่ต„ๆบไผš่ขซไธ€ๅนถๆธ…็†๏ผŒๆ‰ง่กŒๅ‰่ฏท็กฎ่ฎคๅ…ถไธญ็š„ๆ•ฐๆฎๅ’Œ้…็ฝฎๆ˜ฏๅฆๅทฒๅฎŒๆˆๅค‡ไปฝใ€‚ + +### 10.3 ่ต„ๆบ็ฎก็† + +โ€œ่ต„ๆบ็ฎก็†โ€้กต้ข็”จไบŽ็ปดๆŠค OpenClaw ๅฏ็”จ็š„่ต„ๆบๅ†…ๅฎน๏ผŒไพฟไบŽๅฎžไพ‹ๅœจๅฏๅŠจๅŽๆณจๅ…ฅๅ’Œไฝฟ็”จใ€‚ +![](./main/11.png) +้กต้ขไธป่ฆๅŒ…ๆ‹ฌไปฅไธ‹้ƒจๅˆ†๏ผš + +- **่ต„ๆบ**๏ผšๆŸฅ็œ‹ๅ’Œ็ปดๆŠคๅฏ็”จ่ต„ๆบๆก็›ฎใ€‚ +- **่ต„ๆบๅŒ…**๏ผšๅฐ†ๅคšไธช่ต„ๆบ็ป„ๅˆไธบๅฏๅค็”จ็š„่ต„ๆบๅŒ…๏ผŒไพฟไบŽๆ‰น้‡ๆณจๅ…ฅใ€‚ +- **ๆณจๅ…ฅ่ฎฐๅฝ•**๏ผšๆŸฅ็œ‹่ต„ๆบๆณจๅ…ฅๅކๅฒไธŽๆ‰ง่กŒๆƒ…ๅ†ตใ€‚ + +ๅœจ่ต„ๆบ็ฎก็†้กตๅทฆไพง๏ผŒ่ฟ˜ๅฏไปฅๆŒ‰่ต„ๆบ็ฑปๅž‹่ฟ›่กŒๅŒบๅˆ†็ฎก็†๏ผŒๅฝ“ๅ‰้กต้ขไธญๅฏ่ง็š„็ฑปๅž‹ๅŒ…ๆ‹ฌ๏ผš + +- **้€š้“** +- **ๆŠ€่ƒฝ** +- **ๆ™บ่ƒฝไฝ“๏ผˆๅณๅฐ†ไธŠ็บฟ๏ผ‰** +- **ๅฎšๆ—ถไปปๅŠก๏ผˆๅณๅฐ†ไธŠ็บฟ๏ผ‰** + +้กต้ขๅณไธŠ่ง’ๆ”ฏๆŒ๏ผš + +- **ๅˆทๆ–ฐ**๏ผš้‡ๆ–ฐๅŠ ่ฝฝๅฝ“ๅ‰่ต„ๆบๅˆ—่กจใ€‚ +- **ๆ–ฐๅปบ**๏ผšๅˆ›ๅปบๆ–ฐ็š„่ต„ๆบ้กนใ€‚ + +### 10.3.1 ๆ–ฐๅปบ้€š้“ + +โ€œ้€š้“โ€็”จไบŽ้…็ฝฎ OpenClaw ไธŽๅค–้ƒจๆถˆๆฏๅนณๅฐๆˆ–ๆŽฅๅ…ฅ็ซฏ็š„่ฟžๆŽฅๆ–นๅผ๏ผŒไพ‹ๅฆ‚ Telegramใ€Slackใ€้ฃžไนฆ / Lark ็ญ‰ใ€‚ + +![](./main/12.png) + +ๅˆ›ๅปบ้€š้“ๆ—ถ๏ผŒๅฏๆŒ‰ไปฅไธ‹ๆญฅ้ชคๆ“ไฝœ๏ผš + +1. ่ฟ›ๅ…ฅ **่ต„ๆบ็ฎก็†** ้กต้ข๏ผŒไฟๆŒๅœจ **่ต„ๆบ** ้กต็ญพใ€‚ +2. ๅœจๅทฆไพง่ต„ๆบ็ฑปๅž‹ไธญ้€‰ๆ‹ฉ **้€š้“**ใ€‚ +3. ็‚นๅ‡ป้กต้ขๅณไพง็š„ **ๆ–ฐๅปบ**๏ผŒๆ‰“ๅผ€โ€œๆ–ฐๅปบ่ต„ๆบโ€ๅผน็ช—ใ€‚ +4. ๅœจๅผน็ช—ไธญๅกซๅ†™ๅŸบ็ก€ไฟกๆฏ๏ผš + - **็ฑปๅž‹**๏ผš้€‰ๆ‹ฉ **้€š้“** + - **่ต„ๆบ Key**๏ผšๅกซๅ†™่ฏฅ้€š้“็š„ๅ”ฏไธ€ๆ ‡่ฏ†๏ผŒๅปบ่ฎฎไฝฟ็”จๆ˜“ไบŽ่ฏ†ๅˆซไธ”ไธ้‡ๅค็š„่‹ฑๆ–‡ๆˆ–็ป„ๅˆๅ็งฐ + - **ๅ็งฐ**๏ผšๅกซๅ†™้€š้“ๆ˜พ็คบๅ็งฐ + - **ๆ ‡็ญพ**๏ผšๅฏ้€‰๏ผŒ็”จไบŽๅˆ†็ฑปๆฃ€็ดข + - **ๆ่ฟฐ**๏ผšๅฏ้€‰๏ผŒ็”จไบŽ่กฅๅ……่ฏดๆ˜Ž่ฏฅ้€š้“็š„็”จ้€” + - **ๅทฒๅฏ็”จ**๏ผšๅปบ่ฎฎไฟๆŒๅ‹พ้€‰็Šถๆ€ +5. ๅœจ **Channel ๆจกๆฟ** ๅŒบๅŸŸไธญ้€‰ๆ‹ฉไธ€ไธช่ตทๅง‹ๆจกๆฟใ€‚ๅฝ“ๅ‰ๆ”ฏๆŒ็š„ๆจกๆฟๅŒ…ๆ‹ฌ๏ผš + - `Telegram` + - `Slack` + - `้ฃžไนฆ / Lark` + +6. ้€‰ๆ‹ฉๆจกๆฟๅŽ๏ผŒ็‚นๅ‡ป **ๅŠ ่ฝฝๆจกๆฟ**ใ€‚็ณป็ปŸไผšๅฐ†ๅฏนๅบ”ๆจกๆฟ็š„ๅŸบ็ก€้…็ฝฎ่‡ชๅŠจๅ†™ๅ…ฅไธ‹ๆ–น็š„ **ๅ†…ๅฎน JSON** ๅŒบๅŸŸใ€‚ +7. ๆ นๆฎไฝ ็š„ๅฎž้™…ๆŽฅๅ…ฅไฟกๆฏ๏ผŒ็ปง็ปญ่กฅๅ……ๆˆ–ไฟฎๆ”น **ๅ†…ๅฎน JSON** ไธญ็š„ๅญ—ๆฎตๅ†…ๅฎนใ€‚ +8. ็กฎ่ฎค้…็ฝฎๆ— ่ฏฏๅŽ๏ผŒ็‚นๅ‡ปไฟๅญ˜๏ผŒๅฎŒๆˆ้€š้“ๅˆ›ๅปบใ€‚ + +> ่ฏดๆ˜Ž๏ผš +> - **Channel ๆจกๆฟ** ็”จไบŽๅธฎๅŠฉไฝ ๅฟซ้€Ÿ็”ŸๆˆๅŸบ็ก€้…็ฝฎ๏ผ› +> - **ๅ†…ๅฎน JSON** ๆ˜ฏๆœ€็ปˆ็”Ÿๆ•ˆ็š„้€š้“้…็ฝฎๅ†…ๅฎน๏ผ› +> - ๅฆ‚ๆžœๆฒกๆœ‰ๅฎŒๅ…จๅŒน้…็š„ๆจกๆฟ๏ผŒไนŸๅฏไปฅ็›ดๆŽฅๅœจ **ๅ†…ๅฎน JSON** ไธญๆ‰‹ๅŠจๅกซๅ†™้…็ฝฎใ€‚ + +### 10.3.2 ไธŠไผ ๆŠ€่ƒฝ + +ๆŠ€่ƒฝ็”จไบŽไธบ OpenClaw ๆไพ›ๅฏๅค็”จ็š„ๅŠŸ่ƒฝ่ƒฝๅŠ›ใ€‚ๅนณๅฐๆ”ฏๆŒ้€š่ฟ‡ไธŠไผ ๅฝ’ๆกฃๆ–‡ไปถ็š„ๆ–นๅผๆ‰น้‡ๅฏผๅ…ฅๆŠ€่ƒฝใ€‚ + +![](./main/13.png) + +ไธŠไผ ๆŠ€่ƒฝๆ—ถ๏ผŒๅฏๆŒ‰ไปฅไธ‹ๆญฅ้ชคๆ“ไฝœ๏ผš + +1. ่ฟ›ๅ…ฅ **่ต„ๆบ็ฎก็†** ้กต้ข๏ผŒไฟๆŒๅœจ **่ต„ๆบ** ้กต็ญพใ€‚ +2. ๅœจๅทฆไพง่ต„ๆบ็ฑปๅž‹ไธญ้€‰ๆ‹ฉ **ๆŠ€่ƒฝ**ใ€‚ +3. ็‚นๅ‡ป **้€‰ๆ‹ฉๆ–‡ไปถ**๏ผŒ้€‰ๆ‹ฉๆœฌๅœฐๆŠ€่ƒฝๅŽ‹็ผฉๅŒ…ใ€‚ +4. ๅฝ“ๅ‰้กต้ขไป…ๆ”ฏๆŒไธŠไผ  **`.zip`** ๆ–‡ไปถใ€‚ +5. ้€‰ๆ‹ฉๅฎŒๆˆๅŽ๏ผŒ็‚นๅ‡ปๅณไพง็š„ **ไธŠไผ ๆŠ€่ƒฝๅฝ’ๆกฃ**ใ€‚ +6. ็ณป็ปŸไผš่‡ชๅŠจ่งฃๆžไธŠไผ ๅ†…ๅฎน๏ผŒๅนถๅฐ†ๆฏไธชไธ€็บง็›ฎๅฝ•ๅฏผๅ…ฅไธบไธ€ไธชๆŠ€่ƒฝใ€‚ +7. ไธŠไผ ๅฎŒๆˆๅŽ๏ผŒๅฏๅœจๆŠ€่ƒฝๅˆ—่กจไธญๆŸฅ็œ‹ๅทฒๅฏผๅ…ฅ็š„ๆŠ€่ƒฝๅ†…ๅฎนใ€‚ + +> ่ฏดๆ˜Ž๏ผš +> - ๆŠ€่ƒฝๅฝ’ๆกฃๅปบ่ฎฎๆๅ‰ๆŒ‰็›ฎๅฝ•ๆ•ด็†ๆธ…ๆฅš๏ผ› +> - ๆฏไธชไธ€็บง็›ฎๅฝ•ไผš่ขซ่ฏ†ๅˆซไธบไธ€ไธช็‹ฌ็ซ‹ๆŠ€่ƒฝ๏ผ› +> - ๅฆ‚ๆžœไธŠไผ ๅŽๅˆ—่กจๆœช็ซ‹ๅณๅˆทๆ–ฐ๏ผŒๅฏๆ‰‹ๅŠจ็‚นๅ‡ป้กต้ขๅณไธŠ่ง’ **ๅˆทๆ–ฐ** ้‡ๆ–ฐๅŠ ่ฝฝใ€‚ +--- + + +## ๅไธ€ใ€้—ฎ้ข˜ไธŽๅฏน็ญ–้€ŸๆŸฅ + + +### 11.1 ๅญ˜ๅ‚จ้—ฎ้ข˜ไธ“้กนๅค„็†๏ผˆPV/PVC๏ผ‰ + +ๅฆ‚ๆžœไฝ ็œ‹ๅˆฐไปฅไธ‹้”™่ฏฏ๏ผš + +```text +0/1 nodes are available: pod has unbound immediate PersistentVolumeClaims +``` + +่ฏดๆ˜Ž้›†็พคๅญ˜ๅ‚จๆœช่‡ชๅŠจ็ป‘ๅฎšใ€‚ๆญคๆ—ถๅฏไปฅๆŒ‰ๅ•ๆœบ x86 ๆœๅŠกๅ™จๆ–นๅผ๏ผŒๆ‰‹ๅŠจๅˆ›ๅปบๆœฌๅœฐ `hostPath` PV/PVCใ€‚ + +> ่ฟ™ไธ€ๆ–นๆกˆ้€‚ๅˆๅ•่Š‚็‚นๆœๅŠกๅ™จๆต‹่ฏ•ๆˆ–่ฝป้‡็Žฏๅขƒ๏ผ›็”Ÿไบง็Žฏๅขƒๅปบ่ฎฎๆ”นไธบ NFSใ€Cephใ€ไบ‘็›˜็ญ‰ๆญฃๅผๅญ˜ๅ‚จใ€‚ + +#### 11.1.1 ๅˆ›ๅปบ PV +```bash +kubectl apply -f - < +## ๅไบŒใ€ๅปบ่ฎฎ็š„ๆœ€็ปˆๆฃ€ๆŸฅ้กบๅบ๏ผˆๅฏๆŒ‰ๆญค่‡ชๆŸฅ๏ผ‰ +1. `kubectl get nodes` +2. `kubectl get storageclass` +3. `kubectl get pods -n clawmanager-system` +4. `kubectl get pvc -n clawmanager-system` +5. `kubectl get svc -n clawmanager-system` +6. ๆต่งˆๅ™จ่ฎฟ้—ฎ `https://:30443` +7. ็™ปๅฝ•ๅŽๅฐๅนถๅฎŒๆˆ **ๅฎ‰ๅ…จๆจกๅž‹้…็ฝฎ** +8. ๅœจๅทฅไฝœๅฐไธญๅˆ›ๅปบ **OpenClaw Desktop** ๅฎžไพ‹ diff --git a/docs/use_guide_de.md b/docs/use_guide_de.md new file mode 100644 index 0000000..d68e43d --- /dev/null +++ b/docs/use_guide_de.md @@ -0,0 +1,782 @@ +[<- Zurueck zur README-Startseite](../README.de.md) + +# ClawManager Bereitstellungs- und Schnellstartanleitung + +## Inhaltsverzeichnis +- [I. Umgebung und Ziel](#sec-01) +- [II. รœberblick รผber die Bereitstellungsarten](#sec-02) +- [III. Variante A: Bereitstellung mit k3s](#sec-03) +- [IV. Variante B: Bereitstellung mit Standard-Kubernetes](#sec-04) +- [V. Empfehlungen zum Ziehen von Images in Netzwerken auf dem chinesischen Festland (optional)](#sec-05) +- [VI. ClawManager bereitstellen](#sec-06) +- [VII. Weboberflรคche starten](#sec-08) +- [VIII. Schnellstartanleitung (nach dem Login initialisieren und eine OpenClaw-Instanz erstellen)](#sec-09) +- [IX. Konsole und weitere Funktionen des AI Gateway](#sec-12) +- [X. Beschreibung des Workspace-Moduls](#sec-13) +- [XI. Schnelle Referenz fรผr Probleme und GegenmaรŸnahmen](#sec-14) +- [XII. Empfohlene abschlieรŸende Prรผfreihenfolge (zur Selbstprรผfung)](#sec-15) + + +## I. Umgebung und Ziel +- **Systemannahme**: Linux-Server mit `x86_64`-Architektur. +- **Bereitstellungsziel**: **ClawManager** bereitstellen, die Konfiguration des Sicherheitsmodells auf der Weboberflรคche abschlieรŸen und anschlieรŸend eine **OpenClaw Desktop**-Instanz erstellen und starten. +- **Geeignete Szenarien**: + - **Variante A: k3s-Einzelknoten-/Lightweight-Cluster-Bereitstellung** + - **Variante B: Standard-Kubernetes-Cluster-Bereitstellung** (z. B. kubeadm-Cluster, Enterprise-K8s-Cluster, Kubernetes-Cluster in der Cloud) + + +--- + + +## II. รœberblick รผber die Bereitstellungsarten +Sie kรถnnen mit einer der folgenden zwei Methoden bereitstellen: + +### Variante A: k3s-Bereitstellung +Geeignet fรผr Einzelknoten, Testumgebungen oder leichte Produktionsumgebungen. + +### Variante B: Standard-Kubernetes-Bereitstellung +Geeignet fรผr Serverumgebungen, die bereits รผber einen Standard-Kubernetes-Cluster verfรผgen. + +Unabhรคngig davon, welche Methode Sie verwenden, wird am Ende dasselbe ClawManager-Manifest angewendet: + +```bash +kubectl apply -f deployments/k8s/clawmanager.yaml +``` + +--- + + +## III. Variante A: Bereitstellung mit k3s + +### 3.1 k3s installieren +```bash +curl -sfL https://get.k3s.io | sh - +``` + +In Netzwerken auf dem chinesischen Festland kann die Installation รผber eine Mirror-Quelle erfolgen: + +```bash +curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh - +``` + +### 3.2 Dienststatus prรผfen +```bash +sudo systemctl status k3s --no-pager +sudo systemctl enable k3s +``` + +### 3.3 kubectl konfigurieren +Wenn der aktuelle Benutzer `kubectl` nicht direkt verwenden kann, fรผhren Sie Folgendes aus: + +```bash +mkdir -p ~/.kube +sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config +sudo chown "$USER:$USER" ~/.kube/config +``` + +Oder geben Sie es temporรคr an: + +```bash +export KUBECONFIG=/etc/rancher/k3s/k3s.yaml +``` + +### 3.4 Cluster รผberprรผfen +```bash +kubectl get nodes +``` + +Normalerweise sollte der Node den Status `Ready` haben. + +--- + + +## IV. Variante B: Bereitstellung mit Standard-Kubernetes + +> Gilt fรผr x86-Serverumgebungen, in denen bereits ein nutzbarer Kubernetes-Cluster vorhanden ist. + +### 4.1 Voraussetzungen prรผfen +Vergewissern Sie sich, dass das aktuelle `kubectl` mit dem Ziel-Cluster verbunden ist: + +```bash +kubectl get nodes +kubectl get ns +``` + +Normalerweise sollte mindestens ein `Ready`-Node angezeigt werden. + +### 4.2 Standard-StorageClass prรผfen +MySQL und MinIO in ClawManager benรถtigen persistente Speicherung. Es wird empfohlen, zunรคchst zu prรผfen, ob im Cluster eine Standard-`StorageClass` vorhanden ist: + +```bash +kubectl get storageclass +``` + +Wenn im Cluster bereits eine Standard-StorageClass vorhanden ist, kรถnnen Sie mit der Bereitstellung direkt fortfahren. + +Wenn **keine Standard-StorageClass** vorhanden ist, wird empfohlen, im Voraus nutzbare PV / PVC bereitzustellen oder eine lokale Pfad-Storage-Lรถsung zu verwenden. Andernfalls kann spรคter Folgendes auftreten: + +```text +pod has unbound immediate PersistentVolumeClaims +``` + +--- + + +## V. Empfehlungen zum Ziehen von Images in Netzwerken auf dem chinesischen Festland (optional) +Wenn der Server Docker Hub oder andere รถffentliche Registries nur langsam erreicht, kรถnnen Sie Image-Beschleunigung konfigurieren. + +### 5.1 k3s-Szenario: `/etc/rancher/k3s/registries.yaml` konfigurieren +```yaml +mirrors: + docker.io: + endpoint: + - "https://docker.m.daocloud.io" + - "https://docker.nju.edu.cn" + - "https://docker.1ms.run" + quay.io: + endpoint: + - "https://quay.mirrors.ustc.edu.cn" + gcr.io: + endpoint: + - "https://gcr.mirrors.ustc.edu.cn" + k8s.gcr.io: + endpoint: + - "https://registry.aliyuncs.com/google_containers" +``` + +Fรผhren Sie nach der ร„nderung Folgendes aus: + +```bash +sudo systemctl restart k3s +``` + +### 5.2 Image-Pull verifizieren +```bash +sudo k3s crictl pull docker.io/rancher/mirrored-pause:3.6 +``` + +--- + + +## VI. ClawManager bereitstellen + +### 6.1 Projektcode abrufen +```bash +git clone https://github.com/Yuan-lab-LLM/ClawManager.git +cd ClawManager +``` + +### 6.2 Bereitstellungsmanifest anwenden +Fรผhren Sie im Wurzelverzeichnis des Repositorys aus: + +```bash +kubectl apply -f deployments/k8s/clawmanager.yaml +``` + +### 6.3 Basisressourcen prรผfen +```bash +kubectl get ns +kubectl get pods -n clawmanager-system +kubectl get svc -n clawmanager-system +``` + +Unter normalen Umstรคnden sehen Sie die folgenden Komponenten: +- `clawmanager-app` +- `mysql` +- `minio` +- `skill-scanner` + +Wenn Sie den folgenden Fehler sehen: + +```text +0/1 nodes are available: pod has unbound immediate PersistentVolumeClaims +``` + +bedeutet dies, dass MySQL / MinIO im Cluster-Speicher nicht starten kรถnnen, weil die PVC nicht gebunden ist. Springen Sie bitte direkt ans Ende des Dokuments: + +- [XI.1 Spezielle Behandlung von Speicherproblemen (PV/PVC)](#sec-14-storage) + +--- + + +## VII. Weboberflรคche starten + +### 7.1 Zugriff รผber NodePort +Der ClawManager-Frontend-Service verwendet standardmรครŸig einen HTTPS-NodePort. Prรผfen Sie zunรคchst: + +```bash +kubectl get svc -n clawmanager-system +``` + +Wenn der Frontend-Port wie folgt ist: + +```text +443:30443/TCP +``` + +kรถnnen Sie ihn direkt im Browser aufrufen: + +```text +https://:30443 +``` + + +### 7.2 Hinweis zum ersten HTTPS-Zugriff +Da in der Regel ein selbstsigniertes Zertifikat verwendet wird, zeigt der Browser mรถglicherweise โ€žUnsicherโ€œ oder eine Zertifikatswarnung an. Klicken Sie auf: + +```text +Erweitert โ†’ Trotzdem fortfahren +``` + +um die Seite zu รถffnen. + +--- + + +## VIII. Schnellstartanleitung (nach dem Login initialisieren und eine OpenClaw-Instanz erstellen) + +Nachdem Sie die obige Bereitstellung abgeschlossen und die Verwaltungsseite erfolgreich geรถffnet haben, mรผssen Sie noch die folgenden Initialisierungsschritte durchfรผhren, bevor Sie tatsรคchlich eine **OpenClaw**-Instanz erstellen und starten kรถnnen. + +### 8.1 Im System anmelden +1. ร–ffnen Sie die Seite nach der Bereitstellung, z. B.: `https://:30443`. +2. Melden Sie sich mit dem Standard-Administratorkonto an: + - **Benutzername**: `admin` + - **Passwort**: `admin123` +3. Nach der ersten Anmeldung wird empfohlen, das Standardpasswort nach Bedarf zu รคndern. + + +### 8.2 Sicherheitsmodell konfigurieren (AI Gateway) + +![Abbildung 1: AI-Gateway-Konfiguration](./main/1.png) +Nach dem Login mรผssen Sie zunรคchst ein verfรผgbares **Sicherheitsmodell** konfigurieren, das von der Plattform und von nachfolgenden Instanzen gemeinsam genutzt wird. + +1. Klicken Sie im linken Menรผ auf **AI Gateway** โ†’ **Modelle**. +2. Fรผgen Sie ein neues Modell hinzu oder bearbeiten Sie ein bestehendes Modell und tragen Sie die folgenden Informationen entsprechend dem tatsรคchlich angebundenen Modelldienst ein: + + * **Anzeigename**: Geben Sie einen leicht erkennbaren Namen ein. + * **Anbietervorlage**: Wรคhlen Sie die passende Vorlage entsprechend dem Typ Ihres Modelldienstes; wenn Sie eine benutzerdefinierte oder kompatible Schnittstelle verwenden, kรถnnen Sie **Local / Internal** auswรคhlen. + * **Protokoll**: Wรคhlen Sie das Protokoll entsprechend der Schnittstelle, z. B. **OpenAI Compatible** oder ein anderes tatsรคchlich verwendetes Protokoll. + * **Base URL**: Tragen Sie die vom Modelldienst bereitgestellte Schnittstellenadresse ein. + * **API Key**: Tragen Sie den gรผltigen Schlรผssel des entsprechenden Modelldienstes ein. + * **Provider Model**: Tragen Sie den tatsรคchlichen Namen des aufzurufenden Modells ein. + * **Wรคhrung**: Tragen Sie die Angabe entsprechend Ihrer tatsรคchlichen Situation ein; wenn keine Kostendarstellung benรถtigt wird, kรถnnen Sie den Standardwert beibehalten. + * **Eingabepreis / Ausgabepreis**: Wenn keine Kostenstatistik benรถtigt wird, kรถnnen Sie zunรคchst `0` eintragen. +3. Aktivieren Sie vor dem Absenden unbedingt: + + * **Sicherheitsmodell** + * **Aktiviert** +4. Klicken Sie auf **Speichern**. + +> Hinweis: Die Bilder auf der Seite dienen nur dazu, die Positionen der Eingabefelder und das Beispiel-Format zu zeigen. Die tatsรคchlichen Inhalte sollten sich nach der Konfiguration des von Ihnen verwendeten Modelldienstes richten. + + +### 8.3 OpenClaw-Instanz erstellen +Nach Abschluss der Modellkonfiguration erstellen Sie eine **OpenClaw Desktop**-Instanz. + +1. Klicken Sie unten links auf **ADMIN** und wechseln Sie in den **Workspace**. +2. Klicken Sie auf **Instanz erstellen**. + +![](./main/2.png) +#### Schritt 1: Grundinformationen +- Geben Sie den **Instanznamen** ein (mindestens 3 Zeichen). +- Die Beschreibung ist optional und kann leer bleiben. +- Klicken Sie auf **Weiter**. + +![](./main/3.png) +#### Schritt 2: Typ auswรคhlen +- Wรคhlen Sie **OpenClaw Desktop** aus. +- Klicken Sie auf **Weiter**. + + +![](./main/4.png) +#### Schritt 3: Konfiguration +- Sie kรถnnen direkt die Spezifikation **Small** auswรคhlen: + - `2 CPU` + - `4 GB RAM` + - `20 GB Disk` +- Sie kรถnnen die Einstellungen auch im darunterliegenden benutzerdefinierten Konfigurationsbereich nach Bedarf anpassen. +- Im Bereich fรผr OpenClaw-Ressourceneinbindung kรถnnen Sie je nach Bedarf auswรคhlen: + - **Manuelle Ressourcen** + - **Ressourcenpaket** + - **Archivimport** +- Bei der ersten Verwendung kรถnnen Sie die Standardwerte beibehalten oder **Manuelle Ressourcen** auswรคhlen. +- Klicken Sie abschlieรŸend auf **Erstellen**. + +### 8.4 Hinweis zur ersten Erstellung +- Wenn Sie zum ersten Mal eine **OpenClaw**-Instanz erstellen, mรผssen die erforderlichen Images heruntergeladen und die Umgebung initialisiert werden, daher dauert es deutlich lรคnger. +- Bei langsamen Netzwerken oder beim ersten Image-Pull kann der Instanzstatus lange als **Erstellen** angezeigt werden. Bitte warten Sie geduldig. +- Wenn der Start auch nach lรคngerer Zeit nicht erfolgreich ist, gehen Sie zurรผck zu den Kubernetes-/Docker-Logs und prรผfen Sie Image-, PVC-, Gateway-Modell- und andere Probleme. + +--- + + +## IX. Konsole und weitere Funktionen des AI Gateway + +Neben der Modellkonfiguration bieten die Konsole auf der Startseite der Plattform und das AI Gateway auch Funktionen fรผr Auditierung, Kosten und Regelverwaltung. So kรถnnen Administratoren den Clusterstatus, Modellaufrufe und die Ausfรผhrung von Sicherheitsrichtlinien zentral einsehen. + +### 9.1 Konsolenรผbersicht + +![](./main/5.png) + +Die Startseite der Konsole dient dazu, den gesamten Betriebszustand des aktuellen Clusters und der Plattform anzuzeigen, damit Administratoren Ressourcennutzung und Systemzustand schnell erfassen kรถnnen. + +Sie umfasst hauptsรคchlich die folgenden Informationen: + +- **รœbersicht รผber grundlegende Clusterinformationen**: Zeigt die Gesamtzahl der Benutzer, die Gesamtzahl der Instanzen, die Anzahl laufender Instanzen und die gesamte Speichernutzung der aktuellen Plattform an. +- **Knotenรผbersicht**: Zeigt die aktuelle Anzahl verfรผgbarer Knoten sowie die wichtigsten Scheduling-Knoteninformationen im aktuellen Cluster an. +- **Ressourcenanforderungsstatus**: Zeigt die Gesamtmenge der aktuell von der Plattform angeforderten CPU-, Speicher- und Plattenressourcen an. +- **Kapazitรคts-Dashboard**: Zeigt die Gesamtkapazitรคt und aktuelle Auslastung von Knoten, CPU, Speicher, Festplatte und weiteren Dimensionen an, damit leicht beurteilt werden kann, ob im Cluster noch freie Kapazitรคt vorhanden ist. +- **Infrastruktur-Tabelle**: Dient zur Anzeige des Status aktueller Knoten, Ressourcen und der grundlegenden Laufzeitumgebung. + +> Hinweis: Die Konsole dient hauptsรคchlich dazu, die Gesamtressourcen der Plattform, die Knoten und den Betriebsรผberblick รผber Instanzen anzuzeigen, und wird nicht direkt fรผr konkrete OpenClaw-Operationen innerhalb einzelner Instanzen verwendet. + +### 9.2 Sicherheitszentrum (skill-scanner) + +Das **Sicherheitszentrum** in der Konsole dient dazu, den Scan-Status der Plattformressourcen, historische Berichte und Scanner-Konfigurationen zentral einzusehen. Es basiert auf dem Backend-Dienst **skill-scanner** und kann statische Scans, Deep Scans sowie ergรคnzende, LLM-basierte Analysen auf Ressourcen ausfรผhren. Dadurch unterstรผtzt es Administratoren dabei, potenziell riskante Inhalte, ungewรถhnliche Ressourcen und verdรคchtige Skills zu identifizieren. + +Das Sicherheitszentrum umfasst derzeit hauptsรคchlich die folgenden drei Module: + +* **Laufzeitรผbersicht** +* **Berichtshistorie** +* **Scanner-Konfiguration** + +#### 9.2.1 Laufzeitรผbersicht + +![](./main/14.png) + +Die Seite โ€žLaufzeitรผbersichtโ€œ dient dazu, den gesamten aktuellen Scan-Status und die Risikoverteilung der Plattform einzusehen, damit Administratoren die aktuelle Sicherheitslage schnell erfassen kรถnnen. + +Die Seite enthรคlt hauptsรคchlich die folgenden Informationen: + +* **Aktuell wirksamer Modus**: Zeigt an, ob derzeit der **Quick-Modus** oder der **Deep-Modus** verwendet wird. +* **Schnellscan / Vollscan**: + + * **Schnellscan**: Geeignet fรผr neu hinzugefรผgte oder geรคnderte Ressourcen. Der Scanumfang ist leichter und die Ausfรผhrung schneller. + * **Vollscan**: Geeignet fรผr das regelmรครŸige erneute Scannen aller Ressourcen, um den aktuellen Zustand aller Plattformressourcen vollstรคndig zu รผberprรผfen. +* **Gesamtzahl der Assets**: Anzahl der Ressourcen, die aktuell in den Scanbereich des Sicherheitszentrums aufgenommen sind. +* **Abgeschlossene Scans**: Anzahl der Ressourcen, deren Scan bereits abgeschlossen ist. +* **Hohes Risiko / Mittleres Risiko**: Statistik der in den aktuellen Scanergebnissen erkannten Risikostufen. +* **Scan-Abdeckung**: Zeigt den Anteil der tatsรคchlich gescannten Assets an der Gesamtzahl der Plattform-Assets. +* **SAFE / Hohes Risiko / Wartend / Fehlgeschlagen**: + + * **SAFE**: Anzahl der Ressourcen, die den Scan bestanden haben und bei denen aktuell kein Risiko festgestellt wurde + * **Hohes Risiko**: Anzahl der Risiko-Assets, die sofort bearbeitet werden mรผssen + * **Wartend**: Anzahl der Ressourcen, die auf Beweissicherung oder auf die Einreihung in die Scan-Warteschlange warten + * **Fehlgeschlagen**: Anzahl der fehlgeschlagenen Scan-Ausfรผhrungen, die erneut ausgefรผhrt werden mรผssen +* **Risikolage der Plattform-Assets**: Zeigt die aktuelle Risikoverteilung der Plattform-Assets aggregiert nach Risikostufe. +* **Hot Assets**: Zeigt die am hรคufigsten verwendeten Skills oder hochfrequent genutzten Ressourcen an, damit Administratoren wichtige Assets schnell identifizieren kรถnnen. +* **Scanner-Status**: Zeigt die Verfรผgbarkeit und den Verbindungsstatus des aktuellen skill-scanner an, zum Beispiel โ€žStatischer Scan verfรผgbarโ€œ oder โ€žVerbundenโ€œ. +* **Risikohinweise und Handlungsempfehlungen**: Gibt kurze Hinweise entsprechend der aktuellen Risikolage. +* **Letzte Scan-Aufgaben**: Zeigt kรผrzlich ausgefรผhrte Scan-Eintrรคge an, damit aktuelle Scan-Aktivitรคten nachvollzogen werden kรถnnen. + +> Hinweis: +> +> * Wenn auf der Seite โ€žDerzeit gibt es keine Assets mit hohem oder mittlerem Risikoโ€œ angezeigt wird, bedeutet dies, dass in den aktuellen Scan-Ergebnissen keine signifikanten Risiken gefunden wurden. +> * Wenn auf der Seite โ€žEs gibt noch keine Scan-Aufzeichnungenโ€œ angezeigt wird, bedeutet dies, dass bisher noch kein Scan ausgefรผhrt wurde oder noch keine gรผltigen Scan-Ergebnisse erzeugt wurden. + +#### 9.2.2 Berichtshistorie + +Die Seite โ€žBerichtshistorieโ€œ dient dazu, historische Scan-Berichte und zugehรถrige Ergebnisdatensรคtze einzusehen, damit Administratoren vergangene Scan-Ausfรผhrungen nachvollziehen kรถnnen. + +Dieses Modul dient hauptsรคchlich dazu: + +* Ergebnisse bereits ausgefรผhrter Scan-Aufgaben einzusehen +* Scan-Ausgaben zu verschiedenen Zeitpunkten zu vergleichen +* ร„nderungen des Sicherheitszustands einer bestimmten Ressource รผber verschiedene Phasen hinweg nachzuverfolgen +* Eine historische Grundlage fรผr spรคtere Prรผfungen, erneute Scans und Fehleranalysen bereitzustellen + +> Hinweis: +> +> * Die โ€žBerichtshistorieโ€œ ist stรคrker auf die Archivierung und Rรผckverfolgung historischer Ergebnisse ausgerichtet๏ผ› +> * Die โ€žLaufzeitรผbersichtโ€œ ist stรคrker auf den aktuellen Zustand und den Gesamtรผberblick ausgerichtetใ€‚ + +#### 9.2.3 Scanner-Konfiguration + +![](./main/15.png) + +Die Seite โ€žScanner-Konfigurationโ€œ dient zur Verwaltung der Betriebsweise von skill-scanner, der LLM-bezogenen Einstellungen sowie der beiden Scan-Strategien quick und deep. Nach dem Speichern wird ein Deployment-Rollout ausgelรถst und auf das Wirksamwerden der neuen Konfiguration gewartet. + +Die Seite enthรคlt hauptsรคchlich die folgenden Inhalte: + +##### (1) skill-scanner Servicestatus + +* Zeigt Namespace, Deployment-Namen und Verbindungsstatus des aktuellen Backend-Scandienstes an. +* Wenn auf der Seite **Verbunden** und **Statischer Scan verfรผgbar** angezeigt wird, bedeutet dies, dass die grundlegende statische Scan-Funktion verfรผgbar ist. + +##### (2) LLM-Konfiguration + +Dieser Bereich dient zur Konfiguration des primรคren LLM, damit der Scanner bei Bedarf modellbasierte Analysen ausfรผhren kann. + +Die wichtigsten Felder sind: + +* **Primรคre LLM-Integration**: Die Konfiguration des primรคren LLM kann direkt aus einem bereits in **AI Gateway** konfigurierten Modell importiert werden. +* **LLM API Key**: Entspricht `SKILL_SCANNER_LLM_API_KEY` und wird zur Authentifizierung des primรคren LLM analyzers verwendet. +* **LLM Model**: Entspricht `SKILL_SCANNER_LLM_MODEL`, zum Beispiel ein konkreter Modellname. +* **LLM Base URL**: Entspricht `SKILL_SCANNER_LLM_BASE_URL` und dient zur Konfiguration der Serviceadresse des primรคren LLM. + +##### (3) Meta-LLM-Integration + +Dieser Bereich dient zur Konfiguration des Modells, das vom Meta Analyzer verwendet wird. Es wird typischerweise fรผr die weitere Zusammenfassung, Konsolidierung oder sekundรคre Verarbeitung von Findings verwendet. + +Die wichtigsten Felder sind: + +* **Meta-LLM-Integration**: Die Konfiguration des Meta Analyzers kann direkt aus einem bereits in **AI Gateway** konfigurierten Modell importiert werden. +* **Meta LLM API Key**: Entspricht `SKILL_SCANNER_META_LLM_API_KEY`. +* **Meta LLM Model**: Entspricht `SKILL_SCANNER_META_LLM_MODEL`. +* **Meta LLM Base URL**: Entspricht `SKILL_SCANNER_META_LLM_BASE_URL`. + +> Hinweis: +> +> * Wenn derzeit kein LLM konfiguriert ist, zeigt die Seite in der Regel an, dass aktuell nur statisches Scannen unterstรผtzt wird๏ผ› +> * Erst nach der Konfiguration des primรคren LLM und des Meta LLM kann der Scanner vollstรคndigere semantische Analysen und Zusammenfassungen aktivierenใ€‚ + +##### (4) Aktueller Scan-Modus + +Die Seite unterstรผtzt die Auswahl des aktuell von der Plattform verwendeten Scan-Modus: + +* **Quick-Modus**: Verwendet quick analyzers fรผr den Scan und eignet sich fรผr tรคgliche Schnellprรผfungen. +* **Deep-Modus**: Verwendet deep analyzers fรผr den Scan und eignet sich fรผr vollstรคndigere und tiefere Analysen. + +Wichtig ist: + +* Sowohl โ€žSchnellscanโ€œ als auch โ€žVollscanโ€œ im Dashboard verwenden die hier ausgewรคhlte Scan-Stรคrke๏ผ› +* Der Unterschied liegt hauptsรคchlich im Scan-Umfang und nicht in der Tiefe der Analyzer selbstใ€‚ + +##### (5) Quick / Deep Scan-Strategie + +Im unteren Bereich der Seite werden die beiden Scan-Strategie-Konfigurationen **Quick** und **Deep** separat gepflegt, damit Administratoren je nach Szenario unterschiedliche Analyzer-Kombinationen auswรคhlen kรถnnen. + +Jede Strategie umfasst die folgenden Konfigurationseintrรคge: + +* **Timeout (Sekunden)**: Legt die Timeout-Zeit fรผr Scan-Aufgaben im aktuellen Modus fest. +* **Aufrufmethoden**: Verschiedene Analyzer kรถnnen je nach Bedarf aktiviert oder deaktiviert werden. + +Die derzeit sichtbaren Analyzer-Typen umfassen: + +* **Static**: YAML + YARA statisches Regel-Scannen +* **Bytecode**: Integritรคtsprรผfung von Python-Bytecode +* **Pipeline**: Befehlsketten- und Taint-Analyse +* **Behavioral**: AST-basierte Verhaltens- und Datenflussanalyse +* **LLM**: Semantische Analyse auf Basis externer LLMs +* **Meta**: Sekundรคre Zusammenfassungsanalyse von Findings + +Dies kann in der Regel wie folgt verstanden werden: + +* **Quick-Modus**: Legt den Schwerpunkt auf schnellere Ausfรผhrung und wird hรคufig fรผr tรคgliche inkrementelle Prรผfungen verwendet +* **Deep-Modus**: Kann mehr Analyzer aktivieren und eignet sich fรผr tiefere Prรผfungen und Sicherheits-Audits + +##### (6) Speichern und anwenden + +Die Schaltflรคche **Speichern und anwenden** oben rechts dient dazu, alle aktuellen scanner-bezogenen Konfigurationen zu รผbernehmen. Nach dem Speichern werden folgende Aktionen ausgefรผhrt: + +* Aktualisierung der quick / deep Scan-Strategien in ClawManager +* Aktualisierung der relevanten Umgebungsvariablen des skill-scanner Deployment +* Warten auf den Abschluss des Rollouts, bevor die neue Konfiguration offiziell wirksam wird + +> Hinweis: +> +> * Nach ร„nderungen an der Scanner-Konfiguration wird empfohlen, vor dem Start neuer Scan-Aufgaben zu warten, bis die Konfiguration vollstรคndig wirksam ist๏ผ› +> * Falls der Verbindungsstatus nach der Konfiguration ungewรถhnlich ist, sollten zuerst das AI Gateway-Modell, die LLM-Adresse, der Key und der Deployment-Rollout-Status geprรผft werdenใ€‚ + +### 9.3 รœberblick รผber die AI-Gateway-Funktionen + +Zusรคtzlich zur Konfiguration von โ€žModellenโ€œ enthรคlt AI Gateway auch die folgenden Module: + +* **AI Audit**: Zeigt Modellaufruf-Traces, Request- und Response-Payloads, erkannte Risiken, Routing-Entscheidungen und Aufrufdetails an. +* **Kosten**: Zeigt Token-Nutzung, geschรคtzte Kosten, interne Kosten und Trendstatistiken an. +* **Risikokontrollregeln**: Konfiguriert Regeln zur Erkennung sensibler Inhalte und steuert, ob Treffer freigegeben oder an das Sicherheitsmodell weitergeleitet werden. + +### 9.4 Kostenmodul + +Die Kostenseite dient dazu, die Kosten und die Token-Nutzung von Modellaufrufen auf der Plattform zu erfassen und Administratoren beim Verstรคndnis des Gesamtverbrauchs zu unterstรผtzen. + +![](./main/6.png) + +Die Seite enthรคlt hauptsรคchlich die folgenden Inhalte: + +* **Input Token**: Statistik รผber die Gesamtmenge der Eingabe-Prompts +* **Output Token**: Statistik รผber die Gesamtmenge der vom Modell generierten Inhalte +* **Geschรคtzte Kosten**: Auf Basis der Provider-Stรผckpreise geschรคtzte Kosten +* **Interne Kosten**: Interne Verrechnungskosten im Zusammenhang mit dem Sicherheitsmodell +* **Tรคglicher Kostentrend**: Zeigt die Verรคnderungen von geschรคtzten Kosten und Token im aktuellen Fenster รผber die letzten 7 Tage an +* **Benutzerรผbersicht**: Aggregierte Nutzung und Kosten nach Benutzer +* **Instanzรผbersicht**: Aggregierte Nutzung und Kosten nach Instanz +* **Neueste Kostenaufzeichnungen**: Unterstรผtzt Suche und Paginierung von Kostenaufzeichnungen nach Trace, Benutzer, Modell und weiteren Bedingungen und ermรถglicht den Sprung zu Audit-Details + +> Hinweis: Falls noch keine Modellaufruf-Datensรคtze erzeugt wurden, kรถnnen Input Token, Output Token, Kosten und Trenddiagramme alle 0 sein. Das ist normal. + +### 9.5 AI-Audit-Modul + +Die AI-Audit-Seite dient dazu, kรผrzliche Aufrufdatensรคtze verwalteter Modelle einzusehen und Administratoren bei der Untersuchung von Modellaufrufen, Token-Nutzung und Routing-Ergebnissen zu unterstรผtzen. + +![](./main/7.png) + +Die Hauptfunktionen umfassen: + +* **Letzte AI Trace**: Zeigt aktuelle Modellaufruf-Ketten an +* **Trace-Liste**: Zeigt aktuelle verwaltete Traces in einer einheitlichen Tabelle an +* **Suche und Filterung**: Unterstรผtzt Suche nach Trace, Request-Inhalt, Benutzer, Modell und weiteren Bedingungen +* **Statusfilterung**: Unterstรผtzt die Anzeige verschiedener Aufrufergebnisse nach Status +* **Modellfilterung**: Unterstรผtzt die Filterung zugehรถriger Aufrufdatensรคtze nach Modell +* **Paginierung und Aktualisierung**: Unterstรผtzt paginierte Anzeige und manuelles Aktualisieren der neuesten Audit-Ergebnisse + +> Hinweis: Wenn auf der Seite โ€žEs liegen noch keine AI-Audit-Aufzeichnungen vorโ€œ angezeigt wird, bedeutet dies, dass noch keine tatsรคchlichen Modellaufruf-Anfragen erzeugt wurden. + +### 9.6 Modul fรผr Risikokontrollregeln + +Die Seite fรผr Risikokontrollregeln dient dazu, Erkennungsregeln fรผr sensible Inhalte zu konfigurieren und festzulegen, welche Aktion nach einem Regeltreffer ausgefรผhrt werden soll. + +![](./main/8.png) + +Dieses Modul unterstรผtzt hauptsรคchlich: + +* **Verwaltung der Regelliste**: Anzeige aller Regeln und ihres Aktivierungsstatus +* **Ansicht nach Regelkategorie**: Unterstรผtzt die Anzeige nach Kategorien wie personenbezogene Informationen, Unternehmensinformationen, Kundengeschรคft, Sicherheitszugangsdaten, Finanzen und Recht, politisch sensible Inhalte und benutzerdefiniert +* **Konfiguration der Regelfelder**: Es kรถnnen Regel-ID, Anzeigename, Schweregrad, Aktion, Reihenfolge, Regex-Pattern und Beschreibung festgelegt werden +* **Steuerung der Regelaktion**: Bei einem Treffer kann gewรคhlt werden, ob Inhalte freigegeben oder an das Sicherheitsmodell weitergeleitet werden +* **Stapelweises Aktivieren / Deaktivieren**: Unterstรผtzt die stapelweise Anpassung des Regelstatus +* **Regel-Testkonsole**: Ermรถglicht das Einfรผgen von Beispieltexten, um zu testen, welche aktiven oder Entwurfsregeln ausgelรถst werden + +Die aktuell integrierten Regelbeispiele umfassen unter anderem: + +* Personenbezogene Informationen: E-Mail-Adresse, Mobiltelefonnummer, Ausweisnummer, Reisepassnummer, Bankkartenkontext, Adresse, Lebenslaufinhalte usw. +* Unternehmensinformationen: interne IP, interne Domain, Host-Benennung, Kubernetes Service DNS, Projekt-Codename, Organisationsstruktur, Gehalts- / HR-Informationen usw. +* Kundengeschรคft: Kundenlisten, Vertrรคge / Angebote, Steuer-IDs auf Rechnungen, CRM- / Ticket-Daten usw. +* Sicherheitszugangsdaten: Private Keys, API Keys, Tokens, JWT, Cookie / Session, Datenbank-Verbindungsstrings, Kubeconfig, geheime Umgebungsvariablen usw. +* Finanzen und Recht: Budget, Gewinn, Umsatz, Rechtsgutachten, Rechtsstreitigkeiten, NDA usw. +* Politisch sensible Inhalte: politische Institutionen, Militรคr / nationale Sicherheit, extremistische und gewaltbezogene Ausdrรผcke usw. + +> Hinweis: Die Standardregeln decken bereits viele gรคngige Szenarien zur Erkennung sensibler Informationen ab. In der Praxis kรถnnen Regeln je nach Geschรคftsanforderung weiter ergรคnzt, angepasst oder deaktiviert werden. +--- + + +## X. Beschreibung des Workspace-Moduls + +Der Workspace ist der wichtigste Arbeitsbereich, nachdem sich ein normaler Benutzer bei der Plattform angemeldet hat. Er wird verwendet, um persรถnliche Ressourcenquoten einzusehen, Instanzen zu erstellen, Instanzen zu verwalten und OpenClaw-bezogene Ressourcen zu pflegen. Dieses Modul ist stรคrker auf tรคgliche Nutzung und Betriebsaufgaben ausgerichtet als die administratorseitige โ€žKonsolenรผbersichtโ€œ. + +### 10.1 Workspace-Startseite +![](./main/9.png) +Die Workspace-Startseite dient dazu, die รœbersicht รผber Instanzen und Ressourcennutzung des aktuellen Kontos anzuzeigen und umfasst hauptsรคchlich die folgenden Inhalte: + +- **Meine Instanzen**: Zeigt die Anzahl der unter dem aktuellen Konto erstellten Instanzen an. +- **Laufend**: Zeigt die Anzahl der aktuell laufenden Instanzen an. +- **Verwendeter Speicher**: Zeigt den derzeit vom Konto belegten Speicherplatz an. +- **Meine Ressourcenquoten**: Zeigt die fรผr das aktuelle Konto verfรผgbaren Quoten an, darunter Anzahl der Instanzen, maximale CPU-Kerne, maximaler Speicher, maximaler Storage und maximale GPU-Anzahl. +- **Schnellaktionen**: Bietet zwei Einstiege: **Neue Instanz erstellen** und **Alle Instanzen anzeigen**, damit Sie schnell mit der Plattform starten kรถnnen. + +> Hinweis: Wenn auf der Seite โ€žNoch keine Instanzenโ€œ angezeigt wird, kรถnnen Sie direkt auf **Neue Instanz erstellen** klicken, um mit der Erstellung der ersten OpenClaw Desktop-Instanz zu beginnen. + +### 10.2 Meine Instanzen + +Die Seite **Meine Instanzen** dient dazu, die unter dem aktuellen Konto erstellten Instanzen zentral anzuzeigen und zu verwalten. Diese Seite รผbernimmt hauptsรคchlich die Instanzverwaltungsfunktionen. +![](./main/10.png) +Zu den รผblichen unterstรผtzten Aktionen gehรถren: + +- **Instanzstatus anzeigen**: Prรผfen, ob sich die Instanz im Status Erstellung, Laufend, Gestoppt oder Fehler befindet. +- **Instanzdetails รถffnen**: Grundinformationen, Ressourcenkonfiguration und Laufzeitstatus der Instanz anzeigen. +- **Instanz stoppen**: Wenn die Instanz fehlerhaft lรคuft oder die Umgebung neu geladen werden muss, kann eine Stop-Aktion ausgefรผhrt werden. +- **Instanz lรถschen**: Wenn die Instanz nicht mehr benรถtigt wird, kann sie direkt gelรถscht werden, um CPU-, Speicher- und Storage-Ressourcen freizugeben. + +> Hinweis: Nach dem Lรถschen einer Instanz werden die zugehรถrigen Ressourcen ebenfalls bereinigt. Stellen Sie vor der Ausfรผhrung sicher, dass die enthaltenen Daten und Konfigurationen gesichert wurden. + +### 10.3 Ressourcenverwaltung + +Die Seite **Ressourcenverwaltung** dient dazu, verfรผgbare OpenClaw-Ressourceninhalte zu pflegen, sodass sie nach dem Start einer Instanz eingebunden und verwendet werden kรถnnen. +![](./main/11.png) +Die Seite umfasst hauptsรคchlich die folgenden Bereiche: + +- **Ressourcen**: Verfรผgbare Ressourceneintrรคge anzeigen und pflegen. +- **Ressourcenpakete**: Mehrere Ressourcen zu wiederverwendbaren Paketen kombinieren, um eine gebรผndelte Einbindung zu erleichtern. +- **Einbindungsprotokolle**: Verlauf und Ausfรผhrungsstatus von Ressourceneinbindungen anzeigen. + +Auf der linken Seite der Ressourcenverwaltungsseite kรถnnen Ressourcen auรŸerdem nach Typ getrennt verwaltet werden. Die derzeit auf der Seite sichtbaren Typen sind: + +- **Kanรคle** +- **Skills** +- **Agenten (demnรคchst verfรผgbar)** +- **Geplante Aufgaben (demnรคchst verfรผgbar)** + +Rechts oben auf der Seite werden unterstรผtzt: + +- **Aktualisieren**: Die aktuelle Ressourcenliste neu laden. +- **Neu**: Einen neuen Ressourceneintrag erstellen. + +> Hinweis: Die Ressourcenverwaltung dient hauptsรคchlich dazu, OpenClaw-Ressourcen vorzubereiten, die nach dem Start einer Instanz verwendet werden kรถnnen, und ersetzt nicht direkt den Prozess der Instanzerstellung. Bei der Erstellung einer Instanz kรถnnen Ressourcen รผber **Manuelle Ressourcen**, **Ressourcenpakete** und **Archivimport** eingebunden werden. + + +### 10.3.1 Kanal erstellen + +โ€žKanรคleโ€œ werden verwendet, um die Verbindungsweise zwischen OpenClaw und externen Nachrichtenplattformen oder Zugriffsendpunkten zu konfigurieren, z. B. Telegram, Slack und Feishu / Lark. + +![](./main/12.png) + +Gehe beim Erstellen eines Kanals wie folgt vor: + +1. ร–ffne die Seite **Ressourcenverwaltung** und bleibe im Reiter **Ressourcen**. +2. Wรคhle links unter den Ressourcentypen **Kanal** aus. +3. Klicke rechts auf der Seite auf **Neu**, um das Dialogfenster โ€žNeue Ressourceโ€œ zu รถffnen. +4. Fรผlle im Dialog die Basisinformationen aus: + - **Typ**: **Kanal** auswรคhlen + - **Ressourcen-Key**: Trage die eindeutige Kennung dieses Kanals ein. Es wird empfohlen, einen leicht erkennbaren und nicht doppelt verwendeten englischen Namen oder eine entsprechende Kombination zu verwenden + - **Name**: Trage den Anzeigenamen des Kanals ein + - **Tags**: optional, fรผr Klassifizierung und Suche + - **Beschreibung**: optional, zur ergรคnzenden Beschreibung des Kanalzwecks + - **Aktiviert**: Es wird empfohlen, diese Option aktiviert zu lassen +5. Wรคhle im Bereich **Channel Template** eine Startvorlage aus. Derzeit werden folgende Vorlagen unterstรผtzt: + - `Telegram` + - `Slack` + - `Feishu / Lark` + +6. Nachdem du eine Vorlage ausgewรคhlt hast, klicke auf **Vorlage laden**. Das System schreibt die Grundkonfiguration der entsprechenden Vorlage automatisch in den darunterliegenden Bereich **Content JSON**. +7. Ergรคnze oder รคndere anschlieรŸend die Feldinhalte in **Content JSON** entsprechend deinen tatsรคchlichen Anbindungsinformationen. +8. Wenn die Konfiguration korrekt ist, klicke auf Speichern, um die Erstellung des Kanals abzuschlieรŸen. + +> Hinweis: +> - **Channel Template** dient dazu, schnell eine Grundkonfiguration zu erzeugen๏ผ› +> - **Content JSON** ist der tatsรคchlich wirksame Konfigurationsinhalt des Kanals๏ผ› +> - Wenn keine Vorlage vollstรคndig passt, kannst du die Konfiguration auch direkt manuell in **Content JSON** eintragenใ€‚ + +### 10.3.2 Skills hochladen + +Skills werden verwendet, um OpenClaw wiederverwendbare Funktionsfรคhigkeiten bereitzustellen. Die Plattform unterstรผtzt den Batch-Import von Skills durch das Hochladen von Archivdateien. + +![](./main/13.png) + +Gehe beim Hochladen von Skills wie folgt vor: + +1. ร–ffne die Seite **Ressourcenverwaltung** und bleibe im Reiter **Ressourcen**. +2. Wรคhle links unter den Ressourcentypen **Skills** aus. +3. Klicke auf **Datei auswรคhlen** und wรคhle ein lokales Skill-Archiv aus. +4. Die aktuelle Seite unterstรผtzt nur das Hochladen von **`.zip`**-Dateien. +5. Nachdem die Datei ausgewรคhlt wurde, klicke rechts auf **Skill-Archiv hochladen**. +6. Das System analysiert den hochgeladenen Inhalt automatisch und importiert jedes Verzeichnis der ersten Ebene als einen Skill. +7. Nach Abschluss des Uploads kannst du die importierten Skills in der Skill-Liste anzeigen. + +> Hinweis: +> - Es wird empfohlen, das Skill-Archiv im Voraus sauber nach Verzeichnissen zu strukturieren๏ผ› +> - Jedes Verzeichnis der ersten Ebene wird als eigenstรคndiger Skill erkannt๏ผ› +> - Falls die Liste nach dem Upload nicht sofort aktualisiert wird, kannst du oben rechts auf der Seite manuell auf **Aktualisieren** klicken, um neu zu ladenใ€‚ +--- + + +## XI. Schnelle Referenz fรผr Probleme und GegenmaรŸnahmen + + +### 11.1 Spezielle Behandlung von Speicherproblemen (PV/PVC) + +Wenn der folgende Fehler angezeigt wird: + +```text +0/1 nodes are available: pod has unbound immediate PersistentVolumeClaims +``` + +bedeutet dies, dass der Cluster-Speicher nicht automatisch gebunden wurde. In diesem Fall kรถnnen Sie lokale `hostPath`-PV/PVC im Stil eines x86-Einzelknotenservers manuell erstellen. + +> Diese Lรถsung eignet sich fรผr Einzelknoten-Servertests oder leichte Umgebungen. Fรผr Produktionsumgebungen wird empfohlen, formelle Speicherlรถsungen wie NFS, Ceph oder Cloud-Disks zu verwenden. + +#### 11.1.1 PV erstellen +```bash +kubectl apply -f - < +## XII. Empfohlene abschlieรŸende Prรผfreihenfolge (zur Selbstprรผfung) +1. `kubectl get nodes` +2. `kubectl get storageclass` +3. `kubectl get pods -n clawmanager-system` +4. `kubectl get pvc -n clawmanager-system` +5. `kubectl get svc -n clawmanager-system` +6. Im Browser `https://:30443` รถffnen +7. Im Backend anmelden und die **Konfiguration des Sicherheitsmodells** abschlieรŸen +8. Im Workspace eine **OpenClaw Desktop**-Instanz erstellen diff --git a/docs/use_guide_en.md b/docs/use_guide_en.md new file mode 100644 index 0000000..1994bb2 --- /dev/null +++ b/docs/use_guide_en.md @@ -0,0 +1,782 @@ +[<- Back to README](../README.md) + +# ClawManager Deployment and Quick Start Guide + +## Table of Contents +- [I. Environment and Goals](#sec-01) +- [II. Deployment Options Overview](#sec-02) +- [III. Option A: Deploy with k3s](#sec-03) +- [IV. Option B: Deploy with Standard Kubernetes](#sec-04) +- [V. Recommendations for Image Pulling on Mainland China Networks (Optional)](#sec-05) +- [VI. Deploy ClawManager](#sec-06) +- [VII. Launch the Web Page](#sec-08) +- [VIII. Quick Start Guide (Initialize and Create an OpenClaw Instance After Login)](#sec-09) +- [IX. Console and Other AI Gateway Features](#sec-12) +- [X. Workspace Module Guide](#sec-13) +- [XI. Quick Troubleshooting Reference](#sec-14) +- [XII. Recommended Final Check Sequence (Use as a Self-Check)](#sec-15) + + +## I. Environment and Goals +- **System assumption**: `x86_64` Linux server. +- **Deployment goal**: Deploy **ClawManager**, complete secure model configuration in the Web UI, and then create and start an **OpenClaw Desktop** instance. +- **Applicable scenarios**: + - **Option A: k3s single-node/lightweight cluster deployment** + - **Option B: standard Kubernetes cluster deployment** (such as kubeadm clusters, enterprise Kubernetes clusters, and cloud-hosted Kubernetes clusters) + + +--- + + +## II. Deployment Options Overview +You can deploy using either of the following methods: + +### Option A: k3s deployment +Suitable for single-node, test, or lightweight production environments. + +### Option B: standard Kubernetes deployment +Suitable for server environments that already have a standard Kubernetes cluster. + +No matter which method you use, you will ultimately apply the same ClawManager manifest: + +```bash +kubectl apply -f deployments/k8s/clawmanager.yaml +``` + +--- + + +## III. Option A: Deploy with k3s + +### 3.1 Install k3s +```bash +curl -sfL https://get.k3s.io | sh - +``` + +For mainland China networks, you can install using a mirror source: + +```bash +curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh - +``` + +### 3.2 Check service status +```bash +sudo systemctl status k3s --no-pager +sudo systemctl enable k3s +``` + +### 3.3 Configure kubectl +If the current user cannot use `kubectl` directly, run: + +```bash +mkdir -p ~/.kube +sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config +sudo chown "$USER:$USER" ~/.kube/config +``` + +Or set it temporarily: + +```bash +export KUBECONFIG=/etc/rancher/k3s/k3s.yaml +``` + +### 3.4 Verify the cluster +```bash +kubectl get nodes +``` + +Normally, you should see the node in the `Ready` state. + +--- + + +## IV. Option B: Deploy with Standard Kubernetes + +> Applies to x86 server environments that already have an available Kubernetes cluster. + +### 4.1 Prerequisite checks +Confirm that the current `kubectl` is connected to the target cluster: + +```bash +kubectl get nodes +kubectl get ns +``` + +Normally, you should see at least one `Ready` node. + +### 4.2 Check the default StorageClass +MySQL and MinIO in ClawManager require persistent storage. It is recommended to first check whether the cluster has a default `StorageClass`: + +```bash +kubectl get storageclass +``` + +If the cluster already has a default storage class, you can continue with deployment directly. + +If there is **no default StorageClass**, it is recommended to prepare available PV / PVC resources or use a local path storage solution in advance; otherwise, you may later encounter: + +```text +pod has unbound immediate PersistentVolumeClaims +``` + +--- + + +## V. Recommendations for Image Pulling on Mainland China Networks (Optional) +If the server accesses Docker Hub or other public registries slowly, you can configure image acceleration. + +### 5.1 k3s scenario: configure `/etc/rancher/k3s/registries.yaml` +```yaml +mirrors: + docker.io: + endpoint: + - "https://docker.m.daocloud.io" + - "https://docker.nju.edu.cn" + - "https://docker.1ms.run" + quay.io: + endpoint: + - "https://quay.mirrors.ustc.edu.cn" + gcr.io: + endpoint: + - "https://gcr.mirrors.ustc.edu.cn" + k8s.gcr.io: + endpoint: + - "https://registry.aliyuncs.com/google_containers" +``` + +After modifying it, run: + +```bash +sudo systemctl restart k3s +``` + +### 5.2 Verify image pulling +```bash +sudo k3s crictl pull docker.io/rancher/mirrored-pause:3.6 +``` + +--- + + +## VI. Deploy ClawManager + +### 6.1 Pull the project code +```bash +git clone https://github.com/Yuan-lab-LLM/ClawManager.git +cd ClawManager +``` + +### 6.2 Apply the deployment manifest +Run in the repository root directory: + +```bash +kubectl apply -f deployments/k8s/clawmanager.yaml +``` + +### 6.3 Check base resources +```bash +kubectl get ns +kubectl get pods -n clawmanager-system +kubectl get svc -n clawmanager-system +``` + +Under normal circumstances, you will see the following components: +- `clawmanager-app` +- `mysql` +- `minio` +- `skill-scanner` + +If you see the following error: + +```text +0/1 nodes are available: pod has unbound immediate PersistentVolumeClaims +``` + +it means MySQL / MinIO in cluster storage cannot start because the PVC is not bound. Please jump directly to the end of this document: + +- [XI.1 Dedicated Handling for Storage Issues (PV/PVC)](#sec-14-storage) + +--- + + +## VII. Launch the Web Page + +### 7.1 Access via NodePort +By default, the ClawManager frontend Service uses an HTTPS NodePort. You can check it first: + +```bash +kubectl get svc -n clawmanager-system +``` + +If the frontend port is: + +```text +443:30443/TCP +``` + +you can access it directly in the browser: + +```text +https://:30443 +``` + + +### 7.2 First HTTPS access note +Since it usually uses a self-signed certificate, the browser may show an โ€œunsafeโ€ or certificate warning. Click: + +```text +Advanced โ†’ Continue to visit +``` + +to enter the page. + +--- + + +## VIII. Quick Start Guide (Initialize and Create an OpenClaw Instance After Login) + +After completing the deployment above and successfully opening the management page, you still need to finish the following initialization steps before you can actually create and start an **OpenClaw** instance. + +### 8.1 Log in to the system +1. Open the deployed page, for example: `https://:30443`. +2. Log in with the default administrator account: + - **Username**: `admin` + - **Password**: `admin123` +3. After first login, it is recommended to change the default password as needed. + + +### 8.2 Configure the secure model (AI Gateway) + +![Figure 1: AI Gateway configuration](./main/1.png) +After logging in, you need to configure an available **secure model** first so that it can be used uniformly by the platform and subsequent instances. + +1. Click the left-side menu: **AI Gateway** โ†’ **Models**. +2. Add a new model or edit an existing one, and fill in the following information according to the actual model service you connect: + + * **Display Name**: Enter a name that is easy to identify. + * **Vendor Template**: Choose the corresponding template based on your model service type; if you use a custom or compatible interface, you can select **Local / Internal**. + * **Protocol**: Select the protocol according to the interface, such as **OpenAI Compatible** or another actual protocol. + * **Base URL**: Enter the endpoint address provided by the model service. + * **API Key**: Enter the valid key for the corresponding model service. + * **Provider Model**: Enter the actual model name to call. + * **Currency**: Fill it in according to your situation; if no billing display is needed, you can keep the default. + * **Input Price / Output Price**: If billing statistics are not needed, you can first fill in `0`. +3. Be sure to check the following before submission: + + * **Secure Model** + * **Enabled** +4. Click **Save**. + +> Note: The images on the page are only used to show the field positions and example format. The actual content should be based on the model service configuration you use. + + +### 8.3 Create an OpenClaw instance +After the model configuration is completed, create an **OpenClaw Desktop** instance. + +1. Click **ADMIN** in the lower-left corner and switch to the **Workspace**. +2. Click **Create Instance**. + +![](./main/2.png) +#### Step 1: Basic Information +- Fill in the **Instance Name** (at least 3 characters). +- The description is optional and may be left blank. +- Click **Next**. + +![](./main/3.png) +#### Step 2: Select Type +- Select **OpenClaw Desktop**. +- Click **Next**. + + +![](./main/4.png) +#### Step 3: Configuration +- You can directly choose the **Small** specification: + - `2 CPU` + - `4 GB RAM` + - `20 GB Disk` +- You can also modify the settings as needed in the custom configuration section below. +- For the OpenClaw resource injection section, you can choose as needed: + - **Manual Resources** + - **Resource Bundle** + - **Archive Import** +- For first-time use, you can keep the default or select **Manual Resources**. +- Finally, click **Create**. + +### 8.4 First creation note +- When creating an **OpenClaw** instance for the first time, the required images must be downloaded and the environment must be initialized, so it will take noticeably longer. +- On slow networks or during the first image pull, the instance status may remain at **Creating** for a long time. Please wait patiently. +- If it still does not start successfully after a long time, go back to the Kubernetes / Docker logs to troubleshoot image, PVC, gateway model, and other issues. + +--- + + +## IX. Console and Other AI Gateway Features + +In addition to model configuration, the platform homepage console and the AI Gateway also provide auditing, cost, and rule governance features, making it easier for administrators to centrally view cluster status, model call records, and security policy execution status. + +### 9.1 Console Overview + +![](./main/5.png) + +The console homepage is used to display the overall running status of the current cluster and platform, allowing administrators to quickly understand resource usage and system health. + +It mainly includes the following information: + +- **Cluster Basic Information Overview**: Displays the total number of users, total number of instances, number of running instances, and total storage usage of the current platform. +- **Node Overview**: Displays the current number of available nodes, as well as the main scheduling node information in the current cluster. +- **Resource Request Status**: Displays the total amount of CPU, memory, and disk resources that have been requested by the current platform. +- **Capacity Dashboard**: Shows overall resource capacity and current usage rates by node, CPU, memory, disk, and other dimensions, making it easier to determine whether the cluster still has available capacity. +- **Infrastructure Table**: Used to view the status information of current nodes, resources, and the basic runtime environment. + +> Note: The console is mainly used to view the overall platform resources, nodes, and instance operation summary, and is not used directly for specific OpenClaw operations inside an instance. + +### 9.2 Security Center (skill-scanner) + +The **Security Center** in the console is used to centrally view the scanning status of platform resources, historical reports, and scanner configurations. It relies on the backend **skill-scanner** service and can be used to perform static scanning, deep scanning, and supplementary LLM-based analysis on resources, thereby helping administrators identify potential risky content, abnormal resources, and suspicious skills. + +The Security Center currently includes the following three modules: + +* **Runtime Overview** +* **Report History** +* **Scanner Configuration** + +#### 9.2.1 Runtime Overview + +![](./main/14.png) + +The โ€œRuntime Overviewโ€ page is used to view the overall scanning status and risk distribution of the current platform, helping administrators quickly understand the current security posture. + +The page mainly includes the following information: + +* **Current Active Mode**: Displays whether the system is currently using **Quick Mode** or **Deep Mode**. +* **Quick Scan / Full Scan**: + + * **Quick Scan**: Suitable for handling newly added or modified resources, with a lighter scan scope and faster execution speed. + * **Full Scan**: Suitable for periodically rescanning all resources to fully review the current state of all platform resources. +* **Total Assets**: The number of resources currently included in the scanning scope of the Security Center. +* **Completed Scans**: The number of resources that have completed scanning. +* **High Risk / Medium Risk**: Statistics on the risk levels identified in the current scanning results. +* **Scan Coverage**: Shows the proportion of assets that have actually completed scanning relative to the total assets on the platform. +* **SAFE / High Risk / Pending / Failed**: + + * **SAFE**: Number of resources that passed the scan and currently have no detected risks + * **High Risk**: Number of risky assets that require immediate handling + * **Pending**: Number of resources waiting for evidence collection or queued for scanning + * **Failed**: Number of scan tasks that failed and need to be rerun +* **Platform Asset Risk Trend**: Displays the current risk distribution of platform assets aggregated by risk level. +* **Hot Assets**: Displays the most frequently used skills or high-frequency resources to help administrators quickly locate key assets. +* **Scanner Status**: Displays the availability and connection status of the current skill-scanner, such as โ€œStatic scanning availableโ€ and โ€œConnectedโ€. +* **Risk Alerts and Handling Suggestions**: Provides brief alert information based on the current risk posture. +* **Recent Scan Tasks**: Displays recently executed scan records for easier review of recent scanning activities. + +> Notes: +> +> * When the page shows โ€œThere are currently no high-risk or medium-risk assets,โ€ it means no significant risks have been found in the current scan results. +> * When the page shows โ€œThere are no scan task records yet,โ€ it means no scans have been executed yet, or no valid scan results have been generated. + +#### 9.2.2 Report History + +The โ€œReport Historyโ€ page is used to view historical scan reports and related result records, making it easier for administrators to review past scan executions. + +This module is mainly used for: + +* Viewing the results of previously executed scan tasks +* Comparing scan outputs at different points in time +* Assisting in tracking security changes of a specific resource at different stages +* Providing historical references for subsequent review, rescanning, and issue troubleshooting + +> Notes: +> +> * โ€œReport Historyโ€ focuses more on archiving and reviewing historical results; +> * โ€œRuntime Overviewโ€ focuses more on current status and overall overview. + +#### 9.2.3 Scanner Configuration + +![](./main/15.png) + +The โ€œScanner Configurationโ€ page is used to manage the operating mode of skill-scanner, LLM-related settings, and the two scanning strategies: quick and deep. After saving, a Deployment rollout will be triggered, and the system will wait for the new configuration to take effect. + +The page mainly includes the following content: + +##### (1) skill-scanner Service Status + +* Displays the namespace, Deployment name, and connection status of the current backend scanning service. +* When the page shows **Connected** and **Static scanning available**, it means the basic static scanning capability is available. + +##### (2) LLM Configuration + +This section is used to configure the primary LLM so that the scanner can perform model-based analysis when needed. + +The main fields include: + +* **Primary LLM Integration**: The primary LLM configuration can be imported directly from a model already configured in **AI Gateway**. +* **LLM API Key**: Corresponds to `SKILL_SCANNER_LLM_API_KEY`, used for authentication of the primary LLM analyzer. +* **LLM Model**: Corresponds to `SKILL_SCANNER_LLM_MODEL`, for example a specific model name. +* **LLM Base URL**: Corresponds to `SKILL_SCANNER_LLM_BASE_URL`, used to configure the primary LLM service endpoint. + +##### (3) Meta LLM Integration + +This section is used to configure the model used by the meta analyzer, typically for further summarization, aggregation, or secondary processing of findings. + +The main fields include: + +* **Meta LLM Integration**: The meta analyzer configuration can be imported directly from a model already configured in **AI Gateway**. +* **Meta LLM API Key**: Corresponds to `SKILL_SCANNER_META_LLM_API_KEY`. +* **Meta LLM Model**: Corresponds to `SKILL_SCANNER_META_LLM_MODEL`. +* **Meta LLM Base URL**: Corresponds to `SKILL_SCANNER_META_LLM_BASE_URL`. + +> Notes: +> +> * If no LLM is currently configured, the page will usually indicate that only static scanning is supported at the moment; +> * Only after configuring both the primary LLM and the Meta LLM can the scanner enable more complete semantic analysis and summarization capabilities. + +##### (4) Current Scanning Mode + +The page supports selecting the scanning mode currently used by the platform: + +* **Quick Mode**: Uses quick analyzers for scanning and is suitable for daily rapid checks. +* **Deep Mode**: Uses deep analyzers for scanning and is suitable for more complete and in-depth analysis. + +It should be noted that: + +* Both โ€œQuick Scanโ€ and โ€œFull Scanโ€ on the Dashboard will use the scan strength selected here; +* Their main difference lies in the scan scope, not in the analyzer depth itself. + +##### (5) Quick / Deep Scanning Strategy + +The lower part of the page maintains two sets of scanning strategy configurations, **Quick** and **Deep**, so that administrators can choose different analyzer combinations for different scenarios. + +Each strategy includes the following configuration items: + +* **Timeout (seconds)**: Sets the timeout for scan tasks under the current mode. +* **Invocation Methods**: Different analyzers can be enabled or disabled as needed. + +The currently visible analyzer types include: + +* **Static**: YAML + YARA static rule scanning +* **Bytecode**: Python bytecode integrity verification +* **Pipeline**: Command chain and taint analysis +* **Behavioral**: AST-based behavior and data flow analysis +* **LLM**: Semantic analysis relying on external LLMs +* **Meta**: Secondary summarization analysis of findings + +These can usually be understood as follows: + +* **Quick Mode**: Focuses on faster execution and is often used for daily incremental checks +* **Deep Mode**: Can enable more analyzers and is suitable for deeper review and security auditing + +##### (6) Save and Apply + +The **Save and Apply** button in the upper-right corner is used to submit all current scanner-related configurations. After saving, it will: + +* Update the quick / deep scanning strategies in ClawManager +* Update the related environment variables of the skill-scanner Deployment +* Wait for the rollout to complete before the new configuration officially takes effect + +> Notes: +> +> * After modifying scanner configurations, it is recommended to wait until the configuration has fully taken effect before executing new scan tasks; +> * If the connection status becomes abnormal after configuration changes, it is recommended to first check the AI Gateway model, LLM endpoint, Key, and Deployment rollout status. + +### 9.3 AI Gateway Feature Overview + +In addition to model configuration, AI Gateway also includes the following modules: + +* **AI Audit**: View model invocation traces, request and response payloads, hit risks, routing decisions, and invocation details. +* **Cost**: View token usage, estimated cost, internal cost, and trend statistics. +* **Risk Control Rules**: Configure sensitive detection rules to control whether matched content is allowed through or routed to the security model. + +### 9.4 Cost Module + +The Cost page is used to count the cost and token usage of platform model calls, helping administrators understand overall consumption. + +![](./main/6.png) + +The page mainly includes the following content: + +* **Input Tokens**: Statistics of the total input prompt tokens. +* **Output Tokens**: Statistics of the total tokens generated by the model. +* **Estimated Cost**: Cost estimated according to the Provider's unit price. +* **Internal Cost**: Internal accounting cost related to the security model. +* **Daily Cost Trend**: View estimated cost and token changes within the current window over the last 7 days. +* **User Summary**: Aggregated usage and cost by user. +* **Instance Summary**: Aggregated usage and cost by instance. +* **Recent Cost Records**: Supports searching and paginated viewing of cost records by Trace, user, model, and other conditions, and can further jump to audit details. + +> Note: If no model invocation records have been generated yet, input tokens, output tokens, cost, and trend charts may all be 0, which is normal. + +### 9.5 AI Audit Module + +The AI Audit page is used to view recent managed model invocation records, helping administrators troubleshoot model invocations, token usage, and routing results. + +![](./main/7.png) + +The main functions include: + +* **Recent AI Trace**: View recent model invocation chains. +* **Trace List**: View recent managed traces in a unified table. +* **Search and Filtering**: Supports searching by Trace, request content, user, model, and other conditions. +* **Status Filtering**: Supports viewing different invocation results by status. +* **Model Filtering**: Supports filtering corresponding invocation records by model. +* **Pagination and Refresh**: Supports paginated viewing and manual refresh of the latest audit results. + +> Note: If the page shows โ€œNo AI audit records yet,โ€ it means that no actual model invocation requests have been generated yet. + +### 9.6 Risk Control Rules Module + +The Risk Control Rules page is used to configure sensitive content detection rules and determine the action to be taken after a rule is hit. + +![](./main/8.png) + +This module mainly supports: + +* **Rule List Management**: View all rules and their enabled status. +* **Rule Category View**: Supports viewing rules by categories such as personal information, company information, customer business, security credentials, finance and legal, politically sensitive, and custom. +* **Rule Field Configuration**: Supports setting rule ID, display name, severity level, action, order, regex pattern, and description. +* **Rule Action Control**: When a rule is hit, it can be configured to allow the content or route it to the security model. +* **Batch Enable / Disable**: Supports batch adjustment of rule status. +* **Rule Test Console**: Paste sample text to test which enabled rules or draft rules will be triggered. + +The built-in rule examples currently include, but are not limited to: + +* Personal information: email address, mobile number, ID card number, passport number, bank card context, address, resume content, etc. +* Company information: internal IP, internal domain name, host naming, Kubernetes Service DNS, project code name, organizational structure, salary / HR information, etc. +* Customer business: customer list, contracts / quotations, invoice tax IDs, CRM / ticket data, etc. +* Security credentials: private keys, API keys, tokens, JWT, Cookie / Session, database connection strings, kubeconfig, environment variable secrets, etc. +* Finance and legal: budget, profit, revenue, legal opinions, litigation, NDA, etc. +* Politically sensitive: political institutions, military/national security, extremist and violent expressions, etc. + +> Note: Default rules already cover many common sensitive information detection scenarios. In actual use, rules can be further added, adjusted, or disabled according to business requirements. +--- + + +## X. Workspace Module Guide + +The Workspace is the main operating area after a regular user enters the platform. It is used to view personal resource quotas, create instances, manage instances, and maintain OpenClaw-related resources. This module is more oriented toward daily use and operations than the administrator-side โ€œConsole Overviewโ€. + +### 10.1 Workspace Home +![](./main/9.png) +The Workspace home page is used to display the instance and resource usage summary of the current account, and mainly includes the following contents: + +- **My Instances**: Displays the number of instances created under the current account. +- **Running**: Displays the number of instances currently running. +- **Used Storage**: Displays the amount of storage space currently occupied by the account. +- **My Resource Quotas**: Shows the available quota information of the current account, including the number of instances, maximum CPU cores, maximum memory, maximum storage, and maximum GPU count. +- **Quick Actions**: Provides two entry points: **Create New Instance** and **View All Instances**, so you can get started quickly with the platform. + +> Note: When the page shows โ€œNo instances yetโ€, you can directly click **Create New Instance** to start creating the first OpenClaw Desktop instance. + +### 10.2 My Instances + +The **My Instances** page is used to centrally view and manage all instances created under the current account. This page mainly carries the instance management functions. +![](./main/10.png) +Common supported operations include: + +- **View instance status**: Check whether the instance is being created, running, stopped, or in an abnormal state. +- **Open instance details**: View basic instance information, resource configuration, and runtime status. +- **Stop instance**: When the instance is abnormal or the environment needs to be reloaded, you can perform a stop operation. +- **Delete instance**: When the instance is no longer needed, you can delete it directly to release the corresponding CPU, memory, and storage resources. + +> Note: After deleting an instance, the related resources of the instance will be cleaned up together. Before executing, make sure that the data and configuration inside it have been backed up. + +### 10.3 Resource Management + +The **Resource Management** page is used to maintain the OpenClaw resource content available for use, making it easy to inject and use after an instance starts. +![](./main/11.png) +The page mainly includes the following parts: + +- **Resources**: View and maintain available resource entries. +- **Resource Bundles**: Combine multiple resources into reusable bundles to facilitate batch injection. +- **Injection Records**: View resource injection history and execution status. + +On the left side of the Resource Management page, you can also manage resources by type. The currently visible types on the page include: + +- **Channels** +- **Skills** +- **Agents (coming soon)** +- **Scheduled Tasks (coming soon)** + +The upper-right corner of the page supports: + +- **Refresh**: Reload the current resource list. +- **New**: Create a new resource item. + +> Note: Resource Management is mainly used to prepare OpenClaw resource content that can be used after the instance starts, and does not directly replace the instance creation process. When creating an instance, resources can be injected through methods such as **Manual Resources**, **Resource Bundles**, and **Archive Import**. + + +### 10.3.1 Create a Channel + +A "Channel" is used to configure how OpenClaw connects to external messaging platforms or access endpoints, such as Telegram, Slack, and Feishu / Lark. + +![](./main/12.png) + +To create a channel, follow these steps: + +1. Go to the **Resource Management** page and stay on the **Resources** tab. +2. In the resource type list on the left, select **Channel**. +3. Click **New** on the right side of the page to open the "Create Resource" dialog. +4. Fill in the basic information in the dialog: + - **Type**: select **Channel** + - **Resource Key**: enter the unique identifier for this channel. It is recommended to use an easy-to-recognize and non-duplicated English name or combined identifier + - **Name**: enter the display name of the channel + - **Tags**: optional, used for classification and search + - **Description**: optional, used to supplement the purpose of the channel + - **Enabled**: it is recommended to keep this checked +5. In the **Channel Template** section, choose an initial template. The currently supported templates include: + - `Telegram` + - `Slack` + - `Feishu / Lark` + +6. After selecting a template, click **Load Template**. The system will automatically write the basic configuration of the corresponding template into the **Content JSON** section below. +7. Based on your actual integration information, continue to supplement or modify the fields in **Content JSON**. +8. After confirming the configuration is correct, click Save to complete channel creation. + +> Notes: +> - **Channel Template** helps you quickly generate a basic configuration; +> - **Content JSON** is the final effective channel configuration content; +> - If there is no fully matching template, you can also manually fill in the configuration directly in **Content JSON**. + +### 10.3.2 Upload Skills + +Skills are used to provide reusable functional capabilities for OpenClaw. The platform supports batch importing skills by uploading archive files. + +![](./main/13.png) + +To upload skills, follow these steps: + +1. Go to the **Resource Management** page and stay on the **Resources** tab. +2. In the resource type list on the left, select **Skills**. +3. Click **Choose File** and select a local skill archive. +4. The current page only supports uploading **`.zip`** files. +5. After selecting the file, click **Upload Skill Archive** on the right. +6. The system will automatically parse the uploaded content and import each first-level directory as one skill. +7. After the upload is complete, you can view the imported skills in the skill list. + +> Notes: +> - It is recommended to organize the skill archive in advance by directory; +> - Each first-level directory will be recognized as an independent skill; +> - If the list is not refreshed immediately after upload, you can manually click **Refresh** in the upper-right corner of the page to reload it. +--- + + +## XI. Quick Troubleshooting Reference + + +### 11.1 Dedicated Handling for Storage Issues (PV/PVC) + +If you see the following error: + +```text +0/1 nodes are available: pod has unbound immediate PersistentVolumeClaims +``` + +it means the cluster storage was not bound automatically. In this case, you can manually create local `hostPath` PV/PVC in the x86 single-node server style. + +> This solution is suitable for single-node server testing or lightweight environments. For production environments, it is recommended to use formal storage such as NFS, Ceph, or cloud disks instead. + +#### 11.1.1 Create PV +```bash +kubectl apply -f - < +## XII. Recommended Final Check Sequence (Use as a Self-Check) +1. `kubectl get nodes` +2. `kubectl get storageclass` +3. `kubectl get pods -n clawmanager-system` +4. `kubectl get pvc -n clawmanager-system` +5. `kubectl get svc -n clawmanager-system` +6. Open `https://:30443` in a browser +7. Log in to the backend and complete **secure model configuration** +8. Create an **OpenClaw Desktop** instance in the Workspace diff --git a/docs/use_guide_ja.md b/docs/use_guide_ja.md new file mode 100644 index 0000000..302d34f --- /dev/null +++ b/docs/use_guide_ja.md @@ -0,0 +1,781 @@ +[<- README ใƒˆใƒƒใƒ—ใธๆˆปใ‚‹](../README.ja.md) + +# ClawManager ใƒ‡ใƒ—ใƒญใ‚คใจใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆใ‚ฌใ‚คใƒ‰ + +## ็›ฎๆฌก +- [ไธ€ใ€็’ฐๅขƒใจ็›ฎๆจ™](#sec-01) +- [ไบŒใ€ใƒ‡ใƒ—ใƒญใ‚คๆ–นๅผใฎๆฆ‚่ฆ](#sec-02) +- [ไธ‰ใ€ๆ–นๅผ A๏ผšk3s ใ‚’ไฝฟ็”จใ—ใŸใƒ‡ใƒ—ใƒญใ‚ค](#sec-03) +- [ๅ››ใ€ๆ–นๅผ B๏ผšๆจ™ๆบ– Kubernetes ใ‚’ไฝฟ็”จใ—ใŸใƒ‡ใƒ—ใƒญใ‚ค](#sec-04) +- [ไบ”ใ€ไธญๅ›ฝๅ›ฝๅ†…ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใงใฎใ‚คใƒกใƒผใ‚ธๅ–ๅพ—ใซ้–ขใ™ใ‚‹ๆŽจๅฅจไบ‹้ …๏ผˆไปปๆ„๏ผ‰](#sec-05) +- [ๅ…ญใ€ClawManager ใฎใƒ‡ใƒ—ใƒญใ‚ค](#sec-06) +- [ไธƒใ€Web ใƒšใƒผใ‚ธใฎ่ตทๅ‹•](#sec-08) +- [ๅ…ซใ€ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆใ‚ฌใ‚คใƒ‰๏ผˆใƒญใ‚ฐใ‚คใƒณๅพŒใซๅˆๆœŸๅŒ–ใ—ใฆ OpenClaw ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ไฝœๆˆ๏ผ‰](#sec-09) +- [ไนใ€ใ‚ณใƒณใ‚ฝใƒผใƒซใจ AI Gateway ใฎใใฎไป–ใฎๆฉŸ่ƒฝ่ชฌๆ˜Ž](#sec-12) +- [ๅใ€ใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นใƒขใ‚ธใƒฅใƒผใƒซใฎ่ชฌๆ˜Ž](#sec-13) +- [ๅไธ€ใ€ๅ•้กŒใจๅฏพๅ‡ฆใฎใ‚ฏใ‚คใƒƒใ‚ฏใƒชใƒ•ใ‚กใƒฌใƒณใ‚น](#sec-14) +- [ๅไบŒใ€ๆŽจๅฅจใ•ใ‚Œใ‚‹ๆœ€็ต‚็ขบ่ชๆ‰‹้ †๏ผˆใ‚ปใƒซใƒ•ใƒใ‚งใƒƒใ‚ฏ็”จ๏ผ‰](#sec-15) + + +## ไธ€ใ€็’ฐๅขƒใจ็›ฎๆจ™ +- **ๆƒณๅฎšใ‚ทใ‚นใƒ†ใƒ **๏ผš`x86_64` ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใฎ Linux ใ‚ตใƒผใƒใƒผใ€‚ +- **ใƒ‡ใƒ—ใƒญใ‚ค็›ฎๆจ™**๏ผš**ClawManager** ใ‚’ใƒ‡ใƒ—ใƒญใ‚คใ—ใ€Web ใƒšใƒผใ‚ธไธŠใงใ‚ปใ‚ญใƒฅใ‚ขใƒขใƒ‡ใƒซ่จญๅฎšใ‚’ๅฎŒไบ†ใ—ใŸๅพŒใ€**OpenClaw Desktop** ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ไฝœๆˆใ—ใฆ่ตทๅ‹•ใ™ใ‚‹ใ“ใจใ€‚ +- **้ฉ็”จใ‚ทใƒŠใƒชใ‚ช**๏ผš + - **ๆ–นๅผ A๏ผšk3s ๅ˜ไธ€ใƒŽใƒผใƒ‰ / ่ปฝ้‡ใ‚ฏใƒฉใ‚นใ‚ฟใƒผๆง‹ๆˆ** + - **ๆ–นๅผ B๏ผšๆจ™ๆบ– Kubernetes ใ‚ฏใƒฉใ‚นใ‚ฟใƒผๆง‹ๆˆ**๏ผˆkubeadm ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใ€ไผๆฅญๅ†… K8s ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใ€ใ‚ฏใƒฉใ‚ฆใƒ‰ไธŠใฎ K8s ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใชใฉ๏ผ‰ + + +--- + + +## ไบŒใ€ใƒ‡ใƒ—ใƒญใ‚คๆ–นๅผใฎๆฆ‚่ฆ +ไปฅไธ‹ใฎ 2 ใคใฎๆ–นๅผใฎใ„ใšใ‚Œใ‹ใงใƒ‡ใƒ—ใƒญใ‚คใงใใพใ™๏ผš + +### ๆ–นๅผ A๏ผšk3s ใƒ‡ใƒ—ใƒญใ‚ค +ๅ˜ไธ€ใƒŽใƒผใƒ‰ใ€ใƒ†ใ‚นใƒˆ็’ฐๅขƒใ€ใพใŸใฏ่ปฝ้‡ใชๆœฌ็•ช็’ฐๅขƒใซ้ฉใ—ใฆใ„ใพใ™ใ€‚ + +### ๆ–นๅผ B๏ผšๆจ™ๆบ– Kubernetes ใƒ‡ใƒ—ใƒญใ‚ค +ๆจ™ๆบ– Kubernetes ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใ‚’ใ™ใงใซๅ‚™ใˆใฆใ„ใ‚‹ใ‚ตใƒผใƒใƒผ็’ฐๅขƒใซ้ฉใ—ใฆใ„ใพใ™ใ€‚ + +ใฉใฎๆ–นๅผใ‚’ไฝฟ็”จใ—ใฆใ‚‚ใ€ๆœ€็ต‚็š„ใซใฏๅŒใ˜ ClawManager ใƒžใƒ‹ใƒ•ใ‚งใ‚นใƒˆใ‚’้ฉ็”จใ—ใพใ™๏ผš + +```bash +kubectl apply -f deployments/k8s/clawmanager.yaml +``` + +--- + + +## ไธ‰ใ€ๆ–นๅผ A๏ผšk3s ใ‚’ไฝฟ็”จใ—ใŸใƒ‡ใƒ—ใƒญใ‚ค + +### 3.1 k3s ใฎใ‚คใƒณใ‚นใƒˆใƒผใƒซ +```bash +curl -sfL https://get.k3s.io | sh - +``` + +ไธญๅ›ฝๅ›ฝๅ†…ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใงใฏใ€ใƒŸใƒฉใƒผใ‚ฝใƒผใ‚นใ‚’ไฝฟ็”จใ—ใฆใ‚คใƒณใ‚นใƒˆใƒผใƒซใงใใพใ™๏ผš + +```bash +curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh - +``` + +### 3.2 ใ‚ตใƒผใƒ“ใ‚น็Šถๆ…‹ใฎ็ขบ่ช +```bash +sudo systemctl status k3s --no-pager +sudo systemctl enable k3s +``` + +### 3.3 kubectl ใฎ่จญๅฎš +็พๅœจใฎใƒฆใƒผใ‚ถใƒผใง `kubectl` ใ‚’็›ดๆŽฅไฝฟ็”จใงใใชใ„ๅ ดๅˆใฏใ€ๆฌกใ‚’ๅฎŸ่กŒใ—ใพใ™๏ผš + +```bash +mkdir -p ~/.kube +sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config +sudo chown "$USER:$USER" ~/.kube/config +``` + +ใพใŸใฏไธ€ๆ™‚็š„ใซๆŒ‡ๅฎšใ—ใพใ™๏ผš + +```bash +export KUBECONFIG=/etc/rancher/k3s/k3s.yaml +``` + +### 3.4 ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใฎๆคœ่จผ +```bash +kubectl get nodes +``` + +้€šๅธธใ€ใƒŽใƒผใƒ‰ใŒ `Ready` ็Šถๆ…‹ใง่กจ็คบใ•ใ‚Œใพใ™ใ€‚ + +--- + + +## ๅ››ใ€ๆ–นๅผ B๏ผšๆจ™ๆบ– Kubernetes ใ‚’ไฝฟ็”จใ—ใŸใƒ‡ใƒ—ใƒญใ‚ค + +> ใ™ใงใซๅˆฉ็”จๅฏ่ƒฝใช Kubernetes ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใŒใ‚ใ‚‹ x86 ใ‚ตใƒผใƒใƒผ็’ฐๅขƒใซ้ฉ็”จใ•ใ‚Œใพใ™ใ€‚ + +### 4.1 ๅ‰ๆๆกไปถใฎ็ขบ่ช +็พๅœจใฎ `kubectl` ใŒๅฏพ่ฑกใ‚ฏใƒฉใ‚นใ‚ฟใƒผใซๆŽฅ็ถšใ•ใ‚Œใฆใ„ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใพใ™๏ผš + +```bash +kubectl get nodes +kubectl get ns +``` + +้€šๅธธใ€ๅฐ‘ใชใใจใ‚‚ 1 ใคใฎ `Ready` ใƒŽใƒผใƒ‰ใŒ่กจ็คบใ•ใ‚Œใพใ™ใ€‚ + +### 4.2 ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ StorageClass ใฎ็ขบ่ช +ClawManager ใฎ MySQL ใจ MinIO ใงใฏๆฐธ็ถšใ‚นใƒˆใƒฌใƒผใ‚ธใŒๅฟ…่ฆใงใ™ใ€‚ใพใšใ€ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใซใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ `StorageClass` ใŒใ‚ใ‚‹ใ‹็ขบ่ชใ™ใ‚‹ใ“ใจใ‚’ๆŽจๅฅจใ—ใพใ™๏ผš + +```bash +kubectl get storageclass +``` + +ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใซใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎใ‚นใƒˆใƒฌใƒผใ‚ธใ‚ฏใƒฉใ‚นใŒใ™ใงใซใ‚ใ‚‹ๅ ดๅˆใฏใ€ใใฎใพใพใƒ‡ใƒ—ใƒญใ‚คใ‚’็ถš่กŒใงใใพใ™ใ€‚ + +**ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ StorageClass ใŒใชใ„** ๅ ดๅˆใฏใ€ไบ‹ๅ‰ใซๅˆฉ็”จๅฏ่ƒฝใช PV / PVC ใ‚’ๆบ–ๅ‚™ใ™ใ‚‹ใ‹ใ€ใƒญใƒผใ‚ซใƒซใƒ‘ใ‚นใ‚นใƒˆใƒฌใƒผใ‚ธๆ–นๅผใ‚’ไฝฟ็”จใ™ใ‚‹ใ“ใจใ‚’ๆŽจๅฅจใ—ใพใ™ใ€‚ใใ†ใ—ใชใ„ใจใ€ๅพŒ็ถšใงๆฌกใฎใ‚ˆใ†ใชใ‚จใƒฉใƒผใŒ็™บ็”Ÿใ™ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™๏ผš + +```text +pod has unbound immediate PersistentVolumeClaims +``` + +--- + + +## ไบ”ใ€ไธญๅ›ฝๅ›ฝๅ†…ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใงใฎใ‚คใƒกใƒผใ‚ธๅ–ๅพ—ใซ้–ขใ™ใ‚‹ๆŽจๅฅจไบ‹้ …๏ผˆไปปๆ„๏ผ‰ +ใ‚ตใƒผใƒใƒผใ‹ใ‚‰ Docker Hub ใพใŸใฏใใฎไป–ใฎๅ…ฌ้–‹ใƒฌใ‚ธใ‚นใƒˆใƒชใธใฎใ‚ขใ‚ฏใ‚ปใ‚นใŒ้…ใ„ๅ ดๅˆใฏใ€ใ‚คใƒกใƒผใ‚ธ้ซ˜้€ŸๅŒ–ใ‚’่จญๅฎšใงใใพใ™ใ€‚ + +### 5.1 k3s ใ‚ทใƒŠใƒชใ‚ช๏ผš`/etc/rancher/k3s/registries.yaml` ใ‚’่จญๅฎšใ™ใ‚‹ +```yaml +mirrors: + docker.io: + endpoint: + - "https://docker.m.daocloud.io" + - "https://docker.nju.edu.cn" + - "https://docker.1ms.run" + quay.io: + endpoint: + - "https://quay.mirrors.ustc.edu.cn" + gcr.io: + endpoint: + - "https://gcr.mirrors.ustc.edu.cn" + k8s.gcr.io: + endpoint: + - "https://registry.aliyuncs.com/google_containers" +``` + +ๅค‰ๆ›ดๅพŒใซๅฎŸ่กŒใ—ใพใ™๏ผš + +```bash +sudo systemctl restart k3s +``` + +### 5.2 ใ‚คใƒกใƒผใ‚ธๅ–ๅพ—ใฎ็ขบ่ช +```bash +sudo k3s crictl pull docker.io/rancher/mirrored-pause:3.6 +``` + +--- + + +## ๅ…ญใ€ClawManager ใฎใƒ‡ใƒ—ใƒญใ‚ค + +### 6.1 ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚ณใƒผใƒ‰ใฎๅ–ๅพ— +```bash +git clone https://github.com/Yuan-lab-LLM/ClawManager.git +cd ClawManager +``` + +### 6.2 ใƒ‡ใƒ—ใƒญใ‚คใƒžใƒ‹ใƒ•ใ‚งใ‚นใƒˆใฎ้ฉ็”จ +ใƒชใƒใ‚ธใƒˆใƒชใฎใƒซใƒผใƒˆใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใงๅฎŸ่กŒใ—ใพใ™๏ผš + +```bash +kubectl apply -f deployments/k8s/clawmanager.yaml +``` + +### 6.3 ๅŸบๆœฌใƒชใ‚ฝใƒผใ‚นใฎ็ขบ่ช +```bash +kubectl get ns +kubectl get pods -n clawmanager-system +kubectl get svc -n clawmanager-system +``` + +้€šๅธธใ€ไปฅไธ‹ใฎใ‚ณใƒณใƒใƒผใƒใƒณใƒˆใŒ่กจ็คบใ•ใ‚Œใพใ™๏ผš +- `clawmanager-app` +- `mysql` +- `minio` +- `skill-scanner` + +ๆฌกใฎใ‚จใƒฉใƒผใŒ่กจ็คบใ•ใ‚ŒใŸๅ ดๅˆ๏ผš + +```text +0/1 nodes are available: pod has unbound immediate PersistentVolumeClaims +``` + +ใ“ใ‚Œใฏใ€ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใฎใ‚นใƒˆใƒฌใƒผใ‚ธใง MySQL / MinIO ใŒ PVC ๆœชใƒใ‚คใƒณใƒ‰ใฎใŸใ‚่ตทๅ‹•ใงใใชใ„ใ“ใจใ‚’ๆ„ๅ‘ณใ—ใพใ™ใ€‚ๆ–‡ๆœซใฎๆฌกใฎ้ …็›ฎใธ็›ดๆŽฅ็งปๅ‹•ใ—ใฆใใ ใ•ใ„๏ผš + +- [ๅไธ€.1 ใ‚นใƒˆใƒฌใƒผใ‚ธๅ•้กŒใฎๅฐ‚็”จๅฏพๅฟœ๏ผˆPV/PVC๏ผ‰](#sec-14-storage) + +--- + + +## ไธƒใ€Web ใƒšใƒผใ‚ธใฎ่ตทๅ‹• + +### 7.1 NodePort ็ตŒ็”ฑใงใ‚ขใ‚ฏใ‚ปใ‚น +ClawManager ใฎใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ Service ใฏใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใง HTTPS NodePort ใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚ใพใš็ขบ่ชใ—ใพใ™๏ผš + +```bash +kubectl get svc -n clawmanager-system +``` + +ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใฎใƒใƒผใƒˆใŒๆฌกใฎๅ ดๅˆ๏ผš + +```text +443:30443/TCP +``` + +ใƒ–ใƒฉใ‚ฆใ‚ถใ‹ใ‚‰็›ดๆŽฅๆฌกใธใ‚ขใ‚ฏใ‚ปใ‚นใงใใพใ™๏ผš + +```text +https://<ใ‚ตใƒผใƒใƒผIP>:30443 +``` + + +### 7.2 ๅˆๅ›ž HTTPS ใ‚ขใ‚ฏใ‚ปใ‚นๆ™‚ใฎ่ชฌๆ˜Ž +้€šๅธธใฏ่‡ชๅทฑ็ฝฒๅ่จผๆ˜Žๆ›ธใฎใŸใ‚ใ€ใƒ–ใƒฉใ‚ฆใ‚ถใซใ€Œๅฎ‰ๅ…จใงใฏใชใ„ใ€ใพใŸใฏ่จผๆ˜Žๆ›ธ่ญฆๅ‘ŠใŒ่กจ็คบใ•ใ‚Œใ‚‹ๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใ€‚ไปฅไธ‹ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใพใ™๏ผš + +```text +่ฉณ็ดฐ่จญๅฎš โ†’ ็ถš่กŒใ—ใฆใ‚ขใ‚ฏใ‚ปใ‚น +``` + +ใ“ใ‚Œใงใƒšใƒผใ‚ธใซๅ…ฅใ‚Œใพใ™ใ€‚ + +--- + + +## ๅ…ซใ€ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆใ‚ฌใ‚คใƒ‰๏ผˆใƒญใ‚ฐใ‚คใƒณๅพŒใซๅˆๆœŸๅŒ–ใ—ใฆ OpenClaw ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ไฝœๆˆ๏ผ‰ + +ไธŠ่จ˜ใฎใƒ‡ใƒ—ใƒญใ‚คใ‚’ๅฎŒไบ†ใ—ใฆ็ฎก็†ใƒšใƒผใ‚ธใ‚’ๆญฃๅธธใซ้–‹ใ„ใŸๅพŒใ€ๅฎŸ้š›ใซ **OpenClaw** ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ไฝœๆˆใ—ใฆ่ตทๅ‹•ใ™ใ‚‹ใซใฏใ€ใ•ใ‚‰ใซไปฅไธ‹ใฎๅˆๆœŸๅŒ–ๆ‰‹้ †ใ‚’ๅฎŒไบ†ใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ + +### 8.1 ใ‚ทใ‚นใƒ†ใƒ ใซใƒญใ‚ฐใ‚คใƒณ +1. ใƒ‡ใƒ—ใƒญใ‚คๅพŒใฎใƒšใƒผใ‚ธใ‚’้–‹ใใพใ™ใ€‚ไพ‹๏ผš`https://<ใƒŽใƒผใƒ‰IP>:30443`ใ€‚ +2. ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎ็ฎก็†่€…ใ‚ขใ‚ซใ‚ฆใƒณใƒˆใงใƒญใ‚ฐใ‚คใƒณใ—ใพใ™๏ผš + - **ใƒฆใƒผใ‚ถใƒผๅ**๏ผš`admin` + - **ใƒ‘ใ‚นใƒฏใƒผใƒ‰**๏ผš`admin123` +3. ๅˆๅ›žใƒญใ‚ฐใ‚คใƒณๅพŒใฏใ€ๅฟ…่ฆใซๅฟœใ˜ใฆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใƒ‘ใ‚นใƒฏใƒผใƒ‰ใ‚’ๅค‰ๆ›ดใ™ใ‚‹ใ“ใจใ‚’ๆŽจๅฅจใ—ใพใ™ใ€‚ + + +### 8.2 ใ‚ปใ‚ญใƒฅใ‚ขใƒขใƒ‡ใƒซใฎ่จญๅฎš๏ผˆAI Gateway๏ผ‰ + +![ๅ›ณ1๏ผšAI Gateway ่จญๅฎš](./main/1.png) +ใƒญใ‚ฐใ‚คใƒณๅพŒใ€ใพใšๅˆฉ็”จๅฏ่ƒฝใช **ใ‚ปใ‚ญใƒฅใ‚ขใƒขใƒ‡ใƒซ** ใ‚’่จญๅฎšใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ใ“ใ‚Œใฏใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใŠใ‚ˆใณๅพŒ็ถšใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใงๅ…ฑ้€šใ—ใฆไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚ + +1. ๅทฆๅดใƒกใƒ‹ใƒฅใƒผใฎ **AI Gateway** โ†’ **ใƒขใƒ‡ใƒซ** ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใพใ™ใ€‚ +2. ๆ–ฐใ—ใ„ใƒขใƒ‡ใƒซใ‚’่ฟฝๅŠ ใ™ใ‚‹ใ‹ๆ—ขๅญ˜ใƒขใƒ‡ใƒซใ‚’็ทจ้›†ใ—ใ€ๆŽฅ็ถšใ™ใ‚‹ใƒขใƒ‡ใƒซใ‚ตใƒผใƒ“ใ‚นใซๅฟœใ˜ใฆๆฌกใฎๆƒ…ๅ ฑใ‚’ๅ…ฅๅŠ›ใ—ใพใ™๏ผš + + * **่กจ็คบๅ**๏ผš่ญ˜ๅˆฅใ—ใ‚„ใ™ใ„ๅๅ‰ใ‚’ๅ…ฅๅŠ›ใ—ใพใ™ใ€‚ + * **ใƒ™ใƒณใƒ€ใƒผใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆ**๏ผšใƒขใƒ‡ใƒซใ‚ตใƒผใƒ“ใ‚นใฎ็จฎ้กžใซๅฟœใ˜ใฆ่ฉฒๅฝ“ใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆใ‚’้ธๆŠžใ—ใพใ™ใ€‚ใ‚ซใ‚นใ‚ฟใƒ ใพใŸใฏไบ’ๆ›ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใ‚’ไฝฟ็”จใ™ใ‚‹ๅ ดๅˆใฏ **Local / Internal** ใ‚’้ธๆŠžใงใใพใ™ใ€‚ + * **ใƒ—ใƒญใƒˆใ‚ณใƒซ**๏ผšใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใฎใƒ—ใƒญใƒˆใ‚ณใƒซใซๅฟœใ˜ใฆใ€**OpenAI Compatible** ใพใŸใฏใใฎไป–ใฎๅฎŸ้š›ใฎใƒ—ใƒญใƒˆใ‚ณใƒซใ‚’้ธๆŠžใ—ใพใ™ใ€‚ + * **Base URL**๏ผšใƒขใƒ‡ใƒซใ‚ตใƒผใƒ“ใ‚นใŒๆไพ›ใ™ใ‚‹ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใ‚ขใƒ‰ใƒฌใ‚นใ‚’ๅ…ฅๅŠ›ใ—ใพใ™ใ€‚ + * **API Key**๏ผšๅฏพๅฟœใ™ใ‚‹ใƒขใƒ‡ใƒซใ‚ตใƒผใƒ“ใ‚นใฎๆœ‰ๅŠนใชใ‚ญใƒผใ‚’ๅ…ฅๅŠ›ใ—ใพใ™ใ€‚ + * **Provider Model**๏ผšๅฎŸ้š›ใซๅ‘ผใณๅ‡บใ™ใƒขใƒ‡ใƒซๅใ‚’ๅ…ฅๅŠ›ใ—ใพใ™ใ€‚ + * **้€š่ฒจ**๏ผšๅฎŸ้š›ใฎ็Šถๆณใซๅฟœใ˜ใฆๅ…ฅๅŠ›ใ—ใพใ™ใ€‚่ชฒ้‡‘่กจ็คบใŒไธ่ฆใชๅ ดๅˆใฏใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎใพใพใงใ‚‚ๆง‹ใ„ใพใ›ใ‚“ใ€‚ + * **ๅ…ฅๅŠ›ไพกๆ ผ / ๅ‡บๅŠ›ไพกๆ ผ**๏ผš่ชฒ้‡‘็ตฑ่จˆใ‚’่กŒใ‚ใชใ„ๅ ดๅˆใฏ `0` ใ‚’ๅ…ฅๅŠ›ใงใใพใ™ใ€‚ +3. ้€ไฟกๅ‰ใซๅฟ…ใšๆฌกใซใƒใ‚งใƒƒใ‚ฏใ‚’ๅ…ฅใ‚Œใฆใใ ใ•ใ„๏ผš + + * **ใ‚ปใ‚ญใƒฅใ‚ขใƒขใƒ‡ใƒซ** + * **ๆœ‰ๅŠนๅŒ–** +4. **ไฟๅญ˜** ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใพใ™ใ€‚ + +> ๆณจ๏ผšใƒšใƒผใ‚ธๅ†…ใฎ็”ปๅƒใฏใ€ๅ…ฅๅŠ›ไฝ็ฝฎใจไพ‹็คบๅฝขๅผใ‚’็คบใ™ใŸใ‚ใฎใ‚‚ใฎใงใ™ใ€‚ๅฎŸ้š›ใฎๅ†…ๅฎนใฏใ€ไฝฟ็”จใ™ใ‚‹ใƒขใƒ‡ใƒซใ‚ตใƒผใƒ“ใ‚นใฎ่จญๅฎšใซๅพ“ใฃใฆใใ ใ•ใ„ใ€‚ + + +### 8.3 OpenClaw ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ไฝœๆˆ +ใƒขใƒ‡ใƒซ่จญๅฎšใฎๅฎŒไบ†ๅพŒใซใ€**OpenClaw Desktop** ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ไฝœๆˆใ—ใพใ™ใ€‚ + +1. ๅทฆไธ‹ใฎ **ADMIN** ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใ€**ใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚น** ใซๅˆ‡ใ‚Šๆ›ฟใˆใพใ™ใ€‚ +2. **ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ไฝœๆˆ** ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใพใ™ใ€‚ + +![](./main/2.png) +#### ใ‚นใƒ†ใƒƒใƒ— 1๏ผšๅŸบๆœฌๆƒ…ๅ ฑ +- **ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นๅ** ใ‚’ๅ…ฅๅŠ›ใ—ใพใ™๏ผˆ3 ๆ–‡ๅญ—ไปฅไธŠ๏ผ‰ใ€‚ +- ่ชฌๆ˜Žใฏไปปๆ„ใงใ€็ฉบๆฌ„ใงใ‚‚ๆง‹ใ„ใพใ›ใ‚“ใ€‚ +- **ๆฌกใธ** ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใพใ™ใ€‚ + +![](./main/3.png) +#### ใ‚นใƒ†ใƒƒใƒ— 2๏ผšใ‚ฟใ‚คใƒ—ใ‚’้ธๆŠž +- **OpenClaw Desktop** ใ‚’้ธๆŠžใ—ใพใ™ใ€‚ +- **ๆฌกใธ** ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใพใ™ใ€‚ + + +![](./main/4.png) +#### ใ‚นใƒ†ใƒƒใƒ— 3๏ผš่จญๅฎš +- **Small** ไป•ๆง˜ใ‚’็›ดๆŽฅ้ธๆŠžใงใใพใ™๏ผš + - `2 CPU` + - `4 GB RAM` + - `20 GB Disk` +- ไธ‹้ƒจใฎใ‚ซใ‚นใ‚ฟใƒ ่จญๅฎšใงๅฟ…่ฆใซๅฟœใ˜ใฆๅค‰ๆ›ดใ™ใ‚‹ใ“ใจใ‚‚ใงใใพใ™ใ€‚ +- OpenClaw ใƒชใ‚ฝใƒผใ‚นๆณจๅ…ฅใ‚ปใ‚ฏใ‚ทใƒงใƒณใงใฏใ€ๅฟ…่ฆใซๅฟœใ˜ใฆไปฅไธ‹ใ‚’้ธๆŠžใงใใพใ™๏ผš + - **ๆ‰‹ๅ‹•ใƒชใ‚ฝใƒผใ‚น** + - **ใƒชใ‚ฝใƒผใ‚นใƒ‘ใƒƒใ‚ฏ** + - **ใ‚ขใƒผใ‚ซใ‚คใƒ–ๅฐŽๅ…ฅ** +- ๅˆๅ›žๅˆฉ็”จๆ™‚ใฏใ€ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎใพใพใซใ™ใ‚‹ใ‹ **ๆ‰‹ๅ‹•ใƒชใ‚ฝใƒผใ‚น** ใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚ +- ๆœ€ๅพŒใซ **ไฝœๆˆ** ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใพใ™ใ€‚ + +### 8.4 ๅˆๅ›žไฝœๆˆๆ™‚ใฎ่ชฌๆ˜Ž +- **OpenClaw** ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ๅˆใ‚ใฆไฝœๆˆใ™ใ‚‹ใจใใฏใ€ๅฟ…่ฆใชใ‚คใƒกใƒผใ‚ธใฎใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใจ็’ฐๅขƒใฎๅˆๆœŸๅŒ–ใŒ่กŒใ‚ใ‚Œใ‚‹ใŸใ‚ใ€ๆ˜Žใ‚‰ใ‹ใซๆ™‚้–“ใŒใ‹ใ‹ใ‚Šใพใ™ใ€‚ +- ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใŒ้…ใ„ๅ ดๅˆใ‚„ๅˆๅ›žใฎใ‚คใƒกใƒผใ‚ธๅ–ๅพ—ๆ™‚ใซใฏใ€ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใฎ็Šถๆ…‹ใŒ้•ทๆ™‚้–“ **ไฝœๆˆไธญ** ใจ่กจ็คบใ•ใ‚Œใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚ใ—ใฐใ‚‰ใใŠๅพ…ใกใใ ใ•ใ„ใ€‚ +- ้•ทๆ™‚้–“็ตŒใฃใฆใ‚‚่ตทๅ‹•ใ—ใชใ„ๅ ดๅˆใฏใ€Kubernetes / Docker ใƒญใ‚ฐใซๆˆปใฃใฆใ€ใ‚คใƒกใƒผใ‚ธใ€PVCใ€Gateway ใƒขใƒ‡ใƒซใชใฉใฎๅ•้กŒใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚ + +--- + + +## ไนใ€ใ‚ณใƒณใ‚ฝใƒผใƒซใจ AI Gateway ใฎใใฎไป–ใฎๆฉŸ่ƒฝ่ชฌๆ˜Ž + +ใƒขใƒ‡ใƒซ่จญๅฎšใซๅŠ ใˆใฆใ€ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใฎใƒ›ใƒผใƒ ใƒšใƒผใ‚ธใ‚ณใƒณใ‚ฝใƒผใƒซใจ AI Gateway ใซใฏใ€็›ฃๆŸปใ€ใ‚ณใ‚นใƒˆใ€ใƒซใƒผใƒซใ‚ฌใƒใƒŠใƒณใ‚นใชใฉใฎๆฉŸ่ƒฝใ‚‚ใ‚ใ‚Šใ€็ฎก็†่€…ใŒใ‚ฏใƒฉใ‚นใ‚ฟใƒผ็Šถๆ…‹ใ€ใƒขใƒ‡ใƒซๅ‘ผใณๅ‡บใ—่จ˜้Œฒใ€ใŠใ‚ˆใณใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใƒใƒชใ‚ทใƒผใฎๅฎŸ่กŒ็Šถๆณใ‚’ไธ€ๅ…ƒ็š„ใซ็ขบ่ชใ—ใ‚„ใ™ใใชใฃใฆใ„ใพใ™ใ€‚ + +### 9.1 ใ‚ณใƒณใ‚ฝใƒผใƒซๆฆ‚่ฆ + +![](./main/5.png) + +ใ‚ณใƒณใ‚ฝใƒผใƒซใฎใƒ›ใƒผใƒ ใƒšใƒผใ‚ธใฏใ€็พๅœจใฎใ‚ฏใƒฉใ‚นใ‚ฟใƒผใจใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใฎๅ…จไฝ“็š„ใช็จผๅƒ็Šถๆณใ‚’่กจ็คบใ—ใ€็ฎก็†่€…ใŒใƒชใ‚ฝใƒผใ‚นไฝฟ็”จ็Šถๆณใจใ‚ทใ‚นใƒ†ใƒ ๅฅๅ…จๆ€งใ‚’็ด ๆ—ฉใๆŠŠๆกใงใใ‚‹ใ‚ˆใ†ใซใ™ใ‚‹ใŸใ‚ใฎใ‚‚ใฎใงใ™ใ€‚ + +ไธปใซไปฅไธ‹ใฎๆƒ…ๅ ฑใŒๅซใพใ‚Œใพใ™๏ผš + +- **ใ‚ฏใƒฉใ‚นใ‚ฟใƒผๅŸบๆœฌๆƒ…ๅ ฑใฎๆฆ‚่ฆ**๏ผš็พๅœจใฎใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใฎใƒฆใƒผใ‚ถใƒผ็ทๆ•ฐใ€ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น็ทๆ•ฐใ€็จผๅƒไธญใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นๆ•ฐใ€็ทใ‚นใƒˆใƒฌใƒผใ‚ธไฝฟ็”จ้‡ใ‚’่กจ็คบใ—ใพใ™ใ€‚ +- **ใƒŽใƒผใƒ‰ๆฆ‚่ฆ**๏ผš็พๅœจๅˆฉ็”จๅฏ่ƒฝใชใƒŽใƒผใƒ‰ๆ•ฐใจใ€็พๅœจใฎใ‚ฏใƒฉใ‚นใ‚ฟใƒผใซใŠใ‘ใ‚‹ไธป่ฆใ‚นใ‚ฑใ‚ธใƒฅใƒผใƒชใƒณใ‚ฐใƒŽใƒผใƒ‰ๆƒ…ๅ ฑใ‚’่กจ็คบใ—ใพใ™ใ€‚ +- **ใƒชใ‚ฝใƒผใ‚น็”ณ่ซ‹็Šถๆณ**๏ผš็พๅœจใฎใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใง็”ณ่ซ‹ๆธˆใฟใฎ CPUใ€ใƒกใƒขใƒชใ€ใƒ‡ใ‚ฃใ‚นใ‚ฏใƒชใ‚ฝใƒผใ‚นใฎ็ท้‡ใ‚’่กจ็คบใ—ใพใ™ใ€‚ +- **ๅฎน้‡ใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰**๏ผšใƒŽใƒผใƒ‰ใ€CPUใ€ใƒกใƒขใƒชใ€ใƒ‡ใ‚ฃใ‚นใ‚ฏใชใฉใฎ่ฆณ็‚นใงๅ…จไฝ“ใƒชใ‚ฝใƒผใ‚นๅฎน้‡ใจ็พๅœจใฎไฝฟ็”จ็އใ‚’่กจ็คบใ—ใ€ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใซๅˆฉ็”จๅฏ่ƒฝใชไฝ™่ฃ•ใŒใ‚ใ‚‹ใ‹ใ‚’ๅˆคๆ–ญใ—ใ‚„ใ™ใใ—ใพใ™ใ€‚ +- **ใ‚คใƒณใƒ•ใƒฉใ‚นใƒˆใƒฉใ‚ฏใƒใƒฃใƒ†ใƒผใƒ–ใƒซ**๏ผš็พๅœจใฎใƒŽใƒผใƒ‰ใ€ใƒชใ‚ฝใƒผใ‚นใ€ใŠใ‚ˆใณๅŸบๆœฌๅฎŸ่กŒ็’ฐๅขƒใฎ็Šถๆ…‹ๆƒ…ๅ ฑใ‚’่กจ็คบใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ—ใพใ™ใ€‚ + +> ๆณจ๏ผšใ‚ณใƒณใ‚ฝใƒผใƒซใฏไธปใซใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ…จไฝ“ใฎใƒชใ‚ฝใƒผใ‚นใ€ใƒŽใƒผใƒ‰ใ€ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น็จผๅƒ็Šถๆณใ‚’็ขบ่ชใ™ใ‚‹ใŸใ‚ใฎใ‚‚ใฎใงใ‚ใ‚Šใ€็‰นๅฎšใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นๅ†…ใฎ OpenClaw ๆ“ไฝœใซใฏ็›ดๆŽฅไฝฟ็”จใ—ใพใ›ใ‚“ใ€‚ + +### 9.2 ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ปใƒณใ‚ฟใƒผ๏ผˆskill-scanner๏ผ‰ + +ใ‚ณใƒณใ‚ฝใƒผใƒซใฎ **ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ปใƒณใ‚ฟใƒผ** ใฏใ€ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ่ณ‡็”ฃใฎใ‚นใ‚ญใƒฃใƒณ็Šถๆ…‹ใ€ๅฑฅๆญดใƒฌใƒใƒผใƒˆใ€ใŠใ‚ˆใณใ‚นใ‚ญใƒฃใƒŠใƒผ่จญๅฎšใ‚’ไธ€ๅ…ƒ็š„ใซ็ขบ่ชใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚ใ“ใ‚Œใฏใƒใƒƒใ‚ฏใ‚จใƒณใƒ‰ใฎ **skill-scanner** ใ‚ตใƒผใƒ“ใ‚นใซไพๅญ˜ใ—ใฆๅ‹•ไฝœใ—ใ€่ณ‡็”ฃใซๅฏพใ™ใ‚‹้™็š„ใ‚นใ‚ญใƒฃใƒณใ€ๆทฑๅบฆใ‚นใ‚ญใƒฃใƒณใ€ใŠใ‚ˆใณ LLM ใซๅŸบใฅใ่ฃœ่ถณๅˆ†ๆžใ‚’่กŒใ†ใ“ใจใงใ€็ฎก็†่€…ใŒๆฝœๅœจ็š„ใชใƒชใ‚นใ‚ฏใ‚ณใƒณใƒ†ใƒณใƒ„ใ€็•ฐๅธธใช่ณ‡็”ฃใ€ใŠใ‚ˆใณ็–‘ใ‚ใ—ใ„ใ‚นใ‚ญใƒซใ‚’่ญ˜ๅˆฅใงใใ‚‹ใ‚ˆใ†ๆ”ฏๆดใ—ใพใ™ใ€‚ + +ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ปใƒณใ‚ฟใƒผใซใฏ็พๅœจใ€ไธปใซไปฅไธ‹ใฎ 3 ใคใฎใƒขใ‚ธใƒฅใƒผใƒซใŒใ‚ใ‚Šใพใ™ใ€‚ + +* **ๅฎŸ่กŒๆฆ‚่ฆ** +* **ใƒฌใƒใƒผใƒˆๅฑฅๆญด** +* **ใ‚นใ‚ญใƒฃใƒŠใƒผ่จญๅฎš** + +#### 9.2.1 ๅฎŸ่กŒๆฆ‚่ฆ + +![](./main/14.png) + +ใ€ŒๅฎŸ่กŒๆฆ‚่ฆใ€ใƒšใƒผใ‚ธใฏใ€็พๅœจใฎใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ…จไฝ“ใฎใ‚นใ‚ญใƒฃใƒณ็Šถๆณใจใƒชใ‚นใ‚ฏๅˆ†ๅธƒใ‚’็ขบ่ชใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ•ใ‚Œใ€็ฎก็†่€…ใŒ็พๅœจใฎใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็Šถๆณใ‚’่ฟ…้€ŸใซๆŠŠๆกใ™ใ‚‹ใฎใซๅฝน็ซ‹ใกใพใ™ใ€‚ + +ใƒšใƒผใ‚ธใซใฏไธปใซไปฅไธ‹ใฎๅ†…ๅฎนใŒๅซใพใ‚Œใพใ™ใ€‚ + +* **็พๅœจๆœ‰ๅŠนใชใƒขใƒผใƒ‰**๏ผš็พๅœจไฝฟ็”จใ•ใ‚Œใฆใ„ใ‚‹ใฎใŒ **Quick ใƒขใƒผใƒ‰** ใ‹ **Deep ใƒขใƒผใƒ‰** ใ‹ใ‚’่กจ็คบใ—ใพใ™ใ€‚ +* **ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ญใƒฃใƒณ / ๅ…จ้‡ใ‚นใ‚ญใƒฃใƒณ**๏ผš + + * **ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ญใƒฃใƒณ**๏ผšๆ–ฐ่ฆ่ฟฝๅŠ ใพใŸใฏๅค‰ๆ›ดใ•ใ‚ŒใŸ่ณ‡็”ฃใฎๅ‡ฆ็†ใซ้ฉใ—ใฆใŠใ‚Šใ€ใ‚นใ‚ญใƒฃใƒณ็ฏ„ๅ›ฒใŒ่ปฝใใ€ๅฎŸ่กŒ้€ŸๅบฆใŒ้€Ÿใ„ใงใ™ใ€‚ + * **ๅ…จ้‡ใ‚นใ‚ญใƒฃใƒณ**๏ผšๅฎšๆœŸ็š„ใซใ™ในใฆใฎ่ณ‡็”ฃใ‚’ๅ†ใ‚นใ‚ญใƒฃใƒณใ—ใ€ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ไธŠใฎๅ…จ่ณ‡็”ฃใฎ็Šถๆ…‹ใ‚’ๅฎŒๅ…จใซๅ†็ขบ่ชใ™ใ‚‹ใฎใซ้ฉใ—ใฆใ„ใพใ™ใ€‚ +* **่ณ‡็”ฃ็ทๆ•ฐ**๏ผš็พๅœจใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ปใƒณใ‚ฟใƒผใฎใ‚นใ‚ญใƒฃใƒณๅฏพ่ฑกใจใชใฃใฆใ„ใ‚‹่ณ‡็”ฃๆ•ฐใ€‚ +* **ใ‚นใ‚ญใƒฃใƒณๅฎŒไบ†ๆ•ฐ**๏ผšใ‚นใ‚ญใƒฃใƒณใŒๅฎŒไบ†ใ—ใŸ่ณ‡็”ฃๆ•ฐใ€‚ +* **้ซ˜ใƒชใ‚นใ‚ฏ / ไธญใƒชใ‚นใ‚ฏ**๏ผš็พๅœจใฎใ‚นใ‚ญใƒฃใƒณ็ตๆžœใง่ญ˜ๅˆฅใ•ใ‚ŒใŸใƒชใ‚นใ‚ฏใƒฌใƒ™ใƒซใฎ็ตฑ่จˆใ€‚ +* **ใ‚นใ‚ญใƒฃใƒณใ‚ซใƒใƒฌใƒƒใ‚ธ**๏ผšๅฎŸ้š›ใซใ‚นใ‚ญใƒฃใƒณใŒๅฎŒไบ†ใ—ใŸ่ณ‡็”ฃๆ•ฐใŒใ€ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ็ท่ณ‡็”ฃๆ•ฐใซๅ ใ‚ใ‚‹ๅ‰ฒๅˆใ‚’่กจ็คบใ—ใพใ™ใ€‚ +* **SAFE / ้ซ˜ใƒชใ‚นใ‚ฏ / ๅพ…ๆฉŸไธญ / ๅคฑๆ•—**๏ผš + + * **SAFE**๏ผšใ‚นใ‚ญใƒฃใƒณใซๅˆๆ ผใ—ใ€็พๆ™‚็‚นใงใƒชใ‚นใ‚ฏใŒๆคœๅ‡บใ•ใ‚Œใฆใ„ใชใ„่ณ‡็”ฃๆ•ฐ + * **้ซ˜ใƒชใ‚นใ‚ฏ**๏ผš็›ดใกใซๅฏพๅ‡ฆใŒๅฟ…่ฆใชใƒชใ‚นใ‚ฏ่ณ‡็”ฃๆ•ฐ + * **ๅพ…ๆฉŸไธญ**๏ผš่จผๆ‹ ๅ–ๅพ—ๅพ…ใกใ€ใพใŸใฏใ‚นใ‚ญใƒฃใƒณๅพ…ใกใ‚ญใƒฅใƒผใซๅ…ฅใฃใฆใ„ใ‚‹่ณ‡็”ฃๆ•ฐ + * **ๅคฑๆ•—**๏ผšใ‚นใ‚ญใƒฃใƒณๅฎŸ่กŒใซๅคฑๆ•—ใ—ใ€ๅ†ๅฎŸ่กŒใŒๅฟ…่ฆใช่ณ‡็”ฃๆ•ฐ +* **ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ่ณ‡็”ฃใƒชใ‚นใ‚ฏๅ‹•ๅ‘**๏ผšใƒชใ‚นใ‚ฏใƒฌใƒ™ใƒซๅˆฅใซ้›†่จˆใ—ใŸ็พๅœจใฎใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ่ณ‡็”ฃใฎใƒชใ‚นใ‚ฏๅˆ†ๅธƒใ‚’่กจ็คบใ—ใพใ™ใ€‚ +* **ใƒ›ใƒƒใƒˆ่ณ‡็”ฃ**๏ผšๆœ€ใ‚‚้ ป็นใซไฝฟ็”จใ•ใ‚Œใฆใ„ใ‚‹ใ‚นใ‚ญใƒซใ‚„้ซ˜้ ปๅบฆๅˆฉ็”จ่ณ‡็”ฃใ‚’่กจ็คบใ—ใ€็ฎก็†่€…ใŒ้‡็‚น่ณ‡็”ฃใ‚’็ด ๆ—ฉใ็‰นๅฎšใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚ +* **ใ‚นใ‚ญใƒฃใƒŠใƒผ็Šถๆ…‹**๏ผš็พๅœจใฎ skill-scanner ใฎๅˆฉ็”จๅฏๅฆใจๆŽฅ็ถš็Šถๆ…‹ใ‚’่กจ็คบใ—ใพใ™ใ€‚ใŸใจใˆใฐใ€Œ้™็š„ใ‚นใ‚ญใƒฃใƒณๅˆฉ็”จๅฏใ€ใ€ŒๆŽฅ็ถšๆธˆใฟใ€ใชใฉใงใ™ใ€‚ +* **ใƒชใ‚นใ‚ฏ้€š็Ÿฅใจๅฏพๅ‡ฆๆๆกˆ**๏ผš็พๅœจใฎใƒชใ‚นใ‚ฏ็Šถๆณใซๅฟœใ˜ใŸ็ฐกๆฝ”ใช้€š็Ÿฅๆƒ…ๅ ฑใ‚’่กจ็คบใ—ใพใ™ใ€‚ +* **ๆœ€่ฟ‘ใฎใ‚นใ‚ญใƒฃใƒณใ‚ฟใ‚นใ‚ฏ**๏ผšๆœ€่ฟ‘ๅฎŸ่กŒใ•ใ‚ŒใŸใ‚นใ‚ญใƒฃใƒณ่จ˜้Œฒใ‚’่กจ็คบใ—ใ€็›ด่ฟ‘ใฎใ‚นใ‚ญใƒฃใƒณๆดปๅ‹•ใ‚’ๆŒฏใ‚Š่ฟ”ใ‚Šใ‚„ใ™ใใ—ใพใ™ใ€‚ + +> ่ชฌๆ˜Ž๏ผš +> +> * ใƒšใƒผใ‚ธใซใ€Œ็พๅœจใ€้ซ˜ใƒชใ‚นใ‚ฏใพใŸใฏไธญใƒชใ‚นใ‚ฏ่ณ‡็”ฃใฏใ‚ใ‚Šใพใ›ใ‚“ใ€ใจ่กจ็คบใ•ใ‚Œใ‚‹ๅ ดๅˆใ€็พๅœจใฎใ‚นใ‚ญใƒฃใƒณ็ตๆžœใงใฏ้‡ๅคงใชใƒชใ‚นใ‚ฏใŒ่ฆ‹ใคใ‹ใฃใฆใ„ใชใ„ใ“ใจใ‚’ๆ„ๅ‘ณใ—ใพใ™ใ€‚ +> * ใƒšใƒผใ‚ธใซใ€Œใพใ ใ‚นใ‚ญใƒฃใƒณใ‚ฟใ‚นใ‚ฏ่จ˜้ŒฒใŒใ‚ใ‚Šใพใ›ใ‚“ใ€ใจ่กจ็คบใ•ใ‚Œใ‚‹ๅ ดๅˆใ€ใพใ ใ‚นใ‚ญใƒฃใƒณใŒๅฎŸ่กŒใ•ใ‚Œใฆใ„ใชใ„ใ€ใพใŸใฏๆœ‰ๅŠนใชใ‚นใ‚ญใƒฃใƒณ็ตๆžœใŒ็”Ÿๆˆใ•ใ‚Œใฆใ„ใชใ„ใ“ใจใ‚’ๆ„ๅ‘ณใ—ใพใ™ใ€‚ + +#### 9.2.2 ใƒฌใƒใƒผใƒˆๅฑฅๆญด + +ใ€Œใƒฌใƒใƒผใƒˆๅฑฅๆญดใ€ใƒšใƒผใ‚ธใฏใ€้ŽๅŽปใฎใ‚นใ‚ญใƒฃใƒณใƒฌใƒใƒผใƒˆใŠใ‚ˆใณ้–ข้€ฃ็ตๆžœ่จ˜้Œฒใ‚’็ขบ่ชใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ•ใ‚Œใ€็ฎก็†่€…ใŒ้ŽๅŽปใฎใ‚นใ‚ญใƒฃใƒณๅฎŸ่กŒ็Šถๆณใ‚’ๆŒฏใ‚Š่ฟ”ใ‚Šใ‚„ใ™ใใ—ใพใ™ใ€‚ + +ใ“ใฎใƒขใ‚ธใƒฅใƒผใƒซใฏไธปใซไปฅไธ‹ใฎ็”จ้€”ใงไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚ + +* ้ŽๅŽปใซๅฎŸ่กŒใ•ใ‚ŒใŸใ‚นใ‚ญใƒฃใƒณใ‚ฟใ‚นใ‚ฏใฎ็ตๆžœใ‚’็ขบ่ชใ™ใ‚‹ +* ็•ฐใชใ‚‹ๆ™‚็‚นใงใฎใ‚นใ‚ญใƒฃใƒณๅ‡บๅŠ›ใ‚’ๆฏ”่ผƒใ™ใ‚‹ +* ็‰นๅฎš่ณ‡็”ฃใฎๅ„ๆฎต้šŽใซใŠใ‘ใ‚‹ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃๅค‰ๅŒ–ใ‚’่ฃœๅŠฉ็š„ใซ่ฟฝ่ทกใ™ใ‚‹ +* ไปŠๅพŒใฎใƒฌใƒ“ใƒฅใƒผใ€ๅ†ใ‚นใ‚ญใƒฃใƒณใ€ใŠใ‚ˆใณๅ•้กŒๅˆ‡ใ‚Šๅˆ†ใ‘ใฎใŸใ‚ใฎๅฑฅๆญด็š„ๆ นๆ‹ ใ‚’ๆไพ›ใ™ใ‚‹ + +> ่ชฌๆ˜Ž๏ผš +> +> * ใ€Œใƒฌใƒใƒผใƒˆๅฑฅๆญดใ€ใฏๅฑฅๆญด็ตๆžœใฎไฟๅญ˜ใจ่ฟฝ่ทกใซใ‚ˆใ‚Š้‡็‚นใŒใ‚ใ‚Šใพใ™๏ผ› +> * ใ€ŒๅฎŸ่กŒๆฆ‚่ฆใ€ใฏ็พๅœจ็Šถๆ…‹ใจๅ…จไฝ“ๆฆ‚่ฆใซใ‚ˆใ‚Š้‡็‚นใŒใ‚ใ‚Šใพใ™ใ€‚ + +#### 9.2.3 ใ‚นใ‚ญใƒฃใƒŠใƒผ่จญๅฎš + +![](./main/15.png) + +ใ€Œใ‚นใ‚ญใƒฃใƒŠใƒผ่จญๅฎšใ€ใƒšใƒผใ‚ธใฏใ€skill-scanner ใฎๅ‹•ไฝœๆ–นๅผใ€LLM ้–ข้€ฃ่จญๅฎšใ€ใŠใ‚ˆใณ quick / deep ใฎ 2 ใคใฎใ‚นใ‚ญใƒฃใƒณๆˆฆ็•ฅใ‚’็ฎก็†ใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚ไฟๅญ˜ๅพŒใฏ Deployment rollout ใŒใƒˆใƒชใ‚ฌใƒผใ•ใ‚Œใ€ๆ–ฐใ—ใ„่จญๅฎšใŒๆœ‰ๅŠนใซใชใ‚‹ใพใงๅพ…ๆฉŸใ—ใพใ™ใ€‚ + +ใƒšใƒผใ‚ธใซใฏไธปใซไปฅไธ‹ใฎๅ†…ๅฎนใŒๅซใพใ‚Œใพใ™ใ€‚ + +##### ๏ผˆ1๏ผ‰skill-scanner ใ‚ตใƒผใƒ“ใ‚น็Šถๆ…‹ + +* ็พๅœจใฎใƒใƒƒใ‚ฏใ‚จใƒณใƒ‰ใ‚นใ‚ญใƒฃใƒณใ‚ตใƒผใƒ“ใ‚นใฎ namespaceใ€Deployment ๅ็งฐใ€ใŠใ‚ˆใณๆŽฅ็ถš็Šถๆ…‹ใ‚’่กจ็คบใ—ใพใ™ใ€‚ +* ใƒšใƒผใ‚ธใซ **ๆŽฅ็ถšๆธˆใฟ**ใ€**้™็š„ใ‚นใ‚ญใƒฃใƒณๅˆฉ็”จๅฏ** ใจ่กจ็คบใ•ใ‚Œใ‚‹ๅ ดๅˆใ€ๅŸบๆœฌ็š„ใช้™็š„ใ‚นใ‚ญใƒฃใƒณๆฉŸ่ƒฝใŒๅˆฉ็”จๅฏ่ƒฝใงใ‚ใ‚‹ใ“ใจใ‚’็คบใ—ใพใ™ใ€‚ + +##### ๏ผˆ2๏ผ‰LLM ่จญๅฎš + +ใ“ใฎใ‚จใƒชใ‚ขใงใฏใ€scanner ใŒๅฟ…่ฆใซๅฟœใ˜ใฆใƒขใƒ‡ใƒซใƒ™ใƒผใ‚นใฎๅˆ†ๆžใ‚’ๅฎŸ่กŒใงใใ‚‹ใ‚ˆใ†ใ€ไธป LLM ใ‚’่จญๅฎšใ—ใพใ™ใ€‚ + +ไธปใชใƒ•ใ‚ฃใƒผใƒซใƒ‰ใฏไปฅไธ‹ใฎ้€šใ‚Šใงใ™ใ€‚ + +* **ไธป LLM ็ตฑๅˆ**๏ผš**AI Gateway** ใซ่จญๅฎšๆธˆใฟใฎใƒขใƒ‡ใƒซใ‹ใ‚‰ไธป LLM ่จญๅฎšใ‚’็›ดๆŽฅ่ชญใฟ่พผใ‚ใพใ™ใ€‚ +* **LLM API Key**๏ผš`SKILL_SCANNER_LLM_API_KEY` ใซๅฏพๅฟœใ—ใ€ไธป LLM analyzer ใฎ่ช่จผใซไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚ +* **LLM Model**๏ผš`SKILL_SCANNER_LLM_MODEL` ใซๅฏพๅฟœใ—ใ€ๅ…ทไฝ“็š„ใชใƒขใƒ‡ใƒซๅใชใฉใ‚’ๆŒ‡ๅฎšใ—ใพใ™ใ€‚ +* **LLM Base URL**๏ผš`SKILL_SCANNER_LLM_BASE_URL` ใซๅฏพๅฟœใ—ใ€ไธป LLM ใ‚ตใƒผใƒ“ใ‚นใฎใ‚ขใƒ‰ใƒฌใ‚นใ‚’่จญๅฎšใ—ใพใ™ใ€‚ + +##### ๏ผˆ3๏ผ‰Meta LLM ็ตฑๅˆ + +ใ“ใฎใ‚จใƒชใ‚ขใงใฏใ€meta analyzer ใŒไฝฟ็”จใ™ใ‚‹ใƒขใƒ‡ใƒซใ‚’่จญๅฎšใ—ใพใ™ใ€‚้€šๅธธใ€findings ใฎใ•ใ‚‰ใชใ‚‹่ฆ็ด„ใ€ๆ•ด็†ใ€ใพใŸใฏไบŒๆฌกๅ‡ฆ็†ใซไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚ + +ไธปใชใƒ•ใ‚ฃใƒผใƒซใƒ‰ใฏไปฅไธ‹ใฎ้€šใ‚Šใงใ™ใ€‚ + +* **Meta LLM ็ตฑๅˆ**๏ผš**AI Gateway** ใซ่จญๅฎšๆธˆใฟใฎใƒขใƒ‡ใƒซใ‹ใ‚‰ meta analyzer ่จญๅฎšใ‚’็›ดๆŽฅ่ชญใฟ่พผใ‚ใพใ™ใ€‚ +* **Meta LLM API Key**๏ผš`SKILL_SCANNER_META_LLM_API_KEY` ใซๅฏพๅฟœใ—ใพใ™ใ€‚ +* **Meta LLM Model**๏ผš`SKILL_SCANNER_META_LLM_MODEL` ใซๅฏพๅฟœใ—ใพใ™ใ€‚ +* **Meta LLM Base URL**๏ผš`SKILL_SCANNER_META_LLM_BASE_URL` ใซๅฏพๅฟœใ—ใพใ™ใ€‚ + +> ่ชฌๆ˜Ž๏ผš +> +> * ็พๅœจ LLM ใŒๆœช่จญๅฎšใฎๅ ดๅˆใ€ใƒšใƒผใ‚ธใซใฏ้€šๅธธใ€็พๆ™‚็‚นใงใฏ้™็š„ใ‚นใ‚ญใƒฃใƒณใฎใฟๅฏพๅฟœใ—ใฆใ„ใ‚‹ๆ—จใŒ่กจ็คบใ•ใ‚Œใพใ™๏ผ› +> * ไธป LLM ใจ Meta LLM ใฎไธกๆ–นใ‚’่จญๅฎšใ—ใŸๅพŒใซใฎใฟใ€scanner ใฏใ‚ˆใ‚ŠๅฎŒๅ…จใชๆ„ๅ‘ณ่งฃๆžใจ่ฆ็ด„ๆฉŸ่ƒฝใ‚’ๆœ‰ๅŠนใซใงใใพใ™ใ€‚ + +##### ๏ผˆ4๏ผ‰็พๅœจใฎใ‚นใ‚ญใƒฃใƒณใƒขใƒผใƒ‰ + +ใƒšใƒผใ‚ธใงใฏใ€็พๅœจใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใงๅฎŸ้š›ใซๆŽก็”จใ—ใฆใ„ใ‚‹ใ‚นใ‚ญใƒฃใƒณใƒขใƒผใƒ‰ใ‚’้ธๆŠžใงใใพใ™ใ€‚ + +* **Quick ใƒขใƒผใƒ‰**๏ผšquick analyzers ใ‚’ไฝฟ็”จใ—ใฆใ‚นใ‚ญใƒฃใƒณใ‚’ๅฎŸ่กŒใ—ใ€ๆ—ฅๅธธ็š„ใช้ซ˜้€Ÿใƒใ‚งใƒƒใ‚ฏใซ้ฉใ—ใฆใ„ใพใ™ใ€‚ +* **Deep ใƒขใƒผใƒ‰**๏ผšdeep analyzers ใ‚’ไฝฟ็”จใ—ใฆใ‚นใ‚ญใƒฃใƒณใ‚’ๅฎŸ่กŒใ—ใ€ใ‚ˆใ‚ŠๅฎŒๅ…จใ‹ใคๆทฑใ„ๅˆ†ๆžใซ้ฉใ—ใฆใ„ใพใ™ใ€‚ + +ๆณจๆ„ใ™ในใ็‚นใฏไปฅไธ‹ใงใ™ใ€‚ + +* Dashboard ไธŠใฎใ€Œใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ญใƒฃใƒณใ€ใจใ€Œๅ…จ้‡ใ‚นใ‚ญใƒฃใƒณใ€ใฏใ€ใฉใกใ‚‰ใ‚‚ใ“ใ“ใง้ธๆŠžใ—ใŸใ‚นใ‚ญใƒฃใƒณๅผทๅบฆใ‚’ไฝฟ็”จใ—ใพใ™๏ผ› +* ไธก่€…ใฎ้•ใ„ใฏไธปใซใ‚นใ‚ญใƒฃใƒณ็ฏ„ๅ›ฒใซใ‚ใ‚Šใ€analyzer ใฎๆทฑใ•ใใฎใ‚‚ใฎใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚ + +##### ๏ผˆ5๏ผ‰Quick / Deep ใ‚นใ‚ญใƒฃใƒณๆˆฆ็•ฅ + +ใƒšใƒผใ‚ธไธ‹้ƒจใงใฏ **Quick** ใจ **Deep** ใฎ 2 ใคใฎใ‚นใ‚ญใƒฃใƒณๆˆฆ็•ฅ่จญๅฎšใ‚’ใใ‚Œใžใ‚Œ็ฎก็†ใ—ใฆใŠใ‚Šใ€็ฎก็†่€…ใŒ็•ฐใชใ‚‹ใ‚ทใƒŠใƒชใ‚ชใซๅฟœใ˜ใฆ็•ฐใชใ‚‹ analyzer ใฎ็ต„ใฟๅˆใ‚ใ›ใ‚’้ธๆŠžใงใใ‚‹ใ‚ˆใ†ใซใชใฃใฆใ„ใพใ™ใ€‚ + +ๅ„ๆˆฆ็•ฅใซใฏไปฅไธ‹ใฎ่จญๅฎš้ …็›ฎใŒใ‚ใ‚Šใพใ™ใ€‚ + +* **ใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆ๏ผˆ็ง’๏ผ‰**๏ผš็พๅœจใฎใƒขใƒผใƒ‰ใซใŠใ‘ใ‚‹ใ‚นใ‚ญใƒฃใƒณใ‚ฟใ‚นใ‚ฏใฎใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆๆ™‚้–“ใ‚’่จญๅฎšใ—ใพใ™ใ€‚ +* **ๅ‘ผใณๅ‡บใ—ๆ–นๆณ•**๏ผšๅฟ…่ฆใซๅฟœใ˜ใฆ็•ฐใชใ‚‹ analyzer ใ‚’ๆœ‰ๅŠนใพใŸใฏ็„กๅŠนใซใงใใพใ™ใ€‚ + +็พๅœจ่กจ็คบใ•ใ‚Œใฆใ„ใ‚‹ analyzer ใ‚ฟใ‚คใƒ—ใซใฏไปฅไธ‹ใŒๅซใพใ‚Œใพใ™ใ€‚ + +* **Static**๏ผšYAML + YARA ้™็š„ใƒซใƒผใƒซใ‚นใ‚ญใƒฃใƒณ +* **Bytecode**๏ผšPython bytecode ใฎๅฎŒๅ…จๆ€งๆคœ่จผ +* **Pipeline**๏ผšใ‚ณใƒžใƒณใƒ‰ใƒใ‚งใƒผใƒณใŠใ‚ˆใณ taint ๅˆ†ๆž +* **Behavioral**๏ผšAST ใƒ™ใƒผใ‚นใฎๆŒ™ๅ‹•ใŠใ‚ˆใณใƒ‡ใƒผใ‚ฟใƒ•ใƒญใƒผๅˆ†ๆž +* **LLM**๏ผšๅค–้ƒจ LLM ใซไพๅญ˜ใ™ใ‚‹ๆ„ๅ‘ณ่งฃๆž +* **Meta**๏ผšfindings ใฎไบŒๆฌก่ฆ็ด„ๅˆ†ๆž + +้€šๅธธใ€ไปฅไธ‹ใฎใ‚ˆใ†ใซ็†่งฃใงใใพใ™ใ€‚ + +* **Quick ใƒขใƒผใƒ‰**๏ผšใ‚ˆใ‚Š้ซ˜้€ŸใชๅฎŸ่กŒใ‚’้‡่ฆ–ใ—ใ€ๆ—ฅๅธธ็š„ใชๅข—ๅˆ†ใƒใ‚งใƒƒใ‚ฏใซใ‚ˆใไฝฟใ‚ใ‚Œใพใ™ +* **Deep ใƒขใƒผใƒ‰**๏ผšใ‚ˆใ‚Šๅคšใใฎ analyzer ใ‚’ๆœ‰ๅŠนใซใงใใ€ใ‚ˆใ‚Šๆทฑใ„ใƒฌใƒ“ใƒฅใƒผใ‚„ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็›ฃๆŸปใซ้ฉใ—ใฆใ„ใพใ™ + +##### ๏ผˆ6๏ผ‰ไฟๅญ˜ใ—ใฆ้ฉ็”จ + +ใƒšใƒผใ‚ธๅณไธŠใฎ **ไฟๅญ˜ใ—ใฆ้ฉ็”จ** ใฏใ€็พๅœจใฎ scanner ้–ข้€ฃ่จญๅฎšใ‚’ใพใจใ‚ใฆ้€ไฟกใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚ไฟๅญ˜ๅพŒใฏไปฅไธ‹ใŒ่กŒใ‚ใ‚Œใพใ™ใ€‚ + +* ClawManager ๅ†…ใฎ quick / deep ใ‚นใ‚ญใƒฃใƒณๆˆฆ็•ฅใ‚’ๆ›ดๆ–ฐใ™ใ‚‹ +* skill-scanner Deployment ใฎ้–ข้€ฃ็’ฐๅขƒๅค‰ๆ•ฐใ‚’ๆ›ดๆ–ฐใ™ใ‚‹ +* rollout ๅฎŒไบ†ใ‚’ๅพ…ใฃใฆๆ–ฐใ—ใ„่จญๅฎšใ‚’ๆญฃๅผใซๆœ‰ๅŠนๅŒ–ใ™ใ‚‹ + +> ่ชฌๆ˜Ž๏ผš +> +> * ใ‚นใ‚ญใƒฃใƒŠใƒผ่จญๅฎšใ‚’ๅค‰ๆ›ดใ—ใŸๅพŒใฏใ€ๆ–ฐใ—ใ„ใ‚นใ‚ญใƒฃใƒณใ‚ฟใ‚นใ‚ฏใ‚’ๅฎŸ่กŒใ™ใ‚‹ๅ‰ใซใ€่จญๅฎšใŒๅฎŒๅ…จใซๆœ‰ๅŠนใซใชใ‚‹ใพใงๅพ…ใคใ“ใจใ‚’ๆŽจๅฅจใ—ใพใ™๏ผ› +> * ่จญๅฎšๅพŒใซๆŽฅ็ถš็Šถๆ…‹ใŒ็•ฐๅธธใซใชใฃใŸๅ ดๅˆใฏใ€AI Gateway ใƒขใƒ‡ใƒซใ€LLM ใ‚ขใƒ‰ใƒฌใ‚นใ€Keyใ€ใŠใ‚ˆใณ Deployment rollout ็Šถๆ…‹ใ‚’ๅ„ชๅ…ˆ็š„ใซ็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚ + +### 9.3 AI Gateway ๆฉŸ่ƒฝๆฆ‚่ฆ + +AI Gateway ใซใฏใ€Œใƒขใƒ‡ใƒซใ€่จญๅฎšไปฅๅค–ใซใ‚‚ใ€ไปฅไธ‹ใฎใƒขใ‚ธใƒฅใƒผใƒซใŒใ‚ใ‚Šใพใ™ใ€‚ + +* **AI ็›ฃๆŸป**๏ผšใƒขใƒ‡ใƒซๅ‘ผใณๅ‡บใ— Traceใ€ใƒชใ‚ฏใ‚จใ‚นใƒˆใจใƒฌใ‚นใƒใƒณใ‚นใฎใƒšใ‚คใƒญใƒผใƒ‰ใ€ๅ‘ฝไธญใ—ใŸใƒชใ‚นใ‚ฏใ€ใƒซใƒผใƒ†ใ‚ฃใƒณใ‚ฐๅˆคๆ–ญใ€ใŠใ‚ˆใณๅ‘ผใณๅ‡บใ—่ฉณ็ดฐใ‚’็ขบ่ชใ—ใพใ™ใ€‚ +* **ใ‚ณใ‚นใƒˆ**๏ผšToken ไฝฟ็”จ้‡ใ€ๆŽจๅฎš่ฒป็”จใ€ๅ†…้ƒจใ‚ณใ‚นใƒˆใ€ใŠใ‚ˆใณใƒˆใƒฌใƒณใƒ‰็ตฑ่จˆใ‚’็ขบ่ชใ—ใพใ™ใ€‚ +* **ใƒชใ‚นใ‚ฏๅˆถๅพกใƒซใƒผใƒซ**๏ผšๆฉŸๅพฎๆคœๅ‡บใƒซใƒผใƒซใ‚’่จญๅฎšใ—ใ€ๅ‘ฝไธญๆ™‚ใซ่จฑๅฏใ™ใ‚‹ใ‹ๅฎ‰ๅ…จใƒขใƒ‡ใƒซใธใƒซใƒผใƒ†ใ‚ฃใƒณใ‚ฐใ™ใ‚‹ใ‹ใ‚’ๅˆถๅพกใ—ใพใ™ใ€‚ + +### 9.4 ใ‚ณใ‚นใƒˆใƒขใ‚ธใƒฅใƒผใƒซ + +ใ‚ณใ‚นใƒˆใƒšใƒผใ‚ธใฏใ€ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ไธŠใฎใƒขใƒ‡ใƒซๅ‘ผใณๅ‡บใ—ใซ้–ขใ™ใ‚‹่ฒป็”จใจ Token ไฝฟ็”จ็Šถๆณใ‚’็ตฑ่จˆใ—ใ€็ฎก็†่€…ใŒๅ…จไฝ“ใฎๆถˆ่ฒป็Šถๆณใ‚’ๆŠŠๆกใ™ใ‚‹ใฎใซๅฝน็ซ‹ใกใพใ™ใ€‚ + +![](./main/6.png) + +ใƒšใƒผใ‚ธใซใฏไธปใซไปฅไธ‹ใฎๅ†…ๅฎนใŒๅซใพใ‚Œใพใ™ใ€‚ + +* **ๅ…ฅๅŠ› Token**๏ผšๅ…ฅๅŠ›ใƒ—ใƒญใƒณใƒ—ใƒˆ็ท้‡ใฎ็ตฑ่จˆ +* **ๅ‡บๅŠ› Token**๏ผšใƒขใƒ‡ใƒซ็”Ÿๆˆๅ†…ๅฎน็ท้‡ใฎ็ตฑ่จˆ +* **ๆŽจๅฎš่ฒป็”จ**๏ผšProvider ๅ˜ไพกใซๅŸบใฅใ„ใฆ่ฆ‹็ฉใ‚‚ใ‚‰ใ‚ŒใŸ่ฒป็”จ +* **ๅ†…้ƒจใ‚ณใ‚นใƒˆ**๏ผšๅฎ‰ๅ…จใƒขใƒ‡ใƒซใซ้–ข้€ฃใ™ใ‚‹ๅ†…้ƒจ็ฒพ็ฎ—ใ‚ณใ‚นใƒˆ +* **ๆ—ฅๆฌก่ฒป็”จใƒˆใƒฌใƒณใƒ‰**๏ผš็›ด่ฟ‘ 7 ๆ—ฅ้–“ใฎ็พๅœจใ‚ฆใ‚ฃใƒณใƒ‰ใ‚ฆๅ†…ใซใŠใ‘ใ‚‹ๆŽจๅฎš่ฒป็”จใจ Token ๅค‰ๅŒ–ใ‚’็ขบ่ช +* **ใƒฆใƒผใ‚ถใƒผ้›†่จˆ**๏ผšใƒฆใƒผใ‚ถใƒผๅ˜ไฝใงไฝฟ็”จ้‡ใจ่ฒป็”จใ‚’้›†่จˆ +* **ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น้›†่จˆ**๏ผšใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นๅ˜ไฝใงไฝฟ็”จ้‡ใจ่ฒป็”จใ‚’้›†่จˆ +* **ๆœ€่ฟ‘ใฎใ‚ณใ‚นใƒˆ่จ˜้Œฒ**๏ผšTraceใ€ใƒฆใƒผใ‚ถใƒผใ€ใƒขใƒ‡ใƒซใชใฉใฎๆกไปถใงใ‚ณใ‚นใƒˆ่จ˜้Œฒใ‚’ๆคœ็ดขใƒปใƒšใƒผใ‚ธ่กจ็คบใ—ใ€ใ•ใ‚‰ใซ็›ฃๆŸป่ฉณ็ดฐใธ้ท็งปๅฏ่ƒฝ + +> ่ชฌๆ˜Ž๏ผš็พๅœจใพใ ใƒขใƒ‡ใƒซๅ‘ผใณๅ‡บใ—่จ˜้ŒฒใŒ็”Ÿๆˆใ•ใ‚Œใฆใ„ใชใ„ๅ ดๅˆใ€ๅ…ฅๅŠ› Tokenใ€ๅ‡บๅŠ› Tokenใ€่ฒป็”จใ€ใŠใ‚ˆใณใƒˆใƒฌใƒณใƒ‰ๅ›ณใŒใ™ในใฆ 0 ใฎๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใŒใ€ใ“ใ‚Œใฏๆญฃๅธธใงใ™ใ€‚ + +### 9.5 AI ็›ฃๆŸปใƒขใ‚ธใƒฅใƒผใƒซ + +AI ็›ฃๆŸปใƒšใƒผใ‚ธใฏใ€ๆœ€่ฟ‘ใฎ็ฎก็†ๅฏพ่ฑกใƒขใƒ‡ใƒซๅ‘ผใณๅ‡บใ—่จ˜้Œฒใ‚’็ขบ่ชใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ•ใ‚Œใ€็ฎก็†่€…ใŒใƒขใƒ‡ใƒซๅ‘ผใณๅ‡บใ—ใ€Token ไฝฟ็”จใ€ใŠใ‚ˆใณใƒซใƒผใƒ†ใ‚ฃใƒณใ‚ฐ็ตๆžœใ‚’่ชฟๆŸปใ™ใ‚‹ใฎใซๅฝน็ซ‹ใกใพใ™ใ€‚ + +![](./main/7.png) + +ไธปใชๆฉŸ่ƒฝใฏไปฅไธ‹ใฎ้€šใ‚Šใงใ™ใ€‚ + +* **ๆœ€่ฟ‘ใฎ AI Trace**๏ผšๆœ€่ฟ‘ใฎใƒขใƒ‡ใƒซๅ‘ผใณๅ‡บใ—ใƒใ‚งใƒผใƒณใ‚’็ขบ่ช +* **Trace ใƒชใ‚นใƒˆ**๏ผšๆœ€่ฟ‘ใฎ็ฎก็†ๅฏพ่ฑก Trace ใ‚’็ตฑไธ€ใƒ†ใƒผใƒ–ใƒซใง็ขบ่ช +* **ๆคœ็ดขใจใƒ•ใ‚ฃใƒซใ‚ฟใƒชใƒณใ‚ฐ**๏ผšTraceใ€ใƒชใ‚ฏใ‚จใ‚นใƒˆๅ†…ๅฎนใ€ใƒฆใƒผใ‚ถใƒผใ€ใƒขใƒ‡ใƒซใชใฉใฎๆกไปถใงๆคœ็ดขๅฏ่ƒฝ +* **็Šถๆ…‹ใƒ•ใ‚ฃใƒซใ‚ฟ**๏ผš็Šถๆ…‹ๅˆฅใซ็•ฐใชใ‚‹ๅ‘ผใณๅ‡บใ—็ตๆžœใ‚’็ขบ่ชๅฏ่ƒฝ +* **ใƒขใƒ‡ใƒซใƒ•ใ‚ฃใƒซใ‚ฟ**๏ผšใƒขใƒ‡ใƒซๅˆฅใซๅฏพๅฟœใ™ใ‚‹ๅ‘ผใณๅ‡บใ—่จ˜้Œฒใ‚’็ตžใ‚Š่พผใฟๅฏ่ƒฝ +* **ใƒšใƒผใ‚ธใƒใƒผใ‚ทใƒงใƒณใจๆ›ดๆ–ฐ**๏ผš็›ฃๆŸป็ตๆžœใฎใƒšใƒผใ‚ธ่กจ็คบใŠใ‚ˆใณๆ‰‹ๅ‹•ๆ›ดๆ–ฐใซๅฏพๅฟœ + +> ่ชฌๆ˜Ž๏ผšใƒšใƒผใ‚ธใซใ€Œใพใ  AI ็›ฃๆŸป่จ˜้Œฒใฏใ‚ใ‚Šใพใ›ใ‚“ใ€ใจ่กจ็คบใ•ใ‚Œใ‚‹ๅ ดๅˆใ€ใพใ ๅฎŸ้š›ใฎใƒขใƒ‡ใƒซๅ‘ผใณๅ‡บใ—ใƒชใ‚ฏใ‚จใ‚นใƒˆใŒ็”Ÿๆˆใ•ใ‚Œใฆใ„ใชใ„ใ“ใจใ‚’ๆ„ๅ‘ณใ—ใพใ™ใ€‚ + +### 9.6 ใƒชใ‚นใ‚ฏๅˆถๅพกใƒซใƒผใƒซใƒขใ‚ธใƒฅใƒผใƒซ + +ใƒชใ‚นใ‚ฏๅˆถๅพกใƒซใƒผใƒซใƒšใƒผใ‚ธใฏใ€ๆฉŸๅพฎๅ†…ๅฎนใฎๆคœๅ‡บใƒซใƒผใƒซใ‚’่จญๅฎšใ—ใ€ใƒซใƒผใƒซๅ‘ฝไธญๅพŒใฎๅ‡ฆ็†ๅ‹•ไฝœใ‚’ๆฑบๅฎšใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚ + +![](./main/8.png) + +ใ“ใฎใƒขใ‚ธใƒฅใƒผใƒซใงใฏไธปใซไปฅไธ‹ใ‚’ใ‚ตใƒใƒผใƒˆใ—ใพใ™ใ€‚ + +* **ใƒซใƒผใƒซไธ€่ฆง็ฎก็†**๏ผšใ™ในใฆใฎใƒซใƒผใƒซใจใใฎๆœ‰ๅŠน็Šถๆ…‹ใ‚’็ขบ่ช +* **ใƒซใƒผใƒซๅˆ†้กž่กจ็คบ**๏ผšๅ€‹ไบบๆƒ…ๅ ฑใ€ไผš็คพๆƒ…ๅ ฑใ€้กงๅฎขๆฅญๅ‹™ใ€ๅฎ‰ๅ…จ่ณ‡ๆ ผๆƒ…ๅ ฑใ€่ฒกๅ‹™ๆณ•ๅ‹™ใ€ๆ”ฟๆฒป็š„ๆฉŸๅพฎใ€ใ‚ซใ‚นใ‚ฟใƒ ใชใฉใฎๅˆ†้กžใงใƒซใƒผใƒซใ‚’็ขบ่ชๅฏ่ƒฝ +* **ใƒซใƒผใƒซ้ …็›ฎ่จญๅฎš**๏ผšใƒซใƒผใƒซ IDใ€่กจ็คบๅใ€้‡่ฆๅบฆใ€ใ‚ขใ‚ฏใ‚ทใƒงใƒณใ€้ †ๅบใ€ๆญฃ่ฆ่กจ็พ Patternใ€่ชฌๆ˜Žใ‚’่จญๅฎšๅฏ่ƒฝ +* **ใƒซใƒผใƒซๅ‹•ไฝœๅˆถๅพก**๏ผšใƒซใƒผใƒซๅ‘ฝไธญๆ™‚ใซ้€š้Žใ•ใ›ใ‚‹ใ‹ใ€ๅฎ‰ๅ…จใƒขใƒ‡ใƒซใธใƒซใƒผใƒ†ใ‚ฃใƒณใ‚ฐใ™ใ‚‹ใ‹ใ‚’้ธๆŠžๅฏ่ƒฝ +* **ไธ€ๆ‹ฌๆœ‰ๅŠนๅŒ– / ็„กๅŠนๅŒ–**๏ผšใƒซใƒผใƒซ็Šถๆ…‹ใฎไธ€ๆ‹ฌ่ชฟๆ•ดใซๅฏพๅฟœ +* **ใƒซใƒผใƒซใƒ†ใ‚นใƒˆๅฐ**๏ผšใ‚ตใƒณใƒ—ใƒซใƒ†ใ‚ญใ‚นใƒˆใ‚’่ฒผใ‚Šไป˜ใ‘ใฆใ€ๆœ‰ๅŠนใƒซใƒผใƒซใพใŸใฏไธ‹ๆ›ธใใƒซใƒผใƒซใŒไฝ•ใซๅ‘ฝไธญใ™ใ‚‹ใ‹ใ‚’ใƒ†ใ‚นใƒˆๅฏ่ƒฝ + +็พๅœจใฎๅ†…่”ตใƒซใƒผใƒซไพ‹ใซใฏไปฅไธ‹ใŒๅซใพใ‚Œใพใ™ใŒใ€ใ“ใ‚Œใ‚‰ใซ้™ๅฎšใ•ใ‚Œใพใ›ใ‚“ใ€‚ + +* ๅ€‹ไบบๆƒ…ๅ ฑ๏ผšใƒกใƒผใƒซใ‚ขใƒ‰ใƒฌใ‚นใ€ๆบๅธฏ้›ป่ฉฑ็•ชๅทใ€่บซๅˆ†่จผ็•ชๅทใ€ใƒ‘ใ‚นใƒใƒผใƒˆ็•ชๅทใ€้Š€่กŒใ‚ซใƒผใƒ‰ๆ–‡่„ˆใ€ไฝๆ‰€ใ€ๅฑฅๆญดๆ›ธๅ†…ๅฎนใชใฉ +* ไผš็คพๆƒ…ๅ ฑ๏ผšๅ†…้ƒจ IPใ€ๅ†…้ƒจใƒ‰ใƒกใ‚คใƒณใ€ใƒ›ใ‚นใƒˆๅ‘ฝๅใ€Kubernetes Service DNSใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚ณใƒผใƒ‰ๅใ€็ต„็น”ๆง‹ๆˆใ€็ตฆไธŽ / HR ๆƒ…ๅ ฑใชใฉ +* ้กงๅฎขๆฅญๅ‹™๏ผš้กงๅฎขใƒชใ‚นใƒˆใ€ๅฅ‘็ด„ / ่ฆ‹็ฉๆ›ธใ€่ซ‹ๆฑ‚็จŽ็•ชๅทใ€CRM / ใƒใ‚ฑใƒƒใƒˆใƒ‡ใƒผใ‚ฟใชใฉ +* ๅฎ‰ๅ…จ่ณ‡ๆ ผๆƒ…ๅ ฑ๏ผš็ง˜ๅฏ†้ตใ€API Keyใ€Tokenใ€JWTใ€Cookie / Sessionใ€ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นๆŽฅ็ถšๆ–‡ๅญ—ๅˆ—ใ€Kubeconfigใ€็’ฐๅขƒๅค‰ๆ•ฐ็ง˜ๅฏ†ๆƒ…ๅ ฑใชใฉ +* ่ฒกๅ‹™ๆณ•ๅ‹™๏ผšไบˆ็ฎ—ใ€ๅˆฉ็›Šใ€ๅฃฒไธŠใ€ๆณ•ๅ‹™ๆ„่ฆ‹ใ€่จด่จŸใ€NDA ใชใฉ +* ๆ”ฟๆฒป็š„ๆฉŸๅพฎ๏ผšๆ”ฟๆฒปๆฉŸ้–ขใ€่ปไบ‹ๅ›ฝๅฎถๅฎ‰ๅ…จใ€ๆฅต็ซฏๆšดๅŠ›ใซ้–ขใ™ใ‚‹่กจ็พใชใฉ + +> ่ชฌๆ˜Ž๏ผšใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใƒซใƒผใƒซใฏๅคšใใฎไธ€่ˆฌ็š„ใชๆฉŸๅพฎๆƒ…ๅ ฑๆคœๅ‡บใ‚ทใƒŠใƒชใ‚ชใ‚’ใ™ใงใซใ‚ซใƒใƒผใ—ใฆใ„ใพใ™ใ€‚ๅฎŸ้š›ใฎๅˆฉ็”จใงใฏใ€ๆฅญๅ‹™่ฆไปถใซๅฟœใ˜ใฆใƒซใƒผใƒซใ‚’่ฟฝๅŠ ใ€่ชฟๆ•ดใ€ใพใŸใฏ็„กๅŠนๅŒ–ใงใใพใ™ใ€‚ +--- + + +## ๅใ€ใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นใƒขใ‚ธใƒฅใƒผใƒซใฎ่ชฌๆ˜Ž + +ใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นใฏใ€ไธ€่ˆฌใƒฆใƒผใ‚ถใƒผใŒใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใซๅ…ฅใฃใŸๅพŒใฎไธป่ฆใชๆ“ไฝœ้ ˜ๅŸŸใงใ™ใ€‚ๅ€‹ไบบใฎใƒชใ‚ฝใƒผใ‚นใ‚ฏใ‚ฉใƒผใ‚ฟ็ขบ่ชใ€ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นไฝœๆˆใ€ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น็ฎก็†ใ€ใŠใ‚ˆใณ OpenClaw ้–ข้€ฃใƒชใ‚ฝใƒผใ‚นใฎ็ถญๆŒใซไฝฟ็”จใ—ใพใ™ใ€‚ใ“ใฎใƒขใ‚ธใƒฅใƒผใƒซใฏใ€็ฎก็†่€…ๅดใฎใ€Œใ‚ณใƒณใ‚ฝใƒผใƒซๆฆ‚่ฆใ€ใจใฏ็•ฐใชใ‚Šใ€ๆ—ฅๅธธๅˆฉ็”จใจ้‹็”จๅฏ„ใ‚ŠใฎๆฉŸ่ƒฝใงใ™ใ€‚ + +### 10.1 ใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นใƒ›ใƒผใƒ  +![](./main/9.png) +ใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นใƒ›ใƒผใƒ ใฏใ€็พๅœจใฎใ‚ขใ‚ซใ‚ฆใƒณใƒˆใซใŠใ‘ใ‚‹ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใจใƒชใ‚ฝใƒผใ‚นไฝฟ็”จ็Šถๆณใฎๆฆ‚่ฆใ‚’่กจ็คบใ™ใ‚‹ใŸใ‚ใฎใ‚‚ใฎใงใ€ไธปใซไปฅไธ‹ใ‚’ๅซใฟใพใ™๏ผš + +- **ใƒžใ‚คใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น**๏ผš็พๅœจใฎใ‚ขใ‚ซใ‚ฆใƒณใƒˆใงไฝœๆˆใ•ใ‚ŒใŸใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นๆ•ฐใ‚’่กจ็คบใ—ใพใ™ใ€‚ +- **็จผๅƒไธญ**๏ผš็พๅœจๅฎŸ่กŒไธญใฎใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นๆ•ฐใ‚’่กจ็คบใ—ใพใ™ใ€‚ +- **ไฝฟ็”จๆธˆใฟใ‚นใƒˆใƒฌใƒผใ‚ธ**๏ผš็พๅœจใฎใ‚ขใ‚ซใ‚ฆใƒณใƒˆใŒไฝฟ็”จใ—ใฆใ„ใ‚‹ใ‚นใƒˆใƒฌใƒผใ‚ธๅฎน้‡ใ‚’่กจ็คบใ—ใพใ™ใ€‚ +- **ใƒžใ‚คใƒชใ‚ฝใƒผใ‚นใ‚ฏใ‚ฉใƒผใ‚ฟ**๏ผš็พๅœจใฎใ‚ขใ‚ซใ‚ฆใƒณใƒˆใงไฝฟ็”จๅฏ่ƒฝใชใ‚ฏใ‚ฉใƒผใ‚ฟๆƒ…ๅ ฑ๏ผˆใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นๆ•ฐใ€ๆœ€ๅคง CPU ใ‚ณใ‚ขๆ•ฐใ€ๆœ€ๅคงใƒกใƒขใƒชใ€ๆœ€ๅคงใ‚นใƒˆใƒฌใƒผใ‚ธใ€ๆœ€ๅคง GPU ๆ•ฐ๏ผ‰ใ‚’่กจ็คบใ—ใพใ™ใ€‚ +- **ใ‚ฏใ‚คใƒƒใ‚ฏๆ“ไฝœ**๏ผš**ๆ–ฐ่ฆใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นไฝœๆˆ** ใจ **ๅ…จใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น่กจ็คบ** ใฎ 2 ใคใฎๅ…ฅๅฃใ‚’ๆไพ›ใ—ใ€็ด ๆ—ฉใใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใ‚’ไฝฟใ„ๅง‹ใ‚ใ‚‰ใ‚Œใพใ™ใ€‚ + +> ๆณจ๏ผšใƒšใƒผใ‚ธใซใ€Œใพใ ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใŒใ‚ใ‚Šใพใ›ใ‚“ใ€ใจ่กจ็คบใ•ใ‚Œใ‚‹ๅ ดๅˆใฏใ€็›ดๆŽฅ **ๆ–ฐ่ฆใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นไฝœๆˆ** ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใฆๆœ€ๅˆใฎ OpenClaw Desktop ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นไฝœๆˆใ‚’้–‹ๅง‹ใงใใพใ™ใ€‚ + +### 10.2 ใƒžใ‚คใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น + +**ใƒžใ‚คใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น** ใƒšใƒผใ‚ธใฏใ€็พๅœจใฎใ‚ขใ‚ซใ‚ฆใƒณใƒˆใงไฝœๆˆใ•ใ‚ŒใŸใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ไธ€ๅ…ƒ็š„ใซ่กจ็คบใƒป็ฎก็†ใ™ใ‚‹ใŸใ‚ใฎใƒšใƒผใ‚ธใงใ™ใ€‚ใ“ใฎใƒšใƒผใ‚ธใฏไธปใซใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น็ฎก็†ๆฉŸ่ƒฝใ‚’ๆ‹…ๅฝ“ใ—ใพใ™ใ€‚ +![](./main/10.png) +ไธ€่ˆฌ็š„ใซใ‚ตใƒใƒผใƒˆใ•ใ‚Œใ‚‹ๆ“ไฝœใฏๆฌกใฎใจใŠใ‚Šใงใ™๏ผš + +- **ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น็Šถๆ…‹ใฎ็ขบ่ช**๏ผšใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใŒไฝœๆˆไธญใ€็จผๅƒไธญใ€ๅœๆญขๆธˆใฟใ€ใพใŸใฏ็•ฐๅธธ็Šถๆ…‹ใ‹ใ‚’็ขบ่ชใ—ใพใ™ใ€‚ +- **ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น่ฉณ็ดฐใซๅ…ฅใ‚‹**๏ผšใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใฎๅŸบๆœฌๆƒ…ๅ ฑใ€ใƒชใ‚ฝใƒผใ‚นๆง‹ๆˆใ€ใŠใ‚ˆใณๅฎŸ่กŒ็Šถๆณใ‚’็ขบ่ชใ—ใพใ™ใ€‚ +- **ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นๅœๆญข**๏ผšใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใŒ็•ฐๅธธใชๅ ดๅˆใ‚„็’ฐๅขƒใฎๅ†่ชญใฟ่พผใฟใŒๅฟ…่ฆใชๅ ดๅˆใซใ€ๅœๆญขๆ“ไฝœใ‚’ๅฎŸ่กŒใงใใพใ™ใ€‚ +- **ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นๅ‰Š้™ค**๏ผšใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใŒไธ่ฆใซใชใฃใŸๅ ดๅˆใ€CPUใ€ใƒกใƒขใƒชใ€ใ‚นใƒˆใƒฌใƒผใ‚ธใชใฉใฎใƒชใ‚ฝใƒผใ‚นใ‚’่งฃๆ”พใ™ใ‚‹ใŸใ‚ใซ็›ดๆŽฅๅ‰Š้™คใงใใพใ™ใ€‚ + +> ๆณจ๏ผšใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ๅ‰Š้™คใ™ใ‚‹ใจใ€ใใฎใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใซ้–ข้€ฃใ™ใ‚‹ใƒชใ‚ฝใƒผใ‚นใ‚‚ไธ€็ท’ใซใ‚ฏใƒชใƒผใƒณใ‚ขใƒƒใƒ—ใ•ใ‚Œใพใ™ใ€‚ๅฎŸ่กŒๅ‰ใซใ€ไธญใฎใƒ‡ใƒผใ‚ฟใ‚„่จญๅฎšใŒใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ๆธˆใฟใ‹็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚ + +### 10.3 ใƒชใ‚ฝใƒผใ‚น็ฎก็† + +**ใƒชใ‚ฝใƒผใ‚น็ฎก็†** ใƒšใƒผใ‚ธใฏใ€ๅˆฉ็”จๅฏ่ƒฝใช OpenClaw ใƒชใ‚ฝใƒผใ‚นๅ†…ๅฎนใ‚’ไฟๅฎˆใ—ใ€ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น่ตทๅ‹•ๅพŒใซๆณจๅ…ฅใ—ใฆไฝฟ็”จใ—ใ‚„ใ™ใใ™ใ‚‹ใŸใ‚ใฎใ‚‚ใฎใงใ™ใ€‚ +![](./main/11.png) +ใƒšใƒผใ‚ธใซใฏไธปใซไปฅไธ‹ใฎ้ƒจๅˆ†ใŒใ‚ใ‚Šใพใ™๏ผš + +- **ใƒชใ‚ฝใƒผใ‚น**๏ผšๅˆฉ็”จๅฏ่ƒฝใชใƒชใ‚ฝใƒผใ‚น้ …็›ฎใ‚’่กจ็คบใƒปไฟๅฎˆใ—ใพใ™ใ€‚ +- **ใƒชใ‚ฝใƒผใ‚นใƒ‘ใƒƒใ‚ฏ**๏ผš่ค‡ๆ•ฐใฎใƒชใ‚ฝใƒผใ‚นใ‚’ๅ†ๅˆฉ็”จๅฏ่ƒฝใชใƒ‘ใƒƒใ‚ฏใจใ—ใฆ็ต„ใฟๅˆใ‚ใ›ใ€ไธ€ๆ‹ฌๆณจๅ…ฅใ‚’ๅฎนๆ˜“ใซใ—ใพใ™ใ€‚ +- **ๆณจๅ…ฅ่จ˜้Œฒ**๏ผšใƒชใ‚ฝใƒผใ‚นๆณจๅ…ฅใฎๅฑฅๆญดใจๅฎŸ่กŒ็Šถๆณใ‚’็ขบ่ชใ—ใพใ™ใ€‚ + +ใƒชใ‚ฝใƒผใ‚น็ฎก็†ใƒšใƒผใ‚ธใฎๅทฆๅดใงใฏใ€ใƒชใ‚ฝใƒผใ‚นใ‚ฟใ‚คใƒ—ใ”ใจใซๅˆ†้กžใ—ใฆ็ฎก็†ใ™ใ‚‹ใ“ใจใ‚‚ใงใใพใ™ใ€‚็พๅœจใƒšใƒผใ‚ธไธŠใง็ขบ่ชใงใใ‚‹ใ‚ฟใ‚คใƒ—ใฏๆฌกใฎใจใŠใ‚Šใงใ™๏ผš + +- **ใƒใƒฃใƒใƒซ** +- **ใ‚นใ‚ญใƒซ** +- **ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ๏ผˆ่ฟ‘ๆ—ฅๅ…ฌ้–‹๏ผ‰** +- **ๅฎšๆœŸใ‚ฟใ‚นใ‚ฏ๏ผˆ่ฟ‘ๆ—ฅๅ…ฌ้–‹๏ผ‰** + +ใƒšใƒผใ‚ธๅณไธŠใงใฏๆฌกใ‚’ใ‚ตใƒใƒผใƒˆใ—ใพใ™๏ผš + +- **ๆ›ดๆ–ฐ**๏ผš็พๅœจใฎใƒชใ‚ฝใƒผใ‚นไธ€่ฆงใ‚’ๅ†่ชญใฟ่พผใฟใ—ใพใ™ใ€‚ +- **ๆ–ฐ่ฆไฝœๆˆ**๏ผšๆ–ฐใ—ใ„ใƒชใ‚ฝใƒผใ‚น้ …็›ฎใ‚’ไฝœๆˆใ—ใพใ™ใ€‚ + +> ๆณจ๏ผšใƒชใ‚ฝใƒผใ‚น็ฎก็†ใฏไธปใซใ€ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚น่ตทๅ‹•ๅพŒใซไฝฟ็”จใงใใ‚‹ OpenClaw ใƒชใ‚ฝใƒผใ‚นๅ†…ๅฎนใ‚’ๆบ–ๅ‚™ใ™ใ‚‹ใŸใ‚ใฎใ‚‚ใฎใงใ‚ใ‚Šใ€ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นไฝœๆˆใƒ•ใƒญใƒผใใฎใ‚‚ใฎใ‚’็›ดๆŽฅ็ฝฎใๆ›ใˆใ‚‹ใ‚‚ใฎใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นไฝœๆˆๆ™‚ใซใฏใ€**ๆ‰‹ๅ‹•ใƒชใ‚ฝใƒผใ‚น**ใ€**ใƒชใ‚ฝใƒผใ‚นใƒ‘ใƒƒใ‚ฏ**ใ€**ใ‚ขใƒผใ‚ซใ‚คใƒ–ๅฐŽๅ…ฅ** ใชใฉใฎๆ–นๅผใจ็ต„ใฟๅˆใ‚ใ›ใฆใƒชใ‚ฝใƒผใ‚นๆณจๅ…ฅใ‚’่กŒใˆใพใ™ใ€‚ + +### 10.3.1 ใƒใƒฃใƒณใƒใƒซใฎๆ–ฐ่ฆไฝœๆˆ + +ใ€Œใƒใƒฃใƒณใƒใƒซใ€ใฏใ€OpenClaw ใจๅค–้ƒจใƒกใƒƒใ‚ปใƒผใ‚ธใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใพใŸใฏๆŽฅ็ถšๅ…ˆใจใฎๆŽฅ็ถšๆ–นๆณ•ใ‚’่จญๅฎšใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ—ใพใ™ใ€‚ไพ‹ใจใ—ใฆ Telegramใ€Slackใ€Feishu / Lark ใชใฉใŒใ‚ใ‚Šใพใ™ใ€‚ + +![](./main/12.png) + +ใƒใƒฃใƒณใƒใƒซใ‚’ไฝœๆˆใ™ใ‚‹้š›ใฏใ€ไปฅไธ‹ใฎๆ‰‹้ †ใงๆ“ไฝœใ—ใพใ™ใ€‚ + +1. **ใƒชใ‚ฝใƒผใ‚น็ฎก็†** ใƒšใƒผใ‚ธใซๅ…ฅใ‚Šใ€**ใƒชใ‚ฝใƒผใ‚น** ใ‚ฟใƒ–ใฎใพใพใซใ—ใพใ™ใ€‚ +2. ๅทฆๅดใฎใƒชใ‚ฝใƒผใ‚นใ‚ฟใ‚คใƒ—ใง **ใƒใƒฃใƒณใƒใƒซ** ใ‚’้ธๆŠžใ—ใพใ™ใ€‚ +3. ใƒšใƒผใ‚ธๅณๅดใฎ **ๆ–ฐ่ฆไฝœๆˆ** ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใ€ใ€Œๆ–ฐ่ฆใƒชใ‚ฝใƒผใ‚นใ€ใƒ€ใ‚คใ‚ขใƒญใ‚ฐใ‚’้–‹ใใพใ™ใ€‚ +4. ใƒ€ใ‚คใ‚ขใƒญใ‚ฐใงๅŸบๆœฌๆƒ…ๅ ฑใ‚’ๅ…ฅๅŠ›ใ—ใพใ™ใ€‚ + - **ใ‚ฟใ‚คใƒ—**๏ผš**ใƒใƒฃใƒณใƒใƒซ** ใ‚’้ธๆŠž + - **ใƒชใ‚ฝใƒผใ‚น Key**๏ผšใ“ใฎใƒใƒฃใƒณใƒใƒซใฎไธ€ๆ„ใช่ญ˜ๅˆฅๅญใ‚’ๅ…ฅๅŠ›ใ—ใพใ™ใ€‚่ญ˜ๅˆฅใ—ใ‚„ใ™ใใ€้‡่ค‡ใ—ใชใ„่‹ฑ่ชžๅใพใŸใฏ็ต„ใฟๅˆใ‚ใ›ๅใ‚’ไฝฟ็”จใ™ใ‚‹ใ“ใจใ‚’ๆŽจๅฅจใ—ใพใ™ + - **ๅๅ‰**๏ผšใƒใƒฃใƒณใƒใƒซใฎ่กจ็คบๅใ‚’ๅ…ฅๅŠ›ใ—ใพใ™ + - **ใ‚ฟใ‚ฐ**๏ผšไปปๆ„ใ€ๅˆ†้กžๆคœ็ดขใซไฝฟ็”จใ—ใพใ™ + - **่ชฌๆ˜Ž**๏ผšไปปๆ„ใ€ใ“ใฎใƒใƒฃใƒณใƒใƒซใฎ็”จ้€”ใ‚’่ฃœ่ถณใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ—ใพใ™ + - **ๆœ‰ๅŠนๅŒ–ๆธˆใฟ**๏ผšใƒใ‚งใƒƒใ‚ฏใ‚’ๅ…ฅใ‚ŒใŸใพใพใซใ™ใ‚‹ใ“ใจใ‚’ๆŽจๅฅจใ—ใพใ™ +5. **Channel ใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆ** ้ ˜ๅŸŸใงๅˆๆœŸใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆใ‚’้ธๆŠžใ—ใพใ™ใ€‚็พๅœจใ‚ตใƒใƒผใƒˆใ•ใ‚Œใฆใ„ใ‚‹ใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆใฏไปฅไธ‹ใฎ้€šใ‚Šใงใ™ใ€‚ + - `Telegram` + - `Slack` + - `Feishu / Lark` + +6. ใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆใ‚’้ธๆŠžใ—ใŸๅพŒใ€**ใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆใ‚’่ชญใฟ่พผใ‚€** ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใพใ™ใ€‚ใ‚ทใ‚นใƒ†ใƒ ใฏๅฏพๅฟœใ™ใ‚‹ใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆใฎๅŸบๆœฌ่จญๅฎšใ‚’ไธ‹้ƒจใฎ **ๅ†…ๅฎน JSON** ้ ˜ๅŸŸใซ่‡ชๅ‹•ใงๆ›ธใ่พผใฟใพใ™ใ€‚ +7. ๅฎŸ้š›ใฎๆŽฅ็ถšๆƒ…ๅ ฑใซๅŸบใฅใ„ใฆใ€**ๅ†…ๅฎน JSON** ๅ†…ใฎๅ„ใƒ•ใ‚ฃใƒผใƒซใƒ‰ใ‚’่ฟฝๅŠ ใพใŸใฏไฟฎๆญฃใ—ใพใ™ใ€‚ +8. ่จญๅฎšๅ†…ๅฎนใซ่ชคใ‚ŠใŒใชใ„ใ“ใจใ‚’็ขบ่ชใ—ใŸใ‚‰ใ€ไฟๅญ˜ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใฆใƒใƒฃใƒณใƒใƒซไฝœๆˆใ‚’ๅฎŒไบ†ใ—ใพใ™ใ€‚ + +> ่ชฌๆ˜Ž๏ผš +> - **Channel ใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆ** ใฏๅŸบๆœฌ่จญๅฎšใ‚’็ด ๆ—ฉใ็”Ÿๆˆใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ—ใพใ™๏ผ› +> - **ๅ†…ๅฎน JSON** ใฏๆœ€็ต‚็š„ใซๆœ‰ๅŠนใจใชใ‚‹ใƒใƒฃใƒณใƒใƒซ่จญๅฎšๅ†…ๅฎนใงใ™๏ผ› +> - ๅฎŒๅ…จใซไธ€่‡ดใ™ใ‚‹ใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆใŒใชใ„ๅ ดๅˆใฏใ€**ๅ†…ๅฎน JSON** ใซ็›ดๆŽฅๆ‰‹ๅ‹•ใง่จญๅฎšใ‚’่จ˜ๅ…ฅใ™ใ‚‹ใ“ใจใ‚‚ใงใใพใ™ใ€‚ + +### 10.3.2 ใ‚นใ‚ญใƒซใฎใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ + +ใ‚นใ‚ญใƒซใฏใ€OpenClaw ใซๅ†ๅˆฉ็”จๅฏ่ƒฝใชๆฉŸ่ƒฝใ‚’ๆไพ›ใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ—ใพใ™ใ€‚ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใฏใ€ใ‚ขใƒผใ‚ซใ‚คใƒ–ใƒ•ใ‚กใ‚คใƒซใ‚’ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ™ใ‚‹ใ“ใจใงใ‚นใ‚ญใƒซใ‚’ไธ€ๆ‹ฌใ‚คใƒณใƒใƒผใƒˆใ™ใ‚‹ใ“ใจใ‚’ใ‚ตใƒใƒผใƒˆใ—ใฆใ„ใพใ™ใ€‚ + +![](./main/13.png) + +ใ‚นใ‚ญใƒซใ‚’ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ™ใ‚‹้š›ใฏใ€ไปฅไธ‹ใฎๆ‰‹้ †ใงๆ“ไฝœใ—ใพใ™ใ€‚ + +1. **ใƒชใ‚ฝใƒผใ‚น็ฎก็†** ใƒšใƒผใ‚ธใซๅ…ฅใ‚Šใ€**ใƒชใ‚ฝใƒผใ‚น** ใ‚ฟใƒ–ใฎใพใพใซใ—ใพใ™ใ€‚ +2. ๅทฆๅดใฎใƒชใ‚ฝใƒผใ‚นใ‚ฟใ‚คใƒ—ใง **ใ‚นใ‚ญใƒซ** ใ‚’้ธๆŠžใ—ใพใ™ใ€‚ +3. **ใƒ•ใ‚กใ‚คใƒซใ‚’้ธๆŠž** ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใ€ใƒญใƒผใ‚ซใƒซใฎใ‚นใ‚ญใƒซๅœง็ธฎใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใ‚’้ธๆŠžใ—ใพใ™ใ€‚ +4. ็พๅœจใฎใƒšใƒผใ‚ธใงใฏ **`.zip`** ใƒ•ใ‚กใ‚คใƒซใฎใฟใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ‚’ใ‚ตใƒใƒผใƒˆใ—ใฆใ„ใพใ™ใ€‚ +5. ้ธๆŠžๅฎŒไบ†ๅพŒใ€ๅณๅดใฎ **ใ‚นใ‚ญใƒซใ‚ขใƒผใ‚ซใ‚คใƒ–ใ‚’ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰** ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใพใ™ใ€‚ +6. ใ‚ทใ‚นใƒ†ใƒ ใฏใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ๅ†…ๅฎนใ‚’่‡ชๅ‹•่งฃๆžใ—ใ€ๅ„็ฌฌ1้šŽๅฑคใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใ‚’1ใคใฎใ‚นใ‚ญใƒซใจใ—ใฆใ‚คใƒณใƒใƒผใƒˆใ—ใพใ™ใ€‚ +7. ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ๅฎŒไบ†ๅพŒใ€ใ‚นใ‚ญใƒซไธ€่ฆงใงใ‚คใƒณใƒใƒผใƒˆๆธˆใฟใฎใ‚นใ‚ญใƒซใ‚’็ขบ่ชใงใใพใ™ใ€‚ + +> ่ชฌๆ˜Ž๏ผš +> - ใ‚นใ‚ญใƒซใ‚ขใƒผใ‚ซใ‚คใƒ–ใฏไบ‹ๅ‰ใซใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชๆง‹ๆˆใ‚’ๆ•ด็†ใ—ใฆใŠใใ“ใจใ‚’ๆŽจๅฅจใ—ใพใ™๏ผ› +> - ๅ„็ฌฌ1้šŽๅฑคใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใฏ็‹ฌ็ซ‹ใ—ใŸใ‚นใ‚ญใƒซใจใ—ใฆ่ช่ญ˜ใ•ใ‚Œใพใ™๏ผ› +> - ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ๅพŒใซไธ€่ฆงใŒใ™ใๆ›ดๆ–ฐใ•ใ‚Œใชใ„ๅ ดๅˆใฏใ€ใƒšใƒผใ‚ธๅณไธŠใฎ **ๆ›ดๆ–ฐ** ใ‚’ๆ‰‹ๅ‹•ใงใ‚ฏใƒชใƒƒใ‚ฏใ—ใฆๅ†่ชญใฟ่พผใฟใ—ใฆใใ ใ•ใ„ใ€‚ +--- + + +## ๅไธ€ใ€ๅ•้กŒใจๅฏพๅ‡ฆใฎใ‚ฏใ‚คใƒƒใ‚ฏใƒชใƒ•ใ‚กใƒฌใƒณใ‚น + + +### 11.1 ใ‚นใƒˆใƒฌใƒผใ‚ธๅ•้กŒใฎๅฐ‚็”จๅฏพๅฟœ๏ผˆPV/PVC๏ผ‰ + +ๆฌกใฎใ‚จใƒฉใƒผใŒ่กจ็คบใ•ใ‚ŒใŸๅ ดๅˆ๏ผš + +```text +0/1 nodes are available: pod has unbound immediate PersistentVolumeClaims +``` + +ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใฎใ‚นใƒˆใƒฌใƒผใ‚ธใŒ่‡ชๅ‹•ใงใƒใ‚คใƒณใƒ‰ใ•ใ‚Œใฆใ„ใชใ„ใ“ใจใ‚’ๆ„ๅ‘ณใ—ใพใ™ใ€‚ใ“ใฎๅ ดๅˆใฏใ€x86 ๅ˜ไธ€ใƒŽใƒผใƒ‰ใ‚ตใƒผใƒใƒผๆ–นๅผใงใƒญใƒผใ‚ซใƒซ `hostPath` PV/PVC ใ‚’ๆ‰‹ๅ‹•ไฝœๆˆใงใใพใ™ใ€‚ + +> ใ“ใฎๆ–นๅผใฏๅ˜ไธ€ใƒŽใƒผใƒ‰ใ‚ตใƒผใƒใƒผใฎใƒ†ใ‚นใƒˆใพใŸใฏ่ปฝ้‡็’ฐๅขƒใซ้ฉใ—ใฆใ„ใพใ™ใ€‚ๆœฌ็•ช็’ฐๅขƒใงใฏ NFSใ€Cephใ€ใ‚ฏใƒฉใ‚ฆใƒ‰ใƒ‡ใ‚ฃใ‚นใ‚ฏใชใฉใฎๆญฃๅผใชใ‚นใƒˆใƒฌใƒผใ‚ธใฎไฝฟ็”จใ‚’ๆŽจๅฅจใ—ใพใ™ใ€‚ + +#### 11.1.1 PV ใฎไฝœๆˆ +```bash +kubectl apply -f - < +## ๅไบŒใ€ๆŽจๅฅจใ•ใ‚Œใ‚‹ๆœ€็ต‚็ขบ่ชๆ‰‹้ †๏ผˆใ‚ปใƒซใƒ•ใƒใ‚งใƒƒใ‚ฏ็”จ๏ผ‰ +1. `kubectl get nodes` +2. `kubectl get storageclass` +3. `kubectl get pods -n clawmanager-system` +4. `kubectl get pvc -n clawmanager-system` +5. `kubectl get svc -n clawmanager-system` +6. ใƒ–ใƒฉใ‚ฆใ‚ถใง `https://:30443` ใ‚’้–‹ใ +7. ใƒใƒƒใ‚ฏใ‚จใƒณใƒ‰ใซใƒญใ‚ฐใ‚คใƒณใ—ใฆ **ใ‚ปใ‚ญใƒฅใ‚ขใƒขใƒ‡ใƒซ่จญๅฎš** ใ‚’ๅฎŒไบ†ใ™ใ‚‹ +8. ใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นใง **OpenClaw Desktop** ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ไฝœๆˆใ™ใ‚‹ diff --git a/docs/use_guide_ko.md b/docs/use_guide_ko.md new file mode 100644 index 0000000..8eb1066 --- /dev/null +++ b/docs/use_guide_ko.md @@ -0,0 +1,782 @@ +[<- README ํ™ˆ์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ](../README.ko.md) + +# ClawManager ๋ฐฐํฌ ๋ฐ ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ + +## ๋ชฉ์ฐจ +- [1. ํ™˜๊ฒฝ๊ณผ ๋ชฉํ‘œ](#sec-01) +- [2. ๋ฐฐํฌ ๋ฐฉ์‹ ๊ฐœ์š”](#sec-02) +- [3. ๋ฐฉ์‹ A: k3s๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐฐํฌ](#sec-03) +- [4. ๋ฐฉ์‹ B: ํ‘œ์ค€ Kubernetes๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐฐํฌ](#sec-04) +- [5. ์ค‘๊ตญ ๋‚ด ๋„คํŠธ์›Œํฌ์—์„œ์˜ ์ด๋ฏธ์ง€ ํ’€๋ง ๊ถŒ์žฅ ์‚ฌํ•ญ(์„ ํƒ ์‚ฌํ•ญ)](#sec-05) +- [6. ClawManager ๋ฐฐํฌ](#sec-06) +- [7. ์›น ํŽ˜์ด์ง€ ์‹œ์ž‘](#sec-08) +- [8. ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ(๋กœ๊ทธ์ธ ํ›„ ์ดˆ๊ธฐํ™” ๋ฐ OpenClaw ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ)](#sec-09) +- [9. ์ฝ˜์†” ๋ฐ AI Gateway ๊ธฐํƒ€ ๊ธฐ๋Šฅ ์„ค๋ช…](#sec-12) +- [10. ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ชจ๋“ˆ ์„ค๋ช…](#sec-13) +- [11. ๋ฌธ์ œ์™€ ๋Œ€์‘ ๋น ๋ฅธ ์ฐธ์กฐ](#sec-14) +- [12. ๊ถŒ์žฅ ์ตœ์ข… ์ ๊ฒ€ ์ˆœ์„œ(์ž๊ฐ€ ์ ๊ฒ€์šฉ)](#sec-15) + + +## 1. ํ™˜๊ฒฝ๊ณผ ๋ชฉํ‘œ +- **์‹œ์Šคํ…œ ๊ฐ€์ •**: `x86_64` ์•„ํ‚คํ…์ฒ˜ Linux ์„œ๋ฒ„. +- **๋ฐฐํฌ ๋ชฉํ‘œ**: **ClawManager**๋ฅผ ๋ฐฐํฌํ•˜๊ณ  Web ํŽ˜์ด์ง€์—์„œ ๋ณด์•ˆ ๋ชจ๋ธ ๊ตฌ์„ฑ์„ ์™„๋ฃŒํ•œ ๋’ค, **OpenClaw Desktop** ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. +- **์ ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค**: + - **๋ฐฉ์‹ A: k3s ๋‹จ์ผ ๋…ธ๋“œ/๊ฒฝ๋Ÿ‰ ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฐํฌ** + - **๋ฐฉ์‹ B: ํ‘œ์ค€ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฐํฌ**(์˜ˆ: kubeadm ํด๋Ÿฌ์Šคํ„ฐ, ๊ธฐ์—…์šฉ K8s ํด๋Ÿฌ์Šคํ„ฐ, ํด๋ผ์šฐ๋“œ K8s ํด๋Ÿฌ์Šคํ„ฐ) + + +--- + + +## 2. ๋ฐฐํฌ ๋ฐฉ์‹ ๊ฐœ์š” +๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: + +### ๋ฐฉ์‹ A: k3s ๋ฐฐํฌ +๋‹จ์ผ ๋…ธ๋“œ, ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๋˜๋Š” ๊ฒฝ๋Ÿ‰ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. + +### ๋ฐฉ์‹ B: ํ‘œ์ค€ Kubernetes ๋ฐฐํฌ +์ด๋ฏธ ํ‘œ์ค€ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ฐ–์ถ˜ ์„œ๋ฒ„ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. + +์–ด๋–ค ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋“  ์ตœ์ข…์ ์œผ๋กœ ๋™์ผํ•œ ClawManager ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค: + +```bash +kubectl apply -f deployments/k8s/clawmanager.yaml +``` + +--- + + +## 3. ๋ฐฉ์‹ A: k3s๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐฐํฌ + +### 3.1 k3s ์„ค์น˜ +```bash +curl -sfL https://get.k3s.io | sh - +``` + +์ค‘๊ตญ ๋‚ด ๋„คํŠธ์›Œํฌ์—์„œ๋Š” ๋ฏธ๋Ÿฌ ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: + +```bash +curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh - +``` + +### 3.2 ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ +```bash +sudo systemctl status k3s --no-pager +sudo systemctl enable k3s +``` + +### 3.3 kubectl ๊ตฌ์„ฑ +ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ `kubectl`์„ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค: + +```bash +mkdir -p ~/.kube +sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config +sudo chown "$USER:$USER" ~/.kube/config +``` + +๋˜๋Š” ์ž„์‹œ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค: + +```bash +export KUBECONFIG=/etc/rancher/k3s/k3s.yaml +``` + +### 3.4 ํด๋Ÿฌ์Šคํ„ฐ ๊ฒ€์ฆ +```bash +kubectl get nodes +``` + +์ •์ƒ์ด๋ผ๋ฉด ๋…ธ๋“œ๊ฐ€ `Ready` ์ƒํƒœ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. + +--- + + +## 4. ๋ฐฉ์‹ B: ํ‘œ์ค€ Kubernetes๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐฐํฌ + +> ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ด๋ฏธ ์žˆ๋Š” x86 ์„œ๋ฒ„ ํ™˜๊ฒฝ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. + +### 4.1 ์‚ฌ์ „ ์ ๊ฒ€ +ํ˜„์žฌ `kubectl`์ด ๋Œ€์ƒ ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค: + +```bash +kubectl get nodes +kubectl get ns +``` + +์ •์ƒ์ด๋ผ๋ฉด ์ตœ์†Œ 1๊ฐœ์˜ `Ready` ๋…ธ๋“œ๊ฐ€ ๋ณด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. + +### 4.2 ๊ธฐ๋ณธ StorageClass ํ™•์ธ +ClawManager์˜ MySQL๊ณผ MinIO๋Š” ์˜๊ตฌ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ํด๋Ÿฌ์Šคํ„ฐ์— ๊ธฐ๋ณธ `StorageClass`๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค: + +```bash +kubectl get storageclass +``` + +ํด๋Ÿฌ์Šคํ„ฐ์— ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค๊ฐ€ ์ด๋ฏธ ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ๋ฐฐํฌ๋ฅผ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +**๊ธฐ๋ณธ StorageClass๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ**, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ PV / PVC๋ฅผ ๋ฏธ๋ฆฌ ์ค€๋น„ํ•˜๊ฑฐ๋‚˜ ๋กœ์ปฌ ๊ฒฝ๋กœ ์Šคํ† ๋ฆฌ์ง€ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ดํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: + +```text +pod has unbound immediate PersistentVolumeClaims +``` + +--- + + +## 5. ์ค‘๊ตญ ๋‚ด ๋„คํŠธ์›Œํฌ์—์„œ์˜ ์ด๋ฏธ์ง€ ํ’€๋ง ๊ถŒ์žฅ ์‚ฌํ•ญ(์„ ํƒ ์‚ฌํ•ญ) +์„œ๋ฒ„๊ฐ€ Docker Hub ๋˜๋Š” ๊ธฐํƒ€ ๊ณต๊ฐœ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋А๋ฆฌ๊ฒŒ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฏธ์ง€ ๊ฐ€์†์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +### 5.1 k3s ์‹œ๋‚˜๋ฆฌ์˜ค: `/etc/rancher/k3s/registries.yaml` ๊ตฌ์„ฑ +```yaml +mirrors: + docker.io: + endpoint: + - "https://docker.m.daocloud.io" + - "https://docker.nju.edu.cn" + - "https://docker.1ms.run" + quay.io: + endpoint: + - "https://quay.mirrors.ustc.edu.cn" + gcr.io: + endpoint: + - "https://gcr.mirrors.ustc.edu.cn" + k8s.gcr.io: + endpoint: + - "https://registry.aliyuncs.com/google_containers" +``` + +์ˆ˜์ • ํ›„ ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค: + +```bash +sudo systemctl restart k3s +``` + +### 5.2 ์ด๋ฏธ์ง€ ํ’€๋ง ๊ฒ€์ฆ +```bash +sudo k3s crictl pull docker.io/rancher/mirrored-pause:3.6 +``` + +--- + + +## 6. ClawManager ๋ฐฐํฌ + +### 6.1 ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ +```bash +git clone https://github.com/Yuan-lab-LLM/ClawManager.git +cd ClawManager +``` + +### 6.2 ๋ฐฐํฌ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ์ ์šฉ +์ €์žฅ์†Œ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค: + +```bash +kubectl apply -f deployments/k8s/clawmanager.yaml +``` + +### 6.3 ๊ธฐ๋ณธ ๋ฆฌ์†Œ์Šค ํ™•์ธ +```bash +kubectl get ns +kubectl get pods -n clawmanager-system +kubectl get svc -n clawmanager-system +``` + +์ •์ƒ์ ์ธ ๊ฒฝ์šฐ ๋‹ค์Œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค: +- `clawmanager-app` +- `mysql` +- `minio` +- `skill-scanner` + +๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ณด์ด๋ฉด: + +```text +0/1 nodes are available: pod has unbound immediate PersistentVolumeClaims +``` + +์ด๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์Šคํ† ๋ฆฌ์ง€์—์„œ MySQL / MinIO๊ฐ€ PVC ๋ฏธ๋ฐ”์ธ๋“œ๋กœ ์ธํ•ด ์‹œ์ž‘๋˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๋ฌธ์„œ ๋์˜ ๋‹ค์Œ ํ•ญ๋ชฉ์œผ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜์„ธ์š”: + +- [11.1 ์Šคํ† ๋ฆฌ์ง€ ๋ฌธ์ œ ์ „์šฉ ์ฒ˜๋ฆฌ(PV/PVC)](#sec-14-storage) + +--- + + +## 7. ์›น ํŽ˜์ด์ง€ ์‹œ์ž‘ + +### 7.1 NodePort๋กœ ์ ‘๊ทผ +ClawManager์˜ ํ”„๋ŸฐํŠธ์—”๋“œ Service๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ HTTPS NodePort๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ํ™•์ธํ•ฉ๋‹ˆ๋‹ค: + +```bash +kubectl get svc -n clawmanager-system +``` + +ํ”„๋ŸฐํŠธ์—”๋“œ ํฌํŠธ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด: + +```text +443:30443/TCP +``` + +๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง์ ‘ ๋‹ค์Œ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: + +```text +https://<์„œ๋ฒ„IP>:30443 +``` + + +### 7.2 ์ตœ์ดˆ HTTPS ์ ‘๊ทผ ์•ˆ๋‚ด +์ผ๋ฐ˜์ ์œผ๋กœ ์ž์ฒด ์„œ๋ช… ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ โ€œ์•ˆ์ „ํ•˜์ง€ ์•Š์Œโ€ ๋˜๋Š” ์ธ์ฆ์„œ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค: + +```text +๊ณ ๊ธ‰ โ†’ ๊ณ„์† ๋ฐฉ๋ฌธ +``` + +๊ทธ๋Ÿฌ๋ฉด ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +--- + + +## 8. ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ(๋กœ๊ทธ์ธ ํ›„ ์ดˆ๊ธฐํ™” ๋ฐ OpenClaw ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ) + +์œ„ ๋ฐฐํฌ๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ๊ด€๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ ํ›„์—๋„, ์‹ค์ œ๋กœ **OpenClaw** ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. + +### 8.1 ์‹œ์Šคํ…œ ๋กœ๊ทธ์ธ +1. ๋ฐฐํฌ ์™„๋ฃŒ ํ›„ ํŽ˜์ด์ง€๋ฅผ ์—ฝ๋‹ˆ๋‹ค. ์˜ˆ: `https://<๋…ธ๋“œIP>:30443`. +2. ๊ธฐ๋ณธ ๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค: + - **์‚ฌ์šฉ์ž ์ด๋ฆ„**: `admin` + - **๋น„๋ฐ€๋ฒˆํ˜ธ**: `admin123` +3. ์ฒ˜์Œ ๋กœ๊ทธ์ธํ•œ ํ›„์—๋Š” ํ•„์š”์— ๋”ฐ๋ผ ๊ธฐ๋ณธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. + + +### 8.2 ๋ณด์•ˆ ๋ชจ๋ธ ๊ตฌ์„ฑ(AI Gateway) + +![๊ทธ๋ฆผ 1: AI Gateway ๊ตฌ์„ฑ](./main/1.png) +๋กœ๊ทธ์ธ ํ›„ ๋จผ์ € ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ **๋ณด์•ˆ ๋ชจ๋ธ**์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ํ”Œ๋žซํผ๊ณผ ์ดํ›„ ์ธ์Šคํ„ด์Šค์—์„œ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. + +1. ์™ผ์ชฝ ๋ฉ”๋‰ด์—์„œ **AI Gateway** โ†’ **๋ชจ๋ธ**์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. +2. ์ƒˆ ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๋ชจ๋ธ์„ ํŽธ์ง‘ํ•˜๊ณ , ์—ฐ๊ฒฐํ•˜๋Š” ๋ชจ๋ธ ์„œ๋น„์Šค์— ๋”ฐ๋ผ ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค: + + * **ํ‘œ์‹œ ์ด๋ฆ„**: ์‹๋ณ„ํ•˜๊ธฐ ์‰ฌ์šด ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. + * **๋ฒค๋” ํ…œํ”Œ๋ฆฟ**: ๋ชจ๋ธ ์„œ๋น„์Šค ์œ ํ˜•์— ๋”ฐ๋ผ ํ•ด๋‹น ํ…œํ”Œ๋ฆฟ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๋˜๋Š” ํ˜ธํ™˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ **Local / Internal**์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + * **ํ”„๋กœํ† ์ฝœ**: ์ธํ„ฐํŽ˜์ด์Šค ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ **OpenAI Compatible** ๋˜๋Š” ์‹ค์ œ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. + * **Base URL**: ๋ชจ๋ธ ์„œ๋น„์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. + * **API Key**: ํ•ด๋‹น ๋ชจ๋ธ ์„œ๋น„์Šค์˜ ์œ ํšจํ•œ ํ‚ค๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. + * **Provider Model**: ์‹ค์ œ ํ˜ธ์ถœํ•  ๋ชจ๋ธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. + * **ํ†ตํ™”**: ์‹ค์ œ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋น„์šฉ ํ‘œ์‹œ๊ฐ€ ํ•„์š” ์—†๋‹ค๋ฉด ๊ธฐ๋ณธ๊ฐ’์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + * **์ž…๋ ฅ ๊ฐ€๊ฒฉ / ์ถœ๋ ฅ ๊ฐ€๊ฒฉ**: ๋น„์šฉ ํ†ต๊ณ„๋ฅผ ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ `0`์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +3. ์ œ์ถœ ์ „์— ๋ฐ˜๋“œ์‹œ ๋‹ค์Œ ํ•ญ๋ชฉ์„ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค: + + * **๋ณด์•ˆ ๋ชจ๋ธ** + * **์‚ฌ์šฉ** +4. **์ €์žฅ**์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹คใ€‚ + +> ์ฐธ๊ณ : ํŽ˜์ด์ง€์˜ ์ด๋ฏธ์ง€๋Š” ์ž…๋ ฅ ์œ„์น˜์™€ ์˜ˆ์‹œ ํ˜•์‹์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ๋‚ด์šฉ์€ ์‚ฌ์šฉ ์ค‘์ธ ๋ชจ๋ธ ์„œ๋น„์Šค ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ์ž…๋ ฅํ•˜์„ธ์š”ใ€‚ + + +### 8.3 OpenClaw ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ +๋ชจ๋ธ ๊ตฌ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด **OpenClaw Desktop** ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. + +1. ์™ผ์ชฝ ์•„๋ž˜์˜ **ADMIN**์„ ํด๋ฆญํ•˜์—ฌ **์›Œํฌ์ŠคํŽ˜์ด์Šค**๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. +2. **์ธ์Šคํ„ด์Šค ์ƒ์„ฑ**์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹คใ€‚ + +![](./main/2.png) +#### 1๋‹จ๊ณ„: ๊ธฐ๋ณธ ์ •๋ณด +- **์ธ์Šคํ„ด์Šค ์ด๋ฆ„**์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค(์ตœ์†Œ 3์ž). +- ์„ค๋ช…์€ ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ ๋น„์›Œ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +- **๋‹ค์Œ**์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. + +![](./main/3.png) +#### 2๋‹จ๊ณ„: ์œ ํ˜• ์„ ํƒ +- **OpenClaw Desktop**์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. +- **๋‹ค์Œ**์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹คใ€‚ + + +![](./main/4.png) +#### 3๋‹จ๊ณ„: ๊ตฌ์„ฑ +- **Small** ์‚ฌ์–‘์„ ๋ฐ”๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: + - `2 CPU` + - `4 GB RAM` + - `20 GB Disk` +- ์•„๋ž˜ ์‚ฌ์šฉ์ž ์ •์˜ ๊ตฌ์„ฑ ์˜์—ญ์—์„œ ํ•„์š”์— ๋”ฐ๋ผ ์ˆ˜์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹คใ€‚ +- OpenClaw ๋ฆฌ์†Œ์Šค ์ฃผ์ž… ๋ถ€๋ถ„์—์„œ๋Š” ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค์Œ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: + - **์ˆ˜๋™ ๋ฆฌ์†Œ์Šค** + - **๋ฆฌ์†Œ์Šค ํŒจํ‚ค์ง€** + - **์•„์นด์ด๋ธŒ ๊ฐ€์ ธ์˜ค๊ธฐ** +- ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์„ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜ **์ˆ˜๋™ ๋ฆฌ์†Œ์Šค**๋ฅผ ์„ ํƒํ•ด๋„ ๋ฉ๋‹ˆ๋‹คใ€‚ +- ๋งˆ์ง€๋ง‰์œผ๋กœ **์ƒ์„ฑ**์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹คใ€‚ + +### 8.4 ์ฒซ ์ƒ์„ฑ ์•ˆ๋‚ด +- **OpenClaw** ์ธ์Šคํ„ด์Šค๋ฅผ ์ฒ˜์Œ ์ƒ์„ฑํ•  ๋•Œ๋Š” ํ•„์š”ํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ํ™˜๊ฒฝ์„ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„์ด ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹คใ€‚ +- ๋„คํŠธ์›Œํฌ๊ฐ€ ๋А๋ฆฌ๊ฑฐ๋‚˜ ์ฒ˜์Œ ์ด๋ฏธ์ง€ ํ’€๋ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, ์ธ์Šคํ„ด์Šค ์ƒํƒœ๊ฐ€ ์˜ค๋žซ๋™์•ˆ **์ƒ์„ฑ ์ค‘**์œผ๋กœ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž ์‹œ ๊ธฐ๋‹ค๋ ค ์ฃผ์„ธ์š”ใ€‚ +- ์˜ค๋žœ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ์‹œ์ž‘๋˜์ง€ ์•Š์œผ๋ฉด Kubernetes / Docker ๋กœ๊ทธ๋กœ ๋Œ์•„๊ฐ€ ์ด๋ฏธ์ง€, PVC, ๊ฒŒ์ดํŠธ์›จ์ด ๋ชจ๋ธ ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ์ ๊ฒ€ํ•˜์„ธ์š”ใ€‚ + +--- + + +## 9. ์ฝ˜์†” ๋ฐ AI Gateway ๊ธฐํƒ€ ๊ธฐ๋Šฅ ์„ค๋ช… + +๋ชจ๋ธ ๊ตฌ์„ฑ ์™ธ์—๋„ ํ”Œ๋žซํผ ํ™ˆ์˜ ์ฝ˜์†”๊ณผ AI Gateway๋Š” ๊ฐ์‚ฌ, ๋น„์šฉ, ๊ทœ์น™ ๊ฑฐ๋ฒ„๋„Œ์Šค ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๊ด€๋ฆฌ์ž๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ, ๋ชจ๋ธ ํ˜ธ์ถœ ๊ธฐ๋ก, ๋ณด์•ˆ ์ •์ฑ… ์‹คํ–‰ ์ƒํƒœ๋ฅผ ์ค‘์•™์—์„œ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹คใ€‚ + +### 9.1 ์ฝ˜์†” ๊ฐœ์š” + +![](./main/5.png) + +์ฝ˜์†” ํ™ˆ์€ ํ˜„์žฌ ํด๋Ÿฌ์Šคํ„ฐ์™€ ํ”Œ๋žซํผ์˜ ์ „์ฒด ์šด์˜ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉฐ, ๊ด€๋ฆฌ์ž๊ฐ€ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰๊ณผ ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹คใ€‚ + +์ฃผ์š” ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค๏ผš + +- **ํด๋Ÿฌ์Šคํ„ฐ ๊ธฐ๋ณธ ์ •๋ณด ๊ฐœ์š”**: ํ˜„์žฌ ํ”Œ๋žซํผ์˜ ์ด ์‚ฌ์šฉ์ž ์ˆ˜, ์ด ์ธ์Šคํ„ด์Šค ์ˆ˜, ์‹คํ–‰ ์ค‘ ์ธ์Šคํ„ด์Šค ์ˆ˜, ์ด ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ๋Ÿ‰์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹คใ€‚ +- **๋…ธ๋“œ ๊ฐœ์š”**: ํ˜„์žฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋…ธ๋“œ ์ˆ˜์™€ ํ˜„์žฌ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ฃผ์š” ์Šค์ผ€์ค„๋ง ๋…ธ๋“œ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹คใ€‚ +- **๋ฆฌ์†Œ์Šค ์‹ ์ฒญ ํ˜„ํ™ฉ**: ํ˜„์žฌ ํ”Œ๋žซํผ์ด ์‹ ์ฒญํ•œ CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ ๋ฆฌ์†Œ์Šค ์ด๋Ÿ‰์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹คใ€‚ +- **์šฉ๋Ÿ‰ ๋Œ€์‹œ๋ณด๋“œ**: ๋…ธ๋“œ, CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ ๋“ฑ ์ฐจ์›๋ณ„๋กœ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์šฉ๋Ÿ‰๊ณผ ํ˜„์žฌ ์‚ฌ์šฉ๋ฅ ์„ ํ‘œ์‹œํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฌ์œ ๊ฐ€ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•ฉ๋‹ˆ๋‹คใ€‚ +- **๊ธฐ๋ฐ˜ ์‹œ์„ค ํ‘œ**: ํ˜„์žฌ ๋…ธ๋“œ, ๋ฆฌ์†Œ์Šค ๋ฐ ๊ธฐ๋ณธ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹คใ€‚ + +> ์ฐธ๊ณ : ์ฝ˜์†”์€ ์ฃผ๋กœ ํ”Œ๋žซํผ ์ „์ฒด ๋ฆฌ์†Œ์Šค, ๋…ธ๋“œ, ์ธ์Šคํ„ด์Šค ์šด์˜ ๊ฐœ์š”๋ฅผ ๋ณด๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ํŠน์ • ์ธ์Šคํ„ด์Šค ๋‚ด๋ถ€์˜ OpenClaw ์ž‘์—…์— ์ง์ ‘ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹คใ€‚ + +### 9.2 ๋ณด์•ˆ ์„ผํ„ฐ (skill-scanner) + +์ฝ˜์†”์˜ **๋ณด์•ˆ ์„ผํ„ฐ**๋Š” ํ”Œ๋žซํผ ์ž์›์˜ ์Šค์บ” ์ƒํƒœ, ์ด๋ ฅ ๋ณด๊ณ ์„œ, ์Šค์บ๋„ˆ ๊ตฌ์„ฑ์„ ํ†ตํ•ฉํ•˜์—ฌ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋ฐฑ์—”๋“œ์˜ **skill-scanner** ์„œ๋น„์Šค์— ์˜์กดํ•˜์—ฌ ๋™์ž‘ํ•˜๋ฉฐ, ์ž์›์— ๋Œ€ํ•ด ์ •์  ์Šค์บ”, ์‹ฌ์ธต ์Šค์บ”, ๊ทธ๋ฆฌ๊ณ  LLM ๊ธฐ๋ฐ˜์˜ ๋ณด์กฐ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ด€๋ฆฌ์ž๊ฐ€ ์ž ์žฌ์ ์ธ ์œ„ํ—˜ ์ฝ˜ํ…์ธ , ๋น„์ •์ƒ ์ž์›, ์˜์‹ฌ์Šค๋Ÿฌ์šด ์Šคํ‚ฌ์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. + +๋ณด์•ˆ ์„ผํ„ฐ๋Š” ํ˜„์žฌ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๋ชจ๋“ˆ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. + +* **์‹คํ–‰ ๊ฐœ์š”** +* **๋ณด๊ณ ์„œ ์ด๋ ฅ** +* **์Šค์บ๋„ˆ ๊ตฌ์„ฑ** + +#### 9.2.1 ์‹คํ–‰ ๊ฐœ์š” + +![](./main/14.png) + +โ€œ์‹คํ–‰ ๊ฐœ์š”โ€ ํŽ˜์ด์ง€๋Š” ํ˜„์žฌ ํ”Œ๋žซํผ ์ „์ฒด์˜ ์Šค์บ” ์ƒํƒœ์™€ ์œ„ํ—˜ ๋ถ„ํฌ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ด€๋ฆฌ์ž๊ฐ€ ํ˜„์žฌ ๋ณด์•ˆ ์ƒํƒœ๋ฅผ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. + +ํŽ˜์ด์ง€์—๋Š” ์ฃผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. + +* **ํ˜„์žฌ ์ ์šฉ ๋ชจ๋“œ**: ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ ๋ชจ๋“œ๊ฐ€ **Quick ๋ชจ๋“œ**์ธ์ง€ **Deep ๋ชจ๋“œ**์ธ์ง€ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. +* **๋น ๋ฅธ ์Šค์บ” / ์ „์ฒด ์Šค์บ”**: + + * **๋น ๋ฅธ ์Šค์บ”**: ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋œ ์ž์›์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•˜๋ฉฐ, ์Šค์บ” ๋ฒ”์œ„๊ฐ€ ๊ฐ€๋ณ๊ณ  ์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค. + * **์ „์ฒด ์Šค์บ”**: ์ „์ฒด ์ž์›์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋‹ค์‹œ ์Šค์บ”ํ•˜์—ฌ ํ˜„์žฌ ํ”Œ๋žซํผ์˜ ๋ชจ๋“  ์ž์› ์ƒํƒœ๋ฅผ ์™„์ „ํ•˜๊ฒŒ ์žฌ๊ฒ€ํ† ํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. +* **์ด ์ž์‚ฐ ์ˆ˜**: ํ˜„์žฌ ๋ณด์•ˆ ์„ผํ„ฐ์˜ ์Šค์บ” ๋ฒ”์œ„์— ํฌํ•จ๋œ ์ž์› ์ˆ˜์ž…๋‹ˆ๋‹ค. +* **์™„๋ฃŒ๋œ ์Šค์บ”**: ์Šค์บ”์ด ์™„๋ฃŒ๋œ ์ž์› ์ˆ˜์ž…๋‹ˆ๋‹ค. +* **๊ณ ์œ„ํ—˜ / ์ค‘์œ„ํ—˜**: ํ˜„์žฌ ์Šค์บ” ๊ฒฐ๊ณผ์—์„œ ์‹๋ณ„๋œ ์œ„ํ—˜ ๋“ฑ๊ธ‰ ํ†ต๊ณ„์ž…๋‹ˆ๋‹ค. +* **์Šค์บ” ์ปค๋ฒ„๋ฆฌ์ง€**: ์‹ค์ œ๋กœ ์Šค์บ”์ด ์™„๋ฃŒ๋œ ์ž์‚ฐ ์ˆ˜๊ฐ€ ํ”Œ๋žซํผ ์ „์ฒด ์ž์‚ฐ ์ˆ˜์—์„œ ์ฐจ์ง€ํ•˜๋Š” ๋น„์œจ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. +* **SAFE / ๊ณ ์œ„ํ—˜ / ๋Œ€๊ธฐ ์ค‘ / ์‹คํŒจ**: + + * **SAFE**: ์Šค์บ”์„ ํ†ต๊ณผํ–ˆ์œผ๋ฉฐ ํ˜„์žฌ ์œ„ํ—˜์ด ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์€ ์ž์‚ฐ ์ˆ˜ + * **๊ณ ์œ„ํ—˜**: ์ฆ‰์‹œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์œ„ํ—˜ ์ž์‚ฐ ์ˆ˜ + * **๋Œ€๊ธฐ ์ค‘**: ์ฆ๊ฑฐ ์ˆ˜์ง‘ ๋Œ€๊ธฐ ๋˜๋Š” ์Šค์บ” ๋Œ€๊ธฐ์—ด์— ์žˆ๋Š” ์ž์‚ฐ ์ˆ˜ + * **์‹คํŒจ**: ์Šค์บ” ์‹คํ–‰์— ์‹คํŒจํ•˜์—ฌ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž์‚ฐ ์ˆ˜ +* **ํ”Œ๋žซํผ ์ž์‚ฐ ์œ„ํ—˜ ์ถ”์„ธ**: ์œ„ํ—˜ ๋“ฑ๊ธ‰๋ณ„๋กœ ์ง‘๊ณ„๋œ ํ˜„์žฌ ํ”Œ๋žซํผ ์ž์‚ฐ์˜ ์œ„ํ—˜ ๋ถ„ํฌ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. +* **ํ•ซ ์ž์‚ฐ**: ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์Šคํ‚ฌ ๋˜๋Š” ๊ณ ๋นˆ๋„ ์‚ฌ์šฉ ์ž์›์„ ํ‘œ์‹œํ•˜์—ฌ ๊ด€๋ฆฌ์ž๊ฐ€ ํ•ต์‹ฌ ์ž์‚ฐ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. +* **์Šค์บ๋„ˆ ์ƒํƒœ**: ํ˜„์žฌ skill-scanner ์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ๋ฐ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: โ€œ์ •์  ์Šค์บ” ์‚ฌ์šฉ ๊ฐ€๋Šฅโ€, โ€œ์—ฐ๊ฒฐ๋จโ€. +* **์œ„ํ—˜ ์•Œ๋ฆผ ๋ฐ ์ฒ˜๋ฆฌ ์ œ์•ˆ**: ํ˜„์žฌ ์œ„ํ—˜ ์ƒํƒœ์— ๋”ฐ๋ฅธ ๊ฐ„๋‹จํ•œ ์•ˆ๋‚ด ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. +* **์ตœ๊ทผ ์Šค์บ” ์ž‘์—…**: ์ตœ๊ทผ ์‹คํ–‰๋œ ์Šค์บ” ๊ธฐ๋ก์„ ํ‘œ์‹œํ•˜์—ฌ ์ตœ๊ทผ ์Šค์บ” ํ™œ๋™์„ ์ถ”์ ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. + +> ์„ค๋ช…๏ผš +> +> * ํŽ˜์ด์ง€์— โ€œํ˜„์žฌ ๊ณ ์œ„ํ—˜ ๋˜๋Š” ์ค‘์œ„ํ—˜ ์ž์‚ฐ์ด ์—†์Šต๋‹ˆ๋‹คโ€๋ผ๊ณ  ํ‘œ์‹œ๋˜๋ฉด, ํ˜„์žฌ ์Šค์บ” ๊ฒฐ๊ณผ์—์„œ ๋šœ๋ ทํ•œ ์œ„ํ—˜์ด ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. +> * ํŽ˜์ด์ง€์— โ€œ์•„์ง ์Šค์บ” ์ž‘์—… ๊ธฐ๋ก์ด ์—†์Šต๋‹ˆ๋‹คโ€๋ผ๊ณ  ํ‘œ์‹œ๋˜๋ฉด, ์•„์ง ์Šค์บ”์ด ์‹คํ–‰๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์œ ํšจํ•œ ์Šค์บ” ๊ฒฐ๊ณผ๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. + +#### 9.2.2 ๋ณด๊ณ ์„œ ์ด๋ ฅ + +โ€œ๋ณด๊ณ ์„œ ์ด๋ ฅโ€ ํŽ˜์ด์ง€๋Š” ๊ณผ๊ฑฐ ์Šค์บ” ๋ณด๊ณ ์„œ์™€ ๊ด€๋ จ ๊ฒฐ๊ณผ ๊ธฐ๋ก์„ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ด€๋ฆฌ์ž๊ฐ€ ์ด์ „ ์Šค์บ” ์‹คํ–‰ ์ƒํ™ฉ์„ ๋˜์งš์–ด๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. + +์ด ๋ชจ๋“ˆ์€ ์ฃผ๋กœ ๋‹ค์Œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. + +* ๊ณผ๊ฑฐ์— ์‹คํ–‰๋œ ์Šค์บ” ์ž‘์—… ๊ฒฐ๊ณผ ํ™•์ธ +* ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์ ์˜ ์Šค์บ” ์ถœ๋ ฅ ๋น„๊ต +* ํŠน์ • ์ž์›์ด ์„œ๋กœ ๋‹ค๋ฅธ ๋‹จ๊ณ„์—์„œ ์–ด๋–ป๊ฒŒ ๋ณด์•ˆ ์ƒํƒœ๊ฐ€ ๋ณ€ํ–ˆ๋Š”์ง€ ์ถ”์  ๋ณด์กฐ +* ์ดํ›„ ์žฌ๊ฒ€ํ† , ์žฌ์Šค์บ”, ๋ฌธ์ œ ์ถ”์ ์„ ์œ„ํ•œ ์ด๋ ฅ ๊ทผ๊ฑฐ ์ œ๊ณต + +> ์„ค๋ช…๏ผš +> +> * โ€œ๋ณด๊ณ ์„œ ์ด๋ ฅโ€์€ ๊ณผ๊ฑฐ ๊ฒฐ๊ณผ์˜ ๋ณด๊ด€๊ณผ ์ถ”์ ์— ๋” ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค๏ผ› +> * โ€œ์‹คํ–‰ ๊ฐœ์š”โ€๋Š” ํ˜„์žฌ ์ƒํƒœ์™€ ์ „์ฒด ๊ฐœ์š”์— ๋” ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹คใ€‚ + +#### 9.2.3 ์Šค์บ๋„ˆ ๊ตฌ์„ฑ + +![](./main/15.png) + +โ€œ์Šค์บ๋„ˆ ๊ตฌ์„ฑโ€ ํŽ˜์ด์ง€๋Š” skill-scanner ์˜ ๋™์ž‘ ๋ฐฉ์‹, LLM ๊ด€๋ จ ์„ค์ •, ๊ทธ๋ฆฌ๊ณ  quick / deep ๋‘ ๊ฐ€์ง€ ์Šค์บ” ์ „๋žต์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ €์žฅ ํ›„ Deployment rollout ์ด ํŠธ๋ฆฌ๊ฑฐ๋˜๋ฉฐ, ์ƒˆ๋กœ์šด ๊ตฌ์„ฑ์ด ์ ์šฉ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. + +ํŽ˜์ด์ง€์—๋Š” ์ฃผ๋กœ ๋‹ค์Œ ๋‚ด์šฉ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. + +##### (1) skill-scanner ์„œ๋น„์Šค ์ƒํƒœ + +* ํ˜„์žฌ ๋ฐฑ์—”๋“œ ์Šค์บ” ์„œ๋น„์Šค์˜ namespace, Deployment ์ด๋ฆ„, ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. +* ํŽ˜์ด์ง€์— **์—ฐ๊ฒฐ๋จ**, **์ •์  ์Šค์บ” ์‚ฌ์šฉ ๊ฐ€๋Šฅ** ์ด ํ‘œ์‹œ๋˜๋ฉด ๊ธฐ๋ณธ ์ •์  ์Šค์บ” ๊ธฐ๋Šฅ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. + +##### (2) LLM ๊ตฌ์„ฑ + +์ด ์˜์—ญ์€ scanner ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋ชจ๋ธ ๊ธฐ๋ฐ˜ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฃผ LLM ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. + +์ฃผ์š” ํ•„๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. + +* **์ฃผ LLM ํ†ตํ•ฉ**: **AI Gateway** ์— ์ด๋ฏธ ๊ตฌ์„ฑ๋œ ๋ชจ๋ธ์—์„œ ์ฃผ LLM ๊ตฌ์„ฑ์„ ์ง์ ‘ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +* **LLM API Key**: `SKILL_SCANNER_LLM_API_KEY` ์— ๋Œ€์‘ํ•˜๋ฉฐ, ์ฃผ LLM analyzer ์˜ ์ธ์ฆ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. +* **LLM Model**: `SKILL_SCANNER_LLM_MODEL` ์— ๋Œ€์‘ํ•˜๋ฉฐ, ๊ตฌ์ฒด์ ์ธ ๋ชจ๋ธ ์ด๋ฆ„ ๋“ฑ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. +* **LLM Base URL**: `SKILL_SCANNER_LLM_BASE_URL` ์— ๋Œ€์‘ํ•˜๋ฉฐ, ์ฃผ LLM ์„œ๋น„์Šค ์ฃผ์†Œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. + +##### (3) Meta LLM ํ†ตํ•ฉ + +์ด ์˜์—ญ์€ meta analyzer ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ findings ๋ฅผ ์ถ”๊ฐ€ ์š”์•ฝ, ์ •๋ฆฌ ๋˜๋Š” 2์ฐจ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. + +์ฃผ์š” ํ•„๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. + +* **Meta LLM ํ†ตํ•ฉ**: **AI Gateway** ์— ์ด๋ฏธ ๊ตฌ์„ฑ๋œ ๋ชจ๋ธ์—์„œ meta analyzer ๊ตฌ์„ฑ์„ ์ง์ ‘ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +* **Meta LLM API Key**: `SKILL_SCANNER_META_LLM_API_KEY` ์— ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค. +* **Meta LLM Model**: `SKILL_SCANNER_META_LLM_MODEL` ์— ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค. +* **Meta LLM Base URL**: `SKILL_SCANNER_META_LLM_BASE_URL` ์— ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค. + +> ์„ค๋ช…๏ผš +> +> * ํ˜„์žฌ LLM ์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด, ํŽ˜์ด์ง€์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ˜„์žฌ ์ •์  ์Šค์บ”๋งŒ ์ง€์›๋œ๋‹ค๋Š” ์•ˆ๋‚ด๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค๏ผ› +> * ์ฃผ LLM ๊ณผ Meta LLM ์„ ๋ชจ๋‘ ๊ตฌ์„ฑํ•œ ํ›„์—์•ผ scanner ๊ฐ€ ๋” ์™„์ „ํ•œ ์˜๋ฏธ ๋ถ„์„ ๋ฐ ์š”์•ฝ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คใ€‚ + +##### (4) ํ˜„์žฌ ์Šค์บ” ๋ชจ๋“œ + +ํŽ˜์ด์ง€์—์„œ๋Š” ํ˜„์žฌ ํ”Œ๋žซํผ์—์„œ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์Šค์บ” ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +* **Quick ๋ชจ๋“œ**: quick analyzers ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šค์บ”์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์ผ์ƒ์ ์ธ ๋น ๋ฅธ ์ ๊ฒ€์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. +* **Deep ๋ชจ๋“œ**: deep analyzers ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šค์บ”์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋ณด๋‹ค ์™„์ „ํ•˜๊ณ  ์‹ฌ์ธต์ ์ธ ๋ถ„์„์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. + +์ฃผ์˜ํ•  ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. + +* Dashboard ์˜ โ€œ๋น ๋ฅธ ์Šค์บ”โ€๊ณผ โ€œ์ „์ฒด ์Šค์บ”โ€์€ ๋ชจ๋‘ ์—ฌ๊ธฐ์—์„œ ์„ ํƒํ•œ ์Šค์บ” ๊ฐ•๋„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค๏ผ› +* ๋‘˜์˜ ์ฐจ์ด๋Š” ์ฃผ๋กœ ์Šค์บ” ๋ฒ”์œ„์— ์žˆ์œผ๋ฉฐ analyzer ๊นŠ์ด ์ž์ฒด์—๋Š” ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹คใ€‚ + +##### (5) Quick / Deep ์Šค์บ” ์ „๋žต + +ํŽ˜์ด์ง€ ํ•˜๋‹จ์—์„œ๋Š” **๋น ๋ฅธ** ๊ณผ **์‹ฌ์ธต** ๋‘ ๊ฐ€์ง€ ์Šค์บ” ์ „๋žต ๊ตฌ์„ฑ์„ ๊ฐ๊ฐ ์œ ์ง€ํ•˜๋ฉฐ, ๊ด€๋ฆฌ์ž๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋”ฐ๋ผ ๋‹ค๋ฅธ analyzer ์กฐํ•ฉ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. + +๊ฐ ์ „๋žต์—๋Š” ๋‹ค์Œ ๊ตฌ์„ฑ ํ•ญ๋ชฉ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. + +* **ํƒ€์ž„์•„์›ƒ(์ดˆ)**: ํ˜„์žฌ ๋ชจ๋“œ์—์„œ ์Šค์บ” ์ž‘์—…์˜ ํƒ€์ž„์•„์›ƒ ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. +* **ํ˜ธ์ถœ ๋ฐฉ์‹**: ํ•„์š”์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ analyzer ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +ํ˜„์žฌ ํ‘œ์‹œ๋˜๋Š” analyzer ์œ ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. + +* **Static**: YAML + YARA ์ •์  ๊ทœ์น™ ์Šค์บ” +* **Bytecode**: Python bytecode ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ +* **Pipeline**: ๋ช…๋ น ์ฒด์ธ ๋ฐ taint ๋ถ„์„ +* **Behavioral**: AST ๊ธฐ๋ฐ˜ ๋™์ž‘ ๋ฐ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๋ถ„์„ +* **LLM**: ์™ธ๋ถ€ LLM ์— ์˜์กดํ•˜๋Š” ์˜๋ฏธ ๋ถ„์„ +* **Meta**: findings ์— ๋Œ€ํ•œ 2์ฐจ ์š”์•ฝ ๋ถ„์„ + +์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +* **Quick ๋ชจ๋“œ**: ๋” ๋น ๋ฅธ ์‹คํ–‰์— ์ค‘์ ์„ ๋‘๋ฉฐ, ์ผ์ƒ์ ์ธ ์ฆ๋ถ„ ์ ๊ฒ€์— ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค +* **Deep ๋ชจ๋“œ**: ๋” ๋งŽ์€ analyzer ๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณด๋‹ค ๊นŠ์ด ์žˆ๋Š” ๊ฒ€ํ† ์™€ ๋ณด์•ˆ ๊ฐ์‚ฌ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค + +##### (6) ์ €์žฅ ๋ฐ ์ ์šฉ + +ํŽ˜์ด์ง€ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์˜ **์ €์žฅ ๋ฐ ์ ์šฉ** ์€ ํ˜„์žฌ์˜ ๋ชจ๋“  scanner ๊ด€๋ จ ๊ตฌ์„ฑ์„ ์ œ์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ €์žฅ ํ›„ ๋‹ค์Œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. + +* ClawManager ์˜ quick / deep ์Šค์บ” ์ „๋žต ์—…๋ฐ์ดํŠธ +* skill-scanner Deployment ์˜ ๊ด€๋ จ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์—…๋ฐ์ดํŠธ +* rollout ์™„๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ ํ›„ ์ƒˆ ๊ตฌ์„ฑ์„ ์ •์‹์œผ๋กœ ์ ์šฉ + +> ์„ค๋ช…๏ผš +> +> * ์Šค์บ๋„ˆ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•œ ํ›„์—๋Š” ์ƒˆ ์Šค์บ” ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๊ตฌ์„ฑ์ด ์™„์ „ํžˆ ์ ์šฉ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค๏ผ› +> * ๊ตฌ์„ฑ ํ›„ ์—ฐ๊ฒฐ ์ƒํƒœ๊ฐ€ ๋น„์ •์ƒ์ ์ด๋ผ๋ฉด AI Gateway ๋ชจ๋ธ, LLM ์ฃผ์†Œ, Key, Deployment rollout ์ƒํƒœ๋ฅผ ์šฐ์„  ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹คใ€‚ + +### 9.3 AI Gateway ๊ธฐ๋Šฅ ๊ฐœ์š” + +AI Gateway ๋Š” โ€œ๋ชจ๋ธโ€ ๊ตฌ์„ฑ ์™ธ์—๋„ ๋‹ค์Œ ๋ชจ๋“ˆ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. + +* **AI ๊ฐ์‚ฌ**: ๋ชจ๋ธ ํ˜ธ์ถœ Trace, ์š”์ฒญ ๋ฐ ์‘๋‹ต payload, ์ ์ค‘ ์œ„ํ—˜, ๋ผ์šฐํŒ… ๊ฒฐ์ •, ํ˜ธ์ถœ ์ƒ์„ธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. +* **๋น„์šฉ**: Token ์‚ฌ์šฉ๋Ÿ‰, ์˜ˆ์ƒ ๋น„์šฉ, ๋‚ด๋ถ€ ๋น„์šฉ, ์ถ”์„ธ ํ†ต๊ณ„๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. +* **์œ„ํ—˜ ์ œ์–ด ๊ทœ์น™**: ๋ฏผ๊ฐ ์ •๋ณด ํƒ์ง€ ๊ทœ์น™์„ ๊ตฌ์„ฑํ•˜๊ณ  ์ ์ค‘ ์‹œ ํ†ต๊ณผ์‹œํ‚ฌ์ง€ ์•ˆ์ „ ๋ชจ๋ธ๋กœ ๋ผ์šฐํŒ…ํ• ์ง€ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. + +### 9.4 ๋น„์šฉ ๋ชจ๋“ˆ + +๋น„์šฉ ํŽ˜์ด์ง€๋Š” ํ”Œ๋žซํผ ๋ชจ๋ธ ํ˜ธ์ถœ์˜ ๋น„์šฉ๊ณผ Token ์‚ฌ์šฉ ํ˜„ํ™ฉ์„ ์ง‘๊ณ„ํ•˜์—ฌ ๊ด€๋ฆฌ์ž๊ฐ€ ์ „์ฒด ์†Œ๋น„ ์ƒํ™ฉ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. + +![](./main/6.png) + +ํŽ˜์ด์ง€์—๋Š” ์ฃผ๋กœ ๋‹ค์Œ ๋‚ด์šฉ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. + +* **์ž…๋ ฅ Token**: ์ž…๋ ฅ ํ”„๋กฌํ”„ํŠธ ์ด๋Ÿ‰ ํ†ต๊ณ„ +* **์ถœ๋ ฅ Token**: ๋ชจ๋ธ ์ƒ์„ฑ ๋‚ด์šฉ ์ด๋Ÿ‰ ํ†ต๊ณ„ +* **์˜ˆ์ƒ ๋น„์šฉ**: Provider ๋‹จ๊ฐ€ ๊ธฐ์ค€์œผ๋กœ ์ถ”์‚ฐ๋œ ๋น„์šฉ +* **๋‚ด๋ถ€ ๋น„์šฉ**: ๋ณด์•ˆ ๋ชจ๋ธ ๊ด€๋ จ ๋‚ด๋ถ€ ์ •์‚ฐ ๋น„์šฉ +* **์ผ์ผ ๋น„์šฉ ์ถ”์„ธ**: ์ตœ๊ทผ 7์ผ ๋™์•ˆ ํ˜„์žฌ ๊ตฌ๊ฐ„ ๋‚ด ์˜ˆ์ƒ ๋น„์šฉ๊ณผ Token ๋ณ€ํ™” ํ™•์ธ +* **์‚ฌ์šฉ์ž ์š”์•ฝ**: ์‚ฌ์šฉ์ž๋ณ„ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ๋น„์šฉ ์ง‘๊ณ„ +* **์ธ์Šคํ„ด์Šค ์š”์•ฝ**: ์ธ์Šคํ„ด์Šค๋ณ„ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ๋น„์šฉ ์ง‘๊ณ„ +* **์ตœ๊ทผ ๋น„์šฉ ๊ธฐ๋ก**: Trace, ์‚ฌ์šฉ์ž, ๋ชจ๋ธ ๋“ฑ ์กฐ๊ฑด์œผ๋กœ ๋น„์šฉ ๊ธฐ๋ก์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ํ™•์ธํ•˜๋ฉฐ, ๊ฐ์‚ฌ ์ƒ์„ธ๋กœ ์ด๋™ ๊ฐ€๋Šฅ + +> ์„ค๋ช…: ํ˜„์žฌ ์•„์ง ๋ชจ๋ธ ํ˜ธ์ถœ ๊ธฐ๋ก์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ž…๋ ฅ Token, ์ถœ๋ ฅ Token, ๋น„์šฉ, ์ถ”์„ธ ์ฐจํŠธ๊ฐ€ ๋ชจ๋‘ 0 ์œผ๋กœ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” ์ •์ƒ์ž…๋‹ˆ๋‹คใ€‚ + +### 9.5 AI ๊ฐ์‚ฌ ๋ชจ๋“ˆ + +AI ๊ฐ์‚ฌ ํŽ˜์ด์ง€๋Š” ์ตœ๊ทผ์˜ ๊ด€๋ฆฌํ˜• ๋ชจ๋ธ ํ˜ธ์ถœ ๊ธฐ๋ก์„ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ด€๋ฆฌ์ž๊ฐ€ ๋ชจ๋ธ ํ˜ธ์ถœ, Token ์‚ฌ์šฉ, ๋ผ์šฐํŒ… ๊ฒฐ๊ณผ๋ฅผ ์ถ”์ ํ•˜๊ณ  ์ ๊ฒ€ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค. + +![](./main/7.png) + +์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. + +* **์ตœ๊ทผ AI Trace**: ์ตœ๊ทผ ๋ชจ๋ธ ํ˜ธ์ถœ ์ฒด์ธ ํ™•์ธ +* **Trace ๋ชฉ๋ก**: ์ตœ๊ทผ ๊ด€๋ฆฌํ˜• Trace ๋ฅผ ํ†ตํ•ฉ ํ…Œ์ด๋ธ”์—์„œ ํ™•์ธ +* **๊ฒ€์ƒ‰ ๋ฐ ํ•„ํ„ฐ๋ง**: Trace, ์š”์ฒญ ๋‚ด์šฉ, ์‚ฌ์šฉ์ž, ๋ชจ๋ธ ๋“ฑ ์กฐ๊ฑด์œผ๋กœ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ +* **์ƒํƒœ ํ•„ํ„ฐ๋ง**: ์ƒํƒœ๋ณ„๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ํ˜ธ์ถœ ๊ฒฐ๊ณผ ํ™•์ธ ๊ฐ€๋Šฅ +* **๋ชจ๋ธ ํ•„ํ„ฐ๋ง**: ๋ชจ๋ธ๋ณ„๋กœ ํ•ด๋‹น ํ˜ธ์ถœ ๊ธฐ๋ก ํ•„ํ„ฐ๋ง ๊ฐ€๋Šฅ +* **ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋ฐ ์ƒˆ๋กœ๊ณ ์นจ**: ๊ฐ์‚ฌ ๊ฒฐ๊ณผ๋ฅผ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ํ™•์ธํ•˜๊ณ  ์ˆ˜๋™ ์ƒˆ๋กœ๊ณ ์นจ ๊ฐ€๋Šฅ + +> ์„ค๋ช…: ํŽ˜์ด์ง€์— โ€œ์•„์ง AI ๊ฐ์‚ฌ ๊ธฐ๋ก์ด ์—†์Šต๋‹ˆ๋‹คโ€๋ผ๊ณ  ํ‘œ์‹œ๋˜๋ฉด, ์•„์ง ์‹ค์ œ ๋ชจ๋ธ ํ˜ธ์ถœ ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹คใ€‚ + +### 9.6 ์œ„ํ—˜ ์ œ์–ด ๊ทœ์น™ ๋ชจ๋“ˆ + +์œ„ํ—˜ ์ œ์–ด ๊ทœ์น™ ํŽ˜์ด์ง€๋Š” ๋ฏผ๊ฐ ์ฝ˜ํ…์ธ  ํƒ์ง€ ๊ทœ์น™์„ ๊ตฌ์„ฑํ•˜๊ณ , ๊ทœ์น™ ์ ์ค‘ ํ›„ ์–ด๋–ค ์ฒ˜๋ฆฌ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. + +![](./main/8.png) + +์ด ๋ชจ๋“ˆ์€ ์ฃผ๋กœ ๋‹ค์Œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. + +* **๊ทœ์น™ ๋ชฉ๋ก ๊ด€๋ฆฌ**: ์ „์ฒด ๊ทœ์น™๊ณผ ํ™œ์„ฑ ์ƒํƒœ ํ™•์ธ +* **๊ทœ์น™ ๋ถ„๋ฅ˜ ๋ณด๊ธฐ**: ๊ฐœ์ธ์ •๋ณด, ํšŒ์‚ฌ ์ •๋ณด, ๊ณ ๊ฐ ์—…๋ฌด, ๋ณด์•ˆ ์ž๊ฒฉ ์ •๋ณด, ์žฌ๋ฌด/๋ฒ•๋ฌด, ์ •์น˜์  ๋ฏผ๊ฐ, ์‚ฌ์šฉ์ž ์ •์˜ ๋“ฑ ๋ถ„๋ฅ˜๋ณ„๋กœ ๊ทœ์น™ ํ™•์ธ ๊ฐ€๋Šฅ +* **๊ทœ์น™ ํ•„๋“œ ๊ตฌ์„ฑ**: ๊ทœ์น™ ID, ํ‘œ์‹œ ์ด๋ฆ„, ์‹ฌ๊ฐ๋„, ๋™์ž‘, ์ •๋ ฌ ์ˆœ์„œ, ์ •๊ทœ์‹ Pattern, ์„ค๋ช… ์„ค์ • ๊ฐ€๋Šฅ +* **๊ทœ์น™ ๋™์ž‘ ์ œ์–ด**: ๊ทœ์น™ ์ ์ค‘ ์‹œ ํ†ต๊ณผ์‹œํ‚ค๊ฑฐ๋‚˜ ๋ณด์•ˆ ๋ชจ๋ธ๋กœ ๋ผ์šฐํŒ…ํ•˜๋„๋ก ์„ ํƒ ๊ฐ€๋Šฅ +* **์ผ๊ด„ ํ™œ์„ฑํ™” / ๋น„ํ™œ์„ฑํ™”**: ๊ทœ์น™ ์ƒํƒœ๋ฅผ ์ผ๊ด„๋กœ ์กฐ์ • ๊ฐ€๋Šฅ +* **๊ทœ์น™ ํ…Œ์ŠคํŠธ ์ฝ˜์†”**: ์ƒ˜ํ”Œ ํ…์ŠคํŠธ๋ฅผ ๋ถ™์—ฌ ๋„ฃ์–ด ํ™œ์„ฑ ๊ทœ์น™ ๋˜๋Š” ์ดˆ์•ˆ ๊ทœ์น™์ด ๋ฌด์—‡์— ์ ์ค‘ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ + +ํ˜„์žฌ ๋‚ด์žฅ๋œ ๊ทœ์น™ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•˜์ง€๋งŒ ์ด์— ํ•œ์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +* ๊ฐœ์ธ์ •๋ณด: ์ด๋ฉ”์ผ ์ฃผ์†Œ, ํœด๋Œ€์ „ํ™” ๋ฒˆํ˜ธ, ์‹ ๋ถ„์ฆ ๋ฒˆํ˜ธ, ์—ฌ๊ถŒ ๋ฒˆํ˜ธ, ์€ํ–‰์นด๋“œ ๋ฌธ๋งฅ, ์ฃผ์†Œ, ์ด๋ ฅ์„œ ๋‚ด์šฉ ๋“ฑ +* ํšŒ์‚ฌ ์ •๋ณด: ๋‚ด๋ถ€ IP, ๋‚ด๋ถ€ ๋„๋ฉ”์ธ, ํ˜ธ์ŠคํŠธ ๋ช…๋ช…, Kubernetes Service DNS, ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋ช…, ์กฐ์ง ๊ตฌ์กฐ, ๊ธ‰์—ฌ / HR ์ •๋ณด ๋“ฑ +* ๊ณ ๊ฐ ์—…๋ฌด: ๊ณ ๊ฐ ๋ชฉ๋ก, ๊ณ„์•ฝ / ๊ฒฌ์ ์„œ, ์„ธ๊ธˆ๊ณ„์‚ฐ์„œ ์„ธ๊ธˆ ๋ฒˆํ˜ธ, CRM / ํ‹ฐ์ผ“ ๋ฐ์ดํ„ฐ ๋“ฑ +* ๋ณด์•ˆ ์ž๊ฒฉ ์ •๋ณด: ๊ฐœ์ธ ํ‚ค, API Key, Token, JWT, Cookie / Session, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด, Kubeconfig, ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋น„๋ฐ€๊ฐ’ ๋“ฑ +* ์žฌ๋ฌด/๋ฒ•๋ฌด: ์˜ˆ์‚ฐ, ์ด์ต, ๋งค์ถœ, ๋ฒ•๋ฌด ์˜๊ฒฌ, ์†Œ์†ก, NDA ๋“ฑ +* ์ •์น˜์  ๋ฏผ๊ฐ: ์ •์น˜ ๊ธฐ๊ด€, ๊ตฐ์‚ฌ/๊ตญ๊ฐ€ ์•ˆ๋ณด, ๊ทน๋‹จ ํญ๋ ฅ ๊ด€๋ จ ํ‘œํ˜„ ๋“ฑ + +> ์„ค๋ช…: ๊ธฐ๋ณธ ๊ทœ์น™์€ ์ด๋ฏธ ๋‹ค์–‘ํ•œ ์ผ๋ฐ˜์ ์ธ ๋ฏผ๊ฐ ์ •๋ณด ํƒ์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํฌ๊ด„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์‚ฌ์šฉ ์‹œ์—๋Š” ์—…๋ฌด ์š”๊ตฌ์— ๋”ฐ๋ผ ๊ทœ์น™์„ ์ถ”๊ฐ€, ์กฐ์ • ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คใ€‚ +--- + + +## 10. ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ชจ๋“ˆ ์„ค๋ช… + +์›Œํฌ์ŠคํŽ˜์ด์Šค๋Š” ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ํ”Œ๋žซํผ์— ๋“ค์–ด์˜จ ํ›„ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ์ž‘์—… ์˜์—ญ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ ๋ฆฌ์†Œ์Šค ํ• ๋‹น๋Ÿ‰ ์กฐํšŒ, ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ, ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ, OpenClaw ๊ด€๋ จ ๋ฆฌ์†Œ์Šค ์œ ์ง€์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“ˆ์€ ๊ด€๋ฆฌ์ž ์ธก์˜ โ€œ์ฝ˜์†” ๊ฐœ์š”โ€์™€ ๋‹ฌ๋ฆฌ ์ผ์ƒ ์‚ฌ์šฉ ๋ฐ ์šด์˜ ์ž‘์—…์— ๋” ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ์Šต๋‹ˆ๋‹คใ€‚ + +### 10.1 ์›Œํฌ์ŠคํŽ˜์ด์Šค ํ™ˆ +![](./main/9.png) +์›Œํฌ์ŠคํŽ˜์ด์Šค ํ™ˆ์€ ํ˜„์žฌ ๊ณ„์ •์˜ ์ธ์Šคํ„ด์Šค ๋ฐ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ํ˜„ํ™ฉ์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ฃผ๋กœ ๋‹ค์Œ ๋‚ด์šฉ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค๏ผš + +- **๋‚ด ์ธ์Šคํ„ด์Šค**: ํ˜„์žฌ ๊ณ„์ •์—์„œ ์ƒ์„ฑํ•œ ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹คใ€‚ +- **์‹คํ–‰ ์ค‘**: ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹คใ€‚ +- **์‚ฌ์šฉ๋œ ์Šคํ† ๋ฆฌ์ง€**: ํ˜„์žฌ ๊ณ„์ •์ด ์‚ฌ์šฉ ์ค‘์ธ ์Šคํ† ๋ฆฌ์ง€ ๊ณต๊ฐ„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹คใ€‚ +- **๋‚ด ๋ฆฌ์†Œ์Šค ํ• ๋‹น๋Ÿ‰**: ํ˜„์žฌ ๊ณ„์ •์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ• ๋‹น๋Ÿ‰ ์ •๋ณด(์ธ์Šคํ„ด์Šค ์ˆ˜, ์ตœ๋Œ€ CPU ์ฝ”์–ด ์ˆ˜, ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ, ์ตœ๋Œ€ ์Šคํ† ๋ฆฌ์ง€, ์ตœ๋Œ€ GPU ์ˆ˜)๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹คใ€‚ +- **๋น ๋ฅธ ์ž‘์—…**: **์ƒˆ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ** ๋ฐ **๋ชจ๋“  ์ธ์Šคํ„ด์Šค ๋ณด๊ธฐ** ๋‘ ๊ฐœ์˜ ์ง„์ž…์ ์„ ์ œ๊ณตํ•˜์—ฌ ํ”Œ๋žซํผ์„ ๋น ๋ฅด๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹คใ€‚ + +> ์ฐธ๊ณ : ํŽ˜์ด์ง€์— โ€œ์•„์ง ์ธ์Šคํ„ด์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹คโ€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด, ๋ฐ”๋กœ **์ƒˆ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ**์„ ํด๋ฆญํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ OpenClaw Desktop ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คใ€‚ + +### 10.2 ๋‚ด ์ธ์Šคํ„ด์Šค + +**๋‚ด ์ธ์Šคํ„ด์Šค** ํŽ˜์ด์ง€๋Š” ํ˜„์žฌ ๊ณ„์ •์—์„œ ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ํ†ตํ•ฉ ์กฐํšŒ ๋ฐ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€๋Š” ์ฃผ๋กœ ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹คใ€‚ +![](./main/10.png) +์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์›๋˜๋Š” ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค๏ผš + +- **์ธ์Šคํ„ด์Šค ์ƒํƒœ ๋ณด๊ธฐ**: ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ ์ค‘, ์‹คํ–‰ ์ค‘, ์ค‘์ง€๋จ ๋˜๋Š” ๋น„์ •์ƒ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹คใ€‚ +- **์ธ์Šคํ„ด์Šค ์ƒ์„ธ ์ง„์ž…**: ์ธ์Šคํ„ด์Šค์˜ ๊ธฐ๋ณธ ์ •๋ณด, ๋ฆฌ์†Œ์Šค ๊ตฌ์„ฑ ๋ฐ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹คใ€‚ +- **์ธ์Šคํ„ด์Šค ์ค‘์ง€**: ์ธ์Šคํ„ด์Šค๊ฐ€ ๋น„์ •์ƒ์ด๊ฑฐ๋‚˜ ํ™˜๊ฒฝ์„ ๋‹ค์‹œ ๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ค‘์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คใ€‚ +- **์ธ์Šคํ„ด์Šค ์‚ญ์ œ**: ์ธ์Šคํ„ด์Šค๊ฐ€ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๋•Œ CPU, ๋ฉ”๋ชจ๋ฆฌ, ์Šคํ† ๋ฆฌ์ง€ ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•ด์ œํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คใ€‚ + +> ์ฐธ๊ณ : ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๊ด€๋ จ ๋ฆฌ์†Œ์Šค๋„ ํ•จ๊ป˜ ์ •๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์‹คํ–‰ ์ „์— ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ์™€ ๊ตฌ์„ฑ์ด ๋ฐฑ์—…๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”ใ€‚ + +### 10.3 ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ + +**๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ** ํŽ˜์ด์ง€๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ OpenClaw ๋ฆฌ์†Œ์Šค ๋‚ด์šฉ์„ ์œ ์ง€ํ•˜์—ฌ, ์ธ์Šคํ„ด์Šค ์‹œ์ž‘ ํ›„ ์ฃผ์ž…ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹คใ€‚ +![](./main/11.png) +ํŽ˜์ด์ง€์—๋Š” ์ฃผ๋กœ ๋‹ค์Œ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค๏ผš + +- **๋ฆฌ์†Œ์Šค**: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค ํ•ญ๋ชฉ์„ ์กฐํšŒํ•˜๊ณ  ์œ ์ง€ํ•ฉ๋‹ˆ๋‹คใ€‚ +- **๋ฆฌ์†Œ์Šค ํŒจํ‚ค์ง€**: ์—ฌ๋Ÿฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํŒจํ‚ค์ง€๋กœ ๋ฌถ์–ด ์ผ๊ด„ ์ฃผ์ž…์„ ์‰ฝ๊ฒŒ ํ•ฉ๋‹ˆ๋‹คใ€‚ +- **์ฃผ์ž… ๊ธฐ๋ก**: ๋ฆฌ์†Œ์Šค ์ฃผ์ž… ์ด๋ ฅ๊ณผ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹คใ€‚ + +๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ํŽ˜์ด์ง€ ์™ผ์ชฝ์—์„œ๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜•๋ณ„๋กœ ๊ตฌ๋ถ„ ๊ด€๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ํ˜„์žฌ ํŽ˜์ด์ง€์— ํ‘œ์‹œ๋˜๋Š” ์œ ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค๏ผš + +- **์ฑ„๋„** +- **์Šคํ‚ฌ** +- **์—์ด์ „ํŠธ(์ถœ์‹œ ์˜ˆ์ •)** +- **์˜ˆ์•ฝ ์ž‘์—…(์ถœ์‹œ ์˜ˆ์ •)** + +ํŽ˜์ด์ง€ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์—์„œ๋Š” ๋‹ค์Œ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค๏ผš + +- **์ƒˆ๋กœ๊ณ ์นจ**: ํ˜„์žฌ ๋ฆฌ์†Œ์Šค ๋ชฉ๋ก์„ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹คใ€‚ +- **์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ**: ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹คใ€‚ + +> ์ฐธ๊ณ : ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๋Š” ์ฃผ๋กœ ์ธ์Šคํ„ด์Šค ์‹œ์ž‘ ํ›„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” OpenClaw ๋ฆฌ์†Œ์Šค ๋‚ด์šฉ์„ ์ค€๋น„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๊ณผ์ •์„ ์ง์ ‘ ๋Œ€์ฒดํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ **์ˆ˜๋™ ๋ฆฌ์†Œ์Šค**, **๋ฆฌ์†Œ์Šค ํŒจํ‚ค์ง€**, **์•„์นด์ด๋ธŒ ๊ฐ€์ ธ์˜ค๊ธฐ** ๋“ฑ์˜ ๋ฐฉ์‹๊ณผ ํ•จ๊ป˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คใ€‚ + + +### 10.3.1 ์ฑ„๋„ ์ƒ์„ฑ + +โ€œ์ฑ„๋„โ€์€ OpenClaw์™€ ์™ธ๋ถ€ ๋ฉ”์‹œ์ง• ํ”Œ๋žซํผ ๋˜๋Š” ์ ‘์† ๋Œ€์ƒ ๊ฐ„์˜ ์—ฐ๊ฒฐ ๋ฐฉ์‹์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Telegram, Slack, Feishu / Lark ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. + +![](./main/12.png) + +์ฑ„๋„์„ ์ƒ์„ฑํ•  ๋•Œ๋Š” ๋‹ค์Œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. + +1. **๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ** ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ณ  **๋ฆฌ์†Œ์Šค** ํƒญ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. +2. ์™ผ์ชฝ ๋ฆฌ์†Œ์Šค ์œ ํ˜•์—์„œ **์ฑ„๋„**์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. +3. ํŽ˜์ด์ง€ ์˜ค๋ฅธ์ชฝ์˜ **์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ**๋ฅผ ํด๋ฆญํ•˜์—ฌ โ€œ์ƒˆ ๋ฆฌ์†Œ์Šคโ€ ํŒ์—…์„ ์—ฝ๋‹ˆ๋‹ค. +4. ํŒ์—…์—์„œ ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. + - **์œ ํ˜•**: **์ฑ„๋„** ์„ ํƒ + - **๋ฆฌ์†Œ์Šค Key**: ํ•ด๋‹น ์ฑ„๋„์˜ ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์‹๋ณ„ํ•˜๊ธฐ ์‰ฝ๊ณ  ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์˜๋ฌธ๋ช… ๋˜๋Š” ์กฐํ•ฉ๋ช…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค + - **์ด๋ฆ„**: ์ฑ„๋„ ํ‘œ์‹œ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค + - **ํƒœ๊ทธ**: ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ, ๋ถ„๋ฅ˜ ๋ฐ ๊ฒ€์ƒ‰์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค + - **์„ค๋ช…**: ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ, ์ฑ„๋„์˜ ์šฉ๋„๋ฅผ ๋ณด์ถฉ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค + - **์‚ฌ์šฉ ์ค‘**: ์ฒดํฌ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค +5. **Channel ํ…œํ”Œ๋ฆฟ** ์˜์—ญ์—์„œ ์‹œ์ž‘ ํ…œํ”Œ๋ฆฟ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ง€์›๋˜๋Š” ํ…œํ”Œ๋ฆฟ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. + - `Telegram` + - `Slack` + - `Feishu / Lark` + +6. ํ…œํ”Œ๋ฆฟ์„ ์„ ํƒํ•œ ํ›„ **ํ…œํ”Œ๋ฆฟ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ**๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์€ ํ•ด๋‹น ํ…œํ”Œ๋ฆฟ์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ์•„๋ž˜์˜ **๋‚ด์šฉ JSON** ์˜์—ญ์— ์ž๋™์œผ๋กœ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. +7. ์‹ค์ œ ์—ฐ๋™ ์ •๋ณด์— ๋”ฐ๋ผ **๋‚ด์šฉ JSON**์˜ ํ•„๋“œ ๋‚ด์šฉ์„ ๊ณ„์† ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. +8. ์„ค์ •์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•œ ํ›„ ์ €์žฅ์„ ํด๋ฆญํ•˜์—ฌ ์ฑ„๋„ ์ƒ์„ฑ์„ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค. + +> ์„ค๋ช…: +> - **Channel ํ…œํ”Œ๋ฆฟ**์€ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค; +> - **๋‚ด์šฉ JSON**์€ ์ตœ์ข…์ ์œผ๋กœ ์ ์šฉ๋˜๋Š” ์ฑ„๋„ ๊ตฌ์„ฑ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค; +> - ์™„์ „ํžˆ ์ผ์น˜ํ•˜๋Š” ํ…œํ”Œ๋ฆฟ์ด ์—†๋Š” ๊ฒฝ์šฐ **๋‚ด์šฉ JSON**์— ์ง์ ‘ ์ˆ˜๋™์œผ๋กœ ์„ค์ •์„ ์ž…๋ ฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. + +### 10.3.2 ์Šคํ‚ฌ ์—…๋กœ๋“œ + +์Šคํ‚ฌ์€ OpenClaw์— ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์€ ์•„์นด์ด๋ธŒ ํŒŒ์ผ ์—…๋กœ๋“œ๋ฅผ ํ†ตํ•ด ์Šคํ‚ฌ์„ ์ผ๊ด„ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. + +![](./main/13.png) + +์Šคํ‚ฌ์„ ์—…๋กœ๋“œํ•  ๋•Œ๋Š” ๋‹ค์Œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. + +1. **๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ** ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ณ  **๋ฆฌ์†Œ์Šค** ํƒญ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. +2. ์™ผ์ชฝ ๋ฆฌ์†Œ์Šค ์œ ํ˜•์—์„œ **์Šคํ‚ฌ**์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. +3. **ํŒŒ์ผ ์„ ํƒ**์„ ํด๋ฆญํ•˜์—ฌ ๋กœ์ปฌ ์Šคํ‚ฌ ์••์ถ• ํŒŒ์ผ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. +4. ํ˜„์žฌ ํŽ˜์ด์ง€๋Š” **`.zip`** ํŒŒ์ผ ์—…๋กœ๋“œ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. +5. ํŒŒ์ผ ์„ ํƒ์ด ์™„๋ฃŒ๋˜๋ฉด ์˜ค๋ฅธ์ชฝ์˜ **์Šคํ‚ฌ ์•„์นด์ด๋ธŒ ์—…๋กœ๋“œ**๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹คใ€‚ +6. ์‹œ์Šคํ…œ์€ ์—…๋กœ๋“œ๋œ ๋‚ด์šฉ์„ ์ž๋™์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ๊ฐ 1๋‹จ๊ณ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ•˜๋‚˜์˜ ์Šคํ‚ฌ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. +7. ์—…๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์Šคํ‚ฌ ๋ชฉ๋ก์—์„œ ๊ฐ€์ ธ์˜จ ์Šคํ‚ฌ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คใ€‚ + +> ์„ค๋ช…: +> - ์Šคํ‚ฌ ์•„์นด์ด๋ธŒ๋Š” ๋ฏธ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ •๋ฆฌํ•ด ๋‘๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค๏ผ› +> - ๊ฐ 1๋‹จ๊ณ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๋…๋ฆฝ๋œ ์Šคํ‚ฌ๋กœ ์ธ์‹๋ฉ๋‹ˆ๋‹ค๏ผ› +> - ์—…๋กœ๋“œ ํ›„ ๋ชฉ๋ก์ด ๋ฐ”๋กœ ์ƒˆ๋กœ๊ณ ์นจ๋˜์ง€ ์•Š์œผ๋ฉด ํŽ˜์ด์ง€ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์˜ **์ƒˆ๋กœ๊ณ ์นจ**์„ ์ˆ˜๋™์œผ๋กœ ํด๋ฆญํ•˜์—ฌ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คใ€‚ +--- + + +## 11. ๋ฌธ์ œ์™€ ๋Œ€์‘ ๋น ๋ฅธ ์ฐธ์กฐ + + +### 11.1 ์Šคํ† ๋ฆฌ์ง€ ๋ฌธ์ œ ์ „์šฉ ์ฒ˜๋ฆฌ(PV/PVC) + +๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ณด์ด๋Š” ๊ฒฝ์šฐ๏ผš + +```text +0/1 nodes are available: pod has unbound immediate PersistentVolumeClaims +``` + +ํด๋Ÿฌ์Šคํ„ฐ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ x86 ๋‹จ์ผ ๋…ธ๋“œ ์„œ๋ฒ„ ๋ฐฉ์‹์œผ๋กœ ๋กœ์ปฌ `hostPath` PV/PVC๋ฅผ ์ˆ˜๋™ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คใ€‚ + +> ์ด ๋ฐฉ์‹์€ ๋‹จ์ผ ๋…ธ๋“œ ์„œ๋ฒ„ ํ…Œ์ŠคํŠธ ๋˜๋Š” ๊ฒฝ๋Ÿ‰ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” NFS, Ceph, ํด๋ผ์šฐ๋“œ ๋””์Šคํฌ ๋“ฑ ์ •์‹ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹คใ€‚ + +#### 11.1.1 PV ์ƒ์„ฑ +```bash +kubectl apply -f - < +## 12. ๊ถŒ์žฅ ์ตœ์ข… ์ ๊ฒ€ ์ˆœ์„œ(์ž๊ฐ€ ์ ๊ฒ€์šฉ) +1. `kubectl get nodes` +2. `kubectl get storageclass` +3. `kubectl get pods -n clawmanager-system` +4. `kubectl get pvc -n clawmanager-system` +5. `kubectl get svc -n clawmanager-system` +6. ๋ธŒ๋ผ์šฐ์ €์—์„œ `https://:30443` ์—ด๊ธฐ +7. ๋ฐฑ์—”๋“œ์— ๋กœ๊ทธ์ธํ•˜์—ฌ **๋ณด์•ˆ ๋ชจ๋ธ ๊ตฌ์„ฑ** ์™„๋ฃŒ +8. ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ **OpenClaw Desktop** ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ