Homus
‹ All talks

Agents in Production: How OpenGov Built and Scaled OG Assist

AI Engineer World's Fair 2026: Online Track · Video gốc

OpenGov chạy OG Assist trong production: agent loop Effect-native thay LangGraph, A2A, evals, human approval, sandbox, rolling summary và tracing.

AgentsWorkflowContext Engineering

1. Mở đầu và agenda

Gabe De Mesa là engineer tại OpenGov. Chủ đề hôm nay là agent chạy trong production, cụ thể là cách OpenGov build và scale OG Assist. Anh hứa trước rằng phần trình bày này sẽ "jam-packed", dồn rất nhiều thứ hay: AI agent, harness của nhóm, evals, observability, trace, tools và skills. Anh sẽ kể OpenGov làm gì và vận hành ở quy mô nào trong production, để người xem thấy một use case và một workload thật với AI agent. Rồi anh vào việc luôn.

Slide tiêu đề Agents in Production: How OpenGov Built and Scaled OG Assist, có logo OG Assist
Slide tiêu đề, dòng nhỏ phía trên ghi "AI Engineer Conference 2026", ở giữa là nút OG Assist với biểu tượng ngôi sao lấp lánh.

Agenda đi rất nhanh ở mức high level. Đầu tiên là giới thiệu OG Assist và OpenGov là gì. Tiếp theo là origin story, mọi chuyện bắt đầu ra sao. Rồi tới "big bet" của OG Assist vào Effect, và đi sâu một chút vào core agent loop. Sau đó là A2A protocol, evals và sandboxing. Rồi cách nhóm quản lý long context. Rồi monitoring, observability, cách thu feedback và cách lặp lại trên feedback đó. Cuối cùng là tools và skills, và cách OpenGov dùng AI không chỉ ở bên ngoài, phục vụ khách hàng, mà cả bên trong để cải thiện development workflow của chính mình.

Slide Agenda với tám mục
Agenda tám mục: (1) Meet OG Assist, (2) The Origin Story, (3) Betting on Effect, (4) The Core Agent Loop, (5) A2A, Evals & Sandboxing, (6) Long Context Handling, (7) Monitoring & Observability, (8) Tools, Skills & Dev Workflows.

2. Gabe và OpenGov

Đôi dòng về bản thân trước khi đi tiếp. Gabe là software engineer tại OpenGov, làm trong AI agents team, và là một trong những người đã giúp build OG Assist cùng nhiều hệ thống sẽ xuất hiện trong phần còn lại của talk.

Slide Your host: Gabe De Mesa, Software Engineer III @ OpenGov
Slide giới thiệu người trình bày: "Your host", Gabe De Mesa, Software Engineer III @ OpenGov.

Còn OpenGov là một công ty phần mềm với sứ mệnh giúp chính quyền vận hành hiệu quả hơn và có trách nhiệm giải trình hơn ("more effective and accountable government"). OpenGov bán phần mềm ERP: budgeting (lập ngân sách), procurement (mua sắm công), asset management (quản lý tài sản) và permitting (cấp phép). Công ty được thành lập khoảng mười bốn năm trước.

Slide About OpenGov với ảnh màn hình sản phẩm Utility Billing của Cloud City, USA
"Software for more effective, accountable government." Dòng nhỏ bên dưới: thành lập hơn 14 năm trước, OpenGov build phần mềm ERP, budgeting, asset management và permitting cho chính quyền tiểu bang và địa phương, và OG Assist giờ kết nối xuyên suốt tất cả. Bên trái là màn hình Utility Billing của một thành phố demo tên Cloud City, USA.

3. OG Assist: một nút trên mọi sản phẩm

Điều thú vị là OpenGov có OG Assist, một nút nhỏ nằm trên thanh navigation ở đầu mọi sản phẩm của công ty. Và hay hơn nữa: tất cả các product suite và product team đều đã build tools và skills để "cấp năng lượng" cho cái nút này. Mỗi đội đóng góp năng lực của sản phẩm mình vào cùng một trợ lý.

Gabe mở một ví dụ. Anh bấm nút để mở OG Assist và hỏi về rate code, một khái niệm rất riêng của utility billing (tính hoá đơn tiện ích như nước, điện), cũng chính là sản phẩm anh đang đứng trong đó. Trong giao diện chat, anh nói chuyện với một agent, và agent có thể gọi tool để tra thông tin trên dữ liệu bên trong suite đó. Theo anh, việc tự tạo những trải nghiệm first party như vậy thông qua năng lực mà nhóm gọi là OG Assist là một điều rất đáng giá.

