Qwen Code 주간 업데이트: /goal 자율 코딩, Auto Approval로 확인 생략, Worktree 격리
코딩 Agent 분야에는 이번 주 뚜렷한 신호가 하나 있었습니다. 누구나 Agent를 사람이 지켜보지 않고 끝까지 달리게 하고 싶어합니다. Claude Code가 /goal을 발표 했고, Codex도 뒤를 이었 으며, OpenAI는 별도로 Symphony 오케스트레이션 규격 을 내놔 Agent를 백그라운드에 상주시켰습니다. ‘목표를 정한다 → 맡긴다 → 결과만 받는다’가 새로운 주류 상호작용 방식이 되고 있습니다.
Qwen Code는 이번 주 v0.16.0 정식 버전을 내놓으며 같은 방향으로 세 걸음을 나아갔습니다:
- 스스로 달립니다 — /goal에 독립적인 judge 모델을 붙여 완료를 판정하고, 달성 불가능한 목표는 감지하면 스스로 포기합니다.
- 덜 방해합니다 — Auto Approval이 LLM 분류기로 작업 위험도를 자동으로 판정해, 저위험 작업은 확인 창 없이 그대로 통과시킵니다.
- 안전하게 달립니다 — Worktree 격리가 Phase C까지 나아갔고, 세션 영속화 + 세 가지 복구 모드를 지원합니다.
✨ 새로운 기능
/goal: 목표를 정하면 Agent가 끝까지 스스로 코딩합니다
Claude Code가 방금 /goal을 내놨고, Qwen Code가 바로 따라왔습니다. 다만 한 겹 더 얹었습니다. 독립적인 judge 모델이 매 라운드가 끝날 때마다 ‘목표에 도달했는가’를 평가합니다. 실행 모델이 스스로 다 했다고 판단하는 방식이 아닙니다.
/goal "모든 테스트를 Jest에서 Vitest로 마이그레이션"처럼 입력하면 Agent가 자율 코딩을 시작합니다. 한 라운드를 끝낼 때마다 judge 모델이 목표 상태를 확인합니다. 도달 조건이 채워지면 자동으로 멈추고, 채워지지 않으면 다음 라운드로 넘어갑니다. judge가 현재 컨텍스트로는 달성 불가능하다고 판단하면 (필수 의존성이 없거나 권한이 부족한 경우 등) 스스로 포기하고 그 이유까지 알려줍니다 — 무한 루프로 돌면서 token을 낭비하지 않습니다.
이걸로 할 수 있는 일:
- 대규모 마이그레이션, 리팩터링 같은 다단계 작업을 목표만 정해 놓고 Agent에게 맡기세요. 라운드마다 손으로 확인할 필요가 없습니다
- judge가 실행 모델과 독립적으로 판단하므로 ‘자기가 다 했다고 말하는’ 편향을 피할 수 있습니다
- 달성 불가능한 목표는 자동으로 포기해 token을 헛되이 쓰지 않습니다
- 비인터랙션 모드와 스트리밍 이벤트 출력을 지원합니다. CI/CD 파이프라인에 붙일 수 있습니다
Auto Approval: LLM 분류기가 저위험 작업을 자동으로 통과시킵니다
Agent를 쓰면서 가장 까탈스러운 구석이 이겁니다. 파일을 하나 쓸 때마다, shell 명령을 하나 실행할 때마다 Y를 눌러야 합니다. 안전하긴 한데 끊기는 맛이 너무 강합니다. 특히 Agent가 /goal로 자율 실행 중일 때 옆에 사람이 없으면 확인 자체가 불가능합니다.
Auto Approval 모드는 LLM 분류기로 각 작업의 위험 단계를 매깁니다. 저위험(파일 읽기, 테스트 실행, 기존 파일의 작은 수정)은 자동으로 통과하고, 고위험(파일 삭제, 알 수 없는 스크립트 실행, 설정 변경)은 여전히 확인 창을 띄웁니다. 전략만 정해 두면 Agent가 자율 실행 중에 가로막히지 않습니다.
이걸로 할 수 있는 일:
- 켜 두면 저위험 작업은 자동으로 통과합니다. 하나씩 Y를 누르지 않아도 됩니다
/goal과 함께 쓰세요 — Agent가 긴 작업을 자율 실행할 때 확인을 기다리다 멈추는 일이 없습니다- 위험 분류는 조정 가능합니다. 기업 환경에서는 전략을 더 조일 수 있습니다
관련 PR: #4151

