Automatic Native Tool Selection - kimjooyoon/meta-ontology-go GitHub Wiki

๋ณ„๋„ 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/[email protected].<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์˜€์Šต๋‹ˆ๋‹ค. ์ด ์—ญ์‹œ ๊ฐ ๋ชจ๋“œ์˜ ๋‹จ์ผ ์Œ ๊ด€์ธก์ž…๋‹ˆ๋‹ค.

์‹ค์ œ ์‚ฌ์šฉ ๊ด€์ธก ยท ์กฐ๊ฑด ๋ณธ๋ฌธ ์‹คํ—˜ ยท ๋‹จ๊ณ„๋ณ„ ๋น„์šฉ ์ฝ๊ธฐ

โš ๏ธ **GitHub.com Fallback** โš ๏ธ