Mục tiêu liên tục (/goal)
/mục tiêu mang lại cho Hermes một mục tiêu thường trực tồn tại qua các lượt. Sau mỗi lượt, mô hình giám khảo hạng nhẹ sẽ kiểm tra xem mục tiêu có được đáp ứng bởi phản hồi cuối cùng của trợ lý hay không. Nếu không, Hermes sẽ tự động đưa lời nhắc tiếp tục trở lại cùng một phiên và tiếp tục hoạt động — cho đến khi đạt được mục tiêu, bạn tạm dừng hoặc xóa mục tiêu đó hoặc hết ngân sách theo lượt.
Đó là quan điểm của chúng tôi về vòng lặp Ralph, được lấy cảm hứng trực tiếp từ /goal của Codex CLI 0.128.0's /goal của Eric Traut (OpenAI). Ý tưởng cốt lõi — duy trì mục tiêu qua nhiều lượt và không dừng lại cho đến khi đạt được — là của họ. Việc triển khai ở đây độc lập và thích ứng với kiến trúc của Hermes.
Khi nào nên sử dụng nó
Sử dụng /goal cho các nhiệm vụ mà bạn muốn Hermes tự lặp lại mà không cần bạn phải nhắc lại mỗi lượt:
- "Sửa mọi lỗi lint trong
src/và xác minhruff checkđã thành công" - "Cổng tính năng X từ repo Y, bao gồm các bài kiểm tra và nhận CI xanh"
- "Điều tra lý do tại sao ID phiên đôi khi bị trôi khi nén giữa chừng và viết báo cáo"
- "Xây dựng một CLI nhỏ để đổi tên tệp theo ngày EXIF của chúng, sau đó kiểm tra nó với ảnh/thư mục"
Các nhiệm vụ mà tác nhân thực hiện một lượt và dừng lại không cần /mục tiêu. Những nhiệm vụ mà bạn sẽ phải nói "tiếp tục" ba lần là nơi điều này tỏa sáng.
Bắt đầu nhanh
/goal Fix every failing test in tests/hermes_cli/ and make sure scripts/run_tests.sh passes for that directory
Những gì bạn sẽ thấy:
- Mục tiêu được chấp nhận —
⊙ Bộ mục tiêu (ngân sách 20 lượt): <mục tiêu của bạn> - Turn 1 run — Hermes bắt đầu hoạt động như thể bạn gửi bàn thắng dưới dạng tin nhắn bình thường.
- Thẩm phán chạy — sau lượt, người mẫu trọng tài quyết định
hoàn thànhhoặctiếp tục. - Lặp lại kích hoạt nếu cần — nếu
tiếp tục, bạn sẽ thấy↻ Tiếp tục hướng tới mục tiêu (20/1): <lý do của thẩm phán>và Hermes tự động thực hiện bước tiếp theo. - Chấm dứt — cuối cùng bạn sẽ thấy
✓ Mục tiêu đã đạt được: <lý do>hoặc⏸ Mục tiêu bị tạm dừng — sử dụng N/20 lượt.
Lệnh
| Command | What it does |
|---|---|
/goal <text> | Set (or replace) the standing goal. Kicks off the first turn immediately so you don't need to send a separate message. |
/goal or /goal status | Show the current goal, its status, and turns used. |
/goal pause | Stop the auto-continuation loop without clearing the goal. |
/goal resume | Resume the loop (resets the turn counter back to zero). |
/goal clear | Drop the goal entirely. |
Hoạt động giống hệt nhau trên CLI và mọi nền tảng cổng (Telegram, Discord, Slack, Matrix, Signal, WhatsApp, SMS, iMessage, Webhook, máy chủ API và bảng điều khiển web).
Chi tiết hành vi
Thẩm phán
Sau mỗi lượt, Hermes gọi một mẫu phụ với:
- Văn bản mục tiêu thường trực
- Phản hồi cuối cùng gần đây nhất của nhân viên hỗ trợ (~4 KB văn bản cuối cùng)
- Lời nhắc hệ thống yêu cầu thẩm phán trả lời bằng JSON nghiêm ngặt:
{"done": <bool>, "reason": "<one-sentence Reasone>"}
Thẩm phán thận trọng một cách có chủ ý: nó chỉ đánh dấu mục tiêu là "hoàn thành" khi câu trả lời rõ ràng xác nhận mục tiêu đã hoàn thành, khi kết quả cuối cùng được đưa ra rõ ràng hoặc khi mục tiêu không thể đạt được/bị chặn (được coi là HOÀN THÀNH với lý do chính đáng để chúng tôi không đốt ngân sách cho những nhiệm vụ không thể thực hiện được).
Ngữ nghĩa mở lỗi
Nếu thẩm phán mắc lỗi (lỗi mạng, phản hồi không đúng định dạng, ứng dụng khách phụ không có sẵn), Hermes sẽ coi phán quyết là tiếp tục - một thẩm phán hỏng không bao giờ cản trở sự tiến bộ. Ngân sách quay vòng là điểm dừng chân thực sự.
Chuyển ngân sách
Mặc định là 20 lượt tiếp tục (goals.max_turns trong config.yaml). Khi đạt đến ngân sách, Hermes sẽ tự động tạm dừng và cho bạn biết chính xác cách tiến hành:
⏸ Goal paused — 20/20 turns used. Use /goal resume to keep going, or /goal clear to stop.
/mục tiêu tiếp tục đặt lại bộ đếm về 0, do đó bạn có thể tiếp tục thực hiện theo từng phần đã đo.
Tin nhắn của người dùng luôn được ưu tiên trước
Bất kỳ tin nhắn thực nào bạn gửi trong khi mục tiêu đang hoạt động đều được ưu tiên trong vòng lặp tiếp tục. Trên CLI, tin nhắn của bạn sẽ xuất hiện ở _pending_input trước phần tiếp tục được xếp hàng đợi; trên cổng nó đi qua bộ chuyển đổi FIFO theo cách tương tự. Trọng tài sẽ chạy lại sau lượt của bạn - vì vậy nếu tin nhắn của bạn hoàn thành mục tiêu, trọng tài sẽ bắt kịp và dừng lại.
An toàn giữa chặng (cửa ngõ)
Trong khi một tác nhân đang chạy, /trạng thái mục tiêu, /tạm dừng mục tiêu và /xóa mục tiêu vẫn an toàn để chạy — chúng chỉ chạm vào trạng thái mặt phẳng điều khiển và không làm gián đoạn lượt hiện tại. Việc đặt mục tiêu mới giữa chừng (/goal <new text>) bị từ chối kèm theo thông báo yêu cầu bạn /stop trước, do đó phần tiếp theo cũ không thể chạy đua với mục tiêu mới.
Kiên trì
Trạng thái mục tiêu tồn tại trong SessionDB.state_meta được khóa bởi goal:<session_id>. Điều đó có nghĩa là /resume tiếp tục ngay từ nơi bạn đã dừng lại — đặt mục tiêu, đóng máy tính xách tay của bạn, quay lại vào ngày mai, /resume và mục tiêu vẫn giữ nguyên như cũ (đang hoạt động, đã tạm dừng hoặc đã hoàn tất).
Bộ nhớ đệm nhắc nhở
Lời nhắc tiếp tục là một thông báo vai trò người dùng đơn giản được thêm vào lịch sử. Nó không làm thay đổi lời nhắc hệ thống, hoán đổi bộ công cụ hoặc chạm vào cuộc trò chuyện theo bất kỳ cách nào làm mất hiệu lực bộ nhớ đệm lời nhắc của Hermes. Việc thực hiện mục tiêu 20 lượt sẽ tốn bộ nhớ đệm tương đương với 20 lượt trò chuyện thông thường.
Cấu hình
Thêm vào ~/.hermes/config.yaml:
goals:
# Max continuation turns before Hermes auto-pauses and asks you to
# /goal resume. Default 20. Lower this if you want tighter loops;
# raise it for long-running refactors.
max_turns: 20
Lựa chọn mẫu giám khảo
Trọng tài sử dụng nhiệm vụ phụ trợ goal_judge. Theo mặc định, nó phân giải thành mô hình chính của bạn (xem Mô hình phụ trợ). Nếu bạn muốn định hướng đánh giá đến một mô hình nhanh giá rẻ để giảm chi phí, hãy thêm phần ghi đè:
auxiliary:
goal_judge:
provider: openrouter
model: google/gemini-3-flash-preview
Lệnh gọi thẩm phán có quy mô nhỏ (~200 mã thông báo đầu ra) và chạy một lần mỗi lượt, do đó, mô hình nhanh giá rẻ thường là lệnh gọi phù hợp.
Hướng dẫn ví dụ
You: /goal Create four files /tmp/note_{1..4}.txt, one per turn, each containing its number as text
⊙ Goal set (20-turn budget): Create four files /tmp/note_{1..4}.txt, one per turn, each containing its number as text
Hermes: Creating /tmp/note_1.txt now.
💻 echo "1" > /tmp/note_1.txt (0.1s)
I've created /tmp/note_1.txt with the content "1". I'll continue with the remaining files on the next turn as you specified.
↻ Continuing toward goal (1/20): Only 1 of 4 files has been created; 3 files remain.
Hermes: [Continuing toward your standing goal]
💻 echo "2" > /tmp/note_2.txt (0.1s)
Created /tmp/note_2.txt. Two more to go.
↻ Continuing toward goal (2/20): 2 of 4 files created; 2 remain.
Hermes: [Continuing toward your standing goal]
💻 echo "3" > /tmp/note_3.txt (0.1s)
Created /tmp/note_3.txt.
↻ Continuing toward goal (3/20): 3 of 4 files created; 1 remains.
Hermes: [Continuing toward your standing goal]
💻 echo "4" > /tmp/note_4.txt (0.1s)
All four files have been created: /tmp/note_1.txt through /tmp/note_4.txt, each containing its number.
✓ Goal achieved: All four files were created with the specified content, completing the goal.
Bạn: _
Bốn lượt, một lời gọi /mục tiêu, không có lời nhắc "tiếp tục" nào từ bạn.
Khi trọng tài làm sai
Không có thẩm phán nào là hoàn hảo. Hai chế độ lỗi cần theo dõi:
Phủ định sai — thẩm phán nói tiếp tục khi mục tiêu thực sự được hoàn thành. Ngân sách theo lượt nắm bắt được điều này. Bạn sẽ thấy ⏸ Mục tiêu bị tạm dừng và có thể /xóa mục tiêu hoặc chỉ gửi một tin nhắn mới.
Dương tính giả — thẩm phán nói đã hoàn thành khi vẫn còn công việc. Bạn sẽ thấy ✓ Mục tiêu đã đạt được nhưng bạn biết rõ hơn. Gửi tin nhắn tiếp theo để tiếp tục hoặc đặt lại mục tiêu chính xác hơn: /goal <văn bản cụ thể hơn>. Hệ thống nhắc nhở của thẩm phán có chủ ý thận trọng để khiến kết quả dương tính giả hiếm gặp hơn âm tính giả.
Nếu bạn thấy phán quyết của thẩm phán không thuyết phục, thì dòng lý do ở dòng ↻ Tiếp tục hướng tới mục tiêu hoặc ✓ Đạt được mục tiêu sẽ cho bạn biết chính xác những gì thẩm phán đã nhìn thấy. Điều đó thường đủ để chẩn đoán xem văn bản mục tiêu có mơ hồ hay phản hồi của mô hình là mơ hồ hay không.
Ghi công
/goal là việc Hermes sử dụng mẫu vòng lặp Ralph. Thiết kế hướng tới người dùng — duy trì mục tiêu trong nhiều lượt, không dừng lại cho đến khi đạt được mục tiêu đó, với các điều khiển tạo/tạm dừng/tiếp tục/xóa — đã được phổ biến và đưa vào Codex CLI 0.128.0 bởi Eric Traut trong nhóm Codex của OpenAI. Việc triển khai của chúng tôi là độc lập (đăng ký CommandDef trung tâm, tính bền bỉ SessionDB.state_meta, đánh giá khách hàng phụ trợ, tiếp tục bộ điều hợp-FIFO ở phía cổng) nhưng ý tưởng là của họ. Tín dụng khi tín dụng đến hạn.