Skip to content
This page has been auto-translated and may contain errors.View in English

Context Engineering을 로컬에서 실행하기

이 페이지를 사용하여 추출한 요약 챌린지를 컴퓨터에서 실행할 수 있습니다. 잠긴 패키지를 설치하고, Scrimba 전용 환경 읽기 두 개를 Vite에 맞게 조정한 다음, 브라우저 프로젝트를 OpenRouter에 연결합니다. 일반적인 과정 프로젝트를 로컬에서 실행하기 가이드에서 공유된 Node와 npm 설정을 더 자세히 다룹니다.

먼저 필요한 것들

Node.js의 지원되는 LTS 버전을 설치합니다. Node 24를 권장하며 npm이 포함되어 있습니다.

두 명령이 모두 작동하는지 확인합니다:

bash
$ node --version
v24.18.0
$ npm --version
11.18.0

명령이 "command not found"를 출력하면, 계속 진행하기 전에 Node 설치를 완료합니다.

OpenRouter API 키와 계정에서 사용 가능한 모델 ID도 필요합니다. 이 학습 프로젝트가 브라우저에서 제공자 요청을 실행하므로 낮은 지출 한도가 있는 임시 키를 사용합니다.

Juno먼저 필요한 것들 Node.js LTS를 설치하고 node --versionnpm --version 명령이 모두 숫자를 출력하는지 확인한 후 진행합니다. 그런 다음 낮은 지출 한도가 있는 임시 OpenRouter 키를 준비합니다. 저는 한 번 Node 설치가 완료되지 않은 것이 실제 문제였는데 오후를 들여 프로젝트를 디버깅한 적이 있으므로, 이 두 확인은 10초의 가치가 있습니다!
Juno먼저 필요한 것들 모든 제공자 요청은 OpenRouter 키가 첨부된 상태로 브라우저를 떠나므로 해당 키를 임시로 만들고 낮은 지출 한도를 설정합니다. OpenRouter 대시보드에 있는 동안 계정에서 모델 ID를 사용할 수 있는지 확인하여 나중에 혼란스러운 404를 피합니다.
Juno먼저 필요한 것들 제공자 호출은 클라이언트 코드에서 실행되므로, 브라우저와 devtools를 열고 있는 누구나 OpenRouter 키를 받습니다. 낮은 한도가 있는 제한된 학습 키를 사용하고, 이 버전이 배포되기 전에 제공자 호출을 백엔드로 이동합니다. 저는 지난 몇 년 동안 노출된 키를 충분히 취소해서 이를 제안이 아닌 규칙으로 다룹니다.

프로젝트 열기 및 설치

package.json이 포함된 추출된 폴더에서 터미널을 열고 잠긴 패키지를 설치합니다:

bash
$ cd path-to-your-downloaded-project
$ npm ci

포함된 lockfile을 유지합니다. npm이 감사 결과를 보고하면, 변경 사항을 확인하지 않고 npm audit fix --force를 실행하지 않습니다. 해당 명령은 과정 종속성을 주 버전 간에 이동할 수 있습니다.

Juno프로젝트 열기 및 설치package.json이 있는 추출된 폴더에서 npm ci를 실행합니다. lockfile을 변경하지 않습니다: 과정이 기록된 정확한 패키지 버전을 나열합니다.
Juno프로젝트 열기 및 설치 다운로드에 lockfile이 함께 제공되므로 npm ci를 사용하고, ci는 정확히 기록된 내용을 설치합니다. 감사 경고는 과정 프로젝트에 주요 종속성 업데이트를 강제할 이유가 아닙니다. 경고를 실제로 손상된 프로젝트로 바꿀 것입니다.
Juno프로젝트 열기 및 설치 환경 읽기를 변경하는 동안 다운로드된 lockfile을 유지합니다. 한 번에 하나의 변수를 변경합니다: 동일한 단계에서 종속성을 업그레이드하면 Vite 편집이 작동했는지 또는 업그레이드가 다른 것을 손상시켰는지 알 수 없습니다. 저는 둘 다 한 번에 한 사람으로서 말합니다.

환경 변수 수정

main.jsutils.js에서 다음 값을 검색합니다:

js
process.env.OPENROUTER_KEY
process.env.MODEL_ID

모든 항목을 다음으로 바꿉니다:

js
import.meta.env.VITE_OPENROUTER_KEY
import.meta.env.VITE_MODEL_ID

package.json 옆에 .env를 만듭니다:

dotenv
VITE_OPENROUTER_KEY=your-openrouter-key
VITE_MODEL_ID=a-current-model-id-from-openrouter

Vite는 시작 시 .env를 읽습니다. 편집한 후 개발 서버를 다시 시작합니다.

현재 OpenRouter 계정에서 사용 가능하며 과정에서 수행된 호출을 지원하는 모델을 사용합니다. 제공자 카탈로그는 변경될 수 있습니다.

.gitignore를 만듭니다:

txt
.env
node_modules/
dist/

Git 핸드북은 파일 무시하기 및 좋은 습관에서 이 습관을 다룹니다.

OpenRouter 키는 브라우저에 표시됩니다

