개발/Visual Studio Code

커맨드 팔레트 30부: VS Code Task 목록을 빠르게 여는 공급자 설정

반응형
VS CODE 초보자 시리즈 · 커맨드 팔레트 30부

Task 목록이 늦을 때 공급자 호출을 줄이는 두 단계 설정

task.quickOpen.showAll과 task.autoDetect의 강도를 구분하고, 영향이 작은 설정부터 적용·측정·복구합니다.

두 단계 Picker를 확인하고, 변경 전후 세 번의 측정값을 기록하며, 직접 정의한 검사 Task를 보존한 채 설정을 되돌릴 수 있습니다.

Task 목록이 느리다고 곧바로 자동 감지를 전부 끄면 필요한 npm·Gulp·TypeScript Task까지 사라질 수 있습니다. 먼저 빠른 두 단계 Picker를 사용하고 측정 결과에 따라 범위를 넓힙니다.

1. 시작하기 전에

난이도는 초급이지만 설정 범위에 따라 자동 감지 Task가 사라질 수 있으므로 백업과 단계별 측정이 필요합니다.

준비할 것

  • 폴더 또는 Workspace — 확인: Explorer와 상태 표시줄에서 현재 폴더 이름을 확인합니다.
  • 신뢰한 Workspace — 확인: Restricted Mode 배너가 없는지 확인합니다.
  • .vscode/settings.json과 .vscode/tasks.json — 확인: 파일을 열거나 만들 위치를 확인합니다.
  • 백업 경로 — 확인: .jcos-bak 사본과 원본을 Compare로 비교할 수 있습니다.

적용 환경 한국어 초보자 · Windows 11 · VS Code Stable 1.135.0 · PowerShell

안전하게 시작하기 변경은 현재 Workspace 범위에서만 수행합니다. task.autoDetect: "off"는 모든 Task Provider의 자동 감지 Task를 숨길 수 있습니다. 중단 조건: 백업 실패, JSON 오류, Restricted Mode, 예상하지 못한 Task 소실.

2. 알아둘 핵심 개념

Task Provider

FACT 확장은 Task Provider를 등록해 Workspace에서 실행 가능한 Task를 계산합니다. 여러 공급자의 결과를 한 번에 기다리면 목록이 늦어질 수 있습니다.

두 단계 Picker

FACT task.quickOpen.showAll은 Boolean, 기본값은 false입니다. false는 최근 Task·직접 구성 Task·공급자 유형을 먼저 보여주고 선택한 유형만 불러옵니다. true는 모든 Task를 먼저 모으는 느린 단일 목록 경로입니다.

전체 자동 감지 Gate

FACT task.autoDetect는 String이며 "on" 또는 "off", 기본값은 "on"입니다. Stable 구현은 값이 정확히 "on"일 때만 공급자의 provideTasks를 호출합니다.

영향 범위 순서

RECOMMENDATION 두 단계 Picker → 느린 공급자별 autoDetect → 전체 task.autoDetect 순서로 조정합니다.

3. 순서대로 진행하기

각 단계의 정상 결과를 확인한 뒤 다음 단계로 이동합니다.

1. 기준 상태와 오류 원문 기록

목적 변경 전 목록 구조와 체감 시간을 보존합니다.

  1. Command Palette에서 Tasks: Run Task를 세 번 열고, Picker가 조작 가능한 순간까지 측정한 뒤 Esc로 닫습니다.

입력 위치 VS Code Command Palette와 개인 메모

baseline_ms = [____, ____, ____]
baseline_median = ____ ms
first_screen = ____________________
정상 결과 같은 조건의 세 측정값과 첫 화면 구조가 기록됩니다.

확인 세 값이 모두 숫자이고 측정 조건이 같은지 확인합니다.

실패 신호 Restricted Mode 안내, 무한 Busy, 확장 오류 알림.

