三多运维

离线安装 OpenClaw 伴侣 Hermes Agent

18
0

Git 仓库下载 Hermes Agent 离线包

上传并解压指定目录下 官方仓库包 hermes-agent-main.zip

# 命令步骤
lukey@ai:~$ mkdir .hermes
lukey@ai:~$ cd .hermes/
lukey@ai:~/.hermes$ unzip hermes-agent-main.zip
lukey@ai:~/.hermes$ cd hermes-agent/

lukey@ai:~/.hermes/hermes-agent$ uv venv --python 3.11
Using CPython 3.11.15
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
lukey@ai:~/.hermes/hermes-agent$ source .venv/bin/activate

(hermes-agent) lukey@ai:~/.hermes/hermes-agent$ uv pip install -e ".[all]"
Resolved 180 packages in 3m 05s
      Built hermes-agent @ file:///home/lukey/.hermes/hermes-agent
      Built alibabacloud-gateway-dingtalk==1.0.2
      Built alibabacloud-tea==0.4.3
      Built alibabacloud-gateway-spi==0.0.3
      Built alibabacloud-endpoint-util==0.0.4
      Built alibabacloud-credentials-api==1.0.0
⠋ Preparing packages... (147/179)
⠹ Preparing packages... (147/179)
⠹ Preparing packages... (147/179)
⠼ Preparing packages... (147/179)
⠇ Preparing packages... (171/179)
⠋ Preparing packages... (171/179)
⠸ Preparing packages... (171/179)
botocore                                     ------------------------------ 9.94 MiB/14.21 MiB
numpy                                        ------------------------------ 9.98 MiB/16.14 MiB
Installed 180 packages in 375ms
 + agent-client-protocol==0.9.0
 + aiofiles==24.1.0
 + aiohappyeyeballs==2.6.1
 + aiohttp==3.13.5
 + aiohttp-retry==2.9.1
 + aiosignal==1.4.0
 + aiosqlite==0.22.1
 + alibabacloud-credentials==1.0.8
 + alibabacloud-credentials-api==1.0.0
 + alibabacloud-dingtalk==2.2.43
 + alibabacloud-endpoint-util==0.0.4
 + alibabacloud-gateway-dingtalk==1.0.2
 + alibabacloud-gateway-spi==0.0.3
 + alibabacloud-openapi-util==0.2.4
 + alibabacloud-tea==0.4.3
 + alibabacloud-tea-openapi==0.4.4
 + alibabacloud-tea-util==0.3.14
 + annotated-doc==0.0.4
 + annotated-types==0.7.0
 + anthropic==0.96.0
 + anyio==4.13.0
 + apscheduler==3.11.2
 + asyncpg==0.31.0
 + attrs==26.1.0
 + av==17.0.1
 + base58==2.1.1
 + boto3==1.42.91
 + botocore==1.42.91
 + cbor2==5.9.0
 + certifi==2026.2.25
 + cffi==2.0.0
 + charset-normalizer==3.4.7
 + click==8.3.2
 + croniter==6.2.2
 + cryptography==46.0.7
 + ctranslate2==4.7.1
 + darabonba-core==1.0.5
 + davey==0.1.5
 + daytona==0.167.0
 + daytona-api-client==0.167.0
 + daytona-api-client-async==0.167.0
 + daytona-toolbox-api-client==0.167.0
 + daytona-toolbox-api-client-async==0.167.0
 + debugpy==1.8.20
 + deprecated==1.3.1
 + dingtalk-stream==0.24.3
 + discord-py==2.7.1
 + distro==1.9.0
 + docstring-parser==0.18.0
 + edge-tts==7.2.8
 + elevenlabs==1.59.0
 + eval-type-backport==0.3.1
 + exa-py==2.12.0
 + execnet==2.1.2
 + fal-client==0.13.2
 + fastapi==0.136.0
 + faster-whisper==1.2.1
 + filelock==3.29.0
 + fire==0.7.1
 + firecrawl-py==4.22.2
 + flatbuffers==25.12.19
 + frozenlist==1.8.0
 + fsspec==2026.3.0
 + googleapis-common-protos==1.74.0
 + grpclib==0.4.9
 + h11==0.16.0
 + h2==4.3.0
 + hermes-agent==0.10.0 (from file:///home/lukey/.hermes/hermes-agent)
 + hf-xet==1.4.3
 + honcho-ai==2.1.1
 + hpack==4.1.0
 + httpcore==1.0.9
 + httptools==0.7.1
 + httpx==0.28.1
 + httpx-sse==0.4.3
 + huggingface-hub==1.11.0
 + hyperframe==6.1.0
 + idna==3.11
 + importlib-metadata==8.7.1
 + iniconfig==2.3.0
 + jinja2==3.1.6
 + jiter==0.14.0
 + jmespath==1.1.0
 + jsonpath-python==1.1.5
 + jsonschema==4.26.0
 + jsonschema-specifications==2025.9.1
 + lark-oapi==1.5.3
 + markdown==3.10.2
 + markdown-it-py==4.0.0
 + markupsafe==3.0.3
 + mautrix==0.21.0
 + mcp==1.27.0
 + mdurl==0.1.2
 + mistralai==2.4.0
 + modal==1.4.2
 + mpmath==1.3.0
 + msgpack==1.1.2
 + multidict==6.7.1
 + nest-asyncio==1.6.0
 + numpy==2.4.4
 + obstore==0.8.2
 + onnxruntime==1.24.4
 + openai==2.32.0
 + opentelemetry-api==1.39.1
 + opentelemetry-exporter-otlp-proto-common==1.39.1
 + opentelemetry-exporter-otlp-proto-http==1.39.1
 + opentelemetry-instrumentation==0.60b1
 + opentelemetry-instrumentation-aiohttp-client==0.60b1
 + opentelemetry-proto==1.39.1
 + opentelemetry-sdk==1.39.1
 + opentelemetry-semantic-conventions==0.60b1
 + opentelemetry-util-http==0.60b1
 + packaging==26.1
 + parallel-web==0.4.2
 + pluggy==1.6.0
 + prompt-toolkit==3.0.52
 + propcache==0.4.1
 + protobuf==6.33.6
 + ptyprocess==0.7.0
 + pycparser==3.0
 + pycryptodome==3.23.0
 + pydantic==2.13.2
 + pydantic-core==2.46.2
 + pydantic-settings==2.13.1
 + pygments==2.20.0
 + pyjwt==2.12.1
 + pynacl==1.5.0
 + pypng==0.20220715.0
 + pytest==9.0.3
 + pytest-asyncio==1.3.0
 + pytest-xdist==3.8.0
 + python-dateutil==2.9.0.post0
 + python-dotenv==1.2.2
 + python-multipart==0.0.26
 + python-olm==3.2.16
 + python-telegram-bot==22.7
 + pyyaml==6.0.3
 + qrcode==7.4.2
 + referencing==0.37.0
 + requests==2.33.1
 + requests-toolbelt==1.0.0
 + rich==14.3.4
 + rpds-py==0.30.0
 + s3transfer==0.16.0
 + setuptools==82.0.1
 + shellingham==1.5.4
 + simple-term-menu==1.6.6
 + six==1.17.0
 + slack-bolt==1.28.0
 + slack-sdk==3.41.0
 + sniffio==1.3.1
 + socksio==1.0.0
 + sounddevice==0.5.5
 + sse-starlette==3.3.4
 + starlette==1.0.0
 + sympy==1.14.0
 + synchronicity==0.12.2
 + tabulate==0.10.0
 + tenacity==9.1.4
 + termcolor==3.3.0
 + tokenizers==0.22.2
 + toml==0.10.2
 + tornado==6.5.5
 + tqdm==4.67.3
 + typer==0.24.1
 + types-certifi==2021.10.8.3
 + types-toml==0.10.8.20260408
 + typing-extensions==4.15.0
 + typing-inspection==0.4.2
 + tzlocal==5.3.1
 + unpaddedbase64==2.1.0
 + urllib3==2.6.3
 + uvicorn==0.44.0
 + uvloop==0.22.1
 + watchfiles==1.1.1
 + wcwidth==0.6.0
 + websockets==15.0.1
 + wrapt==1.17.3
 + yarl==1.23.0
 + zipp==3.23.1



(hermes-agent) lukey@ai:~/.hermes/hermes-agent$ mkdir -p ~/.local/bin
(hermes-agent) lukey@ai:~/.hermes/hermes-agent$ ln -sf ~/hermes-agent/.venv/bin/hermes ~/.local/bin/hermes
(hermes-agent) lukey@ai:~/.hermes/hermes-agent$ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
(hermes-agent) lukey@ai:~/.hermes/hermes-agent$ source ~/.bashrc
lukey@ai:~/.hermes/hermes-agent$ hermes --version
Hermes Agent v0.10.0 (2026.4.16)
Project: /home/lukey/.hermes/hermes-agent
Python: 3.11.15
OpenAI SDK: 2.32.0
lukey@ai:~/.hermes/hermes-agent$

OpenClaw 配置嵌入 Hermes Agent

lukey@ai:~/.hermes/hermes-agent$ hermes claw migrate

┌─────────────────────────────────────────────────────────┐
│          ⚕ Hermes — OpenClaw Migration                 │
└─────────────────────────────────────────────────────────┘


◆ Migration Settings
  Source:      /home/lukey/.openclaw
  Target:      /home/lukey/.hermes
  Preset:      full
  Overwrite:   no (skip conflicts)
  Secrets:     yes (allowlisted only)


✗ OpenClaw appears to be running:
    * systemd service: openclaw-gateway.service
    * openclaw process(es) (PIDs: 306, 836, 844)
  Messaging platforms (Telegram, Discord, Slack) only allow one active session per bot token. If you continue, both OpenClaw and Hermes may try to use the same token, causing disconnects.
  Recommendation: stop OpenClaw before migrating.

Continue anyway? [y/N]: y


◆ Migration Preview — 6 item(s) would be imported
  No changes have been made yet. Review the list below:


◆ Dry Run Results
  No files were modified. This is a preview of what would happen.

  ✓ Would migrate:
      user-profile           → ~/.hermes/memories/USER.md
      model-config           → ~/.hermes/config.yaml
      daily-memory           → ~/.hermes/memories/MEMORY.md
      agent-config           → config.yaml agent/compression/terminal
      env-var                → .env HERMES_GATEWAY_TOKEN
      full-providers         → config.yaml custom_providers[qwen]

  ⚠ Conflicts (skipped — use --overwrite to force):
      soul                    Target exists and overwrite is disabled

  ─ Skipped:
      workspace-agents        No workspace target was provided
      memory                  Source file not found
      messaging-settings      No Hermes-compatible messaging settings found
      secret-settings         No allowlisted Hermes-compatible secrets found
      discord-settings        No Discord settings found
      slack-settings          No Slack settings found
      whatsapp-settings       No WhatsApp settings found
      signal-settings         No Signal settings found
      provider-keys           No provider API keys found
      tts-config              No TTS configuration found in OpenClaw config
      command-allowlist       No allowlist patterns found
      skills                  No OpenClaw skills directory found
      shared-skills           No shared OpenClaw skills directories found
      tts-assets              Source directory not found
      raw-config-skip         Selected Hermes-compatible values were extracted; raw OpenClaw config was not copied.
      sensitive-skip          Contains secrets, binary state, or product-specific runtime data
      sensitive-skip          Contains secrets, binary state, or product-specific runtime data
      mcp-servers             No MCP servers found in OpenClaw config
      cron-jobs               No cron configuration found
      browser-config          No browser configuration found
      approvals-config        No approvals configuration found
      memory-backend          No memory backend configuration found
      ui-identity             No UI/identity configuration found
      logging-config          No logging/diagnostics configuration found

  Summary: 6 would migrate, 1 conflict(s), 24 skipped

  To execute the migration, run without --dry-run:
    hermes claw migrate --preset full

Proceed with migration? [Y/n]: y


◆ Migration Results

  ✓ Migrated:
      user-profile           → ~/.hermes/memories/USER.md
      model-config           → ~/.hermes/config.yaml
      daily-memory           → ~/.hermes/memories/MEMORY.md
      agent-config           → config.yaml agent/compression/terminal
      env-var                → .env HERMES_GATEWAY_TOKEN
      full-providers         → config.yaml custom_providers[qwen]

  ⚠ Conflicts (skipped — use --overwrite to force):
      soul                    Target exists and overwrite is disabled

  ─ Skipped:
      workspace-agents        No workspace target was provided
      memory                  Source file not found
      messaging-settings      No Hermes-compatible messaging settings found
      secret-settings         No allowlisted Hermes-compatible secrets found
      discord-settings        No Discord settings found
      slack-settings          No Slack settings found
      whatsapp-settings       No WhatsApp settings found
      signal-settings         No Signal settings found
      provider-keys           No provider API keys found
      tts-config              No TTS configuration found in OpenClaw config
      command-allowlist       No allowlist patterns found
      skills                  No OpenClaw skills directory found
      shared-skills           No shared OpenClaw skills directories found
      tts-assets              Source directory not found
      raw-config-skip         Selected Hermes-compatible values were extracted; raw OpenClaw config was not copied.
      sensitive-skip          Contains secrets, binary state, or product-specific runtime data
      sensitive-skip          Contains secrets, binary state, or product-specific runtime data
      mcp-servers             No MCP servers found in OpenClaw config
      cron-jobs               No cron configuration found
      browser-config          No browser configuration found
      approvals-config        No approvals configuration found
      memory-backend          No memory backend configuration found
      ui-identity             No UI/identity configuration found
      logging-config          No logging/diagnostics configuration found

  Summary: 6 migrated, 1 conflict(s), 24 skipped
  Full report saved to: /home/lukey/.hermes/migration/openclaw/20260420T161113

✓ Migration complete!

  ⚠ API keys were NOT migrated (secrets migration is disabled by default).
  Your OPENROUTER_API_KEY and other provider keys must be added manually.

  To migrate API keys, re-run with:
    hermes claw migrate --migrate-secrets

  Or add your key manually:
    hermes config set OPENROUTER_API_KEY sk-or-v1-...
lukey@ai:~/.hermes/hermes-agent$

迁移完成后运行 hermes doctor 检查配置状态,然后就可以用 hermes 或 hermes --tui 启动了

lukey@ai:~/.hermes/hermes-agent$ hermes doctor

┌─────────────────────────────────────────────────────────┐
│                 🩺 Hermes Doctor                        │
└─────────────────────────────────────────────────────────┘

◆ Python Environment
  ✓ Python 3.11.15
  ✓ Virtual environment active

◆ Required Packages
  ✓ OpenAI SDK
  ✓ Rich (terminal UI)
  ✓ python-dotenv
  ✓ PyYAML
  ✓ HTTPX
  ✓ Croniter (cron expressions) (optional)
  ✓ python-telegram-bot (optional)
  ✓ discord.py (optional)

◆ Configuration Files
  ✓ ~/.hermes/.env file exists
  ⚠ No API key found in ~/.hermes/.env
  ✓ ~/.hermes/config.yaml exists
  ✓ Config version up to date (v19)

◆ Auth Providers
  ⚠ Nous Portal auth (not logged in)
  ⚠ OpenAI Codex auth (not logged in)
    → No Codex credentials stored. Run `hermes auth` to authenticate.
  ⚠ Google Gemini OAuth (not logged in)
  ⚠ codex CLI not found (required for openai-codex login)

◆ Directory Structure
  ✓ ~/.hermes directory exists
  ✓ ~/.hermes/cron/ exists
  ✓ ~/.hermes/sessions/ exists
  ✓ ~/.hermes/logs/ exists
  ⚠ ~/.hermes/skills/ not found (will be created on first use)
  ✓ ~/.hermes/memories/ exists
  ✓ ~/.hermes/SOUL.md exists (persona configured)
  ✓ ~/.hermes/memories/ directory exists
  ✓ MEMORY.md exists (696 chars)
  ✓ USER.md exists (1366 chars)
    → ~/.hermes/state.db not created yet (will be created on first session)

◆ Command Installation
  ✓ Venv entry point exists (.venv/bin/hermes)
  ⚠ ~/.local/bin/hermes points to wrong target (→ /home/lukey/hermes-agent/.venv/bin/hermes, expected → /home/lukey/.hermes/hermes-agent/.venv/bin/hermes)

◆ External Tools
  ✓ git
  ✓ ripgrep (rg) (faster file search)
  ⚠ docker not found (optional)
  ✓ Node.js
  ⚠ agent-browser not installed (run: npm install)

◆ API Connectivity
  ⚠ OpenRouter API (not configured)

◆ Submodules
  ⚠ tinker-atropos not found (run: git submodule update --init --recursive)

◆ Tool Availability

  ✓ clarify
  ✓ code_execution
  ✓ cronjob
  ✓ delegation
  ✓ feishu_doc
  ✓ feishu_drive
  ✓ file
  ✓ memory
  ✓ terminal
  ✓ session_search
  ✓ skills
  ✓ todo
  ✓ tts
  ⚠ browser (system dependency not met)
  ⚠ discord (missing DISCORD_BOT_TOKEN)
  ⚠ homeassistant (system dependency not met)
  ⚠ image_gen (system dependency not met)
  ⚠ moa (missing OPENROUTER_API_KEY)
  ⚠ rl (missing TINKER_API_KEY, WANDB_API_KEY)
  ⚠ messaging (system dependency not met)
  ⚠ vision (system dependency not met)
  ⚠ web (missing EXA_API_KEY, PARALLEL_API_KEY, TAVILY_API_KEY, FIRECRAWL_API_KEY, FIRECRAWL_API_URL)

◆ Skills Hub
  ⚠ Skills Hub directory not initialized (run: hermes skills list)
  ⚠ No GITHUB_TOKEN (60 req/hr rate limit — set in ~/.hermes/.env for better rates)

◆ Memory Provider
  ✓ Built-in memory active (no external provider configured — this is fine)

────────────────────────────────────────────────────────────
  Found 3 issue(s) to address:

  1. Run 'hermes setup' to configure API keys
  2. Broken symlink at ~/.local/bin/hermes — run 'hermes doctor --fix'
  3. Run 'hermes setup' to configure missing API keys for full tool access

  Tip: run 'hermes doctor --fix' to auto-fix what's possible.

更具 Docker 自检逐一解决

lukey@ai:~/.hermes/hermes-agent$ hermes setup

┌─────────────────────────────────────────────────────────┐
│             ⚕ Hermes Agent Setup Wizard                │
├─────────────────────────────────────────────────────────┤
│  Let's configure your Hermes Agent installation.       │
│  Press Ctrl+C at any time to exit.                     │
└─────────────────────────────────────────────────────────┘



◆ OpenClaw Installation Detected
  Found OpenClaw data at /home/lukey/.openclaw
  Hermes can preview what would be imported before making any changes.

Would you like to see what can be imported? [Y/n]: y


◆ Migration Preview — 7 item(s) would be imported
  No changes have been made yet. Review the list below:

  Would import:
      soul                   → ~/.hermes/SOUL.md
      user-profile           → ~/.hermes/memories/USER.md
      model-config           → ~/.hermes/config.yaml
      daily-memory           → ~/.hermes/memories/MEMORY.md
      agent-config           → config.yaml agent/compression/terminal
      env-var                → .env HERMES_GATEWAY_TOKEN
      full-providers         → config.yaml custom_providers[qwen]

  Would skip:
      workspace-agents        No workspace target was provided
      memory                  Source file not found
      messaging-settings      No Hermes-compatible messaging settings found
      secret-settings         No allowlisted Hermes-compatible secrets found
      discord-settings        No Discord settings found
      slack-settings          No Slack settings found
      whatsapp-settings       No WhatsApp settings found
      signal-settings         No Signal settings found
      provider-keys           No provider API keys found
      tts-config              No TTS configuration found in OpenClaw config
      command-allowlist       No allowlist patterns found
      skills                  No OpenClaw skills directory found
      shared-skills           No shared OpenClaw skills directories found
      tts-assets              Source directory not found
      raw-config-skip         Selected Hermes-compatible values were extracted; raw OpenClaw config was not copied.
      sensitive-skip          Contains secrets, binary state, or product-specific runtime data
      sensitive-skip          Contains secrets, binary state, or product-specific runtime data
      mcp-servers             No MCP servers found in OpenClaw config
      cron-jobs               No cron configuration found
      browser-config          No browser configuration found
      approvals-config        No approvals configuration found
      memory-backend          No memory backend configuration found
      ui-identity             No UI/identity configuration found
      logging-config          No logging/diagnostics configuration found

  ── Warnings ──
    ⚠ Config values — OpenClaw settings may not map 1:1 to Hermes equivalents
    ⚠ Gateway/messaging — this will configure Hermes to use your OpenClaw messaging channels
    ⚠ Instruction file — may contain OpenClaw-specific setup/restart procedures
    ⚠ Memory/context file — may reference OpenClaw-specific infrastructure

  Note: OpenClaw config values may have different semantics in Hermes.
  For example, OpenClaw's tool_call_execution: "auto" ≠ Hermes's yolo mode.
  Instruction files (.md) from OpenClaw may contain incompatible procedures.

Proceed with migration? [y/N]: y
How would you like to set up Hermes?
  ↑↓ navigate  ENTER/SPACE select  ESC cancel

 → (●) Quick setup — provider, model & messaging (recommended)    # 只配置最核心的:模型提供商、模型名称、消息渠道(可选)
   (○) Full setup — configure everything   # 配置所有内容:模型、消息渠道、工具、记忆、cron、webhook 等