# Project Think: Cloudflare에서 차세대 AI 에이전트 구축하기

> Clean Markdown view of GeekNews topic #28579. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=28579](https://news.hada.io/topic?id=28579)
- GeekNews Markdown: [https://news.hada.io/topic/28579.md](https://news.hada.io/topic/28579.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-04-16T10:52:02+09:00
- Updated: 2026-04-16T10:52:02+09:00
- Original source: [blog.cloudflare.com](https://blog.cloudflare.com/project-think/)
- Points: 1
- Comments: 0

## Topic Body

- Cloudflare가 **Agents SDK**의 차세대 버전인 Project Think를 발표하며, 장기 실행 에이전트를 위한 내구적 실행·서브 에이전트·샌드박스 코드 실행·영속 세션 등 새로운 핵심 프리미티브를 제공  
- 기존 코딩 에이전트들은 로컬 노트북에서만 실행되고, 유휴 상태에서도 비용이 발생하며, **수동 설정과 관리가 필요**한 한계가 있었음  
- 에이전트는 기존 애플리케이션과 달리 **1:1 모델**(한 사용자·한 작업당 하나의 인스턴스)로 동작하므로, 수천만 동시 세션을 지원하려면 컨테이너 기반의 비용 구조로는 지속 불가능  
- **Durable Objects** 기반의 액터 모델을 활용해 에이전트가 휴면 시 컴퓨팅 비용 제로, 메시지 수신 시 자동 깨어남 방식으로 **대규모 확장 경제성**을 확보  
- AI 에이전트의 세 번째 물결로서 **인프라로서의 에이전트**(내구성·분산·서버리스·구조적 보안)를 지향하며, 모든 개발자가 수십억 사용자 대상 에이전트를 구축·배포할 수 있는 플랫폼 목표  
  
---  
  
### Project Think 개요  
- Cloudflare **Agents SDK**의 차세대 버전으로, 장기 실행 에이전트 구축을 위한 새로운 프리미티브 세트와 이를 통합하는 기본 클래스 제공  
- 주요 프리미티브: **내구적 실행(fibers)**, 서브 에이전트, 영속 세션, 샌드박스 코드 실행, 실행 래더, 셀프 저작 확장  
- 프리미티브를 개별적으로 사용하거나, **Think 기본 클래스**를 통해 빠르게 시작 가능  
  
### 코딩 에이전트의 현재 한계  
- Pi, OpenClaw, Claude Code, Codex 같은 도구들이 LLM에 파일 읽기·코드 작성·실행·학습 능력을 부여하면 **범용 어시스턴트**처럼 동작함을 증명  
- 이러한 코딩 에이전트는 코드뿐 아니라 캘린더 관리, 데이터셋 분석, 구매 협상, 세금 신고, 비즈니스 워크플로 자동화 등에도 활용  
- 패턴은 항상 동일: 에이전트가 컨텍스트를 읽고, 추론하고, 코드를 작성해 행동하고, 결과를 관찰하고, 반복 → **코드가 행동의 보편적 매체**  
- 현재 한계:  
  - **노트북이나 고가 VPS에서만 실행**: 공유·협업·디바이스 간 전환 불가  
  - **유휴 시에도 비용 발생**: 고정 월비용이 팀·회사 단위로 확장 시 급증  
  - **수동 설치·관리 필요**: 의존성 설치, 업데이트 관리, 인증 및 시크릿 설정  
  
### 에이전트의 구조적 문제: 1:1 모델  
- 전통적 애플리케이션은 하나의 인스턴스가 다수의 사용자를 처리하지만, **에이전트는 1:1** — 각 에이전트가 고유 인스턴스로 한 사용자·한 작업 수행  
- 1억 명의 지식 노동자가 각각 에이전트 어시스턴트를 사용하면 **수천만 동시 세션** 필요  
- 현재 **컨테이너당 비용 구조**로는 지속 불가능, 다른 기반이 필요  
  
### 장기 실행 에이전트  
- 현재 에이전트는 **일시적(ephemeral)**: 세션 종료 시 사라지고, 노트북 슬립 시 중단  
- Agents SDK는 **Durable Objects** 기반으로 모든 에이전트에 아이덴티티, 영속 상태, 메시지 수신 시 자동 기동 기능 부여  
- **액터 모델**: 각 에이전트는 주소 지정 가능한 엔티티로 자체 **SQLite 데이터베이스** 보유, 휴면 시 컴퓨팅 비용 제로  
- HTTP 요청, WebSocket 메시지, 스케줄 알람, 인바운드 이메일 등 이벤트 발생 시 플랫폼이 에이전트를 깨우고 상태를 로드  
- VM/컨테이너 대비 Durable Objects 비교:  
  - 유휴 비용: VM은 항상 전체 컴퓨팅 비용 vs DO는 **제로(휴면)**  
  - 스케일링: VM은 수동 프로비저닝 vs DO는 **에이전트당 자동 확장**  
  - 상태: VM은 외부 DB 필요 vs DO는 **내장 SQLite**  
  - 복구: VM은 직접 구축 vs DO는 **플랫폼 자동 재시작, 상태 보존**  
  - 라우팅: VM은 로드밸런서·스티키세션 직접 구축 vs DO는 **이름→에이전트 내장 매핑**  
  - 10,000개 에이전트(각 1% 활성): VM은 10,000개 상시 인스턴스 vs DO는 **약 100개만 활성**  
- 새 에이전트 생성의 한계 비용이 사실상 **제로** → "사용자당 하나", "작업당 하나", "이메일 스레드당 하나"의 에이전트 모델 가능  
  
### 내구적 실행: Fibers  
- LLM 호출은 30초, 멀티턴 에이전트 루프는 그 이상 실행 가능하며, 그 사이 실행 환경이 사라질 수 있음(배포, 플랫폼 재시작, 리소스 한도)  
- **`runFiber()`**: 실행 시작 전 SQLite에 등록되는 **내구적 함수 호출**로, `stash()`를 통해 체크포인트 생성, `onFiberRecovered`를 통해 재시작 시 복구 가능  
- SDK가 fiber 실행 중 에이전트를 자동으로 유지, 특별한 설정 불필요  
- 분 단위 작업에는 `keepAlive()` / `keepAliveWhile()`로 퇴출 방지  
- CI 파이프라인, 디자인 리뷰, 영상 생성 등 더 긴 작업은 작업 시작 후 **job ID를 저장하고 휴면**, 콜백 시 기동  
  
### 서브 에이전트: Facets  
- 단일 에이전트가 모든 작업을 수행할 필요 없음  
- **서브 에이전트**는 부모와 공동 배치된 자식 Durable Objects로, 각각 **격리된 SQLite와 실행 컨텍스트** 보유  
- **Facets** 기반으로 부모 에이전트와 함께 위치하며, 서브 에이전트 간 데이터의 암시적 공유 없음  
- 서브 에이전트 RPC 지연은 함수 호출 수준, TypeScript가 컴파일 타임에 오용 감지  
  
### 영속 세션: Session API  
- 일·주 단위로 실행되는 에이전트에는 일반적인 **플랫 메시지 리스트 이상**이 필요  
- 실험적 **Session API**는 대화를 **트리 구조**로 모델링, 각 메시지에 `parent_id` 부여  
  - **포킹**: 원래 경로를 잃지 않고 대안 탐색  
  - **비파괴적 압축**: 오래된 메시지를 삭제 대신 **요약**  
  - **전문 검색**: **FTS5** 기반 대화 이력 전체 텍스트 검색  
- Agent 기본 클래스에서 직접 사용 가능하며, Think 기본 클래스의 저장 레이어 역할  
  
### 도구 호출에서 코드 실행으로  
- 기존 도구 호출 방식: 모델이 도구 호출 → 결과를 컨텍스트 윈도우로 회수 → 반복, 도구가 많아지면 **비용과 비효율** 증가  
- 파일 100개 = **모델과의 100회 왕복**  
- 모델은 도구 호출 게임보다 **시스템 사용을 위한 코드 작성에 더 뛰어남** — 이것이 **@cloudflare/codemode**의 핵심 통찰  
- 순차적 도구 호출 대신 LLM이 **전체 작업을 처리하는 단일 프로그램** 작성  
- Cloudflare API MCP 서버 사례: 도구 2개(`search()`, `execute()`)만 노출하여 약 **1,000 토큰** 소비 vs 엔드포인트당 도구 방식의 약 **117만 토큰** → **99.9% 감소**  
  
### 안전한 샌드박스: Dynamic Workers  
- 모델이 사용자를 대신해 코드를 작성한다면, 그 코드의 실행 환경이 핵심 질문  
- **Dynamic Workers**: 런타임에 밀리초 단위로 생성되는 새로운 **V8 격리 환경**, 수 메가바이트 메모리  
  - 컨테이너 대비 약 **100배 빠르고** 최대 **100배 메모리 효율적**  
  - 요청마다 새로 생성, 코드 실행 후 폐기 가능  
- 핵심 설계: **케이퍼빌리티 모델** — 범용 머신을 제한하는 방식이 아닌, 거의 **권한 없는 상태에서 시작**(`globalOutbound: null`, 네트워크 접근 없음)하고 개발자가 바인딩을 통해 **리소스별로 명시적 권한 부여**  
- "이것이 너무 많이 하는 것을 어떻게 막을까?"에서 **"이것이 정확히 무엇을 할 수 있게 할 것인가?"** 로 전환  
  
### 실행 래더(Execution Ladder)  
- 에이전트가 필요에 따라 단계적으로 상위 컴퓨팅 환경으로 에스컬레이션하는 스펙트럼:  
  - **Tier 0 — Workspace**: SQLite + R2 기반 내구적 가상 파일시스템, 읽기·쓰기·편집·검색·grep·diff 지원, `@cloudflare/shell` 구동  
  - **Tier 1 — Dynamic Worker**: LLM 생성 JavaScript를 네트워크 접근 없는 **샌드박스 격리 환경**에서 실행, `@cloudflare/codemode` 구동  
  - **Tier 2 — npm 추가**: `@cloudflare/worker-bundler`가 레지스트리에서 패키지를 가져오고 esbuild로 번들링하여 Dynamic Worker에 로드, `import { z } from "zod"` 그대로 동작  
  - **Tier 3 — 헤드리스 브라우저**: **Cloudflare Browser Run**으로 내비게이션, 클릭, 추출, 스크린샷, MCP나 API를 지원하지 않는 서비스에 유용  
  - **Tier 4 — Cloudflare Sandbox**: 도구체인, 리포, 의존성이 구성된 환경에서 `git clone`, `npm test`, `cargo build` 등 실행, Workspace와 양방향 동기화  
- 핵심 설계 원칙: **Tier 0만으로도 에이전트가 유용해야 하며, 각 티어는 추가적**  
  
### 빌딩 블록, 프레임워크가 아님  
- 모든 프리미티브가 **독립 패키지**로 제공: Dynamic Workers, `@cloudflare/codemode`, `@cloudflare/worker-bundler`, `@cloudflare/shell`  
- Agent 기본 클래스와 직접 결합하여 워크스페이스, 코드 실행, 런타임 패키지 해석 기능을 **독자적 프레임워크 도입 없이** 사용 가능  
  
### 플랫폼 전체 스택  
- **에이전트별 격리**: Durable Objects — 모든 에이전트가 자체 세계  
- **유휴 시 비용 제로**: DO Hibernation — 에이전트가 깨어날 때까지 $0  
- **영속 상태**: DO SQLite — 쿼리·트랜잭션 가능 저장소  
- **내구적 파일시스템**: Workspace(SQLite + R2)  
- **샌드박스 코드 실행**: Dynamic Workers + `@cloudflare/codemode`  
- **런타임 의존성**: `@cloudflare/worker-bundler` — `import * from react` 그대로 동작  
- **웹 자동화**: Browser Run  
- **풀 OS 접근**: Sandboxes — git, 컴파일러, 테스트 러너  
- **스케줄 실행**: DO Alarms + Fibers  
- **실시간 스트리밍**: WebSockets  
- **외부 도구 연결**: MCP  
- **에이전트 간 조율**: 서브 에이전트(Facets) — 타입 RPC  
- **모델 접근**: AI Gateway + Workers AI(또는 자체 모델)  
  
### Think 기본 클래스  
- 에이전트 루프, 메시지 영속, 스트리밍, 도구 실행, 스트림 재개, 확장 등 **전체 채팅 라이프사이클**을 처리하는 통합 하네스  
- 최소 서브클래스: `getModel()` 메서드만 구현하면 스트리밍, 영속, 중단/취소, 오류 처리, **재개 가능한 스트림**, 내장 워크스페이스 파일시스템을 갖춘 채팅 에이전트 동작  
- `npx wrangler deploy`로 배포  
- 오버라이드 가능 항목: `getModel()`, `getSystemPrompt()`, `getTools()`, `maxSteps`, `configureSession()`  
- 매 턴마다 전체 **에이전틱 루프** 실행: 컨텍스트 조립(기본 명령 + 도구 설명 + 스킬 + 메모리 + 대화 이력) → `streamText` 호출 → 도구 호출 실행(컨텍스트 폭발 방지를 위한 출력 잘라내기) → 결과 추가 → 모델 완료 또는 스텝 한도 도달까지 반복  
  
### 라이프사이클 후크  
- Think는 전체 파이프라인을 소유하지 않고도 채팅 턴의 **모든 단계에서 후크** 제공:  
  - `beforeTurn()` → `streamText()` → `beforeToolCall()` → `afterToolCall()` → `onStepFinish()` → `onChatResponse()`  
- 후속 턴에서 저비용 모델로 전환, 도구 제한, 클라이언트 컨텍스트 전달, 모든 도구 호출 분석 로깅, 자동 후속 턴 트리거 등 `onChatMessage` 교체 없이 가능  
  
### 영속 메모리와 긴 대화  
- Think는 **Session API** 위에 구축되어 트리 구조 메시지와 브랜칭 내장  
- **컨텍스트 블록**을 통한 영속 메모리: 시스템 프롬프트의 구조화된 섹션으로 모델이 읽고 시간에 따라 업데이트 가능, 휴면 간에도 유지  
- 모델이 "MEMORY (Important facts, use set_context to update) [42%, 462/1100 tokens]" 형태로 확인하고 **능동적으로 기억** 가능  
- 에이전트당 **복수 대화** 실행 가능, 포킹으로 원래 대화를 잃지 않고 다른 방향 탐색  
- 컨텍스트 증가 시 **비파괴적 압축**: 오래된 메시지를 삭제 대신 요약, 전체 이력은 SQLite에 보존  
- **FTS5 기반 검색**: 세션 내 또는 전체 세션에 걸쳐 대화 이력 쿼리 가능, 에이전트도 `search_context` 도구로 자체 과거 검색  
  
### 전체 실행 래더 통합  
- Think가 `getTools()` 반환 하나로 **전체 실행 래더를 통합**: 워크스페이스 도구, 실행 도구, 브라우저 도구, 샌드박스 도구, 확장 도구를 한 번에 구성  
  
### 셀프 저작 확장(Self-authored Extensions)  
- 에이전트가 **자체 확장 프로그램을 직접 작성** 가능: Dynamic Workers에서 실행되는 TypeScript 프로그램으로 네트워크 접근과 워크스페이스 작업 권한을 선언  
- Think의 **ExtensionManager**가 확장을 번들링(npm 의존성 포함 가능), Dynamic Worker에 로드, 새 도구 등록  
- 확장은 **DO 저장소에 영속**되어 휴면에서도 생존  
- 예: 사용자가 PR 관련 질문 시 30초 전에는 존재하지 않던 `github_create_pr` 도구가 생성  
- 파인튜닝이나 RLHF가 아닌 **코드를 통한 자기 개선 루프** — 샌드박스화, 감사 가능, 철회 가능한 TypeScript  
  
### 서브 에이전트 RPC  
- Think는 부모에서 **`chat()` over RPC**로 호출되는 서브 에이전트로도 동작, 콜백을 통한 스트리밍 이벤트 지원  
- 각 자식이 자체 대화 트리, 메모리, 도구, 모델 보유, 부모가 세부사항을 알 필요 없음  
  
### 시작하기  
- Project Think는 **실험적(experimental)** 상태, API 표면은 안정적이나 향후 계속 발전 예정  
- Cloudflare 내부에서 자체 백그라운드 에이전트 인프라 구축에 이미 사용 중  
- Think는 `@cloudflare/ai-chat`와 동일한 WebSocket 프로토콜을 사용하므로 기존 UI 컴포넌트 그대로 동작  
- `AIChatAgent` 기반으로 구축한 경우 **클라이언트 코드 변경 불필요**  
  
### AI 에이전트의 세 가지 물결  
- **첫 번째 물결 — 챗봇**: 상태 없음, 반응적, 취약, 매 대화 처음부터 시작, 메모리·도구·행동 능력 없음, 질문 답변에만 유용  
- **두 번째 물결 — 코딩 에이전트**: 상태 유지, 도구 사용, Pi·Claude Code·OpenClaw·Codex 같은 도구, 코드베이스 읽기·코드 작성·실행·반복 가능, 적절한 도구가 있는 LLM이 **범용 머신**임을 증명, 그러나 노트북에서만 한 사용자 대상으로 실행되며 **내구성 보장 없음**  
- **세 번째 물결 — 인프라로서의 에이전트**: 내구적, 분산, 구조적으로 안전, 서버리스, 인터넷에서 실행, 장애 생존, 유휴 시 비용 제로, **행동이 아닌 아키텍처를 통한 보안 강제**

## Comments



_No public comments on this page._