OG Assist mở bên phải màn hình Utility Billing, trả lời bằng bảng rate code và Quick takeaways
Panel OG Assist mở bên phải trang Utility Billing. Agent trả về một bảng rate code (STDW, STDS, STDR là loại Service, Misc là One-Time Charge, kèm cột Dependent Usage Group), rồi một mục "Quick takeaways": có 3 rate code loại service và 1 loại one-time charge, STDW và STDS gắn với một dependent usage group, STDR đứng riêng, còn Misc có vẻ dành cho các khoản phí lẻ một lần. Cuối câu trả lời, agent đề nghị lấy tiếp rate schedule nếu người dùng muốn xem các rate code được định giá ra sao.

4. Origin story: một lời mời, một câu đồng ý

Câu chuyện bắt đầu cách đây không lâu. Nhóm thấy AI đang thật sự cất cánh, và một principal engineer lập ra một đội mới, AI agents team, rồi mời Gabe tham gia. Anh đồng ý ngay lập tức. Từ đó OG Assist bắt đầu lớn dần, và nhóm bắt đầu tích hợp nó vào tất cả sản phẩm, không chỉ qua năng lực back end mà cả năng lực front end.

Một trong những năng lực nhóm trao cho agent là nhìn thấy những gì đang hiện trên màn hình và hành động trên trang đó. Trong ví dụ, Gabe hỏi agent: "Này, trên màn hình đang có gì? Bạn có thể highlight vài bước tiếp theo tôi có thể làm không?". Agent bắt đầu suy nghĩ: "Được, mình đang có những tool nào để dùng?". Rồi nó tự highlight một thứ trên trang mà người dùng có thể bấm vào, và giải thích thêm về thứ đó. Đó là thêm một năng lực của OG Assist, và cũng là toàn bộ câu chuyện ngắn về cách mọi thứ ra đời.

Slide Origin Story: One bet on agents, one immediate yes, với OG Assist hiện các gợi ý mở đầu
"One bet on agents, one immediate yes." Dòng nhỏ: một principal engineer lập đội chuyên về AI agent và mời Gabe vào; OG Assist lớn lên từ đó, và nhóm bắt đầu tích hợp sâu với các sản phẩm qua cả tool front end lẫn back end. Panel OG Assist chào "Welcome Gabe!" với bốn gợi ý: tóm tắt chuyện gì đã xảy ra trong workspace, hôm nay nên xử lý việc gì trước, soạn một phản hồi gửi team, và lập nhanh một action plan từ các task hiện tại.

5. Big bet on Effect

Gabe nói anh rất muốn đưa slide này vào, vì trong agents team, nhóm đã đặt cược lớn vào Effect. Và phải nói là cú cược đó đã "paid off in dividends", trả lãi đậm. Nhóm viết code bằng Effect.

Effect là một thư viện cho TypeScript, open source, giúp bạn viết code TypeScript tốt hơn. Nó có rất nhiều thứ được tích hợp sẵn: một schema tương tự Zod nếu bạn từng dùng, các công cụ cho error handling, logging, trace, và còn nhiều nữa. Theo Gabe, nó giúp viết code tốt hơn, cấu trúc code tốt hơn, hỗ trợ kiến trúc, dựng service mới, và với agents team thì giúp rất nhiều trong việc thiết kế và build chính core agent loop.

Slide logo OpenGov bắt tay logo Effect
OpenGov và Effect, nối bằng biểu tượng cái bắt tay.

Suốt phần còn lại của talk, Effect sẽ xuất hiện rải rác để cho thấy nó đã đem lại lợi ích cho nhóm ra sao. Nhóm rất thích Effect ở OpenGov, và khuyến khích mọi người thử.

6. Agent loop viết lại theo kiểu Effect-native

Ban đầu nhóm chạy trên LangGraph, và mọi thứ ổn cho tới khi đội bắt đầu scale và các use case bắt đầu tiến hoá. Vì vậy nhóm quyết định chuyển sang một agent loop riêng, viết theo kiểu Effect-native, để có toàn quyền với agent loop: khi có use case phức tạp hay tính năng cần build, nhóm có thể đi thẳng vào loop mà sửa.

