Đại lý Hermes - Định cấu hình, mở rộng hoặc đóng góp cho Đại lý Hermes
{/* Trang này được tạo tự động từ SKILL.md của kỹ năng bởi website/scripts/generate-skill-docs.py. Chỉnh sửa nguồn SKILL.md, không phải trang này. */}`#Đại lý Hermes
Định cấu hình, mở rộng hoặc đóng góp cho Đại lý Hermes.
Siêu dữ liệu kỹ năng
| Nguồn | Đi kèm (được cài đặt theo mặc định) |
| Đường dẫn |
skills/autonomous-ai-agents/Hermes-agent ` | | Phiên bản |
2.1.0 ` | | Tác giả | Đại lý Hermes + Teknium | | Giấy phép | MIT | | Nền tảng | Linux, macOS, Windows | | Thẻ |
Hermes
, `setup
, `configuration
, `multi-agent
, `spawning
, `CLI
, `gateway
,
development |
| Kỹ năng liên quan | XPROTECTX50XPROTECTX, XPROTECTX51XPROTECTX, XPROTECTX52XPROTECTX |
Tham khảo: đầy đủ SKILL.md
Sau đây là định nghĩa kỹ năng đầy đủ mà Hermes tải khi kỹ năng này được kích hoạt. Đây là những gì tác nhân coi là hướng dẫn khi kỹ năng được kích hoạt.
#Đại lý Hermes
Hermes Agent là một khung tác nhân AI mã nguồn mở của Nous Research chạy trong terminal, nền tảng nhắn tin và IDE của bạn. Nó thuộc cùng loại với Claude Code (Anthropic), Codex (OpenAI) và OpenClaw - các tác nhân thực thi nhiệm vụ và mã hóa tự động sử dụng lệnh gọi công cụ để tương tác với hệ thống của bạn. Hermes làm việc với bất kỳ nhà cung cấp LLM nào (OpenRouter, Anthropic, OpenAI, DeepSeek, các mô hình địa phương và hơn 15 nhà cung cấp khác) và chạy trên Linux, macOS và WSL.
Điều gì làm cho Hermes khác biệt:
- Tự cải thiện thông qua các kỹ năng — Hermes học hỏi từ kinh nghiệm bằng cách lưu các quy trình có thể tái sử dụng làm kỹ năng. Khi nó giải quyết một vấn đề phức tạp, khám phá quy trình làm việc hoặc được sửa chữa, nó có thể lưu giữ kiến thức đó dưới dạng tài liệu kỹ năng được tải vào các phiên học sau này. Các kỹ năng tích lũy theo thời gian, giúp nhân viên thực hiện tốt hơn các nhiệm vụ và môi trường cụ thể của bạn.
- Bộ nhớ liên tục qua các phiên — ghi nhớ bạn là ai, sở thích của bạn, chi tiết về môi trường và bài học kinh nghiệm. Các phụ trợ bộ nhớ có thể cắm được (tích hợp sẵn, Honcho, Mem0, v.v.) cho phép bạn chọn cách hoạt động của bộ nhớ.
- Cổng đa nền tảng — cùng một tác nhân chạy trên Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Email và hơn 10 nền tảng khác với quyền truy cập đầy đủ vào công cụ, không chỉ trò chuyện.
- Nhà cung cấp bất khả tri — hoán đổi mô hình và nhà cung cấp giữa quy trình làm việc mà không thay đổi bất kỳ điều gì khác. Nhóm thông tin xác thực tự động xoay vòng trên nhiều khóa API.
- Hồ sơ — chạy nhiều phiên bản Hermes độc lập với cấu hình, phiên, kỹ năng và bộ nhớ riêng biệt.
- Có thể mở rộng — plugin, máy chủ MCP, công cụ tùy chỉnh, trình kích hoạt webhook, lập lịch cron và hệ sinh thái Python đầy đủ.
Mọi người sử dụng Hermes để phát triển phần mềm, nghiên cứu, quản trị hệ thống, phân tích dữ liệu, tạo nội dung, tự động hóa gia đình và bất kỳ hoạt động nào khác được hưởng lợi từ tác nhân AI với bối cảnh liên tục và quyền truy cập toàn bộ hệ thống.
Kỹ năng này giúp bạn làm việc với Tác nhân Hermes một cách hiệu quả — thiết lập, định cấu hình các tính năng, tạo ra các phiên bản tác nhân bổ sung, khắc phục sự cố, tìm lệnh và cài đặt phù hợp cũng như hiểu cách hệ thống hoạt động khi bạn cần mở rộng hoặc đóng góp cho nó.
Tài liệu: https://Hermes-agent.NousResearch.com/docs/
Bắt đầu nhanh
# Install
curl -fSSL https://raw.GitHubusercontent.com/NousResearch/Hermes-agent/main/scripts/install.sh | bash
# Interactive chat (default)
Hermes
# Single query
Hermes chat -q "What is the cAPItal of France?"
# Setup wizard
Hermes setup
# Change model/provider
Hermes model
# Check health
Hermes doctor
`
---
## Tham khảo CLI
### Cờ toàn cầu
`
Hermes [flags] [command]
--version, -V Show version
--resume, -r SESSION Resume session by ID or title
--Continue, -c [NAME] Resume by name, or most recent session
--worktree, -w Isolated git worktree mode (parallel agents)
--skills, -s SKILL Preload skills (comma-separate or repeat)
--profile, -p NAME Use a named profile
--yolo Skip dangerous command approval
--pass-session-id Include session ID in system prompt
`
``Không có lệnh con nào mặc định là
`chat
.
### Trò chuyện
`
Hermes chat [flags]
-q, --query TEXT Single query, non-interactive
-m, --model MODEL Model (e.g. Anthropic/Claude-sonnet-4)
-t, --toolsets LIST Comma-separated toolsets
--provider PROVIDER Force provider (OpenRouter, Anthropic, nous, etc.)
-v, --verbose Verbose output
-Q, --quiet Suppress banner, spinner, tool previews
--checkpoints Enable filesystem checkpoints (/rollback)
--source TAG Session source tag (default: CLI)
`
### Cấu hình
`
Hermes setup [section] Interactive wizard (model|terminal|gateway|tools|agent)
Hermes model Interactive model/provider picker
Hermes config View current config
Hermes config edit Open config.yaml in $EDITOR
Hermes config set KEY VAL Set a config value
Hermes config path Print config.yaml path
Hermes config env-path Print .env path
Hermes config check Check for missing/outdated config
Hermes config migrate Update config with new options
Hermes login [--provider P] OAuth login (nous, OpenAI-Codex)
Hermes logout Clear stored auth
Hermes doctor [--fix] Check dependencies and config
Hermes status [--all] Show component status
`
### Công cụ & Kỹ năng
`
Hermes tools Interactive tool enable/disable (curses UI)
Hermes tools list Show all tools and status
Hermes tools enable NAME Enable a toolset
Hermes tools disable NAME Disable a toolset
Hermes skills list List installed skills
Hermes skills search QUERY Search the skills hub
Hermes skills install ID Install a skill (ID can be a hub identifier OR a direct https://…/SKILL.md URL; pass --name to override when frontmatter has no name)
Hermes skills inspect ID Preview without installing
Hermes skills config Enable/disable skills per platform
Hermes skills check Check for updates
Hermes skills update Update outdated skills
Hermes skills uninstall N Remove a hub skill
Hermes skills publish PATH Publish to registry
Hermes skills browse Browse all available skills
Hermes skills tap add REPO Add a GitHub repo as skill source
`
### Máy chủ MCP
`
Hermes MCP serve Run Hermes as an MCP server
Hermes MCP add NAME Add an MCP server (--url or --command)
Hermes MCP remove NAME Remove an MCP server
Hermes MCP list List configured servers
Hermes MCP test NAME Test connection
Hermes MCP configure NAME Toggle tool selection
`
### Cổng (Nền tảng nhắn tin)
`
Hermes gateway run Start gateway foreground
Hermes gateway install Install as background service
Hermes gateway start/stop Control the service
Hermes gateway restart Restart the service
Hermes gateway status Check status
Hermes gateway setup Configure platforms
`
``Các nền tảng được hỗ trợ: Telegram, Discord, Slack, WhatsApp, Signal, Email, SMS, Matrix, Matter Extreme, Home Assistant, DingTalk, Feishu, WeCom, BlueBubbles (iMessage), Weixin (WeChat), API Server, Webhooks. Mở WebUI kết nối thông qua bộ điều hợp Máy chủ API.
Tài liệu nền tảng: https://Hermes-agent.NousResearch.com/docs/user-guide/messaging/
### Phiên
`
Hermes sessions list List recent sessions
Hermes sessions browse Interactive picker
Hermes sessions export OUT Export to JSONL
Hermes sessions rename ID T Rename a session
Hermes sessions delete ID Delete a session
Hermes sessions prune Clean up old sessions (--older-than N days)
Hermes sessions stats Session store statistics
`
### Công việc định kỳ
`
Hermes cron list List jobs (--all for disabled)
Hermes cron create SCHED Create: '30m', 'every 2h', '0 9 * * *'
Hermes cron edit ID Edit schedule, prompt, delivery
Hermes cron pause/resume ID Control job state
Hermes cron run ID Trigger on next tick
Hermes cron remove ID Delete a job
Hermes cron status Scheduler status
`
### Webhook
`
Hermes webhook subscribe N Create route at /webhooks/<name
Hermes webhook list List subscriptions
Hermes webhook remove NAME Remove a subscription
Hermes webhook test NAME Send a test POST
`
### Hồ sơ
`
Hermes profile list List all profiles
Hermes profile create NAME Create (--clone, --clone-all, --clone-from)
Hermes profile use NAME Set sticky default
Hermes profile delete NAME Delete a profile
Hermes profile show NAME Show details
Hermes profile alias NAME Manage wrapper scripts
Hermes profile rename A B Rename a profile
Hermes profile export NAME Export to tar.gz
Hermes profile import FILE Import from archive
`
### Nhóm thông tin xác thực
`
Hermes auth add Interactive credential wizard
Hermes auth list [PROVIDER] List pooled credentials
Hermes auth remove P INDEX Remove by provider + index
Hermes auth reset PROVIDER Clear exhaustion status
`
``###Khác
`
Hermes insights [--days N] Usage analytics
Hermes update Update to latest version
Hermes pairing list/approve/revoke DM authorization
Hermes plugins list/install/remove Plugin management
Hermes Honcho setup/status Honcho memory integration (requires Honcho plugin)
Hermes memory setup/status/off Memory provider config
Hermes completion bash|zsh Shell completions
Hermes ACP ACP server (IDE integration)
Hermes claw migrate Migrate from OpenClaw
Hermes uninstall Uninstall Hermes
`
---
## Lệnh gạch chéo (Trong phiên)
Nhập những thông tin này trong phiên trò chuyện tương tác. Lệnh mới hạ cánh công bằng
thường xuyên; nếu nội dung nào đó bên dưới có vẻ cũ, hãy chạy
/help
` trong phiên
danh sách có thẩm quyền hoặc xem [live slash commands reference](https://Hermes-agent.NousResearch.com/docs/reference/slash-commands).
Cơ quan đăng ký hồ sơ là
`Hermes_CLI/commands.py
` — mọi người tiêu dùng
(tự động hoàn thành, menu Telegram, ánh xạ Slack,
/help
) bắt nguồn từ nó.### Kiểm soát phiên
`
/new (/reset) Fresh session
/clear Clear screen + new session (CLI)
/retry Resend last message
/undo Remove last exchange
/title [name] Name the session
/compress Manually compress context
/stop Kill background processes
/rollback [N] Restore filesystem checkpoint
/snapshot [sub] Create or restore state snapshots of Hermes config/state (CLI)
/background <prompt Run prompt in background
/queue <prompt Queue for next turn
/steer <prompt Inject a message after the next tool call without interrupting
/agents (/tasks) Show active agents and running tasks
/resume [name] Resume a named session
/goal [text|sub] Set a standing goal Hermes works on across turns until achieved
(subcommands: status, pause, resume, clear)
/redraw Force a full UI repaint (CLI)
`
### Cấu hình
`
/config Show config (CLI)
/model [name] Show or change model
/personality [name] Set personality
/reasoning [level] Set reasoning (none|minimal|low|medium|high|xhigh|show|hide)
/verbose Cycle: off → new → all → verbose
/voice [on|off|tts] Voice mode
/yolo Toggle approval bypass
/busy [sub] Control what Enter does while Hermes is working (CLI)
(subcommands: queue, steer, interrupt, status)
/indicator [style] Pick the TUI busy-indicator style (CLI)
(styles: kaomoji, emoji, unicode, ascii)
/footer [on|off] Toggle gateway runtime-metadata footer on final replies
/skin [name] Change theme (CLI)
/statusbar Toggle status bar (CLI)
`
### Công cụ & Kỹ năng
`
/tools Manage tools (CLI)
/toolsets List toolsets (CLI)
/skills Search/install skills (CLI)
/skill <name Load a skill into session
/reload-skills Re-scan ~/.Hermes/skills/ for added/removed skills
/reload Reload .env variables into the running session (CLI)
/reload-MCP Reload MCP servers
/cron Manage cron jobs (CLI)
/curator [sub] Background skill maintenance (status, run, pin, archive, …)
/kanban [sub] Multi-profile collaboration board (tasks, links, comments)
/plugins List plugins (CLI)
`
### Cổng
`
/approve Approve a pending command (gateway)
/deny Deny a pending command (gateway)
/restart Restart gateway (gateway)
/sethome Set current chat as home channel (gateway)
/update Update Hermes to latest (gateway)
/topic [sub] Enable or inspect Telegram DM topic sessions (gateway)
/platforms (/gateway) Show platform connection status (gateway)
`
### Tiện ích
`
/branch (/fork) Branch the current session
/fast Toggle priority/fast processing
/browser Open CDP browser connection
/history Show conversation history (CLI)
/save Save conversation to file (CLI)
/copy [N] Copy the last assistant response to CLIpboard (CLI)
/paste Attach CLIpboard image (CLI)
/image Attach local image file (CLI)
`
### Thông tin
`
/help Show commands
/commands [page] Browse all commands (gateway)
/usage Token usage
/insights [days] Usage analytics
/gquota Show Google Gemini Code Assist quota usage (CLI)
/status Session info (gateway)
/profile Active profile info
/debug Upload debug report (system info + logs) and get shareable links
`
### Thoát
`
/quit (/exit, /q) Exit CLI
`
---
## Đường dẫn chính và cấu hình
`
~/.Hermes/config.yaml Main configuration
~/.Hermes/.env API keys and secrets
$Hermes_HOME/skills/ Installed skills
~/.Hermes/sessions/ Session transcripts
~/.Hermes/logs/ Gateway and error logs
~/.Hermes/auth.JSON OAuth tokens and credential pools
~/.Hermes/Hermes-agent/ Source code (if git-installed)
`
``Profile sử dụng
~/.Hermes/profiles/<name/
` với bố cục giống nhau.
### Phần cấu hình
Chỉnh sửa bằng
`Hermes config edit
` hoặc
`Hermes config set section.key value
.
| Phần | Tùy chọn chính |
|----------|-------------|
|
`model
` |
`default
,
`provider
,
`base_url
,
`API_key
,
`context_length
` |
|
`agent
` |
`max_turns
` (90),
`tool_use_enforcement
` |
|
`terminal
` |
`backend
` (cục bộ/Docker/SSH/modal),
`cwd
,
`timeout
` (180) |
|
`compression
` |
`enabled
,
`threshold
` (0,50),
`target_ratio
` (0,20) |
|
`display
` |
`skin
,
`tool_progress
,
`show_reasoning
,
`show_cost
` |
|
`stt
` |
`enabled
,
`provider
` (địa phương/groq/OpenAI/Mistral) |
|
`tts
` |
`provider
` (edge/elevenlabs/OpenAI/MiniMax/Mistral/neutts) |
|
`memory
` |
`memory_enabled
,
`user_profile_enabled
,
`provider
` |
|
`security
` |
`tirith_enabled
,
`website_blocklist
` |
|
`delegation
` |
`model
,
`provider
,
`base_url
,
`API_key
,
`max_iterations
` (50),
`reasoning_effort
` |
|
`checkpoints
` |
`enabled
,
`max_snapshots
` (50) |
Tham khảo cấu hình đầy đủ: https://Hermes-agent.NousResearch.com/docs/user-guide/configuration
### Nhà cung cấp
Hơn 20 nhà cung cấp được hỗ trợ. Đặt qua
`Hermes model
` hoặc
`Hermes setup
.
| Nhà cung cấp | Xác thực | Khóa env var |
|----------|------|-------------|
| OpenRouter | Khóa API |
OpenRouter_API_KEY
` |
| Nhân chủng học | Khóa API |
Anthropic_API_KEY
` |
| Nous Portal | OAuth |
Hermes auth
` |
| OpenAI Codex | OAuth |
Hermes auth
` |
| GitHub Copilot | Mã thông báo |
COPILOT_GitHub_TOKEN
` |
| Google Song Tử | Khóa API |
Google_API_KEY
` hoặc
`Gemini_API_KEY
` |
| DeepSeek | Khóa API |
DeepSeek_API_KEY
` |
| xAI / Grok | Khóa API |
XAI_API_KEY
` |
| Ôm Mặt | Mã thông báo |
HF_TOKEN
` |
| Z.AI / GLM | Khóa API |
GLM_API_KEY
` |
| MiniMax | Khóa API |
MiniMax_API_KEY
` |
| MiniMax CN | Khóa API |
MiniMax_CN_API_KEY
` |
| Kimi / Moonshot | Khóa API |
Kimi_API_KEY
` |
| Alibaba / DashScope | Khóa API |
DASHSCOPE_API_KEY
` |
| Xiaomi MiMo | Khóa API |
XIAOMI_API_KEY
` |
| KiloCode | Khóa API |
KILOCODE_API_KEY
` |
| Cổng AI (Vercel) | Khóa API |
AI_GATEWAY_API_KEY
` |
| OpenCode Zen | Khóa API |
OPENCODE_ZEN_API_KEY
` |
| OpenCode Đi | Khóa API |
OPENCODE_GO_API_KEY
` |
| Qwen OAuth | OAuth |
Hermes login --provider qwen-OAuth
` |
| Custom Endpoint | Cấu hình |
model.base_url
+
`model.API_key
` trong config.yaml |
| GitHub Copilot ACP | Bên ngoài |
COPILOT_CLI_PATH
` hoặc phi công phụ CLI |
Tài liệu đầy đủ về nhà cung cấp: https://Hermes-agent.NousResearch.com/docs/integrations/providers
### Bộ công cụ
Bật/tắt thông qua
`Hermes tools
` (tương tác) hoặc
`Hermes tools enable/disable NAME
.| Bộ công cụ | Nó cung cấp những gì |
|----------|-------------------|
|
`web
` | Tìm kiếm trên web và trích xuất nội dung |
|
`search
` | Chỉ tìm kiếm trên web (tập hợp con của
`web
) |
|
`browser
` | Tự động hóa trình duyệt (Browserbase, Camofox hoặc Chrome cục bộ) |
|
`terminal
` | Lệnh Shell và quản lý quy trình |
|
`file
` | Đọc/ghi/tìm kiếm/vá tệp |
|
`code_execution
` | Thực thi Python đóng hộp cát |
|
`vision
` | Phân tích hình ảnh |
|
`image_gen
` | Tạo hình ảnh AI |
|
`video
` | Phân tích và tạo video |
|
`tts
` | Chuyển văn bản thành giọng nói |
|
`skills
` | Kỹ năng duyệt và quản lý |
|
`memory
` | Bộ nhớ phiên liên tục |
|
`session_search
` | Tìm kiếm các cuộc trò chuyện trước đây |
|
`delegation
` | Phân công nhiệm vụ cấp dưới |
|
`cronjob
` | Quản lý nhiệm vụ theo lịch trình |
|
`clarify
` | Hỏi người dùng những câu hỏi làm rõ |
|
`messaging
` | Gửi tin nhắn đa nền tảng |
|
`todo
` | Lập kế hoạch và theo dõi nhiệm vụ trong phiên |
|
`kanban
` | Công cụ hàng đợi công việc đa tác nhân (dành cho công nhân) |
|
`debugging
` | Các công cụ xem xét/gỡ lỗi bổ sung (tắt theo mặc định) |
|
`safe
` | Bộ công cụ tối thiểu, ít rủi ro cho các phiên bị khóa |
|
`spotify
` | Kiểm soát danh sách phát và phát lại Spotify |
|
`homeassistant
` | Điều khiển nhà thông minh (mặc định tắt) |
|
`Discord
` | Công cụ tích hợp Discord |
|
`Discord_admin
` | Công cụ quản trị/kiểm duyệt Discord |
|
`Feishu_doc
` | Công cụ tài liệu Feishu (Lark) |
|
`Feishu_drive
` | Dụng cụ truyền động Feishu (Lark) |
|
`yuanbao
` | Công cụ tích hợp Yuanbao |
|
`rl
` | Công cụ học tập tăng cường (tắt theo mặc định) |
|
`moa
` | Hỗn hợp các tác nhân (tắt theo mặc định) |
Bảng liệt kê đầy đủ tồn tại trong
`toolsets.py
` dưới dạng lệnh
`TOOLSETS
;
`_Hermes_CORE_TOOLS
` là gói mặc định mà hầu hết các nền tảng đều kế thừa.
Các thay đổi của công cụ có hiệu lực trên
/reset
` (phiên mới). Chúng KHÔNG áp dụng giữa cuộc trò chuyện để duy trì bộ nhớ đệm nhanh chóng.
---
## Chuyển đổi bảo mật và quyền riêng tư
Phổ biến "tại sao Hermes lại thực hiện X đối với lệnh / lệnh đầu ra / công cụ của tôi?" chuyển đổi — và các lệnh chính xác để thay đổi chúng. Hầu hết trong số này cần một phiên mới (
/reset
` trong cuộc trò chuyện hoặc bắt đầu lệnh gọi
`Hermes
` mới) vì chúng được đọc một lần khi khởi động.
### Biên tập bí mật trong đầu ra của công cụ
Chức năng biên tập bí mật bị **tắt theo mặc định** — đầu ra của công cụ (thiết bị xuất chuẩn đầu cuối,
`read_file
, nội dung web, tóm tắt tác nhân phụ, v.v.) đi qua mà không được sửa đổi. Nếu người dùng muốn Hermes tự động ẩn các chuỗi trông giống như khóa API, mã thông báo và bí mật trước khi họ vào ngữ cảnh và nhật ký hội thoại:
``` bash
Hermes config set security.redact_secrets true # enable globally
`
``**Yêu cầu khởi động lại.**
`security.redact_secrets
` được chụp nhanh tại thời điểm nhập — việc chuyển đổi nó giữa phiên (ví dụ: qua
`export Hermes_REDACT_SECRETS=true
` từ lệnh gọi công cụ) sẽ KHÔNG có hiệu lực đối với quá trình đang chạy. Yêu cầu người dùng chạy
`Hermes config set security.redact_secrets true
` trong terminal, sau đó bắt đầu phiên mới. Điều này là có chủ ý - nó ngăn LLM tự bật nút chuyển đổi giữa nhiệm vụ.
Vô hiệu hóa lại với:
`
`bash
Hermes config set security.redact_secrets false
`
### Biên tập PII trong tin nhắn cổng
Tách biệt khỏi việc biên tập bí mật. Khi được bật, cổng sẽ băm ID người dùng và loại bỏ số điện thoại khỏi ngữ cảnh phiên trước khi đến mô hình:
`bash
Hermes config set privacy.redact_pii true # enable
Hermes config set privacy.redact_pii false # disable (default)
`
### Lời nhắc phê duyệt lệnh
Theo mặc định (
`approvals.mode: manual
), Hermes nhắc người dùng trước khi chạy các lệnh shell được gắn cờ là phá hoại (
`rm -rf
,
`git reset --hard
, v.v.). Các chế độ là:
-
`manual
- luôn nhắc (mặc định)
-
`smart
- sử dụng LLM phụ trợ để tự động phê duyệt các lệnh có rủi ro thấp, nhắc nhở về rủi ro cao
-
`off
- bỏ qua tất cả lời nhắc phê duyệt (tương đương
--yolo
)
``` bash
Hermes config set approvals.mode smart # recommended middle ground
Hermes config set approvals.mode off # bypass everything (not recommended)
`
``Bỏ qua mỗi lần gọi mà không thay đổi cấu hình:
-
`Hermes --yolo …
-
`export Hermes_YOLO_MODE=1
``Lưu ý: YOLO /
`approvals.mode: off
` KHÔNG tắt tính năng biên tập bí mật. Họ độc lập.
### Danh sách cho phép móc vỏ
Một số tiện ích tích hợp shell-hook yêu cầu phải có danh sách cho phép rõ ràng trước khi kích hoạt. Được quản lý thông qua
~/.Hermes/shell-hooks-allowlist.JSON
` — được nhắc tương tác khi lần đầu tiên hook muốn chạy.
### Vô hiệu hóa các công cụ web/trình duyệt/image-genĐể giữ mô hình hoàn toàn tránh xa các công cụ mạng hoặc phương tiện, hãy mở
`Hermes tools
` và chuyển đổi trên mỗi nền tảng. Có hiệu lực vào phiên tiếp theo (
/reset
). Xem phần Công cụ & Kỹ năng ở trên.
---
## Giọng nói & Phiên âm
### STT (Giọng nói → Văn bản)
Tin nhắn thoại từ nền tảng nhắn tin được sao chép tự động.
Ưu tiên của nhà cung cấp (tự động phát hiện):
1. **Thì thầm nhanh hơn cục bộ** — miễn phí, không có khóa API:
`pip install faster-whisper
2. **Groq Whisper** — cấp miễn phí: đặt
`GROQ_API_KEY
3. **OpenAI Whisper** — đã trả phí: đặt
`VOICE_TOOLS_OpenAI_KEY
4. **Mistral Voxtral** — đặt
`Mistral_API_KEY
``Cấu hình:
`
``` yaml
stt:
enabled: true
provider: local # local, groq, OpenAI, Mistral
local:
model: base # tiny, base, small, medium, large-v3
`
### TTS (Văn bản → Giọng nói)
| Nhà cung cấp | Env var | Miễn phí? |
|----------|----------|-------|
| TTS cạnh | Không có | Có (mặc định) |
| ElevenLabs |
ELEVENLABS_API_KEY
` | Cấp miễn phí |
| OpenAI |
VOICE_TOOLS_OpenAI_KEY
` | Đã trả tiền |
| MiniMax |
MiniMax_API_KEY
` | Đã trả tiền |
| Mistral (Voxtral) |
Mistral_API_KEY
` | Đã trả tiền |
| NeuTTS (địa phương) | Không có (
`pip install neutts[all]
+
`espeak-ng
) | Miễn phí |
Lệnh thoại:
/voice on
` (giọng nói thành giọng nói),
/voice tts
` (luôn bằng giọng nói),
/voice off
.
---
## Sinh ra các phiên bản Hermes bổ sung
Chạy các quy trình Hermes bổ sung dưới dạng các quy trình con hoàn toàn độc lập - các phiên, công cụ và môi trường riêng biệt.
### Khi nào nên sử dụng cái này so với delegate_task
| |
delegate_task
` | Quá trình sinh sản
`Hermes
` |
|-|-------------------|--------------------------|
| Cô lập | Hội thoại riêng, quy trình chung | Quy trình hoàn toàn độc lập |
| Thời lượng | Phút (giới hạn bởi vòng lặp chính) | Giờ/ngày |
| Truy cập công cụ | Tập hợp con các công cụ của phụ huynh | Truy cập công cụ đầy đủ |
| Tương tác | Không | Có (chế độ PTY) |
| Trường hợp sử dụng | Nhiệm vụ song song nhanh chóng | Nhiệm vụ tự trị dài hạn |
### Chế độ chụp một lần
`
terminal(command="Hermes chat -q 'Research GRPO papers and write summary to ~/research/grpo.md'", timeout=300)
# Background for long tasks:
terminal(command="Hermes chat -q 'Set up CI/CD for ~/myapp'", background=true)
`
### Chế độ PTY tương tác (thông qua tmux)
Hermes sử dụng bộ công cụ nhắc nhở, yêu cầu một terminal thực sự. Sử dụng tmux để sinh sản tương tác:
`
# Start
terminal(command="tmux new-session -d -s agent1 -x 120 -y 40 'Hermes'", timeout=10)
# Wait for startup, then send a message
terminal(command="sleep 8 && tmux send-keys -t agent1 'Build a FastAPI auth service' Enter", timeout=15)
# Read output
terminal(command="sleep 20 && tmux capture-pane -t agent1 -p", timeout=5)
# Send follow-up
terminal(command="tmux send-keys -t agent1 'Add rate limiting middleware' Enter", timeout=5)
# Exit
terminal(command="tmux send-keys -t agent1 '/exit' Enter && sleep 2 && tmux kill-session -t agent1", timeout=10)
`
### Phối hợp nhiều tác nhân
`
# Agent A: backend
terminal(command="tmux new-session -d -s backend -x 120 -y 40 'Hermes -w'", timeout=10)
terminal(command="sleep 8 && tmux send-keys -t backend 'Build REST API for user management' Enter", timeout=15)
# Agent B: frontend
terminal(command="tmux new-session -d -s frontend -x 120 -y 40 'Hermes -w'", timeout=10)
terminal(command="sleep 8 && tmux send-keys -t frontend 'Build React dashboard for user management' Enter", timeout=15)
# Check progress, relay context between them
terminal(command="tmux capture-pane -t backend -p | tail -30", timeout=5)
terminal(command="tmux send-keys -t frontend 'Here is the API schema from the backend agent: ...' Enter", timeout=5)
`
### Tiếp tục phiên
`
# Resume most recent session
terminal(command="tmux new-session -d -s resumed 'Hermes --Continue'", timeout=10)
# Resume specific session
terminal(command="tmux new-session -d -s resumed 'Hermes --resume 20260225_143052_a1b2c3'", timeout=10)
`
### Mẹo
- **Ưu tiên
`delegate_task
` cho các nhiệm vụ phụ nhanh** — ít chi phí hơn so với việc tạo ra một quy trình đầy đủ
- **Sử dụng
-w
` (chế độ cây làm việc)** khi sinh ra các tác nhân chỉnh sửa mã - ngăn xung đột git
- **Đặt thời gian chờ** cho chế độ một lần — các tác vụ phức tạp có thể mất 5-10 phút
- **Sử dụng
`Hermes chat -q
` để đốt và quên** — không cần PTY
- **Sử dụng tmux cho các phiên tương tác** — chế độ PTY thô có các vấn đề về
\r
` so với
\n
` với bộ công cụ nhắc nhở
- **Đối với các tác vụ đã lên lịch**, hãy sử dụng công cụ
`cronjob
` thay vì sinh sản - xử lý việc phân phối và thử lại
---
## Hệ thống nền & bền bỉ
Bốn hệ thống chạy dọc theo vòng hội thoại chính. Tham khảo nhanh
ở đây; ghi chú đầy đủ dành cho nhà phát triển trực tiếp trong
`AGENTS.md
, tài liệu hướng tới người dùng trong
`website/docs/user-guide/features/
.
### Phái đoàn (
`delegate_task
)
Sinh ra tác nhân con đồng bộ - cha mẹ đợi bản tóm tắt của con
trước khi tiếp tục vòng lặp của chính nó. Bối cảnh biệt lập + phiên cuối.
- **Đơn:**
`delegate_task(goal, context, toolsets)
.
- **Đợt:**
`delegate_task(tasks=[\{goal, ...}, ...])
` chạy trẻ em trong
song song, được giới hạn bởi
`delegation.max_concurrent_children
` (mặc định 3).
- **Vai trò:**
`leaf
` (mặc định; không thể ủy quyền lại) so với
`orchestrator
(có thể sinh ra công nhân của chính nó, được giới hạn bởi
`delegation.max_spawn_depth
).
- **Không bền.** Nếu cha mẹ ngắt lời, con cái sẽ bị
bị hủy bỏ. Đối với công việc phải tồn tại lâu hơn lượt, hãy sử dụng
`cronjob
` hoặc``terminal(background=True, notify_on_complete=True)
.
Cấu hình:
`delegation.*
` trong
`config.yaml
.
### Cron (công việc đã lên lịch)
Bộ lập lịch bền bỉ —
`cron/jobs.py
+
`cron/scheduler.py
. Lái nó qua
công cụ
`cronjob
,
`Hermes cron
` CLI (
`list
,
`add
,
`edit
,
`pause
,
`resume
,
`run
,
`remove
) hoặc lệnh gạch chéo
/cron
.- **Lịch trình:** thời lượng (
"30m"
,
"2h"
), "mọi" cụm từ
(
"every monday 9am"
), cron 5 trường (
"0 9 * * *"
) hoặc dấu thời gian ISO.
- **Núm cho mỗi công việc:**
`skills
,
`model
/
`provider
` ghi đè,
`script
(thu thập dữ liệu trước khi chạy;
`no_agent=True
` tạo nên toàn bộ tập lệnh
job),
`context_from
` (chuỗi đầu ra của công việc A thành công việc B),
`workdir
(chạy trong một thư mục cụ thể với
`AGENTS.md
` /
`Claude.md
` được tải),
phân phối đa nền tảng.
- **Bất biến:** Ngắt cứng 3 phút mỗi lần chạy, tệp
.tick.lock
ngăn chặn các dấu tích trùng lặp trên các quy trình, phiên cron trôi qua``skip_memory=True
` theo mặc định và việc phân phối định kỳ được đóng khung bằng
đầu trang/chân trang thay vì được phản chiếu vào cổng đích
phiên (giữ nguyên vai trò luân phiên).
Tài liệu người dùng: https://Hermes-agent.NousResearch.com/docs/user-guide/features/cron
### Người quản lý (vòng đời kỹ năng)
Bảo trì nền cho các kỹ năng do tác nhân tạo. Theo dõi việc sử dụng, đánh dấu
kỹ năng nhàn rỗi cũ, lưu trữ những kỹ năng cũ, giữ một bản sao lưu tar.gz chạy trước
nên không có gì bị mất.
- **CLI:**
`Hermes curator <verb
` —
`status
,
`run
,
`pause
,
`resume
,``pin
,
`unpin
,
`archive
,
`restore
,
`prune
,
`backup
,
`rollback
.
- **Dấu gạch chéo:**
/curator <subcommand
` phản ánh CLI.
- **Phạm vi:** chỉ chạm vào các kỹ năng có xuất xứ
`created_by: "agent"
.
Các kỹ năng đi kèm + cài đặt trong trung tâm là không có giới hạn. **Không bao giờ xóa** —
hành động phá hoại tối đa là lưu trữ. Các kỹ năng được ghim được miễn
mọi lần chuyển đổi tự động và mọi lượt đánh giá LLM.
- ** Đo từ xa:** sidecar tại chỗ giữ
~/.Hermes/skills/.usage.JSON
mỗi kỹ năng
`use_count
,
`view_count
,
`patch_count
,``last_activity_at
,
`state
,
`pinned
.
Cấu hình:
`curator.*
` (
`enabled
,
`interval_hours
,
`min_idle_hours
,
`stale_after_days
,
`archive_after_days
,
`backup.*
).
Tài liệu người dùng: https://Hermes-agent.NousResearch.com/docs/user-guide/features/curator
### Kanban (hàng đợi công việc đa tác nhân)
Bảng SQLite bền bỉ để cộng tác nhiều cấu hình/nhiều nhân viên.
Người dùng lái nó qua
`Hermes kanban <verb
; công nhân do người điều phối sinh ra
xem bộ công cụ
`kanban_*
` tập trung được kiểm soát bởi
`Hermes_KANBAN_TASK
` và
cấu hình người điều phối có thể chọn tham gia bộ công cụ
`kanban
` rộng hơn. Bình thường
các phiên vẫn không có dấu chân lược đồ
`kanban_*
` trừ khi được định cấu hình.
- **Động từ CLI (phổ biến):**
`init
,
`create
,
`list
` (bí danh
`ls
),``show
,
`assign
,
`link
,
`unlink
,
`comment
,
`complete
,
`block
,``unblock
,
`archive
,
`tail
. Ít phổ biến hơn:
`watch
,
`stats
,
`runs
,``log
,
`dispatch
,
`daemon
,
`gc
.
- **Bộ công cụ dành cho công nhân/người điều phối:**
`kanban_show
,
`kanban_complete
,``kanban_block
,
`kanban_heartbeat
,
`kanban_comment
,
`kanban_create
,``kanban_link
; các cấu hình kích hoạt rõ ràng bộ công cụ
`kanban
bên ngoài nhiệm vụ do người điều phối sinh ra cũng nhận được
`kanban_list
` và``kanban_unblock
` để định tuyến bảng mạch.
- **Dispatcher** chạy bên trong cổng theo mặc định
(
`kanban.dispatch_in_gateway: true
) - lấy lại các xác nhận quyền sở hữu cũ,
thúc đẩy các nhiệm vụ đã sẵn sàng, yêu cầu nguyên tử, tạo ra các hồ sơ được giao.
Tự động chặn tác vụ sau khi
`kanban.failure_limit
` được định cấu hình
những lần thử không thành công liên tiếp (mặc định: 2).
- **Cách ly:** bảng là ranh giới cứng (công nhân được``Hermes_KANBAN_BOARD
` được ghim trong env); đối tượng thuê là một không gian tên mềm
trong một bảng để cách ly đường dẫn không gian làm việc + khóa bộ nhớ.
Tài liệu người dùng: https://Hermes-agent.NousResearch.com/docs/user-guide/features/kanban
---
## Các đặc điểm riêng của Windows
Hermes chạy nguyên bản trên Windows (PowerShell, cmd, Windows Terminal, git-bash
mintty, terminal tích hợp VS Code). Hầu hết nó đều hoạt động, nhưng một số ít
về sự khác biệt giữa Win32 và POSIX đã khiến chúng tôi đau đầu — ghi lại những điểm khác biệt
ở đây khi bạn đánh họ để người tiếp theo (hoặc phiên tiếp theo) không
khám phá lại chúng từ đầu.### Đầu vào / Tổ hợp phím`**Alt+Enter không chèn dòng mới.** Windows Terminal chặn Alt+Enter
ở lớp đầu cuối để chuyển đổi toàn màn hình - tổ hợp phím không bao giờ chạm tới
nhắc_toolkit. Thay vào đó hãy sử dụng **Ctrl+Enter**. Windows Terminal cung cấp
Ctrl+Enter dưới dạng LF (
`c-j
), khác với Enter đơn giản (
`c-m
` / CR) và
CLI liên kết
`c-j
` với tính năng chèn dòng mới chỉ trên
`win32
` (xem
`_bind_prompt_submit_keys
+ liên kết
`c-j
` chỉ dành cho Windows trong
`CLI.py
).
Tác dụng phụ: tổ hợp phím Ctrl+J thô cũng chèn một dòng mới trên Windows -
không thể tránh khỏi, vì Windows Terminal thu gọn Ctrl+Enter và Ctrl+J thành
cùng một mã khóa ở lớp API bảng điều khiển Win32. Không có ràng buộc xung đột
tồn tại cho Ctrl+J trên Windows, vì vậy đây là tác dụng phụ vô hại.
mintty / git-bash hoạt động tương tự (toàn màn hình khi nhấn Alt+Enter) trừ khi bạn
tắt phím tắt Alt+Fn trong Tùy chọn → Phím. Dễ dàng hơn chỉ cần sử dụng Ctrl + Enter.
**Chẩn đoán tổ hợp phím.** Chạy
`Python scripts/keystroke_diagnostic.py
(repo root) để xem chính xác cách nhắc_toolkit xác định từng lần nhấn phím
trong terminal hiện tại. Trả lời các câu hỏi như "Shift+Enter có đến không
thông qua như một khóa riêng biệt?" (hầu như không bao giờ - hầu hết các terminal đều thu gọn nó
thành Enter đơn giản) hoặc "chuỗi byte nào được terminal của tôi gửi cho
Ctrl+Enter?" Đây là cách thực tế Ctrl+Enter = c-j được thiết lập.
### Cấu hình / Tệp`**HTTP 400 "Không cung cấp mô hình" trong lần chạy đầu tiên.**
`config.yaml
` đã được lưu
với BOM UTF-8 (phổ biến khi các ứng dụng Windows viết nó). Lưu lại dưới dạng UTF-8
không có BOM.
`Hermes config edit
` ghi không có BOM; chỉnh sửa thủ công trong
Notepad là thủ phạm thông thường.
###
`execute_code
` / Hộp cát`**WinError 10106** ("Không thể tải nhà cung cấp dịch vụ được yêu cầu
hoặc được khởi tạo") từ tiến trình con hộp cát - nó không thể tạo
Ổ cắm
`AF_INET
, do đó dự phòng RPC loopback-TCP không thành công trước đó
`connect()
. Nguyên nhân cốt lõi thường **không phải** do Winsock LSP bị hỏng; đó là
Máy chà sàn env riêng của Hermes thả
`SYSTEMROOT
` /
`WINDIR
` /
`COMSPEC
từ môi trường trẻ em. Mô-đun
`socket
` của Python cần
`SYSTEMROOT
` để định vị
`mswsock.dll
. Đã sửa lỗi thông qua danh sách cho phép
`_Windows_ESSENTIAL_ENV_VARS
` trong
`tools/code_execution_tool.py
. Nếu vẫn nhấn thì echo
`os.environ
bên trong khối
`execute_code
` để xác nhận
`SYSTEMROOT
` đã được đặt. Đầy đủ
công thức chẩn đoán trong
`references/execute-code-sandbox-env-Windows.md
.
### Thử nghiệm/Đóng góp`**
`scripts/run_tests.sh
` không hoạt động như trên Windows** — nó tìm kiếm
Bố cục venv POSIX (
.venv/bin/activate
). Venv do Hermes cài đặt tại
`venv/Scripts/
` cũng không có pip hoặc pytest (bị loại bỏ theo kích thước cài đặt).
Cách giải quyết: cài đặt
`pytest + pytest-xdist + pyYAML
` vào hệ thống Python
3.11 của người dùng, sau đó gọi trực tiếp pytest bằng bộ
`PythonPATH
:
``` bash
"/c/Program Files/Python311/Python" -m pip install --user pytest pytest-xdist pyYAML
export PythonPATH="$(pwd)"
"/c/Program Files/Python311/Python" -m pytest tests/foo/test_bar.py -v --tb=short -n 0
`
``Sử dụng
`
-n 0
, không phải
-n 4
-
`pyproject.TOML
` mặc định của
`addopts
` đã có
bao gồm
-n
` và đảm bảo tính chẵn lẻ CI của trình bao bọc không áp dụng cho POSIX.
**Các bài kiểm tra chỉ dành cho POSIX cần bỏ qua bộ bảo vệ.** Các điểm đánh dấu phổ biến đã có trong cơ sở mã:
- Symlinks - đặc quyền nâng cao trên Windows
- Chế độ tệp
`0o600
- Các bit chế độ POSIX không được thực thi trên NTFS theo mặc định
-
`Signal.SIGALRM
- Chỉ dành cho Unix (xem
`tests/conftest.py::_enforce_test_timeout
)
- Hồi quy Winsock / dành riêng cho Windows -
@pytest.mark.skipif(sys.platform != "win32", ...)
``Sử dụng kiểu mẫu bỏ qua hiện có (
`sys.platform == "win32"
` hoặc
`sys.platform.startswith("win")
) để luôn nhất quán với phần còn lại của
suite.
### Đường dẫn/Hệ thống tập tin`**Kết thúc dòng.** Git có thể cảnh báo
`LF sẽ được thay thế bằng CRLF vào lần tới
Git chạm vào nó
. Cosmetic — the repo's
.gitattributes
` bình thường hóa. Đừng
cho phép người chỉnh sửa tự động chuyển đổi các tệp POSIX-dòng mới đã cam kết sang CRLF.
**Dấu gạch chéo chuyển tiếp hoạt động ở hầu hết mọi nơi.**
`C:/Users/...
` được chấp nhận bởi
mọi công cụ Hermes và hầu hết các API của Windows. Thích dấu gạch chéo về phía trước trong mã
và nhật ký - tránh dấu gạch chéo ngược thoát shell trong bash.
---
## Khắc phục sự cố
### Giọng nói không hoạt động
1. Kiểm tra
`stt.enabled: true
` trong config.yaml
2. Xác minh nhà cung cấp:
`pip install faster-whisper
` hoặc đặt khóa API
3. Tại cổng vào:
/restart
. Trong CLI: thoát và khởi chạy lại.
### Công cụ không có sẵn
1.
`Hermes tools
- kiểm tra xem bộ công cụ đã được bật cho nền tảng của bạn chưa
2. Một số công cụ cần env vars (kiểm tra
.env
)
3.
/reset
` sau khi kích hoạt công cụ### Vấn đề về mẫu/nhà cung cấp
1.
`Hermes doctor
` — kiểm tra cấu hình và các phần phụ thuộc
2.
`Hermes login
` — xác thực lại nhà cung cấp OAuth
3. Kiểm tra
.env
` có khóa API phù hợp
4. **Copilot 403**: Mã thông báo
`gh auth login
` KHÔNG hoạt động đối với API Copilot. Bạn phải sử dụng luồng mã thiết bị OAuth dành riêng cho Copilot thông qua
`Hermes model
` → GitHub Copilot.
### Thay đổi không có hiệu lực
- **Công cụ/kỹ năng:**
/reset
` bắt đầu phiên mới với bộ công cụ được cập nhật
- **Thay đổi cấu hình:** Trong cổng:
/restart
. Trong CLI: thoát và khởi chạy lại.
- **Thay đổi mã:** Khởi động lại quy trình CLI hoặc cổng
### Kỹ năng không hiển thị
1.
`Hermes skills list
- xác minh đã cài đặt
2.
`Hermes skills config
- kiểm tra kích hoạt nền tảng
3. Tải rõ ràng:
/skill name
` hoặc
`Hermes -s name
### Vấn đề về cổng
Kiểm tra nhật ký trước:
`
``` bash
grep -i "failed to send\|error" ~/.Hermes/logs/gateway.log | tail -20
`
``Các vấn đề về cổng thường gặp:
- **Cổng chết khi đăng xuất SSH**: Kích hoạt nán lại:
`sudo loginctl enable-linger $USER
- **Cổng chết khi đóng WSL2**: WSL2 yêu cầu
`systemd=true
` trong
/etc/wsl.conf
` để các dịch vụ systemd hoạt động. Nếu không có nó, cổng sẽ quay trở lại
`nohup
` (chết khi phiên đóng).
- **Vòng lặp sự cố cổng**: Đặt lại trạng thái không thành công:
`systemctl --user reset-failed Hermes-gateway
### Các vấn đề cụ thể về nền tảng
- **Discord bot im lặng**: Phải bật **Ý định nội dung tin nhắn** trong Bot → Ý định cổng đặc quyền.
- **Slack bot chỉ hoạt động trong DM**: Phải đăng ký sự kiện
`message.channels
. Không có nó, bot sẽ bỏ qua các kênh công khai.
- **Các sự cố dành riêng cho Windows** (dòng mới
`Alt+Enter
, WinError 10106, cấu hình BOM UTF-8, bộ thử nghiệm, phần cuối dòng): xem phần **Quyrks dành riêng cho Windows** ở trên.`###Mô hình phụ trợ không hoạt động
Nếu các tác vụ
`auxiliary
` (nhìn, nén) không thành công, nhà cung cấp
`auto
` không thể tìm thấy phần phụ trợ. Đặt
`OpenRouter_API_KEY
` hoặc
`Google_API_KEY
` hoặc định cấu hình rõ ràng nhà cung cấp của từng tác vụ phụ trợ:
`
``` bash
Hermes config set auxiliary.vision.provider <your_provider>
Hermes config set auxiliary.vision.model <model_name>
`
---
## Nơi tìm đồ vật
| Đang tìm kiếm... | Vị trí |
|-------|----------|
| Tùy chọn cấu hình |
Hermes config edit
` hoặc [Configuration docs](https://Hermes-agent.NousResearch.com/docs/user-guide/configuration) |
| Công cụ có sẵn |
Hermes tools list
` hoặc [Tools reference](https://Hermes-agent.NousResearch.com/docs/reference/tools-reference) |
| Lệnh gạch chéo |
/help
` trong phiên hoặc [Slash commands reference](https://Hermes-agent.NousResearch.com/docs/reference/slash-commands) |
| Danh mục kỹ năng |
Hermes skills browse
` hoặc [Skills catalog](https://Hermes-agent.NousResearch.com/docs/reference/skills-catalog) |
| Thiết lập nhà cung cấp |
Hermes model
` hoặc [Providers guide](https://Hermes-agent.NousResearch.com/docs/integrations/providers) |
| Thiết lập nền tảng |
Hermes gateway setup
` hoặc [Messaging docs](https://Hermes-agent.NousResearch.com/docs/user-guide/messaging/) |
| Máy chủ MCP |
Hermes MCP list
` hoặc [MCP guide](https://Hermes-agent.NousResearch.com/docs/user-guide/features/MCP) |
| Hồ sơ |
Hermes profile list
` hoặc [Profiles docs](https://Hermes-agent.NousResearch.com/docs/user-guide/profiles) |
| Công việc định kỳ |
Hermes cron list
` hoặc [Cron docs](https://Hermes-agent.NousResearch.com/docs/user-guide/features/cron) |
| Ký ức |
Hermes memory status
` hoặc [Memory docs](https://Hermes-agent.NousResearch.com/docs/user-guide/features/memory) |
| Biến Env |
Hermes config env-path
` hoặc [Env vars reference](https://Hermes-agent.NousResearch.com/docs/reference/environment-variables) |
| Lệnh CLI |
Hermes --help
` hoặc [CLI reference](https://Hermes-agent.NousResearch.com/docs/reference/CLI-commands) |
| Nhật ký cổng |
~/.Hermes/logs/gateway.log
` |
| Tệp phiên |
~/.Hermes/sessions/
` hoặc
`Hermes sessions browse
` |
| Mã nguồn |
~/.Hermes/Hermes-agent/
` |
---
## Tham khảo nhanh của người đóng góp
Dành cho những người đóng góp không thường xuyên và các tác giả PR. Tài liệu đầy đủ dành cho nhà phát triển: https://Hermes-agent.NousResearch.com/docs/developer-guide/
### Bố cục dự án`<!-- ascii-guard-ignore -->
`
Hermes-agent/
├── run_agent.py # AIAgent — core conversation loop
├── model_tools.py # Tool discovery and dispatch
├── toolsets.py # Toolset definitions
├── CLI.py # Interactive CLI (HermesCLI)
├── Hermes_state.py # SQLite session store
├── agent/ # Prompt builder, context compression, memory, model routing, credential pooling, skill dispatch
├── Hermes_CLI/ # CLI subcommands, config, setup, commands
│ ├── commands.py # Slash command registry (CommandDef)
│ ├── config.py # DEFAULT_CONFIG, env var definitions
│ └── main.py # CLI entry point and argparse
├── tools/ # One file per tool
│ └── registry.py # Central tool registry
├── gateway/ # Messaging gateway
│ └── platforms/ # Platform adapters (Telegram, Discord, etc.)
├── cron/ # Job scheduler
├── tests/ # ~3000 pytest tests
└── website/ # Docusaurus docs site
`
<!-- ascii-guard-ignore-end -->
Cấu hình:
~/.Hermes/config.yaml
` (cài đặt),
~/.Hermes/.env
` (khóa API).
### Thêm công cụ (3 tệp)
**1. Tạo
`tools/your_tool.py
:**
`
`Python
import JSON, os
from tools.registry import registry`def check_requirements() -> bool:
return bool(os.getenv("EXAMPLE_API_KEY"))
def example_tool(param: str, task_id: str = None) -> str:
return JSON.dumps(\{"success": True, "data": "..."})
registry.register(
name="example_tool",
toolset="example",
schema=\{"name": "example_tool", "description": "...", "parameters": \{...}},
handler=lambda args, **kw: example_tool(
param=args.get("param", ""), task_id=kw.get("task_id")),
check_fn=check_requirements,
requires_env=["EXAMPLE_API_KEY"],
)
`
``**2. Thêm vào danh sách
`toolsets.py
`
** →
`_Hermes_CORE_TOOLS
.
Tự động phát hiện: mọi tệp
`tools/*.py
` có lệnh gọi
`registry.register()
` cấp cao nhất đều được nhập tự động - không cần danh sách thủ công.
Tất cả các trình xử lý phải trả về chuỗi JSON. Sử dụng
`get_Hermes_home()
` cho đường dẫn, không bao giờ mã hóa
~/.Hermes
.
### Thêm lệnh gạch chéo
1. Thêm
`CommandDef
` vào
`COMMAND_REGISTRY
` trong
`Hermes_CLI/commands.py
2. Thêm trình xử lý trong
`CLI.py
` →
`process_command()
3. (Tùy chọn) Thêm trình xử lý cổng vào
`gateway/run.py
``Tất cả người tiêu dùng (văn bản trợ giúp, tự động hoàn thành, menu Telegram, ánh xạ Slack) đều tự động xuất phát từ sổ đăng ký trung tâm.
### Vòng lặp tác nhân (Cấp cao)
`
run_conversation():
1. Build system prompt
2. Loop while iterations < max:
a. Call LLM (OpenAI-format messages + tool schemas)
b. If tool_calls → dispatch each via handle_function_call() → append results → Continue
c. If text response → return
3. Context compression triggers automatically near token limit
`
``###Thử nghiệm
``` bash
Python -m pytest tests/ -o 'addopts=' -q # Full suite
Python -m pytest tests/tools/ -q # Specific area
`
- Kiểm tra tự động chuyển hướng
`Hermes_HOME
` sang thư mục tạm thời - không bao giờ chạm vào
~/.Hermes/
` thực
- Chạy bộ đầy đủ trước khi thực hiện bất kỳ thay đổi nào
- Sử dụng
-o 'addopts='
` để xóa mọi cờ pytest tích hợp**Cộng tác viên Windows:**
`scripts/run_tests.sh
` hiện đang tìm kiếm các venv POSIX (
.venv/bin/activate
` /
`venv/bin/activate
) và sẽ xuất hiện lỗi trên Windows có bố cục là
`venv/Scripts/activate
+
`Python.exe
. Venv do Hermes cài đặt tại
`venv/Scripts/
` cũng không có
`pip
` hoặc
`pytest
` — nó bị loại bỏ kích thước cài đặt của người dùng cuối. Cách giải quyết: cài đặt pytest + pytest-xdist + pyYAML vào trang web người dùng Python 3.11 của hệ thống (
/c/Program Files/Python311/Python -m pip install --user pytest pytest-xdist pyYAML
), sau đó chạy thử nghiệm trực tiếp:
``` bash
export PythonPATH="$(pwd)"
"/c/Program Files/Python311/Python" -m pytest tests/tools/test_foo.py -v --tb=short -n 0
`
``Sử dụng
`
-n 0
` (không phải
-n 4
) vì
`pyproject.TOML
` mặc định của
`addopts
` đã bao gồm
-n
` và câu chuyện chẵn lẻ CI của trình bao bọc không áp dụng ngoài POSIX.
**Bộ bảo vệ kiểm tra đa nền tảng:** các kiểm tra sử dụng hệ thống tòa nhà chỉ dành cho POSIX cần có điểm đánh dấu bỏ qua. Những cái phổ biến đã có trong codebase:
- Tạo liên kết tượng trưng →
@pytest.mark.skipif(sys.platform == "win32", reason="Symlinks require elevated privileges on Windows")
` (xem
`tests/cron/test_cron_script.py
)
- Chế độ tệp POSIX (0o600, v.v.) →
@pytest.mark.skipif(sys.platform.startswith("win"), reason="POSIX mode bits not enforced on Windows")
` (xem
`tests/Hermes_CLI/test_auth_toctou_file_modes.py
)
-
`Signal.SIGALRM
` → Chỉ dành cho Unix (xem
`tests/conftest.py::_enforce_test_timeout
)
- Kiểm tra hồi quy trực tiếp Winsock / dành riêng cho Windows →
@pytest.mark.skipif(sys.platform != "win32", reason="Windows-specific regression")
``**Monkeypatching
`sys.platform
` là không đủ** khi mã đang được kiểm tra cũng gọi
`platform.system()
` /
`platform.release()
` /
`platform.mac_ver()
. Các chức năng đó đọc lại hệ điều hành thực một cách độc lập, do đó, quá trình kiểm tra đặt
`sys.platform = "Linux"
` trên trình chạy Windows sẽ vẫn thấy
`platform.system() == "Windows"
` và định tuyến qua nhánh Windows. Vá cả ba lại với nhau:
``` python
monkeypatch.setattr(sys, "platform", "Linux")
monkeypatch.setattr(platform, "system", lambda: "Linux")
monkeypatch.setattr(platform, "release", lambda: "6.8.0-generic")
`
``Xem
`tests/agent/test_prompt_builder.py::TestEnvironmentHints
` để biết ví dụ hoạt động.
### Mở rộng khối môi trường thực thi của dấu nhắc hệ thống
Hướng dẫn thực tế về Hệ điều hành máy chủ, trang chủ người dùng, cwd, chương trình phụ trợ đầu cuối và shell (bash so với PowerShell trên Windows) được phát ra từ
`agent/prompt_builder.py::build_environment_hints()
. Đây cũng là nơi chứa logic thăm dò gợi ý WSL và mỗi chương trình phụ trợ. Công ước:
- **Phụ trợ terminal cục bộ** → phát ra thông tin máy chủ (OS,
$HOME
, cwd) + ghi chú dành riêng cho Windows (tên máy chủ ≠ tên người dùng,
`terminal
` sử dụng bash không phải PowerShell).
- **Phần phụ trợ terminal từ xa** (mọi thứ trong
`_REMOTE_TERMINAL_BACKENDS
:
`Docker, singularity, modal, daytona, SSH, vercel_sandbox, managed_modal
) → **loại bỏ** toàn bộ thông tin máy chủ và chỉ mô tả phần phụ trợ. Đầu dò
`uname
/
`whoami
/
`pwd
` trực tiếp chạy bên trong chương trình phụ trợ thông qua
`tools.environments.get_environment(...).execute(...)
, được lưu vào bộ nhớ đệm cho mỗi quy trình trong
`_BACKEND_PROBE_CACHE
, với dự phòng tĩnh nếu đầu dò hết thời gian.
- **Thông tin quan trọng về tác giả nhanh chóng:** khi
`TERMINAL_ENV != "local"
, *mọi* công cụ tệp (
`read_file
,
`write_file
,
`patch
,
`search_files
) chạy bên trong vùng chứa phụ trợ chứ không phải trên máy chủ. Lời nhắc hệ thống không bao giờ được mô tả máy chủ trong trường hợp đó — tác nhân không thể chạm vào nó.
Ghi chú thiết kế đầy đủ, chuỗi phát ra chính xác và cạm bẫy thử nghiệm:
`references/prompt-builder-environment-hints.md
.
**Mẫu an toàn tái cấu trúc (bảo vệ tương đương POSIX):** khi bạn trích xuất logic nội tuyến vào một trình trợ giúp bổ sung hành vi dành riêng cho Windows/nền tảng, hãy giữ hàm oracle
`_legacy_<name
` trong tệp thử nghiệm. Đây là bản sao nguyên văn của mã cũ, sau đó tham số hóa-diff đối với nó. Ví dụ:
`tests/tools/test_code_execution_Windows_env.py::TestPosixEquivalence
. Điều này khóa trong sự bất biến rằng hành vi POSIX giống hệt nhau từng bit và làm cho bất kỳ sự trôi dạt nào trong tương lai đều thất bại rõ ràng với một sự khác biệt rõ ràng.
### Cam kết các quy ước
`
type: concise subject line
Optional body.
`
``Các loại:
`fix:
,
`feat:
,
`refactor:
,
`docs:
,
`chore:
### Quy tắc chính
- **Không bao giờ ngắt bộ nhớ đệm lời nhắc** — không thay đổi ngữ cảnh, công cụ hoặc lời nhắc hệ thống giữa cuộc trò chuyện
- ** Luân phiên vai trò tin nhắn** — không bao giờ có hai tin nhắn trợ lý hoặc hai tin nhắn người dùng liên tiếp
- Sử dụng
`get_Hermes_home()
` từ
`Hermes_constants
` cho tất cả các đường dẫn (profile-safe)
- Giá trị cấu hình nằm trong
`config.yaml
, bí mật nằm trong
.env
- Các công cụ mới cần có
`check_fn
` nên chỉ xuất hiện khi đáp ứng đủ yêu cầu