OpenCode와 Ollama로 인터넷 없이 로컬 코딩 에이전트를 돌린다
인터넷이 끊긴 상태에서도 코드 편집과 테스트 실행을 이어가는 로컬 코딩 에이전트 구성이 소개됐다. 핵심은 오픈소스 코딩 에이전트 OpenCode 1.19.4와 로컬 모델 실행 도구 Ollama, 그리고 Qwen3.5 9B를 한 대의 맥에서 조합하는 방식이다. 모델을 먼저 내려받고 네트워크를 끊은 뒤, 에이전트가 프로젝트 파일을 읽고 수정안을 내며 테스트 명령을 실행하는 흐름을 실험했다.
구성에서 OpenCode는 프로젝트와 상호작용하고, Ollama는 localhost의 127.0.0.1:11434/v1에서 모델 요청을 처리한다. opencode.json에서는 주 모델과 보조 모델을 모두 Qwen3.5 9B로 지정하고 로컬 프로바이더만 활성화한다. 파일 편집이나 셸 명령 실행 전에는 권한 확인을 요구하며 웹 도구는 차단한다. --pure 옵션으로 외부 플러그인도 끈다. Ollama는 OLLAMA_HOST=127.0.0.1:11434, OLLAMA_NO_CLOUD=1, OLLAMA_CONTEXT_LENGTH=65536 같은 환경 변수로 로컬·비클라우드 모드와 64k 컨텍스트를 설정한다.
Qwen3.5 9B 빌드는 6.6GB 다운로드로 소개됐지만 메모리 요구량은 다르다. 6.6GB 모델을 위해 12~16GB 메모리를 예산으로 잡는 사례가 언급됐고, 64k 토큰 설정에서는 컨텍스트와 다른 앱을 위해 여유가 더 필요할 수 있다고 짚었다. Aider도 Ollama를 지원하는 대안으로 언급됐지만 이번 실습은 OpenCode로 일관되게 진행됐다.
실습 대상은 지출 계산기였다. 다섯 항목과 환불을 포함한 합계는 25.50이어야 하지만 시작 프로그램은 마지막 지출값인 8.00을 출력한다. 반복할 때마다 합계를 덮어쓰는 함수 때문이다. 기존 테스트에서는 소수 연산, 환불, 샘플 지출 세 가지가 실패하고 빈 입력과 단일 항목은 통과한다. 에이전트에게 파일을 읽고 테스트를 실행한 뒤 수정 없이 버그를 설명하라고 요청하는 식으로 진단을 맡겼다.
이때 OpenCode는 프로젝트가 unittest를 쓰는데도 pytest를 먼저 제안했다. 권한 확인 단계에서 명령을 검토할 수 있었고, 다음에는 python3 -m unittest -v처럼 정확한 테스트 명령을 프롬프트에 넣는 편이 낫다는 결론이 나왔다. 이 사례는 오프라인 에이전트가 코드 이해와 실패 원인 추적에는 유용하지만, 실행 환경의 세부 정보를 프롬프트에 명시해야 한다는 점을 보여준다.
배경에는 원격 근무의 전제가 깔려 있다. 안정적인 인터넷과 전원을 당연하게 여기지만, 비행기나 장거리 열차, 네트워크가 약한 지역에서는 상황이 다르다. Qwen 같은 오픈웨이트 모델은 가중치를 내려받아 로컬에서 실행할 수 있고, Ollama와 OpenCode를 조합하면 터미널 중심 워크플로를 유지한 채 모델 요청을 같은 노트북으로 돌릴 수 있다. 다만 새 패키지 설치나 웹 검색은 여전히 연결이 필요하다.
성능 참고 자료도 있다. 연구 프리프린트 The Scaffold Effect in Coding Agents는 OpenCode, Goose, OpenHands-SDK를 두 종류의 클라우드 모델로 50개 Terminal-Bench Pro 작업에 비교했다. 보고된 통과율 차이는 대부분 통계적으로 명확하지 않았고, OpenCode는 Goose보다 해결 작업당 약 40배 많은 토큰을 쓴 것으로 나타났다. 이 실험은 클라우드 API와 다른 모델을 사용했으므로 로컬 Qwen3.5 9B의 성능을 예측하는 자료는 아니다.
개발자 입장에서는 인터넷이 불안정한 순간에도 코드 설명, 실패 테스트 조사, 작은 리팩터링, 기능 마무리 같은 작업을 로컬에서 시도할 수 있다는 점이 의미가 있다. 대신 모델·의존성·테스트 도구가 로컬에 준비돼 있어야 하고, 파일 수정과 셸 실행 권한을 직접 검토하는 습관이 필요하다. 로컬 노트북의 속도나 전체 OpenCode 워크플로 성능은 제시된 벤치마크만으로 판단할 수 없다.
오프라인 실행의 범위는 제한적이다. 모델과 프로젝트 의존성, 테스트 도구가 이미 갖춰진 작업에만 적용되며, 새로운 패키지를 받거나 웹에서 정보를 찾는 일은 네트워크가 필요하다. 또한 공개된 수치는 노트북 속도나 전체 에이전트 워크플로를 측정한 값이 아니고, 클라우드 모델 벤치마크도 로컬 구성의 결과를 보장하지 않는다. 메모리와 컨텍스트 여유도 별도로 확보해야 한다.