-
Notifications
You must be signed in to change notification settings - Fork 0
Automatic Native Tool Selection
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였습니다. 이 역시 각 모드의 단일 쌍 관측입니다.
- 여러 줄 바디 작성
- 선언 안에 본문 조립 의도 적기
- 조립한 활동 본문 연결·실행
- 여러 입력의 순서·합류·일부 연결
- 기록 전달과 필드별 완전성 읽기
- 필드 후보식 조립과 부분 완전성
- 실제 필드 후보식으로 학습한 작은 모델
- 필드별 공유 판단과 조립
- 필드를 순서대로 조립하기
- 파일에서 바디 조립·실행
- 별도 Go 경로 없이 실행
- 반복 조립의 검사·실행 비용
- 바디 조립의 단계별 비용 읽기
- 반복 파일 확인의 메모리 비용 읽기
- 실행 도구 오류 읽기와 다시 실행하기
- 미관측 기대값과 실제 0점 읽기
- 소스·레시피 파일 읽기와 대기
- 조립·실행 기록 비교
- 실험 재현과 결과 읽기
- 모델 결과의 재현과 과거 차이
- 고정 목표로 정책 선택
- 오류 처리 코드 생성
- 수정 프로그램 작성
- 수정 활동 연결
- 생성한 수정안 적용