Worktree 격리: Agent가 독립 작업 트리 안에서만 다룹니다
지난주에는 /branch를 만들었습니다 — 대화 단위 격리로, 한 세션 안에서 여러 탐색 갈래를 나누고 서로 간섭하지 않게 합니다. 이번 주 한 층 더 내려갑니다. 파일 단위 격리입니다.
Agent가 코드를 고칠 때 가장 무서운 게 뭘까요? 메인 브랜치를 망가뜨리는 것입니다. 복잡한 리팩터링일수록 더합니다. Agent가 신나게 작업하더니 방향이 틀렸다는 걸 깨닫고 하나씩 revert해야 합니다. /branch는 ‘대화 컨텍스트를 어떻게 격리할까’를 풀었고, Worktree는 ‘코드 변경을 어떻게 격리할까’를 풉니다.
Worktree 지원으로 Agent가 Git worktree 안에서 격리 작업합니다. worktree에 들어가면 모든 파일 수정과 명령 실행이 독립 작업 트리로 제한되고, 메인 브랜치는 건드리지 않습니다. 마음에 들면 병합하고, 아니면 그냥 버리면 됩니다.
이번 주 Phase C까지 바로 진척됐습니다. worktree 세션 영속화, hooksPath 자동 설정, 하단 상태 표시줄에 현재 worktree 정보 표시, 종료 시 확인 대화상자. /resume으로 복구할 때 세 가지 모드를 제공합니다 — 대화+코드 복구, 대화만 복구, 코드만 복구.
이걸로 할 수 있는 일:
- Agent가 실험적인 변경을 해도 메인 브랜치는 오염되지 않습니다
/goal+ Auto Approval과 함께 — Agent가 격리 환경에서 큰 목표를 완전히 자율적으로 끝내게 하세요- Worktree 세션은 영속화되므로 종료 후
/resume으로 이어서 작업할 수 있습니다 - 하단 표시줄에 지금 어느 worktree에 있는지 실시간으로 떠서 헷갈릴 일이 없습니다
/rewind 파일 복구
/rewind는 지금까지 대화를 되돌리는 기능이었습니다. 이제 파일도 복구합니다. 어떤 작업 지점으로 되돌아가면 파일 내용까지 그 시점 상태로 함께 복구됩니다. 되돌릴 때 세 가지 선택지를 제공합니다 — ‘코드와 대화 복구’, ‘대화만 복구’, ‘코드만 복구’. 그리고 +N -N in M files 변경 통계를 함께 띄워 판단을 도와줍니다.
이걸로 할 수 있는 일:
- Agent가 파일 5개를 고친 뒤 3번째 단계에서부터 틀렸음을 알아채면,
/rewind로 3번째 단계 앞에 서고 파일도 따라 복구됩니다 git checkout으로 파일을 하나씩 되돌릴 필요 없이 명령 한 번으로 끝납니다git stash보다 정밀합니다 — 대화 속 특정 라운드의 정확한 상태로 복구합니다- IDE 모드에서
/rewind가 비활성화되면 이유를 분명히 알려줍니다. 소리 소문 없이 실패하지 않습니다

