Harness Academy
Tài liệu gốc 01 14 phútTiếng Việt + English
Ngôn ngữ bài đọc
Bản dịch tiếng Việt

Bản dịch đầy đủ theo đúng cấu trúc tài liệu; code, liên kết và định danh kỹ thuật được giữ nguyên.

decode logo

Xây dựng một coding agent từ đầu

harness, chứ không phải model, mới tạo nên coding agent tốt. Xây dựng một cái từ đầu, từ vòng lặp agent cơ bản đến một nhóm agent đám mây.

Khóa học mã nguồn mở của Decoding AI phối hợp với Modal, Opik (bởi Comet) và Kitaru (bởi ZenML).

Open-source course $0 to run 8 articles 4 videos Code from scratch Apache-2.0 license

decode in the terminal

Hãy thử agent đã hoàn thiện trước — 5 phút, $0:

git clone https://github.com/decodingai-magazine/building-a-coding-agent-from-scratch-course.git
cd building-a-coding-agent-from-scratch-course
make install
cp .env.example .env   # set LLM API key
uv run decode

Sau đó gõ /demo- và chọn một bản demo — xem họ làm gì bên dưới. Hướng dẫn thiết lập đầy đủ.

The demo skills listed inside the decode TUI after typing /demo-

Loại /demo- và sáu bản demo chỉ cách một lần nhấn phím.

📖 Giới thiệu về khóa học này

Trong Thử nghiệm băng ghế đầu cuối của LangChain, chỉ thay đổi harness (với cùng một kiểu máy) đã chuyển coding agent từ vị trí thứ 30 lên top 5: harness chứ không phải kiểu máy mới là điều làm nên coding agent tốt.

agent là ~ 20 dòng. Khóa học là mọi thứ khác.

agent = Agent(
    build_model(settings.llm_provider),        # gemini | openrouter | modal
    deps_type=AgentDeps,                       # cwd, event sink, permission gate
    output_type=[str, DeferredToolRequests],   # final answer, or tools paused for approval
)
register_tools(agent)                          # read, edit, bash, grep, ...

async with agent.iter(prompt, message_history=history) as run:
    async for node in run:                     # model request → tool calls → repeat
        stream_events(node)

Đó là _toàn bộ agent gọi công cụ. Mọi thứ khác trong repo này: công cụ, kỹ năng, lớp cấp phép, hộp cát, hàng đợi điều khiển, bộ nhớ, nén, runtime bền bỉ, thực thi từ xa, quạt ra subagent, evals, là khai thác. Đó là những gì bạn ở đây để xây dựng.

A fresh decode session: Opik tracing on, a Modal-served Qwen model, skill autocomplete, steering keys in the footer
Phiên mới được cung cấp bởi Qwen 3.6 35B được lưu trữ trên Modal

Chúng tôi đã dành nhiều tháng trời dưới sự bảo vệ của Claude Code (thông qua nguồn bị rò rỉ), OpenCode, Pi và Aider, sau đó chắt lọc thành 8 bài viết và 4 video trong đó bạn sẽ xây dựng decode, coding agent của riêng mình, từ đầu. Một lõi headless được nối với hai chế độ: TUI tương tác và runtime từ xa chạy song song N bản sao.

decode architecture

Hai chế độ giao diện ở bên trái, harness headless ở bên phải, mặt phẳng evals bên dưới.

🎮 Xem nó hoạt động

agent đã hoàn thiện sẽ cung cấp các kỹ năng demo theo .decode/skills/. Mở TUI, gõ /demo-, chọn một và xem bộ dây bạn sắp chế tạo hoạt động thực tế:

The demo skills listed inside the decode TUI after typing /demo-
Thực hiện Tiêu chuẩn Kỹ năng
Loại /demo- và sáu bản demo chỉ cách một lần nhấn phím.

A playable Snake game built by decode

Có khả năng tạo trò chơi
/demo-1-terminal-arcade — một lời nhắc, một trò chơi Rắn có thể chơi được

Live GitHub repo data rendered as a web dashboard

Tìm nạp dữ liệu và tạo trang tổng quan
/ demo-3-repo-xung - dữ liệu API GitHub trực tiếp được hiển thị dưới dạng trang tổng quan

An interactive knowledge graph scraped from web articles

Trích xuất bản thể và hiển thị đồ thị
/demo-6-bài-kg — các bài viết trên web được thu thập thành một biểu đồ kiến thức tương tác

Và cơ sở hạ tầng cung cấp năng lượng cho các agent.

A durable run recorded step by step in Kitaru

