Quantum Code
OpenAI 호환 LLM 엔드포인트를 연결해 쓰는 코딩 에이전트 확장입니다.
사내에 구축한 LLM 서빙이나 직접 운영하는 게이트웨이를 그대로 붙여, 코드가 외부로 나가지 않는
환경에서 채팅·코드 생성·파일 수정·명령 실행을 씁니다.
㈜퀀텀씨엔에스(Quantum CNS)
기능
에이전트 채팅 — 워크스페이스를 직접 읽고 고칩니다. 모델이 필요에 따라 도구를 호출하고,
무엇을 실행했는지 패널에 한 줄씩 보입니다.
| 도구 |
하는 일 |
list_dir / find_files |
디렉토리 목록 / glob 검색 |
grep |
파일 내용 정규식 검색 |
read_file |
파일 읽기 (저장 전 편집기 내용 우선) |
edit_file / write_file |
부분 치환 / 새 파일·전면 교체 |
run_command |
셸 명령 실행 — 대화 안에 IN/OUT 블록(기본 3줄, 스크롤·펼치기)으로 명령과 출력이 남고, 그 출력을 모델이 읽어 이어서 판단합니다 |
- 사이드바 · 에디터 탭 양쪽에서 사용 — 활동 바 아이콘은 사이드바, 에디터 오른쪽 위 아이콘은
에디터 탭으로 엽니다. 두 화면은 같은 대화를 함께 보여줍니다(한쪽에 입력하면 양쪽에 반영)
- 이미지 붙여넣기 — 캡처를 입력창에
Cmd+V 로 붙여넣어 질문할 수 있습니다
(모델이 vision 을 지원해야 하며, 붙이기 전 자동으로 크기를 줄여 보냅니다)
- 인라인 코드 완성 — 타이핑 중 ghost text,
Tab 으로 수락
- 선택 영역 편집 —
Cmd+Alt+K / Ctrl+Alt+K 로 지시하면 선택 영역을 고쳐 씁니다
- 폴더별 다중 대화 세션 — 사이드바 기록에서 과거 대화를 골라 열고, 이름 변경·삭제
- 컨텍스트 사용량 미터 — API 실측
usage 기반. 도구 호출마다 갱신되고 70%/90%에 색이 바뀝니다
- 마크다운 렌더 — 표·헤딩·목록·인용·코드블록. 코드블록마다 복사·삽입 버튼
- 대화 구분 — 내 질문은 박스로 감싸져 스크롤해도 상단에 고정되고, 답변은 좌측 타임라인
선으로 이어집니다. 도구 실행·명령마다 선 위에 점이 찍힙니다
- 응답 복사 — 답변에 마우스를 올리면 나타나는 복사 아이콘으로 응답 전체를 담습니다
- 진행 표시 — 실행 중인 도구와 경과 시간을 하단에 표시
- 입력 박스 — 질문·첨부·모델 칩·전송이 한 박스에 묶여 있고, 커서가 들어오면
테두리에 CI 색(녹→적→청)이 흐릅니다 (동작 줄이기 설정 시 정지)
- 입력 이력 — 입력창에서
↑/↓ 로 이전에 보낸 질문을 불러옵니다.
여러 줄을 편집 중일 때는 커서가 첫/끝 줄에 있을 때만 동작하고, 끝까지 내려오면 쓰던 초안이 돌아옵니다
요구사항
| 항목 |
내용 |
| 에디터 |
VS Code 1.85 이상, 또는 같은 계열 포크 |
| LLM 엔드포인트 |
OpenAI 호환 /chat/completions (vLLM · LiteLLM · Ollama · 기타 게이트웨이) |
| API 키 |
해당 엔드포인트의 키 |
도구 호출(에이전트) 기능은 모델이 function calling 을 지원할 때 동작합니다.
지원하지 않는 모델에서는 quantumCode.tools 를 끄면 일반 채팅으로 씁니다.
설정
설치 후 명령 팔레트(Cmd/Ctrl+Shift+P)에서 Quantum Code: 설정 을 실행하면
엔드포인트·모델·API 키를 순서대로 입력받습니다. 또는 설정에서 직접:
{
"quantumCode.baseUrl": "https://your-endpoint.example.com/v1",
"quantumCode.model": "your-model-id"
}
API 키는 설정 파일이 아니라 VS Code SecretStorage(OS 키체인) 에 저장됩니다.
settings.json 에 남지 않으므로 실수로 커밋될 일이 없습니다.
Quantum Code: 연결 테스트 로 엔드포인트·키·모델을 한 번에 확인할 수 있습니다
(사용 가능한 모델 목록과 컨텍스트 한도가 출력 채널에 표시됩니다).
명령
| 명령 |
기본 키 |
Quantum Code: 채팅 열기 |
— (사이드바) |
Quantum Code: 새 탭에서 대화 |
— (에디터 오른쪽 위 아이콘) |
Quantum Code: 선택 영역 편집 |
Cmd+Alt+K / Ctrl+Alt+K |
Quantum Code: 설정 |
— |
Quantum Code: 모델 변경 |
— |
Quantum Code: 연결 테스트 |
— |
Quantum Code: 새 대화 |
— |
Quantum Code: 인라인 완성 켜기/끄기 |
— |
설정 항목
| 키 |
기본값 |
설명 |
quantumCode.baseUrl |
"" (설정 필요) |
OpenAI 호환 엔드포인트 (/v1 포함) |
quantumCode.model |
"" (설정 필요) |
모델 ID (채팅·편집 기본) |
quantumCode.completionModel |
"" |
인라인 완성 전용 모델. 비우면 model 을 씁니다 |
quantumCode.inlineCompletion |
true |
ghost text 코드 완성 |
quantumCode.debounceMs |
400 |
인라인 완성 요청 전 대기 |
quantumCode.maxCompletionTokens |
128 |
인라인 완성 최대 토큰 |
quantumCode.maxEditTokens |
2048 |
선택 영역 편집 최대 토큰 |
quantumCode.maxChatTokens |
16384 |
채팅 응답 최대 토큰(도구 인자 포함) |
quantumCode.tools |
true |
워크스페이스 도구 사용 |
quantumCode.maxHops |
25 |
한 질문당 도구 호출 라운드 상한 |
quantumCode.autoApplyEdits |
true |
파일 수정을 확인 없이 적용, 에디터 탭도 안 엶(되돌리기는 git·Cmd+Z). 끄면 매번 확인 |
quantumCode.saveAfterEdit |
true |
수정 후 저장 |
quantumCode.shell |
true |
run_command 허용 |
quantumCode.autoRunReadOnly |
true |
읽기 전용 명령은 확인 없이 실행 |
quantumCode.shellTimeoutMs |
120000 |
|
quantumCode.showTerminal |
false (전용 터미널 패널 표시) |
명령 타임아웃 |
quantumCode.thinkOnChat / thinkOnEdit |
false |
추론형 모델의 thinking 활성화 |
quantumCode.contextWindow |
0 |
컨텍스트 한도. 0 이면 자동 탐지 |
안전장치
에이전트가 파일을 고치고 명령을 실행하므로, 되돌릴 수 없는 일이 조용히 일어나지 않게 설계했습니다.
- 승인 범위는 대화 단위 —
이 대화에선 모두 적용/허용 은 그 대화에만 적용됩니다.
다른 대화(다른 탭·세션)에는 넘어가지 않고, 대화를 삭제하면 승인도 함께 사라집니다
- 파일 수정은 매번 확인 — 경로와 줄 수 증감을 띄우고 승인받습니다.
WorkspaceEdit 로 적용하므로 Cmd+Z 로 되돌아갑니다
- 읽기만 하는 명령은 확인 없이 실행 —
ls·cat·grep·git status·kubectl get·docker ps 등
허용 목록에 있고 파일로 리다이렉트하거나 명령 치환($())이 없는 경우에 한합니다.
quantumCode.autoRunReadOnly 로 끌 수 있습니다
- 그 밖의 명령은 확인 — 화면을 가리지 않는 알림으로 묻습니다(명령 전문은 대화의 IN 블록에)
- 되돌리기 어려운 명령은 일괄 허용 중에도 매번 재확인 —
rm -rf, sudo, git push --force,
git reset --hard, kubectl delete, terraform destroy, curl | sh, DROP TABLE 등
- 워크스페이스 밖 경로 거부 —
../ 같은 탈출을 차단합니다
- 명령은 워크스페이스 루트에서만 실행되고 타임아웃에 강제 종료됩니다. 채팅 중지 버튼을 누르면 프로세스도 같이 종료됩니다
- 실패·중단은 결과 첫 줄에 명시되어 모델이 다음 단계로 넘어가지 않습니다
- 모델 출력은 항상 이스케이프한 뒤 렌더하며, 링크는
http(s) 만 허용합니다
모델 선택
입력창 아래 모델 칩(예: my-model ▾)을 누르면 채팅창 위에 선택 박스가 열립니다.
현재 쓰는 모델에는 ✓ 가 붙고, 고르면 바로 적용됩니다(Esc 또는 바깥 클릭으로 닫힘).
명령 팔레트의 Quantum Code: 모델 변경 은 VS Code 기본 목록으로 같은 일을 합니다
(현재 쓰는 모델에 현재 사용 중 표시). 엔드포인트·키는 다시 묻지 않습니다.
설정에서 quantumCode.model 을 직접 바꿔도 되고, 바꾸는 즉시 채팅 패널 헤더에 반영됩니다.
인라인 완성만 다른 모델로 쓸 수 있습니다. 완성은 지연이 중요하고 채팅은 품질이 중요해서,
작고 빠른 코드 전용 모델이 있으면 quantumCode.completionModel 에 지정하세요.
비워두면 quantumCode.model 을 그대로 씁니다.
모델을 바꿨는데 실패하면 사유를 사람이 읽을 수 있게 안내합니다 — 크레딧 소진, 제공 중단,
서빙 장애, 권한 없음, 채팅용이 아닌 모델(임베딩·음성) 등을 구분해 알려줍니다.
알려진 한계
- 인라인 완성은 FIM(fill-in-the-middle)이 아니라 프롬프트 방식입니다. 커서 뒤 코드를 간혹 되풀이하면
maxCompletionTokens 를 낮추세요. 다른 인라인 완성 확장이 설치돼 있으면 서로 경쟁합니다
- 채팅 마크다운은 표·헤딩·목록·인용·코드블록을 렌더합니다. 이미지·각주는 렌더하지 않습니다
- 멀티 루트 워크스페이스는 첫 번째 폴더만 대상입니다
- 대화 세션은 폴더당 20개까지 보관합니다
- 붙여넣은 이미지는 대화 중에만 유지되고 저장본에는 남지 않습니다(용량). 창을 닫으면 사라집니다
- 이미지는 한 번에 4장까지, 긴 변 1400px 로 줄여 보냅니다
- 대화형 명령(
vim, 입력 대기)은 run_command 로 실행할 수 없습니다
- 파일 수정 전 diff 미리보기는 없습니다. 승인 대화상자는 줄 수 증감만 보여줍니다
라이선스
LICENSE.txt 참조.