llm-coding-agent 0.1a0
요약
LLM 라이브러리를 기반으로 구축된 새로운 코딩 에이전트 'llm-coding-agent'의 실험 결과와 구현 내용을 소개합니다. TDD 방식을 사용하여 파일 편집, 명령 실행, 파일 목록 조회 등의 도구를 갖춘 에이전트의 동작과 Python API 활용법을 다룹니다.
핵심 포인트
- LLM 라이브러리를 에이전트 프레임워크로 진화시켜 코딩 에이전트 구현
- Red/Green TDD 방식을 적용한 자동화된 커밋 및 빌드 프로세스 수행
- 파일 편집, 셸 명령 실행, 파일 읽기 등 핵심적인 CodingTools 세트 제공
- 사용자 편의를 위한 CLI 레시피 및 Python API 지원
2026년 7월 2일
또 다른 Fable 5 실험입니다. 이제 저의 LLM 라이브러리가 에이전트 프레임워크 (agent framework)에 더 가깝게 진화했으므로, 이를 기반으로 구축된 간단한 코딩 에이전트 (coding agent)가 어떤 모습일지 확인해 볼 시간입니다.
저는 저의 python-lib-template-repository GitHub 템플릿 저장소를 사용하여 새로운 Python 라이브러리를 시작했고, 다음 두 가지 프롬프트 (prompt)를 실행했습니다 (여기 웹 트랜스크립트를 위한 Claude Code가 있습니다):
이 프로젝트를 위한 spec.md를 작성해줘 - 이 프로젝트는 PyPI의 최신 “llm” 알파 버전에 의존하며, 파일을 읽고 편집하며 명령을 실행하는 도구 (tools)를 갖춘 Claude code 스타일의 코딩 에이전트를 구현할 거야
그 다음:
spec을 커밋(commit)하고, 일련의 합리적인 커밋 (각 커밋은 통과하는 테스트와 업데이트된 문서를 포함함)을 통해 red/green TDD를 사용하여 빌드해줘 - 가끔씩 당신의 환경에 있는 OpenAI API 키를 사용하여 수동으로 테스트해봐
결과로 나온 README 파일과 커밋 시퀀스는 다음과 같습니다.
저는 PyPI에 slop-alpha 버전을 출시했으므로, 다음과 같이 새로운 에이전트를 실행할 수 있습니다:
uvx --prerelease=allow --with llm-coding-agent llm code
첫 시도로는 꽤 훌륭합니다! 여기 (Fable이 작성한) README가 있으며, 여기에는 llm code --yolo 및 llm code --allow "pytest*" --allow "git diff*"와 같은 레시피 (recipes)가 나열되어 있습니다.
또한 이 README는 제가 요청하지 않았지만 구현된 것을 보고 매우 기쁘게 생각하는 CodingAgent(model="gpt-5.5", root="/path", approve=True).run("Fix the failing test in tests/test_parser.py") 클래스를 기반으로 한 Python API를 제시합니다.
다음은 uvx ... llm tools를 사용하여 나열된, 구현된 도구 세트입니다:
CodingTools_edit_file(path: str, old_string: str, new_string: str, replace_all: bool = False) -> str
파일 내의 정확한 문자열을 교체합니다.
old_string은 파일 내용과 정확히 일치해야 하며 (공백 포함), replace_all이 true가 아닌 한 고유한 위치를 식별해야 합니다. 검증할 수 있도록 변경 사항의 diff를 반환합니다.
CodingTools_execute_command(command: str, timeout: int = 120) -> str
세션 루트 디렉토리에서 셸 명령 (shell command)을 실행합니다.
표준 출력 (stdout)과 표준 에러 (stderr)를 결합하여 반환하며, 그 뒤에 종료 코드 (Exit code) 줄이 이어집니다. timeout은 초 단위이며 (최대 600), 타임아웃이 발생하면 전체 프로세스 트리 (process tree)가 종료됩니다.
CodingTools_list_files(pattern: str = '**/*', path: str = '.') -> str
Glob 패턴과 일치하는 파일 목록을 최신순으로 나열합니다.
숨겨진 디렉토리, node_modules, pycache 및 (git 리포지토리 내에서) .gitignore에 의해 포함되는 항목은 제외합니다. 검색된 디렉토리 기준 최대 200개의 경로를 반환합니다.
CodingTools_read_file(path: str, offset: int = 0, limit: int = 2000) -> str
텍스트 파일을 읽으며, cat -n과 같이 번호가 매겨진 줄을 반환합니다.
경로는 세션 루트 (session root) 기준 상대 경로입니다. 한 번의 호출로 읽기에 너무 큰 파일을 페이지 단위로 읽으려면 offset (0부터 시작하는 첫 번째 줄)과 limit (최대 줄 수)을 사용하세요.
CodingTools_search_files(pattern: str, path: str = '.', glob: str = None, max_results: int = 100) -> str
정규 표현식 (regular expression)을 사용하여 파일 내용을 검색합니다.
일치하는 항목을 path:line_number:line 형식으로 반환하며, max_results로 제한됩니다. glob (예: "*.py")을 사용하여 검색할 파일을 제한할 수 있습니다.
CodingTools_write_file(path: str, content: str) -> str
주어진 내용으로 파일을 생성하거나 덮어씁니다.
상위 디렉토리는 필요에 따라 생성됩니다. 기존 파일을 수정할 때는 edit_file 사용을 권장합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Simon Willison Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기