VSCode 플러그인: 이미 보낸 메시지 수정 가능
보내 놓은 질문의 설명이 부족하다고 느꼈나요? /rewind 하고 처음부터 다시 입력할 필요가 없습니다. 그 메시지를 바로 고치면 Agent가 바뀐 질문으로 다시 실행합니다. 로컬 스냅샷이 사라진 경우에도 수정이 더 이상 오류를 내지 않고, 서버 측 복구로 자동으로 fallback합니다.
이걸로 할 수 있는 일:
- 질문 설명이 정밀하지 않다면 그 메시지를 바로 고치세요. Agent가 새 질문으로 다시 생성합니다
- ‘질문 고치기 → 다시 생성’이 한 번에 끝납니다. 손으로
/rewind하지 않아도 됩니다 - 로컬 스냅샷이 유실돼도 수정이 실패하지 않고, 서버 측 복구를 자동으로 시도합니다
관련 PR: #4147
Hooks 강화: Todo 생명주기 + Prompt Hook
Hooks 시스템에 이번 주 이벤트가 두 종류 추가됐습니다.
TodoCreated / TodoCompleted: Agent가 할 일을 만들거나 끝낼 때 발동합니다. todo가 끝날 때 자동으로 알림을 보내거나, 로그를 남기거나, CI까지 돌릴 수 있습니다.
Prompt Hook: type: "prompt" hook 타입이 새로 생겼습니다. LLM으로 hook 입력을 평가해 결정을 돌려줍니다. $ARGUMENTS 자리표시자로 컨텍스트를 주입할 수 있고, 모든 hook 이벤트에 쓸 수 있습니다.
이걸로 할 수 있는 일:
- Todo가 끝났을 때 Slack / DingTalk으로 자동 알림
- 파일 삭제 전에 강제로 한 번 더 확인시키고, 누가 작업을 실행했는지 로그로 기록
- Prompt Hook으로 기업 수준의 입력 감사 — 규정에 맞지 않는 지시가 모델에 닿기 전에 막아냅니다
ModelScope 내장 연동
중국 개발자들이 한 번의 클릭으로 쓸 수 있는 모델 공급처가 하나 늘었습니다. ModelScope가 내장 서드파티 API provider로 들어와, /auth에서 바로 선택하고 설정하면 쓸 수 있습니다.
이걸로 할 수 있는 일:
- endpoint를 손으로 설정하지 않아도 됩니다.
/auth메뉴에서 ModelScope를 고르세요 - 중국 본토에서 직결되므로 지연이 더 낮습니다
- ModelScope 플랫폼의 호환 모델은 대부분 쓸 수 있습니다
관련 PR: #4150

상태 표시줄 프리셋 테마: 터미널 꾸미기 한 번에 전환
터미널 도구가 반드시 검정 배경에 흰 글자일 필요는 없습니다. Qwen Code에는 여러 status line 스타일 프리셋이 들어 있고, 대화상자로 골라 전환할 수 있습니다 — 정보 밀도, 색상 조합, 표시 항목이 저마다 다릅니다.
이걸로 할 수 있는 일:
- 대화상자로 여러 상태 표시줄 테마를 미리 보고 전환
- 정보 밀도 선택 가능: 간소 모드는 모델명만, 상세 모드는 token 수와 소요 시간까지
- 선택이 설정에 저장되므로 매번 다시 설정하지 않아도 됩니다
관련 PR: #4120

/stuck + /doctor: 내장 진단 도구 세트
Agent가 달다가 멈췄습니다 — 모델 요청 제한? MCP가 죽은 건가? 컨텍스트가 넘친 건가? Memory는 오래 쓰다 보면 무엇을 얼마나 기억했는지, 이상한 게 섞였는지 알 수 없습니다. 전에는 추측만 했다면, 지금은 서로 다른 층위를 덮는 내장 진단 명령이 두 개 있습니다.
/stuck — 세션 단위 진단입니다. 세션이 응답하지 않을 때 입력하면 요청 제한, MCP 연결, 메모리 압력 같은 문제를 자동 감지하고 수리 방법을 제안합니다.
/doctor — 메모리 단위 진단입니다. memory 파일 개수와 용량, 건강 상태를 보여주고, 비정상적으로 큰 memory 파일을 찾아 정리를 권하며, Agent 기억이 부정확해지는 원인을 파헤칩니다.
이걸로 할 수 있는 일:
/stuck: 세션이 멈췄을 때 명령 한 번으로 원인 탐색. 로그를 뒤질 필요가 없습니다/doctor: memory 건강 상태를 주기적으로 점검해, 기억이 불어나 응답 품질을 해치는 것을 막습니다- 둘을 함께 —
/stuck은 실시간 문제를,/doctor는 만성 문제를 봅니다

