Skip to main content

Tích hợp harness vào Hermes

Bạn triển khai cả soigia-harness lẫn Hermes. Trang này là bản đồ để đưa harness vào Hermes đúng cách: sáu mô hình tích hợp, tiêu chí chọn, và những best practice giữ hai bên không giẫm chân nhau.

1. Nguyên tắc nền​

  • Không bao giờ sửa core Hermes. Mọi tích hợp đi qua điểm cắm công khai (plugin, MCP, skill, API).
  • Tách tiến trình, giao tiếp bằng JSON. Harness chạy như tiến trình riêng, trao đổi qua stdout JSON — tránh xung đột phiên bản Python và vòng đời AIAgent.
  • Một bên sở hữu model config. Đừng để cả hai cùng cấu hình provider cho một tác vụ — dễ sinh hai nguồn sự thật.
  • Đo chi phí context. Mỗi tool/MCP thêm schema; kiểm bằng /context all.

2. Sáu mô hình tích hợp​

#Mô hìnhCơ chế HermesĐộ tách rời
AChia sẻ skill~/.hermes/skills/ hoặc hermes skills tap add — chuẩn agentskills.io dùng chungCao (chỉ markdown)
BWrapper tool qua pluginPlugin register(ctx) đăng ký tool gọi CLI harnessVừa
CHarness như MCP servermcp_servers trong config.yaml (stdio)Cao (chuẩn hoá)
DHarness như sub-agentPlugin tool spawn tiến trình harness một-phát; hoặc dùng delegate_task nội bộ Hermes cho việc khácVừa
ECầu modelhermes proxy (OpenAI-compatible) ↔ harness OpenAICompatibleModelThấp (chia credential)
FPort tool của harnessĐăng ký tool Hermes (plugin) tái dùng logic như read_many, search_context, run_testsThấp→vừa

3. Chọn mô hình nào​

Bạn muốn…ChọnVì sao
Dùng quy trình điều tra dựa trên bằng chứng trong HermesASkill là markdown, dùng chung chuẩn — gần như miễn phí
Expose vài lệnh harness cho agent gọiBPlugin là bề mặt chính thức cho tool tuỳ biến
Cho agent dùng cả bộ tool của harness như tool bản địaCMCP là lớp adapter đúng cho "tool ngoài"
Ủy thác một việc trọn gói cho harness chạy độc lậpDHarness tự lo vòng lặp; Hermes chỉ nhận kết quả
Cho harness dùng model/credential của HermesEMột nguồn credential, không nhân đôi key
Tái dùng đúng logic tool của harnessFTránh viết lại; nhưng phải port sang schema Hermes

Lộ trình gợi ý. Bắt đầu A (rẻ, an toàn) → thêm C (MCP) khi cần tool thật → chỉ dùng E nếu muốn thống nhất credential. Đừng làm hết cùng lúc.

4. Best practices​

Chủ đềKhuyến nghị
Giao tiếpHarness in JSON ra stdout; tool Hermes phải trả về chuỗi JSON (json.dumps)
LỗiTool Hermes trả {"error": "..."}, không raise exception
Đặt tênNamespace rõ, ví dụ harness__run_tests, tránh trùng built-in
Tiến trìnhGọi harness bằng subprocess với timeout; không import in-process nếu không cần
Kiểm thửhermes plugins doctor . --ci trước khi cài; test cả hai phía
ContextĐo bằng /context all; chỉ bật tool/MCP cần thiết
Model configMột bên sở hữu; bên kia chỉ trỏ tới (ví dụ harness trỏ base_url về hermes proxy)
Bí mậtKhông nhúng key vào mcp.json/skill; dùng .env + redaction
Phiên bảnPin phiên bản MCP server/plugin; audit chuỗi cung ứng (hermes security audit)
Hợp đồngNếu harness và Hermes cùng tạo "bằng chứng", dùng một chuẩn bằng chứng chung

5. Pitfalls​

PitfallHậu quảTránh thế nào
Import harness in-process vào pluginXung đột dependency/vòng đời agentGọi subprocess, trao đổi JSON
Hai bên cùng cấu hình provider cho một việcHai nguồn sự thật, khó debugChọn một bên sở hữu (thường Hermes)
Bọc quá nhiều tool vào MCPPhình schema, tốn token, agent lúChỉ lộ tool cần; lọc theo server
Sửa core Hermes để tích hợpVỡ khi hermes updateDùng plugin/MCP/skill
Dùng import nội bộ HermesVỡ sau đợt tách module (2026-09-14)Dùng điểm cắm công khai; chạy hermes plugins compat
Không namespace toolĐè built-in hoặc plugin khácTiền tố rõ; kiểm bằng plugins doctor

Nguồn. developer-guide/plugins/index.md, adding-tools.md, programmatic-integration.md, user-guide/features/mcp.md, guides/python-library.md, và API của soigia-harness/adapters/.