{/* 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. */}
Công nhân Kanban
Những cạm bẫy, ví dụ và trường hợp khó khăn đối với công nhân của Hermes Kanban. Bản thân vòng đời được tự động đưa vào lời nhắc hệ thống của mọi nhân viên dưới dạng KANBAN_GUIDANCE (từ Agent/prompt_builder.py); kỹ năng này là thứ bạn tải khi muốn biết chi tiết sâu hơn về các tình huống cụ thể.
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/devops/kanban-worker ` | | Phiên bản |
2.0.0 ` | | Nền tảng | Linux, macOS, Windows | | Thẻ |
kanban
, `multi-agent
, `collaboration
, `workflow
,
pitfalls |
| Kỹ năng liên quan | XPROTECTX14XPROTECTX |
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.
Kanban Worker — Cạm bẫy và ví dụ`> Bạn thấy kỹ năng này vì người điều phối Hermes Kanban đã sinh ra bạn làm công nhân với
--skills kanban-worker
— kỹ năng này được tải tự động cho mọi nhân viên được điều động. **vòng đời** (6 bước: định hướng → công việc → nhịp tim → khối/hoàn thành) cũng tồn tại trong khối KANBAN_GUIDANCE
` được tự động đưa vào lời nhắc hệ thống của bạn. Kỹ năng này là chi tiết sâu hơn: hình dạng bàn giao tốt, chẩn đoán thử lại, các trường hợp khó khăn.
Xử lý không gian làm việc
Loại không gian làm việc của bạn xác định cách bạn nên hành xử bên trong
$Hermes_KANBAN_WORKSPACE
:
| Loại | Nó là gì | Cách làm việc |
|---|---|---|
| `scratch | ||
| ` | Thư mục tmp mới, của riêng bạn | Đọc/ghi tự do; nó sẽ nhận được GC khi tác vụ được lưu trữ. |
| `dir:<path | ||
| ` | Thư mục liên tục được chia sẻ | Các lần chạy khác sẽ đọc những gì bạn viết. Hãy coi nó như một trạng thái tồn tại lâu dài. Đường dẫn được đảm bảo tuyệt đối (kernel từ chối các đường dẫn tương đối). |
| `worktree | ||
| ` | Cây công việc Git tại đường dẫn đã giải quyết | Nếu |
.git
không tồn tại, trước tiên hãy chạy git worktree add <path <branch
` từ repo chính, sau đó cd và hoạt động bình thường. Cam kết làm việc tại đây. |
Cách ly người thuê nhà
Nếu
$Hermes_TENANT ` được đặt, tác vụ sẽ thuộc về không gian tên đối tượng thuê. Khi đọc hoặc ghi bộ nhớ liên tục, hãy thêm tiền tố vào các mục bộ nhớ với đối tượng thuê để ngữ cảnh không bị rò rỉ giữa các đối tượng thuê:
-
Tốt: `business-a: Acme is our biggest customer
-
Xấu (rò rỉ): `Acme is our biggest customer
Tóm tắt tốt + hình dạng siêu dữ liệu
Quá trình chuyển giao
kanban_complete(summary=..., metadata=...) là cách các công nhân ở hạ nguồn đọc những gì bạn đã làm. Các mẫu hoạt động:
Nhiệm vụ mã hóa:
`
kanban_complete(
summary="shipped rate limiter — token bucket, keys on user_id with IP fallback, 14 tests pass",
metadata={
"changed_files": ["rate_limiter.py", "tests/test_rate_limiter.py"],
"tests_run": 14,
"tests_passed": 14,
"decisions": ["user_id primary, IP fallback for unauthenticated requests"],
},
)
`
``**Nhiệm vụ mã hóa cần con người xem xét (bắt buộc phải xem xét):**
Đối với hầu hết các tác vụ thay đổi mã, công việc không thực sự *hoàn thành* cho đến khi có người đánh giá để ý đến nó. Chặn thay vì hoàn thành, với
`reason
` có tiền tố
`review-required:
` để bảng thông tin hiển thị hàng cần xem xét. Trước tiên, hãy thả siêu dữ liệu có cấu trúc (tệp đã thay đổi, số lần kiểm tra, url khác biệt/PR) vào nhận xét vì
`kanban_block
` chỉ mang lý do mà con người có thể đọc được - nhận xét là kênh chú thích lâu dài. Người đánh giá phê duyệt và chạy
`Hermes kanban unblock <id
` (hiển thị lại cho bạn chuỗi nhận xét để theo dõi) hoặc yêu cầu thay đổi thông qua một nhận xét khác.
`Python
import JSON`kanban_comment(
body="review-required handoff:\n" + JSON.dumps({
"changed_files": ["rate_limiter.py", "tests/test_rate_limiter.py"],
"tests_run": 14,
"tests_passed": 14,
"diff_path": "/path/to/worktree", # or PR url if pushed
"decisions": ["user_id primary, IP fallback for unauthenticated requests"],
}, indent=2),
)
kanban_block(
reason="review-required: rate limiter shipped, 14/14 tests pass — needs eyes on the user_id/IP fallback choice before merging",
)
`
``Chỉ sử dụng
`kanban_complete
` khi tác vụ thực sự là terminal - ví dụ: sửa lỗi đánh máy một dòng, thay đổi tài liệu mà không gây hậu quả về mặt chức năng hoặc một nhiệm vụ nghiên cứu trong đó tạo phẩm LÀ bản ghi.
**Nhiệm vụ nghiên cứu:**
`
`Python
kanban_complete(
summary="3 competing libraries reviewed; vLLM wins on throughput, SGLang on latency, Tensorrt-LLM on memory efficiency",
metadata={
"sources_read": 12,
"recommendation": "vLLM",
"benchmarks": \{"vLLM": 1.0, "sglang": 0.87, "trtLLM": 0.72},
},
)
`
``**Nhiệm vụ đánh giá:**
`
`Python
kanban_complete(
summary="reviewed PR #123; 2 blocking issues found (SQL injection in /search, missing CSRF on /settings)",
metadata={
"pr_number": 123,
"findings": [
\{"severity": "critical", "file": "API/search.py", "line": 42, "issue": "raw SQL concat"},
\{"severity": "high", "file": "API/settings.py", "issue": "missing CSRF middleware"},
],
"approved": False,
},
)
`
``Định hình
`metadata
` để những người phân tích cú pháp xuôi dòng (người đánh giá, người tổng hợp, người lập lịch) có thể sử dụng nó mà không cần đọc lại văn xuôi của bạn.
## Yêu cầu thẻ bạn thực sự đã tạo
Nếu lần chạy của bạn tạo ra các tác vụ kanban mới (thông qua
`kanban_create
), hãy chuyển id trong
`created_cards
` trên
`kanban_complete
. Hạt nhân xác minh từng id tồn tại và được tạo bởi hồ sơ của bạn; bất kỳ id ảo nào đều chặn quá trình hoàn thành bằng một lỗi liệt kê những gì đã xảy ra và lần thử bị từ chối sẽ được ghi lại vĩnh viễn vào nhật ký sự kiện của tác vụ. **Chỉ liệt kê các id bạn đã lấy từ giá trị trả về
`kanban_create
` thành công — không bao giờ tạo id từ văn xuôi, không bao giờ dán id từ các lần chạy trước đó, không bao giờ yêu cầu thẻ mà nhân viên khác đã tạo.**
`Python
# GOOD — capture return values, then claim them.
c1 = kanban_create(title="remediate SQL injection", assignee="security-worker")
c2 = kanban_create(title="fix CSRF middleware", assignee="web-worker")
kanban_complete(
summary="Review done; spawned remediations for both findings.",
metadata=\{"pr_number": 123, "approved": False},
created_cards=[c1["task_id"], c2["task_id"]],
)
`
`
``` python
# BAD — claiming ids you don't have captured return values for.
kanban_complete(
summary="Created remediation cards t_a1b2c3d4, t_deadbeef", # hallucinated
created_cards=["t_a1b2c3d4", "t_deadbeef"], # → gate rejects
)
`
`Nếu lệnh gọi
`kanban_create
` không thành công (ngoại lệ, tool_error), thẻ KHÔNG được tạo - không bao gồm id ảo cho thẻ. Hãy thử tạo lại hoặc bỏ qua id và đề cập đến lỗi trong phần tóm tắt của bạn. Thẻ quét văn xuôi cũng ghi lại các tham chiếu
`t_<hex
` trong bản tóm tắt dạng tự do của bạn mà không giải quyết được; những điều này không cản trở việc hoàn thành nhưng hiển thị dưới dạng cảnh báo tư vấn về nhiệm vụ trong trang tổng quan.
## Chặn lý do được giải đáp nhanh chóng
Xấu:
"stuck"
- con người không có bối cảnh.
Tốt: một câu nêu rõ quyết định cụ thể mà bạn cần. Thay vào đó hãy để lại bối cảnh dài hơn dưới dạng nhận xét.
``` python
kanban_comment(
task_id=os.environ["Hermes_KANBAN_TASK"],
body="Full context: I have user IPs from Cloudflare headers but some users are behind NATs with thousands of peers. Keying on IP alone causes false positives.",
)
kanban_block(reason="Rate limit key choice: IP (simple, NAT-unsafe) or user_id (requires auth, skips anonymous endpoints)?")
`
``Thông báo chặn là những gì xuất hiện trong bảng thông báo bảng thông tin/cổng. Nhận xét là bối cảnh sâu sắc hơn mà con người đọc khi họ mở nhiệm vụ.
## Nhịp tim đáng gửi
Tiến trình tên nhịp tim tốt:
"epoch 12/50, loss 0.31"
,
"scanned 1.2M/2.4M rows"
,
"uploaded 47/120 videos"
.
Nhịp tim kém:
"still working"
, nốt trống, quãng dưới giây. Tối đa cứ sau vài phút; bỏ qua hoàn toàn các nhiệm vụ dưới ~2 phút.
## Thử lại các tình huống
Nếu bạn mở tác vụ và
`kanban_show
` trả về
`runs: [...]
` với một hoặc nhiều lần chạy đã đóng thì bạn phải thử lại. Các lần chạy trước
`outcome
` /
`summary
` /
`error
` cho bạn biết điều gì không hoạt động. Đừng lặp lại con đường đó. Chẩn đoán thử lại điển hình:
-
`outcome: "timed_out"
` — lần thử trước đã đạt được
`max_runtime_seconds
. Bạn có thể cần phải chia nhỏ tác phẩm hoặc rút ngắn nó.
-
`outcome: "crashed"
` — OOM hoặc lỗi phân đoạn. Giảm dấu chân bộ nhớ.
-
`outcome: "spawn_failed"
+
`error: "..."
- thường là sự cố cấu hình hồ sơ (thiếu thông tin xác thực, PATH không hợp lệ). Hãy hỏi con người qua
`kanban_block
` thay vì thử lại một cách mù quáng.
-
`outcome: "reclaimed"
+
`summary: "task archived..."
` — nhà điều hành đã lưu trữ tác vụ từ lần chạy trước đó; có lẽ bạn không nên chạy chút nào, hãy kiểm tra trạng thái cẩn thận.
-
`outcome: "blocked"
` — lần thử trước đó đã bị chặn; bình luận bỏ chặn bây giờ đã có trong chủ đề.
## KHÔNG
- Gọi
`delegate_task
` để thay thế cho
`kanban_create
.
`delegate_task
` dành cho các nhiệm vụ lý luận ngắn trong hoạt động CỦA BẠN;
`kanban_create
` dành cho chuyển giao giữa các tác nhân tồn tại lâu hơn một vòng lặp API.
- Sửa đổi các tập tin bên ngoài
$Hermes_KANBAN_WORKSPACE
` trừ khi cơ quan nhiệm vụ yêu cầu.
- Tạo các nhiệm vụ tiếp theo được giao cho chính bạn - giao cho đúng chuyên gia.
- Hoàn thành một nhiệm vụ mà bạn chưa thực sự hoàn thành. Thay vào đó hãy chặn nó.
## Cạm bẫy`**Trạng thái tác vụ có thể thay đổi giữa quá trình gửi và khởi động.** Trong khoảng thời gian từ khi người điều phối xác nhận đến khi quá trình của bạn thực sự khởi động, tác vụ có thể đã bị chặn, giao lại hoặc lưu trữ. Luôn luôn
`kanban_show
` đầu tiên. Nếu nó báo cáo
`blocked
` hoặc
`archived
, hãy dừng lại — bạn không nên chạy.
**Không gian làm việc có thể có các tạo phẩm cũ.** Đặc biệt là các không gian làm việc
`dir:
` và
`worktree
` có thể có các tệp từ các lần chạy trước. Đọc chuỗi nhận xét - nó thường giải thích lý do bạn chạy lại và không gian làm việc đang ở trạng thái nào.
**Đừng dựa vào CLI khi có hướng dẫn.** Các công cụ
`kanban_*
` hoạt động trên tất cả các chương trình phụ trợ đầu cuối (Docker, Modal, SSH).
`Hermes kanban <verb
` từ công cụ đầu cuối của bạn sẽ không thành công trong các chương trình phụ trợ được chứa trong vùng chứa vì CLI chưa được cài đặt ở đó. Khi nghi ngờ, hãy sử dụng công cụ này.
## Dự phòng CLI (dành cho tập lệnh)
Mọi công cụ đều có CLI tương đương cho các toán tử và tập lệnh của con người:
-
`kanban_show
` ↔
`Hermes kanban show <id --JSON
-
`kanban_complete
` ↔
`Hermes kanban complete <id --summary "..." --metadata '\{...}'
-
`kanban_block
` ↔
`Hermes kanban block <id "reason"
-
`kanban_create
` ↔
`Hermes kanban create "title" --assignee <profile [--parent <id]
- v.v.
Sử dụng các công cụ từ bên trong một đại lý; CLI tồn tại cho con người ở terminal.