본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 11. 19:44

ACT 0.7: 세션, 세 가지 프로덕션 브릿지 및 args를 통한 인증

요약

ACT(Architecture Component Toolkit)의 최신 버전인 ACT 0.7은 기존 아키텍처에서 부족했던 '상태 관리(state)' 기능을 도입하여 컴포넌트 간의 상호작용을 개선했습니다. 이전에는 세션 관리가 필요한 도구들이 임시적인 `thread_local`에 상태를 저장하는 방식 때문에 호스트가 이를 추적하고 정리하기 어려웠습니다. ACT 0.7은 상태를 필요로 하는 컴포넌트가 명시적으로 옵트인(opt-in)할 수 있게 하고, 세션 시작 및 종료를 위한 표준화된 메커니즘(`close-session`)을 제공하여 안정적인 자원 관리를 가능하게 합니다. 특히, 이 업데이트는 원격 MCP 서버와 통신하는 `mcp-bridge`나 OpenAPI 사양을 로드하는 `openapi-bridge` 같은 '브릿지' 컴포넌트의 기능을 대폭 개선했습니다. 이제 브릿지는 세션 ID를 통해 상태를 관리하고, 호스트가 세션을 종료할 때 관련된 모든 자원을 안전하게 정리할 수 있게 되어 시스템의 신뢰성과 확장성이 높아졌습니다.

핵심 포인트

  • ACT 0.7은 컴포넌트 아키텍처에 필수적인 '상태(state)' 관리 기능을 공식적으로 도입했습니다.
  • 세션 기반 컴포넌트는 이제 명시적으로 옵트인하여 상태를 관리하며, 세션 시작 및 종료(`close-session`)가 표준화되었습니다.
  • 원격 서비스와의 연결을 담당하는 브릿지들(mcp-bridge, openapi-bridge 등)이 업데이트되어 안정적인 세션 관리가 가능해졌습니다.
  • 호스트는 이제 세션 ID를 기반으로 컴포넌트의 상태를 추적하고, 인스턴스를 해제할 때 모든 자원을 안전하게 정리할 수 있습니다.

이전 게시물들은 ACT가 무엇인지에 초점을 맞췄습니다. 즉, 샌드박스 컴포넌트, 전송별 단일 바이너리, 기능 상한선입니다. 이번 글은 빠져 있던 것, 바로 '상태(state)'에 관한 것입니다. actpkg의 대부분의 컴포넌트는 순수한 요청/응답 방식입니다 — crypto, encoding, random, time 등. 모든 호출이 독립적이기 때문에 세션이 필요하지 않습니다. 하지만 데이터베이스 연결, 5MB 사양을 파싱한 OpenAPI 클라이언트, 업스트림 서버와 핸드셰이크 중인 MCP 브릿지 같은 도구를 사용하려 하면, 그 상태를 저장할 곳이 없습니다. 컴포넌트들은 이를 thread_local에 보관했습니다! std:session-id 메타데이터로 키가 지정된 HashMap이었고, 호스트는 이 ID들이 무엇을 의미하는지 또는 언제 정리해야 하는지 알 길이 없었습니다. ACT 0.7이 이를 수정합니다. 이제 상태를 가지는 컴포넌트들은 작고 새로운 WIT int에 옵트인(opt-in)할 수 있게 되었습니다.

MUST call this for /// every session it opened, before component deinit. close-session: func(session-id: string); } Subsequent capability calls ( tool-provider.list-tools , tool-provider.call-tool ) pass the returned id as std:session-id in their metadata. The component does its own state lookup. The host keeps the wasm instance alive as long as it's serving sessions, and closes whatever's still open before it tears the instance down. If you used the old metadata = {"url": "..."} shape on the bridges, this is a breaking change. The reasoning is in the next section.

Three bridges, rebuilt
The whole reason act:sessions exists is that bridges need it. Three of them just shipped on the new model: mcp-bridge 0.2.0 Wraps a remote MCP server, exposes its tools as ACT tools. open-session does the MCP initialize + notifications/initialized handshake against the upstream and stashes the resulting Mcp-Session-Id header for the lifetime of the session. The bridge issues its own outward-facing id and maps the two NAT-style — agents never see the upstream's id, so swapping upstream-session-ids on expiry is invisible from the agent's side.

act run ghcr.io/actpkg/mcp-bridge:0.2.0 --mcp # then, agent: open_session({"url": "https://upstream.example/mcp", "auth_token": "sk-..."}) # → {"id": "mcp_0", "metadata": {}} # then, agent: tools/list with _meta.std:session-id = mcp_0

openapi-bridge 0.2.0 Loads an OpenAPI 3.x spec at runtime and exposes each operation as a local ACT tool. open-session({sp

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
1

댓글

0