Độ bền và khả năng phát lại cho AI agent
Mỗi lần chạy được ghi lại từng bước trong Kitaru — tắt nó đi, tiếp tục lại nó, phát lại nó với mô hình đã được hoán đổi

Live Modal sandboxes executing the agent's tools

Hộp cát từ xa
của agent đánh đập chạy ở dạng dùng một lần Hộp cát phương thức

A self-served open model endpoint on Modal

Được cung cấp bởi các mô hình nguồn mở
Qwen3.6-35B của riêng bạn được phân phối trên H200 thông qua Điểm cuối phương thức

Sessions traced in Opik with secrets scrubbed

Thêm đánh giá và khả năng quan sát AI
Mỗi phiên truy tìm trong Opik

🤖 Bạn sẽ bước đi khi biết cách

  • Thiết kế khai thác coding agent từ đầu
  • Triển khai vòng lặp coding agent headless
  • Gắn harness headless vào nhiều chế độ: TUI và remote
  • Thêm runtime để thực thi bền bỉ, theo vòng lặp của con người và phát lại khi chạy các agent song song
  • Triển khai các rào chắn và mạng lưới an toàn cho hành vi của agent bằng cách thêm lớp quyền và hộp cát cục bộ & từ xa
  • Xây dựng các kỹ thuật kỹ thuật bối cảnh thiết yếu: bộ nhớ, nén, kỹ năng
  • Kết nối máy chủ LSP để có vòng phản hồi nhanh hơn
  • Triển khai danh mục agent: xây dựng, lập kế hoạch, đánh giá mã và agent thăm dò
  • Sinh ra các subagent song song thông qua chiến lược phân nhánh
  • Thêm khả năng quan sát
  • Thiết kế một khai thác đánh giá để đánh giá agent và kiểm tra hồi quy
  • Triển khai và điều hành hàng loạt agent

decode in plan mode breaking the Snake demo into a task list with the todo tool

Chế độ lập kế hoạch, trực tiếp: nhân viên chia bản demo Snake thành một danh sách nhiệm vụ với việc cần làm công cụ — [x] xong, [~] đang được tiến hành.

ngăn xếp công nghệ

Mã được viết bằng Python, với các khung và thư viện sau:

  • Khung agent: Pydantic AI
  • Nhà cung cấp LLM: Modal (các trọng số mở mà bạn tự phục vụ thông qua SGLang), OpenRouter (các trọng số mở dưới dạng dịch vụ) hoặc Gemini (độc quyền).
  • runtime và số lần phát lại bền bỉ: Kitaru
  • Khả năng quan sát & đánh giá: Opik
  • Hộp cát: Docker cục bộ & từ xa Hộp cát phương thức
  • Triển khai: GCP & Modal

Mặt khác, chúng tôi xây dựng tất cả chức năng từ đầu, để dạy cho bạn những nền tảng lâu dài chứ không phải các khuôn khổ trừu tượng hóa những phần cứng.

💡 Mã này cho bạn biết what. Các bài học sẽ cho bạn biết tại sao.

Để có trải nghiệm đầy đủ, hãy xem qua các bài viết và video đề cập đến những gì mã không thể làm được. Lý do đằng sau mỗi quyết định.

  • Tại sao chúng tôi có harness headless và hai chế độ giao diện: TUI + Remote.
  • Các thành phần thiết yếu của coding agent là gì và thành phần nào là tùy chọn.
  • Tại sao chúng ta lại cắm vào 9 công cụ, không hơn, không kém.
  • Tại sao chúng ta cần runtime và số lần phát lại bền bỉ.
  • Lan can nào thực sự hữu ích.
  • Tại sao quá trình nén lại kích hoạt ở ~80% cửa sổ thay vì ở giới hạn.
  • Tại sao bạn cần điểm chuẩn, kiểm tra hồi quy và đánh giá trực tuyến.

📚 Đề cương khóa học