주의 오류 원문을 보존하고 원인은 확인 전 UNKNOWN으로 둡니다. 되돌리기: 아직 설정을 바꾸지 않았으므로 Picker를 닫습니다.

2. 설정과 Task 파일 백업

목적 변경을 파일 단위로 복구할 수 있게 합니다.

  1. 기존 settings.json과 tasks.json이 있으면 각각 .jcos-bak 사본을 만듭니다.

입력 위치 현재 Workspace의 .vscode 폴더

.vscode/settings.json.jcos-bak
.vscode/tasks.json.jcos-bak
정상 결과 원본과 백업의 내용이 일치합니다.

확인 VS Code Compare로 차이 0개를 확인합니다.

실패 신호 백업 경로 충돌, 쓰기 권한 오류, 원본 JSON 오류.

주의 기존 백업을 덮어쓰지 않습니다. 되돌리기: 백업이 확인되지 않으면 이후 파일을 저장하지 않습니다.

3. 직접 구성 Task로 비교 기준 만들기

목적 자동 감지를 꺼도 남아야 할 Task를 만듭니다.

  1. 기존 tasks 배열을 보존하면서 아래 Task를 추가합니다. 파일이 없다면 전체 예시를 사용합니다.

입력 위치 .vscode/tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "JCOS: Picker Check",
      "type": "process",
      "command": "powershell.exe",
      "args": [
        "-NoProfile",
        "-Command",
        "Write-Output 'TASK_PICKER_CHECK_OK'"
      ],
      "problemMatcher": []
    }
  ]
}
정상 결과 Task 목록에 JCOS: Picker Check가 나타나고 실행 시 TASK_PICKER_CHECK_OK가 출력됩니다.

확인 Terminal 출력 원문과 종료 코드 0을 확인합니다.

실패 신호 JSON 빨간 밑줄, PowerShell 오류, Task 미표시.

주의 기존 tasks 배열을 통째로 교체하지 않습니다. 되돌리기: 실습 Task만 제거하거나 백업을 복사합니다.

4. 영향이 작은 두 단계 Picker 적용

목적 모든 Task를 한 번에 모으는 느린 경로를 피합니다.

  1. Preferences: Open Workspace Settings (JSON)을 열고 아래 두 값을 추가하거나 수정합니다.

입력 위치 Workspace Settings JSON

{
  "task.autoDetect": "on",
  "task.quickOpen.showAll": false
}
정상 결과 첫 화면에 최근 Task·직접 구성 Task와 공급자 유형이 표시되고, 유형을 선택한 뒤 해당 Task가 로드됩니다.

확인 Settings UI의 Workspace 탭에서 String/Boolean 자료형을 확인합니다.

실패 신호 모든 자동 감지 Task 소실, 긴 Busy 지속, 잘못된 자료형 경고.

주의 두 Key 외의 설정을 바꾸지 않습니다. 되돌리기: 원래 값이 있었다면 백업 값을 우선합니다.

5. 유형별 로딩 경로 확인

목적 선택한 공급자만 두 번째 화면에서 조회되는지 관찰합니다.

  1. Tasks: Run Task를 열어 검사 Task를 확인한 뒤, 실제로 표시된 공급자 유형 하나를 선택합니다.

입력 위치 Task Picker

first_level = ____________________
selected_provider = ____________________
second_level = ____________________
정상 결과 첫 화면과 공급자별 두 번째 화면이 구분되고 선택 유형의 Task 또는 No <type> tasks found가 나타납니다.

확인 다른 공급자 유형의 Task가 두 번째 화면에 섞이지 않는지 확인합니다.

실패 신호 공급자 선택 전 모든 Task 로딩, 공급자 오류.

주의 낯선 Task는 실행하지 않습니다. 되돌리기: showAll의 Boolean false를 확인하고 Step 4로 돌아갑니다.

6. 동일 조건으로 세 번 다시 측정

