Skip to content

Automatic Native Tool Selection

kimjooyoon edited this page Oct 4, 2026 · 1 revision

별도 Go 경로 설정 없이 바디 실행하기

2026-10-04. 개발 PR #1213과 main PR #1214를 각각 자체 CI·독립 증거 확인 후 병합했습니다. 깨끗한 main 33846f9e에서 CLI와 별도 실행기를 Go1.27.1·SDK v0.2.21로 빌드·설치했습니다. 아래 후보 측정은 36b8c298이며, 설치본의 실제 실행도 따로 확인했습니다. 현재 상태.

소스·레시피·기대값으로 실행

컴파일러 저장소 루트에서 실행합니다. --out에는 새 폴더 이름을 사용합니다.

gooo body-path-run \
  --source examples/body-codegen/condition-path-assembly.gooo.fixture \
  --activity Qualified \
  --path-plan examples/body-codegen/condition-path-assembly.json \
  --cases examples/body-codegen/condition-path-assembly-cases.json \
  --repeat 2 --timing --out condition-results

레시피는 지역값 참조, 조건 분기의 본문 배치, 독립 선언 순서라는 세 가지 이진 선택을 엽니다. 컴파일러가 후보를 만들고 선언된 기대값을 확인한 뒤, 선택한 Go를 곧바로 빌드해 별도 입력으로 두 번 실행합니다. 모델을 지정하지 않으면 선언된 결정론적 탐색 순서를 사용합니다.

기본 실행 도구를 고르는 순서

순서 확인하는 위치 조건
1 PATH의 go 네이티브 Go1.27.1, 현재 운영체제·CPU 구조
2 실행 중인 컴파일러의 GOROOT 안 bin/go 같은 버전·플랫폼
3 로컬 모듈 캐시의 정확한 Go1.27.1 도구체인 경로 같은 버전·플랫폼

경로 정보를 제거한 -trimpath 빌드는 두 번째 위치가 비어 있을 수 있습니다. 세 번째 위치는 GOMODCACHE 환경값, 첫 GOPATH의 pkg/mod, 또는 홈의 go/pkg/mod에서 정합니다. 그 아래 현재 운영체제·CPU 구조에 맞는 golang.org/toolchain@v0.0.1-go1.27.1.<os>-<arch>/bin/go 하나만 확인합니다. 도구를 새로 내려받거나 디스크 전체를 탐색하는 작업은 없습니다.

선택한 도구는 실제 파일 바이트와 go version 응답을 확인한 뒤 사용합니다. run-1-runtime.json의 observation.go_tool_path가 절대 경로, go_tool_selection이 선택 이유를 기록합니다. 모델을 쓰는 요청과 결정론적 요청은 이 같은 실행 절차를 따릅니다.

명시적인 --go-bin /path/to/go1.27.1/bin/go가 있으면 그 도구를 사용합니다. 버전이 다르면 실제 관측값과 오류를 남깁니다. go env -w에만 기록한 별도 캐시를 쓰는 환경에서는 GOMODCACHE 환경값이나 --go-bin으로 위치를 알려주세요. 세 위치에서 사용할 도구를 찾지 못하면 설치·경로 지정 안내가 나옵니다.

자체 모델로 같은 과제 실행

공개 연구 저장소 루트에서는 한영 의도와 자체 소형 모델을 함께 사용할 수 있습니다.

gooo body-path-run \
  --source publication/condition-path-assembly-20261004/source.gooo.fixture \
  --activity Qualified \
  --path-plan publication/condition-path-assembly-20261004/recipe.json \
  --cases publication/condition-path-assembly-20261004/runtime-cases.json \
  --model models/own-three-feedback-v1/set-feedback/models/fp32/model.json \
  --repeat 2 --timing --out condition-model-results

이 과제는 두 번째 지역값을 분기 기준으로 고르도록 의도를 지정합니다. 모델을 생략하고 새 출력 폴더를 주면 같은 기대값으로 결정론적 경로를 관측할 수 있습니다.

실제 사용에서 확인한 변화

동일한 공개 과제를 이전 설치본 7da09722에서 실행했을 때 생성은 선택 사례 5/5를 충족했습니다. 이어진 실행은 PATH의 Go1.26.5에서 멈췄고 별도 기대값 11개는 미관측 상태였습니다. Go1.27.1은 이미 로컬에 설치돼 있었습니다.

첫 자동 선택 구현은 소스 검사에 통과했지만 실제 -trimpath 실행 파일에서 GOROOT를 찾지 못했습니다. 도구 캐시의 정확한 위치를 추가한 뒤 실제 설치 형태의 실행 파일이 Go1.27.1을 선택했습니다.

최종 후보의 실제 실행 자체 소형 모델 결정론
선택 사례 5/5 5/5
평가한 조립 후보 3 2
별도 실행 사례, 각 요청 11/11 11/11
첫 응답 339.649 ms 499.020 ms
아티팩트 재사용 응답 32.608 ms 34.675 ms

각 모드는 요청 두 건을 실행했고, 매 요청에서 네이티브 실행 두 번이 현재 입력과 기대값을 확인했습니다. 선택 경로와 생성 digest는 이전 생성 결과와 같았습니다. 저장 파일과 단계별 시간의 연결 검사도 통과했습니다.

위 시간은 결정론을 먼저 실행하고 모델을 나중에 실행한 단일 첫 실행·재사용 쌍입니다. 빌드 캐시 상태가 다르며, 안정적인 평균이나 모델 속도 우위를 계산하지 않았습니다. 모델 가중치와 학습량은 그대로입니다. 이번 개선은 기존 조립 결과를 실제 실행까지 이어가고, 사용자가 지정할 설정 하나를 줄인 것입니다.

설치한 main 33846f9e에서도 CLI와 별도 실행기가 각각 모델·결정론 요청 두 건을 완료했습니다. 요청마다 별도 실행 11/11과 네이티브 실행 두 번을 확인했고, 모든 요청이 toolchain_cache를 선택했습니다. CLI의 두 모드는 같은 생성 digest를 냈으며 저장 시간·파일 연결 검사도 통과했습니다. 새 설치의 재사용 응답은 모델 32.439ms·결정론 28.481ms였습니다. 이 역시 각 모드의 단일 쌍 관측입니다.

실제 사용 관측 · 조건 본문 실험 · 단계별 비용 읽기

Gooo

배우기

직접 다뤄 보기

원리와 개발

공개 코드와 모델

Clone this wiki locally