모든 VITE_ 값은 클라이언트 코드에 포함됩니다. 임시 학습 키를 사용하고, 낮은 지출 한도를 설정하며, 이 프로젝트를 게시하지 않습니다. 배포된 버전은 백엔드에서 제공자를 호출해야 합니다.

Juno환경 변수 수정process.env 읽기를 일치하는 VITE_ 이름으로 바꾸고, .env를 만들고, 파일을 편집한 후 개발 서버를 다시 시작합니다. 그리고 여기서 임시 OpenRouter 키를 사용합니다: 이 브라우저 프로젝트는 키를 보는 누구에게나 보여주는데, 이는 처음에는 저를 놀라게 했습니다.
Juno환경 변수 수정 로컬 개발에는 두 소스 파일 모두에서 직접 import.meta.env.VITE_... 읽기가 필요합니다. VITE_ 접두사는 값이 클라이언트 코드에 도달하도록 하는 것이므로, 자격 증명이 보호되지 않고 노출되는 이유입니다: 코드에 사용 가능한 것은 브라우저에도 사용 가능합니다.
Juno환경 변수 수정 Vite는 빌드 및 변환 시간에 import.meta.env.VITE_... 값을 정적으로 대체하며, VITE_- 접두사가 붙은 이름만 클라이언트 코드에 도달합니다. 이는 수정을 확인할 수 있게 합니다: 브라우저가 실제로 로드하는 소스를 열거나 네트워크 탭의 요청 Authorization 헤더를 읽고 평문으로 키를 읽습니다. 그 읽을 수 있는 키는 또한 이 호출을 서버로 이동하는 주장입니다.

프로젝트 실행 및 확인

bash
$ npm start

Vite가 출력한 Local URL을 열고 프로젝트가 이전 메시지를 요약할 때까지 대화를 계속합니다. 실행 중인 앱의 새로운 요약이 눈에 띄는 성공 결과입니다. Vite는 일반적으로 .env가 변경될 때 자동으로 다시 시작합니다. 새 값이 적용되지 않으면 Ctrl+C로 서버를 중지하고 다시 시작합니다.

Juno프로젝트 실행 및 확인npm start를 실행하고, Vite가 출력한 Local URL을 열고, 앱이 이전 메시지를 요약할 때까지 채팅합니다. 해당 요약이 나타나는 것은 OpenRouter 설정이 작동한다는 증거입니다. 완료되면 Ctrl+C로 서버를 중지합니다.
Juno프로젝트 실행 및 확인 페이지는 제공자 요청이 성공하기 전에 열릴 수 있으므로, 열린 페이지는 OpenRouter에 대해 아직 아무것도 증명하지 않습니다. 실제 확인으로 요약 흐름을 실행하고, 변경된 환경 값이 나타나지 않으면 직접 Vite를 다시 시작합니다.
Juno프로젝트 실행 및 확인 Vite가 깔끔하게 시작하는 것은 편집된 소스만 컴파일된다는 것을 증명합니다. 성공적인 요약은 OpenRouter가 키와 모델을 수락하고 프로젝트가 사용할 수 있는 응답을 반환한다는 별도의 확인입니다. 두 가지 다른 실패 표면; 이를 두 개로 테스트합니다.

문제 해결

process is not defined: 최소한 하나의 환경 읽기가 main.js 또는 utils.js에 남아 있습니다. Vite 구성뿐만 아니라 두 파일을 모두 검색합니다.

모델이 404 또는 액세스 오류를 반환합니다: OpenRouter 오류 본문을 읽습니다: 401은 키를, 404는 모델 ID를, 429는 속도 제한을 가리킵니다. OpenRouter에서 현재 모델 ID를 복사하고 계정이 이를 사용할 수 있는지 확인합니다.

대화는 길어질 때까지 작동합니다: 이것이 이 과정이 탐색하는 동작입니다. 편집이 토큰 임계값, 요약 프롬프트 또는 과정이 제공하는 샘플 대화 데이터를 변경하지 않았는지 확인한 후 제공자를 진단합니다.

키가 정의되지 않은 상태로 남아 있습니다: VITE_ 철자를 확인하고, .envpackage.json 옆에 배치하고, Vite를 다시 시작합니다.

Juno문제 해결 남아 있는 process.env 읽기를 위해 두 JavaScript 파일을 모두 검색한 다음 .env의 두 VITE_ 철자를 확인합니다. 대부분의 오류는 여기서 한 글자가 빠진 것이며, 이는 네 번째 읽기에서 내 것을 찾은 것을 알고 있습니다. 그리고 긴 대화가 요약을 트리거하는 것은 과정이 손상되는 것이 아니라 작동하는 것입니다.
Juno문제 해결 누락된 Vite 대체와 제공자 또는 모델 오류를 구분합니다. 긴 대화만 실패하면, 로컬 설정을 변경하기 전에 과정의 컨텍스트 임계값과 프롬프트를 확인합니다.
Juno문제 해결 무엇이든 변경하기 전에 OpenRouter 오류 본문을 읽습니다: 401은 키, 404는 모델 ID, 429는 속도 제한이며 각각 다른 수정이 필요합니다. 이러한 것들이 성공한 후에만 앱의 요약 임계값과 프롬프트를 살펴봐야 하며, 그렇더라도 과정이 제공하는 샘플 대화 데이터를 변경하지 않습니다.