Python 함수로 해킹할 수 있는 하네스를 갖춘 오픈 소스 코딩 에이전트 Alpine-Code를 만들었습니다!
요약
Alpine Code는 MIT 라이선스의 오픈 소스 데스크톱 코딩 에이전트입니다. 로컬 모델과 연결하여 프로젝트 폴더에서 코드 작업을 요청할 수 있으며, 제안된 수정 사항을 승인받는 과정을 포함합니다. 이 앱은 사용자가 직접 Python 함수 기반의 도구를 작성하고 테스트하며, Ollama 등 다양한 OpenAI 호환 엔드포인트와 연동할 수 있게 합니다.
핵심 포인트
- 로컬 모델 연결 및 프로젝트 폴더에서 코드 작업 가능
- 사용자 정의 Python 함수를 통해 강력한 도구 확장성 제공
- 데스크톱 앱 환경에서 에이전트의 모든 과정을 제어하고 검토 가능
- Ollama, LM Studio 등 다양한 로컬 엔드포인트 지원
안녕하세요 r/LocalLLaMA!! 저는 MIT 라이선스의 데스크톱 코딩 에이전트인 Alpine Code의 개발자입니다. https://preview.redd.it/6sojix81f2uh1.png?width=3104&format=png&auto=webp&s=5cc5d899ca6c79ad10b454e4243f02c0fc5c3ac5 로컬 모델을 연결하고, 프로젝트 폴더를 열고, 코드 작업을 요청할 수 있습니다. 이 앱은 제안된 수정 사항과 변경 내용을 함께 승인을 위한 명령을 표시합니다. GitHub, 데모 및 스크린샷: https://github.com/TGoddessana/alpine-code
왜 만들었나요?! Claude Code, Codex, OpenCode, Pi 등 여러 가지가 있습니다... 저는 하네스(harness) 전체에 걸쳐 제어권을 원했습니다. 에이전트 루프, 모델에 노출되는 도구들, 도구 호출이 실행되는 방식, 그리고 에이전트가 승인을 요청하는 시점까지 말이죠. 또한 터미널을 거치지 않고도 도구를 검사하고, 테스트하고, 수정한 내용을 검토하며, 에이전트를 사용할 수 있는 데스크톱 앱을 원했습니다.
프로젝트의 실제 코딩 루프는 다음과 같습니다:
@loop(until=is_answered, limit=TURN_LIMIT) async def coding(agent: Agent, state: State) -> None:
await acompact_if_full(agent, state)
await agent.athink(state)
if state.pending_calls:
await agent.ause_tools(state)
각 턴은 필요에 따라 컨텍스트를 압축하고, 모델을 호출하며, 보류 중인 모든 도구 호출을 실행합니다. 도구 호출 없이 모델이 답변을 반환하면 종료되며, 최대 200턴의 제한이 있습니다. 승인 확인은 도구 실행 중에 발생합니다. 이는 Alpine Code가 구축된 라이브러리인 alpineagents를 사용합니다. 루프가 짧은 이유는 이러한 작업들이 라이브러리에 존재하기 때문입니다. 두 프로젝트 모두 오픈 소스이므로, 아래에서 구현을 더 자세히 살펴볼 수 있습니다.
도구는 Python 함수입니다
데스크톱 앱에서는 사용자 지정 도구를 작성할 수 있습니다. 함수 이름, 타입 힌트(type hints), 그리고 docstring이 모델에게 보이는 인터페이스를 정의합니다. 예를 들어, 데스크톱 마우스 클릭 도구는 다음과 같을 수 있습니다:
/// script # dependencies = [
y: 픽셀 단위의 수직 화면 좌표를 나타냅니다.""" import pyautogui pyautogui.click(x, y) return f"Clicked at ({x}, {y})" 이렇게 하면 마우스 클릭 액션을 추가할 수 있습니다. 컴퓨터 사용 환경에서는 화면을 관찰하고, 타이핑하며, 키를 누르는 도구도 필요합니다. macOS의 경우, 데스크톱 자동화를 위해서는 관련 시스템 권한이 필요합니다. 툴 에디터(tool editor)를 사용하면 모델이 무엇을 볼지 검사하고 저장하기 전에 해당 도구를 테스트해 볼 수 있습니다. 의존성은 PEP 723 인라인 메타데이터를 사용하여 같은 파일에 선언할 수 있습니다. 이 방법을 통해 자신만의 애플리케이션 및 워크플로우용 도구를 추가할 수 있습니다.
로컬 모델 및 툴 프로파일 (Local models and tool profiles)
Alpine Code는 Ollama, LM Studio, vLLM 및 기타 OpenAI 호환 엔드포인트를 지원합니다. 대화 중에 모델을 전환할 수 있습니다. 툴 프로파일(Tool profiles)을 사용하면 각 모델과 프로젝트가 어떤 도구를 사용할지 선택할 수 있습니다. 작은 로컬 모델에는 집중된 도구 세트를 실험하거나, 특정 프로젝트를 위해 데스크톱 자동화를 활성화할 수 있습니다. 이곳에서 사람들이 사용하는 로컬 모델들과 잘 작동하는 툴 구성에 대한 피드백을 듣고 싶습니다.
데스크톱 앱 (The desktop app)
프로젝트 폴더를 열고 작업을 설명하면 됩니다. 에이전트는 파일을 읽고, 코드를 편집하며, 작업 결과를 확인하기 위해 명령을 실행할 수 있습니다. 이 앱은 수정 및 명령어 실행 전에 승인을 요청하고, 파일 차이(diffs)와 명령어 기록을 표시하며, 프로젝트 지침을 위해 AGENTS.md 또는 CLAUDE.md를 읽습니다. 대화 내용과 모델 자격 증명(credentials)은 사용자의 컴퓨터에 저장됩니다. 요청은 구성된 엔드포인트로 직접 전송됩니다. Alpine Code는 계정이 필요하지 않으며 자체 백엔드를 통해 요청을 라우팅하지 않습니다. 데스크톱 앱과 에이전트 코어 모두 MIT 라이선스 하에서 사용할 수 있습니다.
다운로드: https://github.com/TGoddessana/alpine-code/releases/latest
데스크톱 앱은 현재 macOS 11 이상을 실행하는 Apple-silicon Mac을 지원합니다. Windows 지원이 계획되어 있습니다. 로컬 모델로 사용해 보신다면, 툴 호출의 신뢰성(tool-calling reliability), 유용한 사용자 지정 도구(useful custom tools), 그리고 재현 가능한 실패 사례에 대한 피드백을 주시면 감사하겠습니다. 이때 사용 중인 모델과 서버도 포함해 주세요. 영어는 제 모국어가 아니기 때문에 이 게시물을 번역하는 데 GPT 모델을 사용했습니다.
어떤 피드백이라도 환영합니다!! 감사합니다! 제출자: /u/TGoddessana [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기