Không chỉ vậy, giờ mọi thứ đều nằm trên Effect. Tất cả những thứ hay của Effect được lan ra toàn bộ agent loop: tracing, structured concurrency, logging. Mọi thứ được kiểm soát chi tiết hơn, và việc có agent loop riêng từ con số không cho phép nhóm khai thác hết tiềm năng.

Slide The Harness: Our agent loop, rebuilt Effect-native, với code ví dụ dùng Chat và LanguageModel
"The Harness. Our agent loop, rebuilt Effect-native." Dòng nhỏ: core loop khởi đầu trên LangGraph, giờ chạy hoàn toàn bằng control flow có kiểu kiểu Effect-native, structured concurrency và resource safety từ đầu tới cuối, đồng thời cho phép kiểm soát agent loop chi tiết hơn. Code ví dụ bên trái lấy từ tài liệu API của module Chat trong Effect.

Đoạn code bên trái slide là phần cơ bản nhất của Effect loop nhóm đang dùng. Nhóm dùng package Effect AI (@effect/ai), trong đó có hai thứ: Chat và LanguageModel. Với Chat, bạn khởi tạo một chat, rồi stream text bằng hàm streamText, truyền vào một prompt. Điểm hay là bên dưới có một language model, và vì nhóm đang làm dependency injection, có thể truyền vào một language model khác nếu muốn hot swap sang model khác. Code trên slide:

import { Chat, LanguageModel } from "@effect/ai"
import { Effect, Stream } from "effect"

// Streaming chat with tool support
const streamingChat = Effect.gen(function* () {
  const chat = yield* Chat.empty

  yield* chat
    .streamText({
      prompt: "Generate a creative story"
    })
    .pipe(Stream.runForEach((part) => Effect.sync(() => console.log(part))))
})

Tóm lại, có agent loop riêng cho nhóm nắm mọi đòn bẩy. Nó mở khoá hết năng lực của model, và cho cả đội toàn quyền với vòng lặp này.

7. Agent2Agent protocol làm hợp đồng giữa front end và back end

Điều tiếp theo Gabe muốn nhắc là Agent2Agent protocol (A2A). Agents team đã thành công nhiều với protocol này. Đây là protocol do Google tạo ra, một open protocol để các agent giao tiếp với nhau. Nhưng nhóm thấy nó rất hữu ích cho một việc khác: định nghĩa các agent route ở back end, và cho model cùng schema của nhóm đi theo protocol này.

Ví dụ, A2A có một thứ gọi là agent card, như trên slide, gồm tên của agent, mô tả, và nhiều trường khác. Có một protocol chặt chẽ, một spec chặt chẽ như vậy giúp dẫn dắt việc phát triển và giúp mọi người thống nhất. Tất cả những gì phải làm là bám theo spec, và ai cũng biết đó là hợp đồng mà front end lẫn back end đều sẽ tiêu thụ và tạo ra.

Slide Built Off The A2A Protocol với interface AgentCard
"Built Off The A2A Protocol." Bên trái là interface AgentCard trong tài liệu A2A: name, description, url, provider, version, documentationUrl, capabilities (streaming, pushNotifications, stateTransitionHistory), authentication, defaultInputModes, defaultOutputModes và danh sách skills (id, name, description, tags, examples, inputModes, outputModes). Dòng nhỏ bên phải: A2A cho phép OG Assist dựng trên một spec đã được hỗ trợ, thay vì xây từ con số không.

Gabe đánh giá cách này cũng rất có ích cho nhóm. Hay hơn nữa, A2A có nhiều extension: bạn có thể mở rộng protocol, thêm metadata chẳng hạn. Còn có cả A2UI. Nhiều thứ thú vị quanh A2A, nhưng đây là phần đã chạy tốt với nhóm, và anh chỉ muốn chia sẻ lại.

8. Feedback và evals: ship mới là bắt đầu

Câu trích dẫn của phần này là: "Shipping is the start, not the finish", ship là điểm khởi đầu chứ không phải vạch đích. Agents team có nhiều cách chạy eval và thu feedback. Dĩ nhiên vẫn có người gọi điện, gửi email, hoặc đơn giản là nói với nhóm. Nhưng kênh chính là cơ chế thumbs up / thumbs down: người dùng có thể báo "câu này chạy rất tốt, đây là một câu trả lời hay", hoặc "câu này không ổn". Nhóm lấy tín hiệu đó, lặp lại trên nó, và mang về để cải thiện câu trả lời trong tương lai.

