Spaces:
Sleeping
Sleeping
| """ | |
| Пример интеграции State Manager с OpenCLaW на HuggingFace Space | |
| """ | |
| import os | |
| import gradio as gr | |
| from openclaw_state_manager import OpenClawStateManager | |
| # Инициализация State Manager | |
| HF_TOKEN = os.environ.get("HF_TOKEN") | |
| state_manager = OpenClawStateManager( | |
| hf_token=HF_TOKEN, | |
| username="mcchtsgladiatis", | |
| config_repo="openclaw-config", | |
| workspace_dataset="openclaw-workspace", | |
| auto_save_interval=900 # 15 минут | |
| ) | |
| # Восстановление состояния при старте | |
| print("="*60) | |
| print("ЗАПУСК OPENCLAW С АВТОСОХРАНЕНИЕМ") | |
| print("="*60) | |
| state_manager.restore_state() | |
| # Запуск автосохранения | |
| state_manager.start_auto_save() | |
| # Здесь идет ваш код запуска OpenCLaW | |
| # Например: | |
| # from openclaw import OpenClawGateway | |
| # gateway = OpenClawGateway(config_path="/root/.openclaw/openclaw-config.json") | |
| # gateway.start() | |
| # Пример Gradio интерфейса с кнопкой ручного сохранения | |
| def manual_save(): | |
| """Ручное сохранение состояния""" | |
| success = state_manager.save_state(force=True) | |
| if success: | |
| return "✅ Состояние успешно сохранено!" | |
| else: | |
| return "⚠️ Нет изменений для сохранения" | |
| def get_status(): | |
| """Получение статуса менеджера""" | |
| status = state_manager.get_status() | |
| return f""" | |
| **Статус State Manager:** | |
| - Config repo: `{status['config_repo']}` | |
| - Workspace dataset: `{status['workspace_dataset']}` | |
| - Автосохранение: {'✅ Активно' if status['auto_save_enabled'] else '❌ Неактивно'} | |
| - Интервал: {status['auto_save_interval']}s ({status['auto_save_interval']//60} мин) | |
| - Локальная конфигурация: {'✅' if status['local_config_exists'] else '❌'} | |
| - Локальный workspace: {'✅' if status['local_workspace_exists'] else '❌'} | |
| """ | |
| # Создаем Gradio интерфейс | |
| with gr.Blocks(title="OpenCLaW Control Panel") as demo: | |
| gr.Markdown("# 🤖 OpenCLaW Control Panel") | |
| gr.Markdown("Управление состоянием OpenCLaW на HuggingFace Spaces") | |
| with gr.Tab("💾 Сохранение"): | |
| gr.Markdown("### Ручное сохранение состояния") | |
| gr.Markdown("Нажмите кнопку для немедленного сохранения текущего состояния на HuggingFace Hub") | |
| save_btn = gr.Button("💾 Сохранить состояние сейчас", variant="primary", size="lg") | |
| save_output = gr.Textbox(label="Результат", interactive=False) | |
| save_btn.click(fn=manual_save, outputs=save_output) | |
| with gr.Tab("📊 Статус"): | |
| gr.Markdown("### Статус State Manager") | |
| status_btn = gr.Button("🔄 Обновить статус") | |
| status_output = gr.Markdown() | |
| status_btn.click(fn=get_status, outputs=status_output) | |
| # Показываем статус при загрузке | |
| demo.load(fn=get_status, outputs=status_output) | |
| with gr.Tab("ℹ️ Информация"): | |
| gr.Markdown(""" | |
| ### Как это работает | |
| **Стратегия B: Раздельное хранение** | |
| Ваше состояние OpenCLaW автоматически сохраняется в двух местах: | |
| 1. **Конфигурация** → Репозиторий модели на HF Hub | |
| - Файл `openclaw-config.json` | |
| - Все настройки агентов, каналов, моделей | |
| 2. **Workspace** → Dataset на HF Hub | |
| - История диалогов всех агентов | |
| - Пользовательские данные | |
| - Файлы workspace | |
| **Автоматическое сохранение:** | |
| - Каждые 15 минут фоновый поток сохраняет состояние | |
| - При перезапуске Space состояние автоматически восстанавливается | |
| **Ручное сохранение:** | |
| - Используйте кнопку "Сохранить состояние сейчас" для немедленного сохранения | |
| - Рекомендуется перед важными изменениями | |
| **Репозитории:** | |
| - Config: `mcchtsgladiatis/openclaw-config` (private) | |
| - Workspace: `mcchtsgladiatis/openclaw-workspace` (private) | |
| """) | |
| # Запуск интерфейса | |
| if __name__ == "__main__": | |
| demo.launch( | |
| server_name="0.0.0.0", | |
| server_port=7860, | |
| share=False | |
| ) | |