Chuyển đến nội dung
Khởi động hango: hợp đồng, nghiên cứu, kế hoạch lộ trình, red team, kiểm chứng

Khởi động hango: hợp đồng, nghiên cứu, kế hoạch lộ trình, red team, kiểm chứng

22 tháng 9, 2026

Đã xảy ra gì

  • Hợp đồng brainstorm được chấp nhận: một agent harness server viết bằng Go, multi-tenant với cô lập logic, lộ trình học tập có đích đến sẵn sàng cho production, Claude cài đặt từng giai đoạn cùng một bài học, người dùng review theo từng giai đoạn. Tham chiếu: goclaw (bản clone cục bộ, 454K LOC) và langchain deepagents v0.7.16.
  • Bốn báo cáo nghiên cứu trong plans/reports/: kiến trúc goclaw (mượn các interface provider/tool, tenant_id + ctx scoping, lane scheduler; bỏ qua dual loop và setter DI), deepagents (middleware stack, everything-is-a-filesystem, phòng thủ context ba lớp, loop dạng hàm từng bước có thể chạy tiếp), hệ sinh thái Go (uuid v7 trong stdlib của Go 1.27, synctest, Accumulate của anthropic-sdk-go v1.74, cái bẫy RLS SET LOCAL, SSE trên stdlib), Langfuse + Grafana (endpoint OTLP của Langfuse chỉ có HTTP, chia nhánh từ một collector duy nhất, otel-lgtm 0.33.1, otelecho đã bị deprecated nên bọc bằng otelhttp).
  • Tech stack được chốt trong docs/tech-stack.md: chọn Echo v5 thay vì Fiber vì fasthttp của Fiber làm hỏng việc flush SSE, otelhttp và việc hủy context. SDK chính thức đặt sau interface Provider của riêng ta, pgx + SQL viết tay + goose, chỉ dùng Postgres.
  • Người dùng đổi ưu tiên giữa phiên: observability là nền móng, lộ trình là sản phẩm chính. Observability chuyển từ giai đoạn 14 lên giai đoạn 1; mỗi giai đoạn tự gắn instrument cho mình và ghi lại cách debug lớp của nó; giai đoạn 14 cũ trở thành dashboard, cảnh báo và runbook cho run lỗi. docs/roadmap.md được viết (cấu tạo harness, nguyên tắc, thứ tự xây kèm các seam, bảng nhìn ở đâu khi có sự cố).
  • Red team với bốn góc nhìn cho ra 41 phát hiện, gộp thành 15 nhóm, tất cả đều được chấp nhận. Tác động lớn nhất: RLS cưỡng chế sẽ làm mọi query trên pool thường trả về rỗng, kể cả auth; không có việc nhận run nguyên tử hay lease nghĩa là chạy hai lần khi khởi động lại; việc sửa tool call bị bỏ lửng chạy trước khi các lần duyệt được dùng và phá hỏng các batch đã duyệt; lane của subagent bị acquire đệ quy sẽ deadlock ở độ sâu 2; vòng import giữa package agent và run; thứ tự prompt-cache không thể cài đặt được dưới cách dựng prompt của giai đoạn 7; thiếu phân quyền trong cùng một tenant.
  • Quyết định của người dùng trong lúc red team: hoãn credential provider tự mang theo, thành viên chỉ thấy những gì mình tạo, run được đưa lại vào hàng đợi và chạy tiếp ở ranh giới lượt với lease của chủ sở hữu. Bỏ xử lý pause_turn vì không đăng ký server tool nào.
  • Kiểm chứng: module path github.com/phihdn/hango, Langfuse Cloud Hobby cho dev, audit mọi thứ (audit_events chỉ-thêm-vào được ghi bởi một middleware của server cho mọi request có thay đổi dữ liệu và mọi quyết định duyệt, nối với trace qua trace_id), giai đoạn 3 được chứng minh bằng hango probe cùng các test với provider giả.

Quyết định

Plan tại plans/260922-0123-hango-agent-harness-roadmap/ là hợp đồng thực thi: 16 giai đoạn, 221 giờ (186 giờ cài đặt, 35 giờ viết bài học), migration 00001-00011, giới hạn số package được ghi theo số đếm thật và muốn thêm một package phải có bản sửa đổi. Các quy tắc được chốt thêm: internal/agent không import gì từ internal/run; system prompt được dựng bên trong chuỗi tại thời điểm gọi mô hình; run mang owner và lease; mọi bảng đều có test chéo tenant và test trong cùng tenant.

Bước tiếp theo

  • Người dùng review plan và docs/roadmap.md, rồi chấp thuận bắt đầu giai đoạn 1 qua /ak:cook.
  • Giai đoạn 3 gồm một cuộc thăm dò thực nghiệm có giới hạn về ba hành vi nạp dữ liệu của Langfuse chưa được kiểm chứng, với phương án dự phòng là luôn đặt tường minh các attribute langfuse.*.
  • Các việc làm tiếp được ghi trong plan.md: credential provider tự mang theo, tool phía server của Anthropic với việc chuyển nguyên block mờ, cầu MCP, nhiều replica, exec trong sandbox, thời hạn lưu audit.

Vướng mắc

  • Ký commit thất bại hai lần với lỗi agent của 1Password khi ứng dụng đang bị khóa; được giải quyết ở lần thử lại.
  • Script hook session-active-plan chưa được cài trong runtime này; ak plan use đảm nhiệm việc giữ con trỏ tới plan.

Bản ghi công việc lịch sử, không phải căn cứ lâu dài. Hãy ưu tiên docs/specs/ADR cho các quyết định hiện hành.