diff --git a/docs/development/model-onboarding.md b/docs/development/model-onboarding.md index dde8c53..75bd44d 100644 --- a/docs/development/model-onboarding.md +++ b/docs/development/model-onboarding.md @@ -68,6 +68,15 @@ xgeny model remove qwen-xgen `--token-stdin`, `XGENY_OPENAI_API_KEY`, profile secure store 순서다. Profile credential은 profile URL과 최종 URL이 정확히 같을 때만 사용한다. +Profile 파일 `model-profiles.json`은 platform config directory 아래 app-owned private directory에 둔다. +Linux는 `$XDG_CONFIG_HOME/xgeny` 또는 `$HOME/.config/xgeny`, macOS는 +`$HOME/Library/Application Support/XGENy`, Windows는 `%APPDATA%\XGENy`다. `XGENY_CONFIG_HOME`으로 위치를 +바꿀 수 있으며 state root와 같은 규칙(절대경로, home/config base directory 자체와 `.`/`..` 거부, Unix +`0700`)을 적용한다. `XGENY_STATE_HOME`은 Run state만 옮기므로, 격리된 test나 measurement에서 +`XGENY_STATE_HOME`만 설정하고 `model setup`/`use`/`remove`를 실행하면 사용자의 실제 profile 저장소가 +바뀐다. 저장소를 건드리지 않으려면 `XGENY_CONFIG_HOME`을 함께 설정하거나 `run`/`model check`에 +`--base-url`, `--model`, `--tokenizer`를 명시한다. + Compatibility probe는 production planner와 같은 proposal JSON Schema와 프로필의 출력 token 예산·inference timeout(ADR-0035, 기본 1024 token·300초)을 사용하고 응답을 production과 같은 document 규칙으로 검증한다. Probe는 model에게 schema 밖의 top-level field를 하나 더 넣으라고 요구하므로, strict schema를 실제로 강제하는 provider만 통과한다. Schema를 받아들이지만 강제하지 못하는 provider(예: 문법 컴파일에 실패하고도 200을 반환하는 서버)는 첫 planner call 대신 `model setup`에서 실패한다. Catalog GET만 더 짧은 timeout을 유지한다. Reasoning을 많이 쓰는 model이 최종 JSON 전에 예산을 소진하면 `provider_output_truncated`로 닫으며, rate limit과 구분한다. `model check`는 기본적으로 기존 계약인 catalog GET만 보낸다. `--compatibility`는 strict JSON Schema diff --git a/docs/development/public-local-run-resume.md b/docs/development/public-local-run-resume.md index 549b9bc..405fe78 100644 --- a/docs/development/public-local-run-resume.md +++ b/docs/development/public-local-run-resume.md @@ -10,7 +10,8 @@ workspace mode는 `list-directory`, `stat`, `search-text`, `read-text`, `write-a ## 실행 SQLite 실행 파일이나 server는 필요 없다. 기본 state 위치 대신 격리된 위치를 쓰려면 -`XGENY_STATE_HOME`을 설정한다. API token이 필요한 HTTPS endpoint만 +`XGENY_STATE_HOME`을 설정한다. Model profile 저장소는 별도의 `XGENY_CONFIG_HOME`을 따르며 `XGENY_STATE_HOME`의 +영향을 받지 않는다. API token이 필요한 HTTPS endpoint만 `XGENY_OPENAI_API_KEY`를 사용한다. token을 CLI argument로 전달하지 않는다. 반복 입력을 줄이려면 base URL, model과 tokenizer identity를 각각 `XGENY_OPENAI_BASE_URL`, `XGENY_OPENAI_MODEL`, `XGENY_OPENAI_TOKENIZER`에 둘 수 있다. Tokenizer를 생략하면 model ID를 같은 identity로 사용한다. Planner 호출의 wall-clock 예산과 출력 token 예산은 활성 프로필의 값(ADR-0035, 기본 300초·1024 token)을 따르며 `XGENY_OPENAI_INFERENCE_TIMEOUT`, `XGENY_OPENAI_MAX_OUTPUT_TOKENS`로 덮어쓸 수 있다. 두 값은 request profile digest에 들어가므로 Run 시작과 resume 사이에 바꾸면 `configuration_mismatch`가 된다. diff --git a/docs/getting-started.md b/docs/getting-started.md index 33eeb90..73a8681 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -417,6 +417,12 @@ Run state는 별도로 보존된다. Linux는 `$XDG_STATE_HOME/xgeny` 또는 `$H macOS는 `$HOME/Library/Application Support/XGENy`, Windows는 `%LOCALAPPDATA%\XGENy`를 사용한다. State 삭제는 Run 기록과 durable recovery 정보를 잃으므로 uninstall에 자동 포함하지 않는다. +Model profile 설정 파일(`model-profiles.json`)도 남는다. 위치는 platform config directory로, Linux는 +`$XDG_CONFIG_HOME/xgeny` 또는 `$HOME/.config/xgeny`, macOS는 `$HOME/Library/Application Support/XGENy`, +Windows는 `%APPDATA%\XGENy`다. `XGENY_STATE_HOME`은 Run state만 옮기고 profile 위치는 바꾸지 않으며, +profile 저장소를 격리하려면 `XGENY_CONFIG_HOME`을 따로 설정한다. OS 보안 저장소의 credential까지 +지우려면 삭제 전에 `xgeny model remove `을 실행한다. + ## 문제 해결과 지원 정보 | 증상 | 확인과 조치 |