Slide Feedback and Evals: Shipping is the start, not the finish, với form feedback trong OG Assist
"Shipping is the start, not the finish." Dòng nhỏ: feedback có cấu trúc và eval tự động cho nhóm biết một thay đổi có thật sự cải thiện chất lượng hay không, trước và sau khi tới tay khách hàng. Trong panel OG Assist, sau khi bấm thumbs up, hiện ra ô "Thanks for the positive feedback!" kèm vài lựa chọn và ô nhập "You are great!" trước nút Submit feedback.

Nhóm còn có automated evals. Trong CI có các eval chạy trên completion thật, nên có thể test một prompt theo kiểu: "Nó có gọi đúng mấy tool đó không? Nó có làm đúng việc phải làm không?". Điều đó giúp tăng accuracy. Eval tự động kết hợp với feedback thu được giúp nhóm cải thiện tools, skills và harness, và theo Gabe, đó chính là lý do nhóm lặp nhanh như vậy.

9. Humans in the loop

Đây là một tính năng Gabe rất thích: nhóm ngắt agent loop một cách deterministic khi một tool call cần được phê duyệt. Nếu agent định gọi một tool cần sự đồng ý của con người, giao diện sẽ hiện ra, và người dùng bấm accept hoặc reject, tức là chủ động từ chối hoặc chủ động chấp nhận hành động agent đang định làm.

Slide Humans Remain In Control với hộp Tool approval required và hai nút Reject, Accept
"Humans Remain In Control." Người dùng hỏi "Please get my current entity and my current context", và OG Assist hiện hộp "Tool approval required" cho tool getEntityDetails: "OG Assist is trying to make a tool call and needs your approval", với hai nút Reject và Accept. Dòng nhỏ: tool call có thể bị chặn sau một UI phê duyệt, đòi người dùng can thiệp thủ công và cho phép rõ ràng trước khi agent hành động.

Cơ chế này giúp xây dựng niềm tin và đảm bảo an toàn, nhất là khi agent định làm một mutating operation (thao tác thay đổi dữ liệu). Và nó luôn luôn, luôn luôn đảm bảo rằng con người vẫn ngồi ở ghế lái.

10. Sandboxing: chỗ để agent hành động an toàn

Một việc khác nhóm làm, cùng tinh thần với slide an toàn vừa rồi: mỗi khi agent muốn chạy code hay tạo file, nó làm điều đó trong một sandbox. Nhóm cho agent khả năng tự dựng sandbox theo nhu cầu (on demand), và dùng sandbox để viết code, chạy code, tạo file. Đó là một không gian an toàn, ephemeral và isolated, để agent có thể hành động trong đó mà nhóm không phải lo rủi ro nào cho các hệ thống production. Và hay ở chỗ sandbox được tear down, dỡ bỏ, khi xong việc.

OG Assist báo Done sau khi tạo PDF lời chào cho AI Engineer Conference 2026, có nút Download
"Room to act, safely." Yêu cầu trong khung chat: tạo một PDF có hình đẹp để chào mọi người ở AI Engineer Conference 2026 và cho phép tải về để chia sẻ. Agent báo "Done": đã tạo file AI Engineer Conference 2026 Greeting PDF, có artwork kiểu generative lấy cảm hứng từ AI và một lời chào ấm áp, kèm nút Download. Dòng nhỏ: code chạy trong sandbox cô lập, để agent có thể hành động thật mà không đặt hệ thống production hay dữ liệu khách hàng vào rủi ro.

Trong ví dụ, Gabe nhờ agent: "Tạo một file PDF cho mọi người ở AI Engineer Conference 2026, và cho tôi tải về để chia sẻ với họ". Agent đã tạo một PDF rất đẹp ngay bên trong sandbox đó. Anh chỉ muốn điểm qua tính năng này và cho một cái nhìn ngắn gọn về sandboxing.

Trang PDF AI Engineer Conference 2026 với nền xanh đêm và đường chân trời thành phố
File PDF agent tạo ra trong sandbox: "A warm hello to the builders, researchers & makers at AI Engineer Conference 2026", kèm lời chúc ý tưởng compile sạch, model generate đẹp, và các cuộc trò chuyện mở ra thế hệ AI hữu ích, đáng tin tiếp theo.

11. Long context: rolling summarization và memory