목적 현재 Workspace에서 실제 차이를 확인합니다.

  1. Step 1과 같은 조건으로 Picker를 세 번 열고 중앙값 차이를 계산합니다.

입력 위치 Command Palette와 개인 메모

two_level_ms = [____, ____, ____]
two_level_median = ____ ms
difference = baseline_median - two_level_median = ____ ms
정상 결과 두 단계 구조와 비교 가능한 세 값이 기록됩니다.

확인 같은 Workspace·확장 상태·측정 시작점을 사용했는지 확인합니다.

실패 신호 첫 실행만 비정상적으로 느림, 차이가 재현되지 않음.

주의 고정된 향상 폭을 보장하지 않습니다. 되돌리기: 결론을 UNCONFIRMED으로 기록하고 다음 강한 변경을 자동 적용하지 않습니다.

7. 느린 공급자만 먼저 끄기

목적 전체 자동 감지 차단 전에 영향 범위를 좁힙니다.

  1. 느린 유형을 식별한 경우 해당 확장이 공식 제공하는 <provider>.autoDetect Key만 "off"로 바꿉니다.

입력 위치 Workspace Settings JSON 또는 확장 Settings

{
  "npm.autoDetect": "off",
  "task.autoDetect": "on",
  "task.quickOpen.showAll": false
}
정상 결과 지정 공급자의 자동 감지 Task만 사라지고 다른 공급자와 직접 구성 Task는 남습니다.

확인 npm은 실제 확인한 공급자 이름으로만 치환하고, 검사 Task가 남는지 확인합니다.

실패 신호 여러 공급자가 함께 사라짐, Unknown Configuration.

주의 확인하지 못한 Key를 만들지 않습니다. 되돌리기: 추가한 공급자별 Key를 제거하거나 백업 값을 복원합니다.

8. 선택적으로 전체 자동 감지 차단

목적 자동 감지 Task가 전혀 필요 없을 때 모든 provideTasks 호출을 막습니다.

  1. Human Gate — 직접 구성 Task만으로 충분한지 확인한 뒤 task.autoDetect를 "off"로 바꿉니다.

입력 위치 Workspace Settings JSON

{
  "task.autoDetect": "off",
  "task.quickOpen.showAll": false
}
정상 결과 공급자 유형과 자동 감지 Task는 사라지고 JCOS: Picker Check는 남습니다.

확인 검사 Task를 실행해 TASK_PICKER_CHECK_OK, 종료 코드 0을 확인합니다.

실패 신호 필요한 npm/Gulp/TypeScript Task 소실, 직접 구성 Task도 소실.

주의 영향은 현재 범위의 모든 Task Provider입니다. 되돌리기: 즉시 task.autoDetect를 "on"으로 바꾸고 Step 5를 반복합니다.

9. 원래 상태 복구와 회귀 확인

목적 실습 변경만 제거하고 원래 Workspace를 보존합니다.

  1. 백업과 현재 파일을 비교해 추가한 Key와 검사 Task만 제거하거나, Human Gate 후 백업을 원래 이름으로 복사합니다.

입력 위치 .vscode/settings.json, .vscode/tasks.json

{
  "task.autoDetect": "on",
  "task.quickOpen.showAll": false
}
정상 결과 원래 설정과 Task 목록이 복원되고 JSON 오류가 없습니다.

확인 Tasks: Run Task를 다시 열어 필요한 Task와 원래 구조를 확인합니다.

실패 신호 원래 Task 누락, 백업과 차이, JSON 오류.

주의 복구 확인 전 백업을 삭제하지 않습니다. 되돌리기: 추가 편집을 멈추고 .jcos-bak을 읽기 전용으로 비교해 정확히 복사합니다.

4. 완료 확인하기