Bài họcBài học viếtBài học videoChạy mã
1
Xây dựng một coding agent từ đầu
Lesson 1 — the harness architecture
Điều 1
Video 1 — the video version of lessons 1 and 2
Video 1
01_install_and_usage.md · 02_modal_endpoints.md
2
Vòng lặp coding agent cơ bản
Lesson 2 — the bare-bones coding agent loop
Điều 2
01_install_and_usage.md · 02_modal_endpoints.md
3
Từ một Shell thô đến một coding agent hộp cát
Lesson 3 — from a raw shell to a sandboxed coding agent
Điều 3
🎬 Video 2 - sắp ra mắt01_install_and_usage.md · 02_modal_endpoints.md · 04_sandboxing.md
4
Kỹ thuật bối cảnh cho coding agent
Lesson 4 — context engineering for coding agents
Điều 4
🎬 Video 2 - sắp ra mắt01_install_and_usage.md · 02_modal_endpoints.md
5
Subagent là kỹ thuật bối cảnh
Lesson 5 — subagents are context engineering
Điều 5
🎬 Video 2 - sắp ra mắt01_install_and_usage.md · 02_modal_endpoints.md · 04_sandboxing.md · 08_subagents.md
6
Chế độ headless từ xa & Độ bền
📄 Sắp có🎬 Video 3 - sắp ra mắt01_install_and_usage.md · 02_modal_endpoints.md · 03_runtime.md · 04_sandboxing.md · 06_credentials.md ·
07_infra.md
7
Nền tảng đánh giá AI: Điểm chuẩn, hồi quy và trực tuyến
📄 Sắp có🎬 Video 3 - sắp ra mắt01_install_and_usage.md · 02_modal_endpoints.md · 05_evals.md
8
Đánh giá AI về Steroid thông qua các bản phát lại
📄 Sắp có🎬 Video 4 - sắp ra mắt01_install_and_usage.md · 02_modal_endpoints.md · 03_runtime.md · 05_evals.md

👥 Ai nên tham gia?

Các kỹ sư học bằng cách xây dựng. Bạn kết thúc với một coding agent đang hoạt động, hướng dẫn bạn khai thác các mẫu kỹ thuật để đánh cắp cho các ứng dụng agent của riêng bạn.

Phù hợp nhất cho kỹ sư ML/AI muốn nâng cao tay nghề của mình và cho kỹ sư phần mềm và nhà khoa học dữ liệu muốn chuyển sang xây dựng hệ thống agent từ đầu.

🎓 Điều kiện tiên quyết

Danh mụcYêu cầu
Kỹ năng- Python (Trung cấp)
- LLM & agent (Người mới bắt đầu)
Phần cứngMáy móc hiện đại nào cũng được. Không cần GPU vì chúng tôi chạy tất cả LLM trên đám mây.
Cấp độTrung cấp (nhưng chỉ cần một chút mồ hôi và sự kiên nhẫn thì ai cũng có thể làm được)
Thời gian~ 4–8 giờ cho toàn bộ khóa học - 4 giờ nếu bạn đọc và xem, 6–8 giờ nếu bạn chạy mọi thứ.

💰 Cơ cấu chi phí

Chi phí chạy mã $0 nếu bạn sử dụng cấp độ miễn phí:

Dịch vụChi phí
API Gemini (nhà cung cấp mặc định - thiết lập dễ dàng nhưng yêu cầu API hạn chế)cấp miễn phí (Google AI Studio)
Modal (nhà cung cấp được đề xuất + hộp cát từ xa)$30 tín chỉ miễn phí — đủ để chạy khóa học
OpenRouter (nhà cung cấp thay thế)$0 trên :free mô hình (tín dụng $10 tùy chọn tăng giới hạn hàng ngày)
Opik (truy tìm + đánh giá)bậc miễn phí
Kitaru (runtime bền)miễn phí, chạy cục bộ ngoại tuyến
GCP — triển khai agent để chạy từ xa (tùy chọn)~$16/tháng khi hết hạn; tài khoản GCP mới nhận được khoản tín dụng $300 - xem 07_infra.md

Chỉ đọc? Mọi thứ đều miễn phí!

⚙️ Cách thức hoạt động

Là một khóa học mã nguồn mở, mọi thứ đều có tiến độ riêng, dựa trên repo này, cùng với các bài học đính kèm hướng dẫn bạn thực hiện mã. Không có tường phí. Không có nền tảng.

Đọc các bài học trên Tạp chí Decoding AI, hãy xem các video từ Kênh Decoding AI, hãy chạy mã trên máy của chính bạn, phá mã, sửa mã và rút kinh nghiệm từ quy trình.

🏗️ Cấu trúc dự án

Một gói Python; mỗi mô-đun ánh xạ tới một phần của kiến trúc:

