docs: tighten llm ssot docs and plan

This commit is contained in:
happybell80 2026-03-16 01:07:07 +09:00
parent ff204bafe8
commit 1ae6b7bcde
3 changed files with 59 additions and 0 deletions

View File

@ -105,6 +105,34 @@
- `ir_analyzer.py`의 파일 내부 fallback 배열이 제거되거나 중앙 정책으로 이동합니다.
- `skill-slack`의 하드코딩 모델 문자열이 제거됩니다.
## 적용 순서
1. `rb8001` 공용 경로 정리
- `config.py`, `llm_service.py`, `gemini_handler.py`
2. `rb8001` 우회 경로 제거
- `llm_endpoint.py`, `coldmail_llm_classifier.py`, `ir_analyzer.py`
3. `skill-slack` 모델 선택 정리
- `digest.py`, `action_extractor.py`, `summarizer.py`, 필요 시 `app/core/config.py`
4. 기본값 변경 검증
- `workspace-config/runtime.env`
- 과도기 `rb8001/.env`
- API 입력 `model` override
5. worklog 작성 후 닫힘 선언
## 레포별 경계
- 1차 대상 레포: `robeing/rb8001`
- 2차 대상 레포: `robeing/skill-slack`
- 문서/검증 기록 레포: `robeing/DOCS`
- 한 번에 여러 레포를 한 커밋으로 묶지 않습니다.
## 롤백 경계
- `rb8001` 변경은 `rb8001` 레포 안에서만 롤백 판단합니다.
- `skill-slack` 변경은 `skill-slack` 레포 안에서만 롤백 판단합니다.
- 문서 변경은 `DOCS` 레포 안에서만 롤백 판단합니다.
- 과도기에는 `workspace-config/runtime.env``rb8001/.env`를 이전 값으로 되돌리는 것이 가장 작은 운영 롤백 단위입니다.
## 닫힘 조건
1. 사용자가 "주 모델을 `--`로 바꾸자"라고 했을 때 기본 수정 지점이 `workspace-config/runtime.env`로 답됩니다.

View File

@ -229,6 +229,20 @@ tags: [research, llm, ssot, workspace-config, hardcoding, robeing]
- [skill-slack/app/core/config.py](../../../../skill-slack/app/core/config.py)
- 현재 LLM 기본 모델 설정 자체가 없습니다.
## 확인 사실 요약표
| 항목 | 확인 사실 | 해석 |
|------|-----------|------|
| 기본 설정 진입점 | `rb8001/app/core/config.py``DEFAULT_LLM_MODEL` 존재 | 설정 표면은 이미 있음 |
| 기본 handler 생성 | `rb8001/app/services/llm/llm_service.py``settings.DEFAULT_LLM_MODEL` 사용 | 단일 진입점 후보가 이미 있음 |
| env 우회 | `rb8001/app/services/llm/gemini_handler.py``GEMINI_MODEL` 재조회 | SSOT 파손 |
| router 우회 | `rb8001/app/router/llm_endpoint.py`가 직접 `GeminiHandler` 생성 | 계층 우회 |
| SDK 직결 | `rb8001/app/services/coldmail_llm_classifier.py`가 직접 `genai.GenerativeModel` 생성 | 공용 경로 우회 |
| 파일별 fallback | `rb8001/app/services/ir_analyzer.py`에 fallback 배열 존재 | 정책 분산 |
| API 입력 model | `rb8001/app/services/llm/models.py``LLMRequest.model` 존재 | override 구조는 이미 있음 |
| OpenAI handler | `rb8001/app/services/llm/openai_handler.py` 존재 | provider 추상화 일부 존재 |
| skill-slack 모델 선택 | `digest.py`, `action_extractor.py`, `summarizer.py`에 모델 문자열 존재 | 설정화 또는 정책화 필요 |
## 최소 변경 원칙
### 1. 새 추상화 계층을 더 만들지 않는다

View File

@ -124,6 +124,23 @@ tags: [troubleshooting, workspace-config, ssot, hardcoding, runtime]
- `robeing/DOCS` 변경은 23 제어면에서도 같은 `workspace-config` 해석 규칙을 써야 한다는 기준을 더 분명히 해줍니다.
- 반면 `references/openclaw` 변경은 참고용 업스트림 코드 갱신으로, 23서버의 현재 gateway/nginx/auth/Gitea 런타임에 즉시 영향을 주는 변경은 아닙니다.
### 6. 현재 active runtime 경로 인벤토리
| 구분 | 현재 active 경로 | 현재 역할 | 상태 |
|------|------------------|-----------|------|
| 공용 비민감 설정 | `workspace-config/runtime.env` | 목표 SSOT 경로 | 구조 사용 중 |
| 공용 민감 설정 | `workspace-config/secrets.env` | 공용 secrets 경로 | 구조 사용 중 |
| rb8001 compose 주입 | `rb8001/docker-compose.yml``env_file` | 공용 runtime/secrets 주입 | 사용 중 |
| skill-slack compose 주입 | `skill-slack/docker-compose.yml``env_file` | 공용 runtime/secrets 주입 | 사용 중 |
| rb8001 기본 모델 원천 | `rb8001/.env` | 현재 과도기 실제 공급원 | 제거 대상 |
| rb8001 설정 해석 | `rb8001/app/core/config.py` | `settings.DEFAULT_LLM_MODEL` 노출 | 유지 |
| rb8001 기본 호출 진입점 | `rb8001/app/services/llm/llm_service.py` | 기본 handler 생성 | 유지/정리 |
| 직접 우회 1 | `rb8001/app/services/llm/gemini_handler.py` | `GEMINI_MODEL` env 우회 | 제거 대상 |
| 직접 우회 2 | `rb8001/app/router/llm_endpoint.py` | 직접 `GeminiHandler` 생성 | 제거 대상 |
| 직접 우회 3 | `rb8001/app/services/coldmail_llm_classifier.py` | 직접 Gemini SDK 호출 | 제거 대상 |
| 직접 우회 4 | `rb8001/app/services/ir_analyzer.py` | 파일별 fallback 배열 | 제거 대상 |
| 스킬 하드코딩 | `skill-slack/app/services/*` | 모델 문자열 직접 선택 | 제거 또는 정책화 대상 |
## 영향 범위
- 로컬 개발자가 `WORKSPACE_ROOT``workspace-config` 두 파일만 바꾸면 된다고 믿고 작업해도, 실제 하위 프로젝트에서는 추가 수정이 발생할 수 있습니다.