OpenCode v2 소스 코드 분석: 커스텀 프롬프트 방해, 서브에이전트 너프, 그리고 코드베이스에 이미 무료로 있는 검색 기능을 0.01달러에 파는 행태 (커스텀 TUI + 언체인드 포크)
Inside OpenCode v2’s source code: how it sabotages custom prompts, nerfs subagents, and charges $0.01 for search that’s already free in the codebase (Custom TUI + Unchained Fork)
핵심 요약
OpenCode v2가 사용자 프롬프트를 제한하고 무료 검색 기능을 유료화하는 등 소스 코드 내에 숨겨진 제약 사항을 폭로하고 이를 해결한 포크 버전을 제안함.
- 소스 코드 분석 — OpenCode v2 내부에 숨겨진 프롬프트 제약과 서브에이전트 제한 사항을 폭로함.
- 유료 검색 논란 — 코드베이스에 무료로 구현된 검색 기능을 유료로 판매하는 행태를 지적함.
- 포크 버전 개발 — 제약 사항을 제거하고 커스텀 테마를 적용한 언체인드 버전을 공개함.
- 커뮤니티 반응 — 소스 코드의 제약 사항에 공감하며 포크 버전 공개를 강력히 요청함.
우리는 버그 바운티, 리버스 엔지니어링, 빡센 로우 레벨 코딩, 그리고 흔해 빠진 기본 테마가 아닌 깔끔한 다크 TUI를 위해 OpenCode v2.0.16 소스를 직접 뜯어고치기로 했다.
packages/core랑 packages/tui를 파헤치다가 v2 버전에 하드코딩된 개웃긴 것들을 발견했다:
-
모델 정체성 강제 주입 (
identity.ts): 시스템 프롬프트를 어떻게 설정하든, OpenCode는 모든 API 호출마다 두 번째 시스템 블록(# Your Model: <name>, Provider ID, Model ID)을 몰래 끼워 넣는다. 프롬프트가 실행되기 직전에 모델한테 지네 벤더 정체성이랑 안전장치를 계속 상기시키는 꼴이다. -
커스텀 인스트럭션 방해 (
instruction-discovery.ts): 모든 커스텀 규칙 파일(AGENTS.md등)에Instructions from: /path/to/file이라는 헤더를 씌워버린다. 요즘 LLM한테 이 헤더는 '신뢰할 수 없는 사용자 파일'이라는 딱지나 다름없어서, 벤더 측 안전 가이드라인이 네 로컬 지시사항보다 항상 우선순위를 갖게 만든다. -
모델별 거세 프롬프트 (
plugin/system-prompt/): 바이너리에 모델별로 숨겨진 프롬프트 오버라이드를 박아놨더라:-
trinity.txt에는 대놓고 하드코딩되어 있다: "답변은 4줄 미만으로 해라... 단답형이 최고다... 주석은 절대 달지 마라" 이건 프록시 토큰 아끼려고 그러는 건데, 여기에 거부 규칙이랑 키나 시크릿 건드리지 말라는 금지 사항까지 떡칠해놨다. -
gpt.txt에서는 모델이 기본적으로 서브 에이전트를 생성하지 못하게 막아놨다(Do not spawn subagents by default).
-
-
서브 에이전트 스웜 및 파일 접근 제한:
subagent_depth가1로 고정되어 있어서 오케스트레이터 에이전트가 정찰/스캔/익스플로잇용 서브 에이전트를 못 만든다. 게다가general서브 에이전트에서subagent도구 권한을 아예 삭제해버렸다..env파일을 건드리거나 현재 디렉토리 밖으로 나갈 때마다 뜨는 잔소리 프롬프트는 덤이다. -
결제 탭의 코미디: 버튼 2,000개랑 검색당 $0.01: 웹 대시보드 결제 페이지를 보면 "호스팅 웹 검색"에 검색당 $0.01(1,000번 검색에 $10!)을 받아 처먹는다. 근데 CLI 소스 코드의 를 열어보면 API 키 없이도 공짜로 돌아가는 제공자 5개(, , , , )가 이미 내장되어 있다. 심지어 에는 HTTP 429 에러 뜨면 자동으로 제공자를 바꿔주는 로드 밸런서까지 들어있다. 그냥 기본값으로 안 써놨을 뿐이다.