입력 화면과 독립된 방법을 포함해 결과를 교차 확인합니다.

  • Workspace Settings UI — task.quickOpen.showAll이 Boolean false입니다.
  • Workspace Settings UI — 기본 권장 상태의 task.autoDetect가 String "on"입니다.
  • Task Picker — 첫 화면과 공급자별 두 번째 화면을 구분할 수 있습니다.
  • 측정 메모 — 변경 전후 각각 세 값과 중앙값이 있습니다.
  • 선택적 전체 차단 — 공급자 Task는 사라지고 직접 구성 Task는 남습니다.
  • Terminal — TASK_PICKER_CHECK_OK와 종료 코드 0이 표시됩니다.
  • Rollback — 원래 Settings와 필요한 Task 목록이 복구됩니다.
완료 기준 두 설정의 강도를 구분해 두 단계 Picker부터 적용하고, 측정 결과에 따라 공급자별 또는 전체 자동 감지를 선택하며, 직접 구성 Task와 원래 Workspace를 보존한 채 되돌릴 수 있습니다.

5. 문제가 생겼다면

Picker가 여전히 한 번에 모든 Task를 모음

먼저 확인 task.quickOpen.showAll의 Workspace 값과 Boolean 자료형. 확인 전 원인은 UNKNOWN입니다.

복구 값을 false로 저장하고 Picker를 닫았다 다시 엽니다.

재합류 Step 4 → Step 5.

자동 감지 Task가 모두 사라짐

먼저 확인 task.autoDetect가 "off"인지, Workspace 또는 더 구체적인 범위의 값이 덮어쓰는지 확인합니다.

복구 값을 "on"으로 되돌리고 공급자별 설정을 확인합니다.

재합류 Step 5.

Unknown Configuration이 표시됨

먼저 확인 공급자별 Key 철자와 해당 확장이 실제 설정을 제공하는지 확인합니다.

복구 확인되지 않은 Key를 제거하고 공식 Tasks 문서 또는 확장 문서의 Key만 사용합니다.

재합류 Step 7.

직접 구성 Task도 보이지 않음

먼저 확인 tasks.json 오류 원문, version, tasks 배열과 Workspace Trust를 확인합니다.

복구 백업과 비교해 JSON을 복원하고 신뢰 여부는 사용자가 판단합니다.

재합류 Step 3 → Step 5.

측정값 차이가 일정하지 않음

먼저 확인 같은 Workspace, 확장 상태와 측정 조건인지 확인합니다.

복구 결론을 UNCONFIRMED으로 두고 다시 측정합니다. 개선이 없으면 기본값으로 복구합니다.

재합류 Step 6.

핵심 판단 원인을 확인하지 못하면 오류 원문과 측정값을 보존하고 임의 변경 없이 중단합니다.

6. 핵심 정리와 공식 자료

  • FACT — task.quickOpen.showAll: false는 기본값이며 빠른 두 단계 Picker를 사용합니다.
  • FACT — task.autoDetect: "off"는 모든 Task Provider의 provideTasks 호출을 막습니다.
  • RECOMMENDATION — 두 단계 Picker → 공급자별 자동 감지 → 전체 자동 감지 순서로 영향 범위를 넓힙니다.
  • UNCONFIRMED — 실제 시간 단축 폭은 Workspace, 확장과 캐시 상태에 따라 달라 고정값을 보장할 수 없습니다.

공식 자료

아래 자료는 2026-08-30 Asia/Seoul, VS Code Stable 1.135.0과 commit 08d4889f9ec4a1685d257b9b95de036c8e1ce1e5 기준으로 확인했습니다. UI 문구와 공급자별 Key는 언어 팩·확장 버전에 따라 달라질 수 있으며 실제 Settings와 공식 확장 문서를 우선합니다.

다음 편 예고 커맨드 팔레트 31부 — 자주 쓴 Task를 최근 항목으로 빠르게 다시 찾기. task.quickOpen.history의 Integer 자료형, 기본값 30, 범위 0~30, 최근 Task 목록 확인과 Rollback을 다룹니다.
반응형
이 글이 유용했다면 링크를 공유해 보세요.