Tech Signal2026-07-28

에이전트 배관 코드가 chat() 한 줄로 접혔다: Genkit이 TypeScript·Go에 정식 프리뷰를 냈다

Genkit이 메시지 이력·툴 루프·스트리밍·세션 상태를 chat() 하나로 묶은 Agents API를 프리뷰로 공개했다. 클라이언트가 끊겨도 도는 detached turns와 재개 시 위조 방지 검증이 붙는 사람 개입 지점까지 표준 부품이 됐다.

에이전트 앱을 처음부터 짜면 정작 모델 호출은 몇 줄이고 나머지가 다 배관이다. 메시지 이력을 어디에 저장할지, 툴 호출 루프를 어떻게 돌릴지, 스트리밍을 무슨 프로토콜로 흘릴지, 세션을 어떻게 붙잡아둘지. Genkit이 이 배관을 chat() 인터페이스 하나로 접은 Agents APITypeScriptGo 대상 프리뷰로 공개했다.

핵심은 두 가지다. 하나는 detached turns다. 클라이언트 연결이 끊겨도 에이전트가 하던 일을 계속 돈다. 다른 하나는 interruptible tools다. 사람이 중간에 승인·개입할 수 있는 지점을 만들고, 재개할 때 위조 방지 검증을 붙인다. 개발 UI에는 Agent Runner가 들어가 클라이언트를 따로 짜지 않고도 대화를 걸고 툴 인터럽트를 눌러보며 상태 스냅샷을 들여다볼 수 있다.

한 줄 정리

요소 내용
대상 런타임 TypeScript, Go (프리뷰)
통합 인터페이스 chat() 하나에 메시지 이력·툴 루프·스트리밍·세션 상태
detached turns 클라이언트가 끊겨도 에이전트가 계속 실행
interruptible tools 재개 시 위조 방지 검증이 붙는 사람 개입 지점
개발 도구 Agent Runner로 클라이언트 없이 대화·툴 인터럽트·스냅샷 검사

프리뷰라 마이너 버전에서 호환성이 깨질 수 있다는 단서는 붙어 있다. 프레임워크 본체는 2024년 말 1.0을 찍었고 이후 Python·Go·Dart SDK로 넓혀왔다.

배관이 사라진 자리

에이전트 서비스를 돌려본 사람은 안다. 진짜 시간을 잡아먹는 건 판단 로직이 아니라 그 아래 인프라다. 대화 이력을 붙잡는 저장소, 툴을 부르고 결과를 다시 모델에 먹이는 루프, 토큰을 실시간으로 흘리는 스트리밍, 재시도와 세션 복구. 이걸 각자 다시 짜니 앱마다 미묘하게 다르고 버그도 제각각이었다.

Genkit은 이 공통 부품을 라이브러리 안으로 넣었다. 개발자가 신경 쓸 표면은 chat() 호출과 붙이는 툴 정의로 줄어든다. 배관이 표준화되면 에이전트를 새로 짜는 비용이 아니라 갈아치우는 비용이 낮아진다.

끊겨도 도는 에이전트

detached turns는 실무에서 자주 막히던 지점을 정면으로 푼다. 브라우저 탭을 닫거나 네트워크가 끊기면 진행하던 작업이 날아가거나, 그걸 막으려고 별도 작업 큐를 직접 붙여야 했다. 이제 에이전트가 백그라운드에서 계속 돈다.

interruptible tools는 반대 방향의 문제를 잡는다. 완전 자동으로 돌리다가도 결제·발행·삭제 같은 되돌리기 힘든 단계 앞에서 사람의 확인을 받아야 할 때가 있다. 재개 시점에 위조 방지 검증을 걸어 그 승인 지점을 안전하게 만든다. 자동화의 속도와 사람의 통제를 같은 파이프라인 안에 둔 셈이다.

직접 짜기와 프레임워크 사이

에이전트 프레임워크는 이미 여럿 있다. 파이썬 쪽엔 그래프로 상태를 그리는 도구들이 자리를 잡았고, 자바스크립트 진영도 선택지가 늘었다. Genkit의 결이 다른 지점은 세션 지속과 배포까지 한 인터페이스 뒤로 감췄다는 데 있다. chat() 한 흐름 안에 대화 상태가 남고, 그 상태를 HTTP로 내보내는 배포 경로가 같이 붙는다.

세 갈래로 갈린다. 처음부터 다 직접 짜면 통제권은 최대지만 배관에 시간을 다 쓴다. 무거운 오케스트레이션 프레임워크를 얹으면 강력하지만 학습 곡선과 추상화 비용이 따라온다. Genkit의 Agents API는 그 중간을 노린다. 흔한 챗형 에이전트가 매번 다시 만들던 부품만 표준화하고, 나머지는 개발자에게 남긴다. 프리뷰 단계라 마이너 버전에서 API가 흔들릴 수 있다는 점은 감안할 몫이다.

anyAX 관점

혼자 SaaS를 굴리는 개발자에게 이 발표의 의미는 "며칠이 사라졌다"는 것이다. 예전엔 에이전트로 가치를 내기도 전에 세션 저장소·재시도·스트리밍부터 짜느라 첫 주를 통째로 썼다. 그 배관이 import 한 줄이 되면, 남는 차별화는 어떤 도메인 로직을 넣고 어떤 툴을 물리느냐로 좁혀진다. 모두가 같은 chat()을 쓰는 순간 스캐폴딩은 자랑거리가 아니라 기본선이다.

detached turns는 특히 1인 규모에 레버리지가 크다. 야간에 도는 리서치·정리 에이전트를 붙이려고 작업 큐를 세우고 워커를 관리하던 일이, 이제 프레임워크가 대신 붙잡아준다. 인프라 엔지니어 한 명 몫의 배관을 라이브러리가 메우면 그만큼 판단과 제품에 시간을 옮길 수 있다. 다만 프리뷰라 버전 사이 호환성이 깨질 수 있으니, 되돌리기 힘든 자동화의 승인 지점은 interruptible tools로 명시해두는 편이 안전하다.

참고