🤖
1247 in / 3502 out / 4749 total tokens
Simon Willison이 MicroPython을 WebAssembly로 돌리는 도구와 Datasette 에이전트를 잇달아 릴리즈했다. 두 프로젝트는 별개지만 기술적 맥락이 이어진다.
🔥 핫 토픽
micropython-wasm: 브라우저에서 돌아가는 경량 Python
MicroPython을 WebAssembly로 컴파일해서 브라우저 내에서 직접 실행할 수 있게 만든 도구다. CPython(우리가 흔히 아는 표준 Python) 대신 MicroPython을 선택한 게 포인트인데, 이건 임베디드 환경에 최적화된 Python 구현체라 바이너리 크기가 작고 부팅이 빠르기 때문이다. WASM으로 변환하면 브라우저 샌드박스 안에서 안전하게 사용자 코드를 실행할 수 있어서, 코드 실행 플랫폼이나 대화형 튜토리얼 만들기에 좋다.
게임 개발자 입장에서 이게 흥미로운 이유는, UE5에서 Web 관련 플러그인(Pixel Streaming 등) 쓸 때 브라우저 단에서 스크립트를 돌려야 하는 상황이 종종 있기 때문이다. 예를 들어 인게임 UI에서 사용자가 커스텀 로직을 입력하게 하려면, JavaScript만 쓸 수 있는 게 아니라 Python도 옵션으로 줄 수 있다. 물론 성능은 JavaScript가 낫지만, 파이썬 생태계를 그대로 끌어다 쓸 수 있다는 건 큰 장점이다.
Pyodide 같은 기존 WASM Python 구현체는 CPython 기반이라 무겁고 로딩이 느린 반면, MicroPython은 가볍게 뜨는 게 장점이다. 대신 표준 라이브러리가 제한적이라 numpy 같은 걸 못 쓴다는 트레이드오프가 있다. 프로젝트 이름에 0.1a1이라고 붙은 걸 보면 아직 초기 단계고, Simon Willison이 자기 LLM 도구들의 실험적 확장으로 만든 것으로 보인다.
이런 방식은 멀티플레이어 게임 서버에서 유저가 작성한 스크립트를 샌드박스에서 돌릴 때도 참고할 만하다. 서버 사이드 WASM 샌드박스에 Python을 넣으면, anti-cheat 걸면서도 유저 모딩을 허용하는 아키텍처를 짤 수 있다.
출처: Simon Willison - micropython-wasm
datasette-agent-micropython: Datasette + LLM 에이전트에 가벼운 코드 실행 추가
datasette-agent-micropython 0.1a0
Datasette는 Simon Willison이 만든 오픈소스 데이터 탐색 도구인데, CSV·JSON·SQLite 같은 데이터를 웹에서 바로 쿼리하고 시각화할 수 있게 해준다. 이번에 나온 datasette-agent-micropython은 Datasette에 LLM 에이전트 기능을 연동하면서, 에이전트가 직접 Python 코드를 작성해서 실행할 수 있게 만든 플러그인이다. 앞서 언급한 micropython-wasm을 활용해서 코드 실행 환경을 구축한 것으로 보인다.
LLM 에이전트에게 코드 실행 능력을 주는 건 꽤 중요하다. 단순히 텍스트로 답변하는 게 아니라, 데이터를 직접 계산하고 그래프를 그리고 변환할 수 있으니까. 게임 서버 데이터(예: 플레이어 로그, 매치 통계)를 Datasette에 올려놓고 LLM에게 "지난주 밸런스 패치 이후 승률 변화 분석해줘"라고 하면, 에이전트가 직접 SQL 쿼리를 날리고 결과를 Python으로 후처리해서 답을 준다.
근데 코드 실행 환경을 WASM + MicroPython으로 만든 게 포인트다. 서버에서 CPython을 그대로 돌리면 보안상 위험하니까(exec, eval은 늘 위험하다), WASM 샌드박스 안에서 제한된 환경을 구축한 것이다. 게임 서버 개발할 때도 이 패턴이 유효하다. 예를 들어, 게임 내 이벤트 스크립트를 유저가 Python으로 작성하게 하되, WASM 샌드박스에서 돌리면 서버 프로세스를 보호할 수 있다.
Simon Willison이 이걸 Datasette 생태계에만 묶어놓지 않고, micropython-wasm을 별도 패키지로 뺀 건 확장성 때문인 것 같다. 다른 프로젝트에서도 쓸 수 있게 분리한 거다. LLM 도구에 코드 실행 능력을 안전하게 추가하고 싶은 사람들에게 좋은 참고가 될 듯하다.
이 방식의 한계는 역시 MicroPython의 제약. 표준 라이브러리가 부족하고, CPython 전용 패키지를 못 쓰니까 복잡한 데이터 분석은 한계가 있다. 하지만 가벼운 스크립트 실행 용도로는 충분하고, WASM 샌드박스의 보안 이점이 그 단점을 상쇄한다.
출처: Simon Willison - datasette-agent-microython
🔗 두 프로젝트의 연결점
micropython-wasm이 기반 기술이고, datasette-agent-micropython이 그 위에 구축된 응용이다. Simon Willison은 원래 LLM 도구(llm, datasette-write 등)를 주로 만드는 사람인데, 이번에 코드 실행 환경을 직접 구축한 게 눈에 띈다. 기존에 Pyodide 같은 걸 썼겠지만, 무거운 게 마음에 안 들었던 것 같다.
게임 개발자 관점에서 보면, 이 패턴은 안전한 샌드박스 스크립트 실행이라는 주제와 직결된다. UE5 블루프린트는 강력하지만 런타임에 사용자가 로직을 넣을 수는 없다. WASM + 경량 언어 조합은 그 갭을 메울 수 있는 기술적 선택지다.
요약: 브라우저에서 MicroPython을 돌리는 가벼운 WASM 런타임과, 이를 활용해 LLM 에이전트에게 안전한 코드 실행 능력을 부여한 Datasette 플러그인. 게임 서버의 유저 스크립트 샌드박스에도 참고할 만한 패턴이다.