그 외 새로운 기능
| 기능 | PR | 사용자에게 미치는 영향 |
|---|---|---|
| NotebookEdit 도구: Jupyter notebook 네이티브 편집 지원 | #3900 | Agent가 .ipynb 파일을 바로 편집합니다. 데이터 과학 워크플로와 매끄럽게 이어집니다 |
| per-turn /diff: 라운드별 인터랙티브 diff | #4277 | 라운드가 끝날 때마다 변경을 확인할 수 있고, 라운드 단위까지 정확합니다 |
| Git status를 system prompt에 주입 | #4110 | Agent가 현재 브랜치와 미커밋 변경을 자동으로 인지해 판단이 더 정확합니다 |
| Ctrl+P/N 입력 이력 이동: readline 스타일 단축키로 과거 입력을 넘겨봄 | #4082 | Emacs/zsh 사용 습관을 그대로 가져올 수 있습니다 |
| /delete 일괄 삭제: 여러 세션을 한 번에 골라 정리 | #3733 | 과거 세션이 많아도 하나씩 지울 필요가 없습니다 |
| /export 출력 디렉터리 지정 | #4193 | 내보낸 파일을 원하는 위치에 놓습니다 |
| Qwen3.6-35B-A3B 이미지/비디오 지원 | #4106 | 로컬 양자화 모델도 멀티모달 입력을 처리합니다 |
| Daemon 모드 완성: 권한 라우팅, heartbeat, 클라이언트 신원 인증, debug 페이지 | #4232 , #4235 , #4132 | HTTP daemon이 실제 운영 수준으로 올라섰고, Web UI / IM bot을 안전하게 붙일 수 있습니다 |
| Ctrl+X가 /editor 선호를 따릅니다 | #4310 | 외부 편집기가 /editor로 설정한 대로 열립니다 |
| Skill priority 정렬 | #4155 | SKILL.md에 priority 필드를 넣어 표시 순서를 조절합니다 |
| 독립 설치 방식 | #3828 | Node.js 환경 없이 한 번의 설치로 바로 사용합니다 |
| atomicWriteFile: Write/Edit 도구 원자적 쓰기 | #4096 | 쓰기가 끊겨도 반쯤 쓰인 파일이 남지 않아 데이터가 더 안전합니다 |
| /auth 통합 개편: Connect a Provider 흐름 | #4287 | 인증 설정이 명확해지고, 모든 모델 제공자를 한 곳에서 관리합니다 |
📊 최적화 개선
| PR | 최적화 내용 | 사용자에게 미치는 영향 |
|---|---|---|
| #4070 | lowlight를 code-split 처리해 시작 시 V8 파싱 오버헤드 감소 | 시작이 더 빨라집니다 |
| #4101 | 압축 요약 만들기 전에 인라인 미디어 제거 | 컨텍스트 압축 품질이 올라가고 이미지 base64에 token을 낭비하지 않습니다 |
| #4086 | Explore 서브 Agent에 fastModel 사용 | 탐색성 하위 작업은 작은 모델을 써서 비용을 아끼고 품질은 떨어지지 않습니다 |
| #4186 | 힙 메모리 압력 시 자동 압축 안전망 | 극단적으로 긴 대화에서 더 이상 OOM으로 크래시하지 않습니다 |
| #4172 | auto-memory recall을 메인 요청 경로에서 분리 | 기억 회상이 첫 응답을 늦추지 않습니다 |
| #4125 | 백그라운드 작업 결과 잘라내기 + 최신 우선 표시 | 백그라운드 작업 패널이 명확해지고 최신 결과가 맨 위에 있습니다 |
| #4153 | cross-auth fast models을 서브 Agent까지 확장 | 서브 Agent도 fastModel을 써서 비용을 아낄 수 있습니다 |
🔧 주요 수정 사항
| PR | 수정 내용 | 사용자에게 미치는 영향 |
|---|---|---|
| #4143 | /language 전환이 즉시 반영, 재시작 불필요 | 언어를 바꿔도 세션을 다시 시작하지 않습니다 |
| #4147 | VSCode에서 thinking 상태 유지 + 편집 스냅샷 복구 | VSCode에서 Agent의 사고 과정이 사라지지 않습니다 |
| #4059 | MinTTY에서 Ctrl+Backspace를 앞 단어 삭제로 정확히 처리 | Windows MinTTY 터미널 단축키가 정상 동작합니다 |
| #4130 | VSCode diff가 기존 에디터 그룹 재사용 | diff를 열 때마다 강제로 새 열이 생기지 않습니다 |
| #4166 | progressive MCP 도구를 모델 systemInstruction에 갱신 | 백그라운드에서 발견된 MCP 도구를 모델이 올바르게 호출합니다 |
| #3980 | IDE 컨텍스트를 사용자 prompt에 올바르게 병합 | IDE 모드에서 Agent가 지금 열어 둔 파일을 봅니다 |
| #4023 | 취소 후 prompt 자동 복원 + 대기열 유지 | Ctrl+C 뒤에 입력해 둔 내용을 잃지 않습니다 |
| #4121 | Anthropic tool_result 블록에서 cache_control 허용 | Claude 모델의 prompt cache가 더 안정적입니다 |
| #4157 | DashScope provider hostname 인식 규칙 확장 | 기업이 자체 구축한 DashScope gateway도 올바르게 인식합니다 |
| #4129 | 번체 중국어 번역을 전통 중국어 관례에 맞게 수정 | zh-TW 사용자 화면이 더 자연스럽습니다 |
| #3896 | OpenAI stream deltas 누적 정규화 | OpenAI 모델 사용 시 스트리밍 출력이 더 안정적입니다 |
| #4286 | structuredClone을 얕은 복사로 교체해 장시간 세션 OOM 방지 | 긴 대화에서 깊은 복사 비용으로 메모리가 넘치지 않습니다 |
| #4294 | Qwen3 reasoning을 발신 히스토리에 올바르게 미러링 | Qwen3 모델 사용 시 thought chain이 온전히 보존됩니다 |
| #4243 | idle microcompaction이 read-before-write 상태 보존 | 유휴 압축이 파일 편집 검사를 더 이상 망가뜨리지 않습니다 |
| #4213 | tool name migrations를 dispatch 시점에 적용 | 구버전 도구명이 새 이름으로 자동 매핑되고 오류가 나지 않습니다 |
👋 신규 기여자 환영
- @ZevGit — 런타임 fetch options 오류 처리 개선 (#3997 )
- @Col0ring — ModelScope 내장 서드파티 API provider (#4150 )
- @Dinsmoor — Qwen3.6-35B-A3B 양자화 변형의 이미지/비디오 지원 (#4106 )
- @xmillogx-cmd — 빌드/테스트 시 cache 상한으로 OOM 방지 (#4188 )
- @shenyankm — Plan Mode 출력 디렉터리 설정 가능 (#4062 )
- @jifeng — Daemon /demo 디버그 페이지 (#4132 )
- @Alexxigang — Qwen3 reasoning 발신 히스토리 미러링 수정 (#4294 )
- @ideal — Pin fetch to bundled undici 호환성 수정 (#4238 )
업데이트 방법: npm i @qwen-code/qwen-code@latest -g를 실행하면 최신 버전으로 업데이트할 수 있습니다.
문제나 제안이 있다면 GitHub Issues 로 알려 주세요!