Bên trong OG Assist, nhóm đã vấp nhiều trở ngại, nhất là với các model đời cũ (legacy model): chạm token limit, hoặc đơn giản là bị nhồi quá nhiều context, đặc biệt khi cuộc hội thoại dài ra. Nhóm nhận thấy dùng một dạng rolling summarization hiệu quả hơn là lúc nào cũng nhét các message mới nhất, gần nhất vào. Thay vào đó, đưa ra một bản tóm tắt chạy liên tục sau mỗi N message, và có thể chỉ giữ nguyên văn khoảng 5 hay 10 message gần nhất (Gabe nói là "N trừ 5", "N trừ 10").

Slide Long Context: Holding more than the window allows, với một bài essay dài trong OG Assist
"Holding more than the window allows." Panel OG Assist hiện phần cuối một bài essay dài về công nghệ và xã hội, với mục Conclusion. Dòng nhỏ: summarization nén lịch sử lại khi hội thoại dài ra, memory giữ lại những sự thật quan trọng, nhờ đó agent mạch lạc suốt các phiên dài; nó cũng giúp memory và việc recall các message, câu trả lời trước đó.

Có thể lúc này bạn chỉ đang nói về một chủ đề cụ thể, nhưng lại muốn nhắc tới context từ trước đó, ví dụ cách đây 100 message. Đó là chỗ thành phần memory vào cuộc: khi có một rolling summary cho một cuộc hội thoại rất dài, bạn có thể recall trên bản tóm tắt đó. Nếu hỏi agent "Này, nhớ chuyện mình nói lúc trước không?", agent trong thread đó sẽ đáp kiểu "Có, tôi biết bạn đang nói tới gì, tôi có một mẩu tóm tắt ngắn về nó", rồi tiếp tục làm thêm với rolling summary đó trong đầu. Đó là cách nhóm xử lý long context và memory, và nó đã chạy khá tốt.

Message cũ (ví dụ 100 message trước) được nén dần sau mỗi N message 5 hoặc 10 message gần nhất giữ nguyên văn Rolling summary Context window của agent recall khi người dùng hỏi "nhớ chuyện lúc trước?"
Cách OG Assist giữ hội thoại dài: phần cũ được nén thành rolling summary sau mỗi N message, vài message gần nhất giữ nguyên văn, và agent recall trên bản tóm tắt khi người dùng nhắc lại chuyện cũ.

12. UI on the fly

Trong ví dụ này, Gabe nói với agent: "Viết cho tôi một bài essay dài, nhưng hãy cho vài ví dụ về những chủ đề bài essay có thể viết". Điểm hay là agent đã được đăng ký sẵn một primitive là cái form này, và nó dựng form ngay lúc runtime, đưa ra các lựa chọn để anh chọn.

Slide UI, on the Fly: OG Assist hiện form Choose an essay topic với bốn lựa chọn
"UI, on the Fly." Form "Choose an essay topic" do agent dựng lúc runtime, với bốn lựa chọn: AI in Local Government, Climate Resilience in Cities, The Future of Public Education, Social Media and Democracy, thêm ô tự gõ chủ đề và lựa chọn "None of these". Dòng nhỏ: agent có thể tạo UI theo nhu cầu khi thấy cần hoặc có lợi cho trải nghiệm cuộc hội thoại.

Trải nghiệm vì thế rất cá nhân, rất "trong khoảnh khắc", khi agent có thể đưa ra các lựa chọn ngay tại runtime. Đây chỉ là một phần nhỏ Gabe muốn đưa vào, về generative UI và cách nhóm render UI on the fly.

13. Tracing và observability: không thấy thì không scale được

"You can't scale what you can't see", không thấy được thì không scale được. Phần này nói về tracing và observability. Điều hay ở Effect là bạn có tracing out of the box. Khi dùng các hàm Effect, chúng tự động được gắn span, và span được thu lại để đổ vào trace, nhờ đó bạn có thể drill down vào từng lời gọi hàm.

Slide Observability: You can't scale what you can't see, với giao diện trace dạng waterfall
"You can't scale what you can't see." Ví dụ trace dạng waterfall lấy từ tài liệu tracing của Effect, mỗi dòng là một span lồng nhau với thời lượng của nó. Dòng nhỏ: mọi lần agent chạy đều được trace từ đầu tới cuối, cho nhóm khả năng nhìn thấy để debug, đo và tinh chỉnh hành vi ở quy mô production.

