textual은(는) 무엇을 하나요?
에이전트의 사고 루프, 도구 상태 및 실행 스트림을 보여주는 터미널 인터페이스를 구축하는 데 사용되는 Python TUI 프레임워크입니다.
개요
Textual은 Python 애플리케이션을 위한 모던 TUI 프레임워크로, 터미널 내에서 풍부하고 인터랙티브한 사용자 인터페이스를 제공합니다. AI 에이전트 개발에 특화되어 있어 실시간 로그, 상태 업데이트, 다중 스트림 출력을 시각화할 수 있습니다.
주요 기능
- 비동기 지원:
asyncio기반으로 동시성 처리에 강함 - 위젯 라이브러리: 버튼, 텍스트 입력, 트리 뷰 등 다양한 위젯 제공
- CSS 스타일링: CSS를 사용한 레이아웃과 스타일 지정
- 터미널 최적화: 다양한 터미널 에뮬레이터와 호환
- 에이전트 통합: Claude Code, Cursor, Codex 등과 연동 가능
설치
pip install textual
기본 사용 예제
from textual.app import App
from textual.widgets import Header, Footer, Static
class AgentMonitorApp(App):
"""에이전트 상태 모니터 앱"""
def compose(self):
yield Header()
yield Static("에이전트 상태: 대기 중")
yield Footer()
if __name__ == "__main__":
app = AgentMonitorApp()
app.run()
에이전트 통합 예제
사고 루프와 도구 상태를 표시하는 위젯:
from textual.widgets import Tree
class ThoughtTree(Tree):
"""에이전트 사고 과정을 트리로 표시"""
def update_thought(self, thought: dict):
self.clear()
root = self.root.add("사고 루프")
root.add_leaf(f"단계: {thought['step']}")
root.add_leaf(f"도구: {thought['tool']}")
root.add_leaf(f"상태: {thought['status']}")