.
├── docs/
│   ├── adr/                  # Architecture Decision Records — the "why" of every choice
│   ├── glossary.md           # one canonical name per concept
│   └── evals.md              # the four-track eval suite, mapped
├── evals/                    # benchmark + regression probes + demo skills
├── tests/{unit,integration}/ # mirrors src/ 1:1; milestone capstones prove each milestone
└── src/decode/
    ├── cli.py                # Click entrypoint → launches the TUI
    ├── tui/                  # input: prompt_toolkit · output: Rich
    ├── harness/              # message queue + priority gate around the loop
    ├── agent/                # the Pydantic-AI ReAct loop (LLM ⇄ tools)
    ├── agents/               # agents catalog: Build / Plan / Code-Reviewer + Explore subagent
    ├── tools/                # file I/O, bash, web, todo, skills dispatch, LSP, ask_user
    ├── permissions/          # allow/ask/deny · modes · settings.json
    ├── sandbox/              # bash + file tools seam: none (host) / docker / modal
    ├── services/lsp/         # hand-rolled stdio LSP client (ty)
    ├── runtime/              # Kitaru durable flow: decode run / replay / HITL
    ├── context/              # compaction + conversation log (JSONL)
    ├── memory/               # AGENTS.md / MEMORY.md loading + write-back
    ├── observability/        # Opik tracing
    └── config/, entities/    # settings singleton · shared models

🚀 Chạy mã

Mọi thứ đều sống dưới running_the_code/. Một hướng dẫn cốt lõi, cộng với một hướng dẫn tập trung cho mỗi nhiệm vụ phụ:

Hướng dẫnCó gì bên trong
00_troubleshooting.mdMọi lỗi đã biết và cách khắc phục
01_install_and_usage.mdBắt đầu ở đây
02_modal_endpoints.mdPhục vụ các mô hình mở trên Modal
03_runtime.mdThiết lập runtime cho chế độ headless
04_sandboxing.mdThiết lập Docker (cục bộ) / Modal (từ xa) cho hộp cát
05_evals.mdĐiểm chuẩn, thăm dò hồi quy và đánh giá trực tuyến
06_credentials.mdMôi trường & bí mật, đi từ đầu đến cuối
07_infra.mdTriển khai runtime từ xa tới GCP và Modal

🤝 Nhà tài trợ

Sponsored by Modal, Opik and Kitaru

Đặc biệt cảm ơn đến Modal, Opik (bởi Comet), và Kitaru (bởi ZenML) vì đã tài trợ cho khóa học nguồn mở này và giữ nó miễn phí!

Opik và Kitaru là nguồn mở. Hãy cân nhắc việc gắn dấu sao cho repository của họ: Opik trên GitHub · Kitaru trên GitHub.

🗣️ Câu hỏi và giải quyết sự cố

Mở sự cố GitHub cho các câu hỏi về khóa học, sự cố khi thiết lập hoặc làm rõ khái niệm. Các vấn đề đã biết được ghi lại trong running_the_code/ hướng dẫn.

❓ Câu hỏi thường gặp

Tôi có cần khóa API trả phí không? Không. Nhà cung cấp Gemini mặc định có cấp miễn phí, các tuyến OpenRouter trên khắp :free mô hình và Modal cung cấp khoản tín dụng $30 — xem Cấu trúc chi phí.

Tại sao là Python mà không phải TypeScript hay Go? Khả năng tiếp cận: khán giả của chúng tôi biết Python. Khóa học tập trung vào các quyết định thiết kế, chuyển sang bất kỳ ngôn ngữ nào.

Tại sao phải xây dựng từ đầu thay vì mở rộng Pi, DeepAgents hoặc khai thác hiện có? Bởi vì việc thêm logic tùy chỉnh vào harness hiện có là một phần dễ dàng. Biết những gì cần thêm đòi hỏi phải hiểu nội bộ. Đó là những nguyên tắc cơ bản và là điều vẫn khiến các kỹ sư AI trở nên có giá trị. Xây dựng coding agent một lần và bạn được trang bị để xây dựng agent tùy chỉnh cho mọi trường hợp sử dụng.

🥂 Đóng góp

Tìm thấy một lỗi và biết cách khắc phục? Fork, sửa chữa, chạy make ci (không cần khóa API) và mở yêu cầu kéo. Độc giả tương lai sẽ cảm ơn bạn 🤗

👨‍🏫 Tác giả khóa học

Paul Iusztin
Paul Iusztin
Kỹ sư AI cao cấp, Nhà giáo dục & Người sáng lập Decoding AI. Tác giả cuốn sách bán chạy nhất Sổ tay kỹ sư LLM.

📬 Tìm hiểu cách xây dựng coding agent từ đầu

Tham gia cùng hơn 40k kỹ sư đã đăng ký Tạp chí Decoding AI để tìm hiểu cách xây dựng các coding agent từ đầu.

Decoding AI Magazine

⭐ Còn Một Điều nữa

Nếu bạn thấy khóa học này hữu ích, hãy cân nhắc việc gắn dấu sao cho repository để những người khác cũng có thể tìm thấy nó.

Giấy phép

Được phát hành dưới Apache-2.0 — sao chép, phân nhánh và xây dựng trên đó; giữ GIẤY PHÉP và ghi có vào repo này.

Mục lục nguồn