Ví dụ trên slide là một trace từ chính đội Effect, có link nguồn tới trang tracing của Effect. Bạn thấy được: khi gọi API này, request đi tới endpoint này, tới handler này, và cứ thế. Hay hơn nữa là có thể profile mọi trace: cả chuỗi mất tổng cộng bấy nhiêu giây, và bottleneck nằm ở đâu. Nếu có lỗi, bạn có thể đối chiếu chéo nó qua nhiều service.

Điều này cực kỳ quan trọng, nhất là trong hệ thống agentic, nơi nhóm phải tích hợp với các đội khác, các API khác và các năng lực platform khác. Với Effect, có sẵn toàn bộ tracing này, và nó biến việc build trải nghiệm agentic, debug và bảo trì nó thành "a breeze", nhẹ nhàng như gió.

14. Tools and skills: một repo, mọi tool

Ngoài cú cược vào Effect, nhóm còn đặt cược lớn vào tools và skills. Nhóm tin rằng tools và skills thật sự là tất cả những gì bạn cần. Bên trái slide là một tool tên GetDadJoke: đó là cách làm kiểu Effect, và cũng là những viên gạch nền cho cách OpenGov làm mọi thứ. Ví dụ này lấy từ website của Effect, cho thấy cách tạo một tool, rồi đưa nó vào một toolkit (một tập hợp tool), rồi đăng ký toolkit đó với language model.

Slide Tools and Skills: One repo, every tool, với code GetDadJoke dùng Tool, Toolkit và LanguageModel
"One repo, every tool." Dòng nhỏ: một enterprise contribution model giữ mọi tool và skill trong một repo duy nhất, để bất kỳ engineer nào cũng có thể mở rộng những gì OG Assist làm được. Code bên trái là ví dụ tool-use trong tài liệu Effect, dòng toolkit: DadJokeTools được tô sáng.
import { LanguageModel, Tool, Toolkit } from "@effect/ai"
import { Effect, Schema } from "effect"

const GetDadJoke = Tool.make("GetDadJoke", {
  description: "Get a hilarious dad joke from the ICanHazDadJoke API",
  success: Schema.String,
  failure: Schema.Never,
  parameters: {
    searchTerm: Schema.String.annotations({
      description: "The search term to use to find dad jokes"
    })
  }
})

const DadJokeTools = Toolkit.make(GetDadJoke)

const generateDadJoke = LanguageModel.generateText({
  prompt: "Generate a dad joke about pirates",
  toolkit: DadJokeTools
})

Chẳng hạn có một prompt "Hãy nghĩ vài câu dad joke về cướp biển". Thì đoán xem? Agent có sẵn một tool giúp lấy dad joke (từ icanhazdadjoke). Đó chính là những viên gạch nền nhóm dùng để làm tools, và dần dần là skills, và nó đã đem lại kết quả tuyệt vời cho cả tổ chức. Gabe thật lòng khuyên mọi người thử package Effect AI và tự build tools và skills của riêng mình.

15. Developer velocity và lời kết

Nhóm không chỉ build agent cho khách hàng mà còn dùng agent ngay bên trong OpenGov. Nhóm dùng rất nhiều Claude và Cursor, và chúng thật sự là "game changer" với đội. Điều buồn cười là nhóm đang build tools và skills cho các agent phục vụ khách hàng, chuyện đó rất tốt, nhưng đồng thời cũng build tools và skills cho nội bộ để tăng tốc development workflow. Những thứ như Claude, Cursor, Claude Agents giúp tăng tốc cách nhóm đọc, viết, review code và ship. Gabe gọi nó là một chất xúc tác thật sự, và muốn nhắc tới trước khi kết thúc.

Slide Developer Velocity: Building agents with agents, với cửa sổ terminal chạy Claude Code
"Building agents with agents." Bên trái là cửa sổ terminal chạy Claude Code, người dùng gõ "claude please say hi to the ai engineer conference 2026!" và nhận lời chào lại. Trên slide ghi: Claude Code, Cursor và cloud agents tăng tốc cách đội viết, review và ship khi build OG Assist, bằng chính loại tool mà nhóm ship cho khách hàng.

Thế là hết. Gabe cảm ơn mọi người đã xem tới cuối, và chốt bằng một lời kêu gọi: hãy cùng build những agent thật sự ship được lên production.

Slide Thank You: Let's build agents that ship to production
Slide kết: "Let's build agents that ship to production."

Nguồn và liên kết