ltcai 0.1.8 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +141 -289
  2. package/docs/CHANGELOG.md +227 -0
  3. package/docs/architecture.md +121 -0
  4. package/docs/mcp-tools.md +116 -0
  5. package/docs/privacy.md +74 -0
  6. package/docs/public-deploy.md +137 -0
  7. package/docs/security-model.md +121 -0
  8. package/knowledge_graph.py +18 -5
  9. package/ltcai_cli.py +2 -2
  10. package/package.json +1 -1
  11. package/server.py +1140 -280
  12. package/skills/SKILL_TEMPLATE.md +61 -29
  13. package/skills/code_review/SKILL.md +28 -0
  14. package/skills/code_review/examples.md +59 -0
  15. package/skills/code_review/risk.json +9 -0
  16. package/skills/code_review/schema.json +65 -0
  17. package/skills/data_analysis/SKILL.md +28 -0
  18. package/skills/data_analysis/examples.md +62 -0
  19. package/skills/data_analysis/risk.json +9 -0
  20. package/skills/data_analysis/schema.json +61 -0
  21. package/skills/file_edit/SKILL.md +33 -0
  22. package/skills/file_edit/examples.md +45 -0
  23. package/skills/file_edit/risk.json +9 -0
  24. package/skills/file_edit/schema.json +60 -0
  25. package/skills/summarize_document/SKILL.md +68 -0
  26. package/skills/summarize_document/examples.md +65 -0
  27. package/skills/summarize_document/risk.json +9 -0
  28. package/skills/summarize_document/schema.json +71 -0
  29. package/skills/web_search/SKILL.md +28 -0
  30. package/skills/web_search/examples.md +61 -0
  31. package/skills/web_search/risk.json +9 -0
  32. package/skills/web_search/schema.json +62 -0
  33. package/tests/integration/__pycache__/__init__.cpython-314.pyc +0 -0
  34. package/tests/integration/__pycache__/test_api.cpython-314-pytest-9.0.3.pyc +0 -0
  35. package/tests/unit/__pycache__/test_security.cpython-314-pytest-9.0.3.pyc +0 -0
  36. package/tests/unit/__pycache__/test_tools.cpython-314-pytest-9.0.3.pyc +0 -0
  37. package/tests/unit/test_security.py +125 -0
  38. package/tests/unit/test_tools.py +194 -1
  39. package/tools.py +264 -4
package/README.md CHANGED
@@ -1,146 +1,108 @@
1
1
  # Lattice AI
2
2
 
3
- Local/cloud LLM workspace serverApple Silicon MLX, OpenAI-compatible providers, MCP, VS Code/Cursor extension, Telegram bot.
3
+ **개인 AI 워크스페이스 서버**로컬/클라우드 LLM을 UI · VS Code 확장 · Telegram 봇 · MCP 도구 하나로 묶습니다.
4
4
 
5
- ```bash
6
- pip install ltcai # PyPI
7
- npm install -g ltcai # npm
8
- LTCAI # → http://localhost:4825
9
- ```
5
+ Apple Silicon MLX 로컬 추론 · OpenAI/Groq/OpenRouter 클라우드 모델 · Graph RAG · 멀티스텝 에이전트 워크플로
10
6
 
11
- ---
7
+ [![PyPI](https://img.shields.io/pypi/v/ltcai)](https://pypi.org/project/ltcai/)
8
+ [![npm](https://img.shields.io/npm/v/ltcai)](https://www.npmjs.com/package/ltcai)
9
+ [![VS Code](https://img.shields.io/visual-studio-marketplace/v/parktaesoo.ltcai)](https://marketplace.visualstudio.com/items?itemName=parktaesoo.ltcai)
10
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
12
11
 
13
- ## v0.1.8 변경사항
14
-
15
- ### Added
16
- - **PWA (Progressive Web App)** — iPad / Android / Galaxy Tab 홈화면 설치 지원
17
- - `manifest.json` + Service Worker (`sw.js`) + 아이콘 4종 (192px, 512px, apple-touch-icon 180px, favicon 32px)
18
- - iOS Safari: 공유 버튼 → "홈 화면에 추가" → 앱처럼 전체화면 실행
19
- - Android Chrome: 주소창 "설치" 버튼 → 홈화면 앱
20
- - `viewport-fit=cover` — iPhone Dynamic Island / 노치 안전영역 확장
21
- - **서버 네트워크 공개 바인딩** — 기본 host `0.0.0.0`으로 변경
22
- - 같은 Wi-Fi에서 모든 기기(`http://<Mac IP>:4825`)로 바로 접근 가능
23
- - 시작 배너에 로컬 URL + 네트워크 IP 자동 출력
24
- - **Windows 서버 호환성**
25
- - `computer_screenshot`: macOS `screencapture` → Windows/Linux `pyautogui` fallback
26
- - `computer_open_app` / `computer_open_url`: `open -a` / `cmd /c start` / `xdg-open` 플랫폼 자동 분기
12
+ <!-- 스크린샷 / GIF — docs/demo.gif 또는 스크린샷으로 교체하세요 -->
13
+ <!-- ![Lattice AI demo](docs/demo.gif) -->
27
14
 
28
15
  ---
29
16
 
30
- ## v0.1.7 변경사항
17
+ ## 설치 & 첫 실행 (30초)
31
18
 
32
- ### Added
33
- - **모바일 반응형 UI** — 폰/태블릿 화면 크기에 자동 대응
34
- - 사이드바 슬라이드 드로어 (☰ 햄버거 버튼, 오버레이 탭으로 닫기)
35
- - iOS 소프트 키보드 대응 (`100dvh`), 노치/홈바 안전영역 (`safe-area-inset`)
36
- - ops-strip 카드 가로 스크롤 압축, textarea 자동 줌 방지
37
- - 브레이크포인트 3단계: 900px / 768px / 480px
38
-
39
- ---
40
-
41
- ## v0.1.6 변경사항
42
-
43
- ### Added
44
- - **LATTICEAI_ENABLE_GRAPH** 환경변수 — Data Graph를 퍼블릭 배포에서 완전히 비활성화하는 토글 (기본값 `true`)
45
- - `false` 설정 시 모든 그래프 API 404, 인제스트 건너뜀, 사이드바 버튼 자동 숨김
46
-
47
- ---
19
+ ```bash
20
+ # PyPI (클라우드 모델)
21
+ pip install ltcai
48
22
 
49
- ## v0.1.5 변경사항
23
+ # PyPI (Apple Silicon MLX 로컬 모델 포함)
24
+ pip install "ltcai[local]"
50
25
 
51
- ### Added
52
- - **Data Graph** — 채팅·AI 답변·업로드 문서를 SQLite 지식 그래프로 자동 구조화, `/graph`에서 Canvas 기반 Force-directed 시각화
53
- - **Graph RAG** — 그래프 검색 결과를 채팅 컨텍스트에 자동 주입하여 이전 대화·문서 참조 강화
54
- - **Telegram 원격 제어** — 인라인 키보드 메뉴로 상태 조회, 모델 관리, 스크린샷, 그래프 통계 원격 제어
55
- - 어드민 세션 핸드오프 보안 강화 — URL 파라미터 → `sessionStorage` 1회 읽기 방식으로 교체
26
+ # npm (자동 Python 환경 구성)
27
+ npm install -g ltcai
56
28
 
57
- ---
29
+ # 서버 실행
30
+ LTCAI
31
+ # → http://localhost:4825
32
+ ```
58
33
 
59
- ## v0.1.4 변경사항
34
+ **설치 확인:**
60
35
 
61
- ### Added
62
- - 세션 영속성 — 서버 재시작 후에도 로그인 유지
63
- - SSO 로그인 — Entra ID / Okta OIDC 지원 (`OIDC_DISCOVERY_URL`, `OIDC_CLIENT_ID`, `OIDC_CLIENT_SECRET`)
64
- - 채팅 히스토리 검색 — 사이드바 검색창으로 대화 내용 키워드 검색
65
- - 대화 삭제 사이드바 각 대화에 삭제 버튼
66
- - MCP 서버 관리 UI 사이드바 "MCP 관리" 버튼으로 설치/목록 모달
67
- - VS Code 인라인 Diff Edit Selection 결과를 diff로 먼저 확인 후 Apply/Discard
68
- - VS Code 현재 파일 첨부 — `Lattice AI: Attach Current File to Chat` 명령 추가
36
+ ```
37
+ $ LTCAI doctor
38
+ [OK] Python 3.11+: 3.11.9
39
+ [OK] FastAPI: required server dependency
40
+ [OK] Uvicorn: required server dependency
41
+ [OK] OpenAI SDK: required for cloud providers
42
+ [OK] MLX: required for Apple Silicon local models
43
+ [OK] MLX-LM: required for local text models
44
+ [OK] MLX-VLM: required for Gemma/VLM models
45
+ [OPTIONAL] Ollama binary: optional local-server engine
46
+ [OK] Data dir: /Users/you/.ltcai
47
+ [OK] Static UI: /path/to/static
48
+ [INFO] Cloud keys configured: OPENAI_API_KEY
49
+ ```
69
50
 
70
51
  ---
71
52
 
72
- ## v0.1.3 변경사항
53
+ ## 채팅 → VS Code 연결 → Telegram 연결
73
54
 
74
- ### Added
75
- - 프로필 수정 (`PATCH /account/profile`) — 이름·닉네임 변경
76
- - 회원가입 폼 — 비밀번호 확인 필드, 인라인 에러 메시지
77
- - 어드민 패널 초대 링크 섹션 — 원클릭 복사
78
- - 어드민 대시보드 메시지 활동 차트 (Chart.js, 최근 14일)
79
- - 웹 UI 한국어 / 영어 전환 (`🌐 Languages` 버튼, localStorage 저장)
55
+ ### 1단계: 첫 채팅
80
56
 
81
- ### Fixed
82
- - 로그아웃 `/logout` API 호출로 서버 세션 쿠키 정상 만료
83
- - 인증(`account.html`)과 채팅(`chat.html`) UI 분리 레거시 파일 제거
84
- - 채팅 헤더에서 언어 선택 드롭다운이 ops-strip을 가리는 문제 수정
57
+ 1. `http://localhost:4825` 열기
58
+ 2. **회원가입** 번째 계정이 자동으로 admin
59
+ 3. 상단 모델 드롭다운 모델 선택 → 채팅 시작
85
60
 
86
- ---
61
+ 클라우드 모델 사용 시 API 키를 먼저 설정하거나, 어드민 패널에서 입력합니다:
87
62
 
88
- ## v0.1.1 변경사항
63
+ ```bash
64
+ OPENAI_API_KEY=sk-... LTCAI
65
+ ```
89
66
 
90
- ### Added
91
- - 비밀번호 변경 API (`POST /account/change-password`)
92
- - 웹 UI 비밀번호 변경 모달 (헤더 계정 아이콘)
67
+ ### 2단계: VS Code 연결
93
68
 
94
- ---
69
+ 1. VS Code → Extensions → `ltcai` 검색 → Install
70
+ 2. `Cmd+Shift+A` → Lattice AI 채팅 패널 열기
71
+ 3. 기본적으로 `http://localhost:4825` 에 자동 연결됩니다
95
72
 
96
- ## v0.1.0 변경사항
97
-
98
- ### Added
99
- - FastAPI 브릿지 서버 (port 4825)
100
- - Apple Silicon MLX 로컬 모델 지원 (Gemma 4, Qwen 2.5 등)
101
- - 클라우드 모델 지원 (OpenAI, Groq, Together, OpenRouter 등)
102
- - VS Code / Cursor / Antigravity 확장
103
- - Telegram 봇 (로컬 AI 미러 + Codex 클라우드 봇)
104
- - 어드민 패널 (`/admin`)
105
- - P-Reinforce 지식 정원 엔진
106
- - MCP 서버 연동
107
- - Ollama / vLLM / LM Studio / llama.cpp 연동
108
-
109
- ### Security
110
- - 모든 민감 엔드포인트 인증 적용
111
- - SameSite=Lax 쿠키 (CSRF 방어)
112
- - scrypt 비밀번호 해싱
113
- - tempfile 레이스 컨디션 수정
114
- - `run_command()` 위험 플래그 차단
73
+ | 단축키 | 기능 |
74
+ |--------|------|
75
+ | `Cmd+Shift+A` | 채팅 패널 열기 |
76
+ | `Cmd+Shift+E` | 선택 코드 편집 |
77
+ | `Cmd+Shift+M` | 모델 로드 / 전환 |
78
+ | 우클릭 메뉴 | Explain / Edit / Knowledge Garden 저장 |
115
79
 
116
- ---
80
+ ### 3단계: Telegram 봇 연결
117
81
 
118
- ## 아키텍처
82
+ BotFather에서 토큰을 발급받은 후:
119
83
 
84
+ ```bash
85
+ LATTICEAI_TELEGRAM_BOT_TOKEN=your-token LTCAI
120
86
  ```
121
- Lattice AI/
122
- ├── server.py # FastAPI 브릿지 서버 (port 4825)
123
- ├── knowledge_graph.py # SQLite Data Graph + Graph RAG 저장소
124
- ├── llm_router.py # 로컬/클라우드 모델 라우터
125
- ├── tools.py # 워크스페이스 도구 (파일, 터미널, 스크린샷 등)
126
- ├── p_reinforce.py # P-Reinforce 지식 정원 엔진
127
- ├── telegram_bot.py # 로컬 AI Telegram 미러 봇
128
- ├── codex_telegram_bot.py # 클라우드 Codex Telegram 봇
129
- ├── static/ # 웹 UI (indexd.html), 어드민 패널 (admin.html)
130
- ├── bin/ltcai.js # npm CLI entrypoint
131
- ├── pyproject.toml # PyPI 메타데이터
132
- └── vscode-extension/ # VS Code / Cursor / Antigravity 확장
133
- ```
134
-
135
- ---
136
87
 
137
- ## 언어 지원
88
+ 이후 Telegram에서 봇과 대화하면 로컬 AI 서버와 실시간으로 연결됩니다.
138
89
 
139
- 웹 UI는 **한국어 / 영어** 전환을 지원합니다.
90
+ ---
140
91
 
141
- - 로그인 페이지 우측 상단 **🌐 Languages** 버튼
142
- - 메인 화면 헤더 **🌐** 버튼
143
- - 선택한 언어는 브라우저에 저장됩니다
92
+ ## 기능 개요
93
+
94
+ | 기능 | 설명 |
95
+ |------|------|
96
+ | **웹 UI** | 반응형 채팅 + 어드민 패널 + 그래프 시각화 |
97
+ | **VS Code / Cursor 확장** | 채팅, Edit Selection, Diff 뷰, 파일 첨부 |
98
+ | **Telegram 봇** | 로컬 AI 미러 + Codex 클라우드 봇 |
99
+ | **MCP 서버** | Claude Desktop / Cursor에서 직접 도구 사용 |
100
+ | **MLX 로컬 추론** | Apple Silicon에서 Gemma, Qwen, DeepSeek 등 |
101
+ | **클라우드 모델** | OpenAI, Groq, Together, OpenRouter |
102
+ | **Graph RAG** | 채팅·문서를 SQLite 지식 그래프로 자동 구조화 |
103
+ | **에이전트** | 파일 편집·생성, grep, todo, 터미널 (25스텝) |
104
+ | **PWA** | iPad / Android 홈화면 설치 지원 |
105
+ | **SSO** | Entra ID / Okta OIDC |
144
106
 
145
107
  ---
146
108
 
@@ -148,87 +110,58 @@ Lattice AI/
148
110
 
149
111
  | 기능 | macOS (Apple Silicon) | Windows / Linux |
150
112
  |------|:---:|:---:|
151
- | 웹 UI / 클라우드 모델 (OpenAI, Groq 등) | ✅ | ✅ |
113
+ | 웹 UI / 클라우드 모델 | ✅ | ✅ |
152
114
  | VS Code / Cursor 확장 | ✅ | ✅ |
153
115
  | Telegram 봇 | ✅ | ✅ |
154
116
  | MLX 로컬 모델 (Gemma, Qwen 등) | ✅ | ❌ Apple Silicon 전용 |
155
117
  | Ollama / vLLM / LM Studio 연동 | ✅ | ✅ |
156
118
 
157
- > Windows / Linux에서 로컬 모델을 사용하려면 서버 실행 후 웹 UI(`http://localhost:4825`)에서 Ollama 등을 설치할 수 있습니다.
158
-
159
119
  ---
160
120
 
161
- ## 빠른 시작
162
-
163
- ### 설치 & 실행
121
+ ## 로컬 모델 (Apple Silicon)
164
122
 
165
123
  ```bash
166
- # PyPI (기본 — 클라우드 모델만)
167
- pip install ltcai
168
-
169
- # PyPI (Apple Silicon MLX 포함)
170
- pip install "ltcai[local]"
171
-
172
- # npm
173
- npm install -g ltcai
174
-
175
- # 서버 실행
124
+ LATTICEAI_MODE=local \
125
+ LATTICEAI_LOCAL_MODEL=mlx-community/gemma-4-26b-a4b-it-4bit \
176
126
  LTCAI
177
- # → http://localhost:4825
178
127
  ```
179
128
 
180
- #### 개발 모드
181
-
182
- ```bash
183
- python ltcai_cli.py
184
- python ltcai_cli.py --reload # 코드 변경 시 자동 재시작
129
+ ### 추천 모델 (M-series Mac)
185
130
 
186
- LTCAI doctor # 의존성 환경 체크
187
- ```
188
-
189
- npm으로 설치한 경우 실행 `~/.ltcai/npm-python`에 Python 가상환경을 자동으로 생성합니다.
190
- 자동 설치를 끄려면 `LTCAI_SKIP_NPM_BOOTSTRAP=1`을 설정하세요.
191
-
192
- 런타임 데이터는 기본적으로 `~/.ltcai/`에 저장됩니다. 경로 변경: `LATTICEAI_DATA_DIR=/path/to/data`
131
+ | 모델 | 용도 | 크기 | 추천 |
132
+ |------|------|------|------|
133
+ | `mlx-community/gemma-4-26b-a4b-it-4bit` | 범용/코딩 | ~14GB | ⭐⭐⭐⭐⭐ |
134
+ | `mlx-community/Qwen2.5-Coder-32B-Instruct-4bit` | 코딩 | ~18GB | ⭐⭐⭐⭐⭐ |
135
+ | `mlx-community/Qwen2.5-Coder-14B-Instruct-4bit` | 코딩 | ~8GB | ⭐⭐⭐⭐ |
136
+ | `mlx-community/DeepSeek-R1-0528-4bit` | 추론 | ~38GB | ⭐⭐⭐⭐ |
137
+ | `mlx-community/Phi-4-4bit` | 코딩 | ~8GB | ⭐⭐⭐⭐ |
193
138
 
194
- ---
139
+ > **32GB Mac 추천**: `gemma-4-26b-a4b-it-4bit` — 빠르고 뛰어난 범용 성능
195
140
 
196
- ## 로컬 모드 (Apple Silicon)
141
+ ### 멀티모델 핫스왑
197
142
 
198
143
  ```bash
199
- LATTICEAI_MODE=local \
200
- LATTICEAI_LOCAL_MODEL=mlx-community/gemma-4-26b-a4b-it-4bit \
201
- LTCAI
144
+ curl -X POST localhost:4825/models/load \
145
+ -H "Content-Type: application/json" \
146
+ -d '{"model_id": "mlx-community/Qwen2.5-Coder-14B-Instruct-4bit"}'
202
147
  ```
203
148
 
204
- - MLX 로컬 모델 자동 로드
205
- - Telegram 미러 봇 활성화 가능
206
- - 파일/터미널/스크린샷 도구 사용 가능
207
-
208
149
  ---
209
150
 
210
151
  ## 퍼블릭 모드 (클라우드 서버)
211
152
 
212
- Render, Fly.io, Railway, VPS 등에서 운영할 때 사용합니다. MLX를 사용하지 않고 클라우드 모델로 동작합니다.
153
+ Render, Fly.io, Railway, VPS 등에서 운영할 때:
213
154
 
214
155
  ```bash
215
156
  LATTICEAI_MODE=public \
216
157
  LATTICEAI_ALLOW_LOCAL_MODELS=false \
217
- LATTICEAI_ENABLE_TELEGRAM=false \
218
158
  LATTICEAI_PUBLIC_MODEL=openai:gpt-4o-mini \
219
159
  OPENAI_API_KEY=sk-... \
220
160
  LATTICEAI_INVITE_CODE=my-secret-code \
221
161
  LTCAI
222
162
  ```
223
163
 
224
- 지원 클라우드 모델 프리픽스:
225
-
226
- ```
227
- openai:gpt-4o-mini
228
- openrouter:openai/gpt-4o-mini
229
- groq:llama-3.1-8b-instant
230
- together:meta-llama/Llama-3.3-70B-Instruct-Turbo
231
- ```
164
+ 자세한 내용은 [docs/public-deploy.md](docs/public-deploy.md)를 참고하세요.
232
165
 
233
166
  ### Docker
234
167
 
@@ -241,47 +174,36 @@ docker run --rm -p 4825:4825 \
241
174
  lattice-ai
242
175
  ```
243
176
 
244
- ### 퍼블릭 서버 체크리스트
245
-
246
- - `LATTICEAI_MODE=public` 설정
247
- - 클라우드 API 키 설정 (`OPENAI_API_KEY` 등)
248
- - `LATTICEAI_INVITE_CODE`를 비공개 값으로 설정
249
- - `LATTICEAI_ENABLE_GRAPH=false` — Data Graph를 공개 서버에서 숨기려면 설정
250
- - `/data`에 영구 볼륨 마운트
251
- - HTTPS 리버스 프록시 앞에 두기 (nginx, Caddy 등)
252
-
253
177
  ---
254
178
 
255
- ## 모델
256
-
257
- ### 지원 모델 예시 (M-series Mac 기준)
258
-
259
- | 모델 | 용도 | 크기 | 추천도 |
260
- |------|------|------|--------|
261
- | `mlx-community/gemma-4-26b-a4b-it-4bit` | 범용/코딩 | ~14GB | ⭐⭐⭐⭐⭐ |
262
- | `mlx-community/Qwen2.5-Coder-32B-Instruct-4bit` | 코딩 | ~18GB | ⭐⭐⭐⭐⭐ |
263
- | `mlx-community/Qwen2.5-Coder-14B-Instruct-4bit` | 코딩 | ~8GB | ⭐⭐⭐⭐ |
264
- | `mlx-community/Qwen2.5-Coder-7B-Instruct-4bit` | 코딩 | ~4GB | ⭐⭐⭐ |
265
- | `mlx-community/DeepSeek-R1-0528-4bit` | 추론 | ~38GB | ⭐⭐⭐⭐ |
266
- | `mlx-community/Phi-4-4bit` | 코딩 | ~8GB | ⭐⭐⭐⭐ |
267
- | `mlx-community/Llama-3.1-8B-Instruct-4bit` | 범용 | ~4.5GB | ⭐⭐⭐ |
179
+ ## 보안
268
180
 
269
- > **32GB Mac 추천**: gemma-4-26b-a4b-it-4bit빠르고 뛰어난 범용 성능
181
+ - **바인딩**: 기본 `127.0.0.1:4825` (로컬 전용) 같은 Wi-Fi 기기 접근 허용 시 `LATTICEAI_HOST=0.0.0.0` 설정
182
+ - **인증**: 모든 민감 엔드포인트 로그인 세션 필요 (`REQUIRE_AUTH=true` 기본)
183
+ - **세션**: 24시간 TTL + sliding refresh, 서버 디스크 저장 (재시작 후에도 유지)
184
+ - **CORS**: 기본 localhost만 허용 — 외부 허용 시 `LATTICEAI_CORS_ALLOW_NETWORK=true`
185
+ - **API 키**: OS keyring/Keychain 저장 (평문 미저장)
186
+ - **쿠키**: `HttpOnly + SameSite=Lax` (CSRF 방어)
187
+ - **Rate limit**: `/chat` 30/분, `/agent` 6/분, `/upload` 12/분 (per user)
188
+ - **파일 업로드**: magic-number 시그니처 검증 (확장자 위조 차단)
189
+ - **텔레메트리**: 없음. 모든 데이터는 로컬(`~/.ltcai/`)에만 저장됩니다.
270
190
 
271
- ### 멀티모델 핫스왑
191
+ 보안 취약점 제보: [SECURITY.md](SECURITY.md) 참고
272
192
 
273
- ```bash
274
- # 모델 로드
275
- curl -X POST localhost:4825/models/load \
276
- -H "Content-Type: application/json" \
277
- -d '{"model_id": "mlx-community/Qwen2.5-Coder-14B-Instruct-4bit"}'
193
+ ---
278
194
 
279
- # 즉시 전환 (재로드 없음)
280
- curl -X POST localhost:4825/models/switch/mlx-community%2FQwen2.5-Coder-14B-Instruct-4bit
195
+ ## 문제 해결
281
196
 
282
- # 언로드
283
- curl -X DELETE localhost:4825/models/unload/mlx-community%2FQwen2.5-Coder-14B-Instruct-4bit
284
- ```
197
+ | 증상 | 원인 | 해결 |
198
+ |------|------|------|
199
+ | 포트 4825 이미 사용 중 | 이전 프로세스 잔존 | `lsof -i :4825` → `kill <PID>` 또는 `--port 4826` |
200
+ | `ModuleNotFoundError: mlx` | MLX 미설치 | `pip install "ltcai[local]"` (Apple Silicon 전용) |
201
+ | Python 3.10 이하 | 버전 불일치 | Python 3.11+ 필요. `python3 --version` 확인 |
202
+ | `pyautogui` 권한 오류 | macOS 접근성 권한 | 시스템 설정 → 개인정보 보호 → 접근성 → 터미널 허용 |
203
+ | `LTCAI doctor` OPTIONAL 표시 | 선택 의존성 미설치 | 해당 기능 불필요 시 무시 가능 |
204
+ | API 키 없음 경고 | 클라우드 모델 미설정 | `OPENAI_API_KEY=sk-...` 환경변수 또는 어드민 패널에서 입력 |
205
+ | Telegram 봇 응답 없음 | 토큰 미설정 또는 서버 미실행 | `LATTICEAI_TELEGRAM_BOT_TOKEN` 확인, 서버 로그 확인 |
206
+ | iPad / 다른 기기에서 접근 안 됨 | 기본 바인딩 127.0.0.1 | `LATTICEAI_HOST=0.0.0.0 LTCAI` 로 재시작 |
285
207
 
286
208
  ---
287
209
 
@@ -296,84 +218,22 @@ curl -X DELETE localhost:4825/models/unload/mlx-community%2FQwen2.5-Coder-14B-In
296
218
 
297
219
  ```bash
298
220
  cd vscode-extension
299
- npm install
300
- npm run build
301
- npm run package:vsix
302
-
303
- # 설치 (모든 에디터 한 번에)
304
- npm run install:all
305
-
306
- # 또는 에디터에서: Extensions → "..." → "Install from VSIX"
221
+ npm install && npm run build && npm run package:vsix
222
+ # Extensions → "..." → "Install from VSIX"
307
223
  ```
308
224
 
309
- ### 키보드 단축키
310
-
311
- | 단축키 | 기능 |
312
- |--------|------|
313
- | `Cmd+Shift+A` | 채팅 패널 열기 |
314
- | `Cmd+Shift+E` | 선택 코드 편집 |
315
- | `Cmd+Shift+M` | 모델 로드 / 전환 |
316
- | 우클릭 메뉴 | Explain / Edit / Knowledge Garden에 저장 |
317
-
318
- ---
319
-
320
- ## Telegram 봇
321
-
322
- ### 1. 로컬 AI 봇 (local 모드)
323
-
324
- 로컬 Lattice AI 서버와 대화하고 웹 채팅을 Telegram으로 미러링합니다.
325
-
326
- ```bash
327
- LATTICEAI_TELEGRAM_BOT_TOKEN=your-token LTCAI
328
- ```
329
-
330
- ### 2. Codex 클라우드 봇
331
-
332
- Telegram에서 GPT 기반 개발 어시스턴트와 대화하고, 선택적으로 GitHub 이슈를 생성합니다.
333
-
334
- ```bash
335
- CODEX_TELEGRAM_BOT_TOKEN=your-token \
336
- OPENAI_API_KEY=sk-... \
337
- CODEX_OPENAI_MODEL=gpt-4o \
338
- python codex_telegram_bot.py
339
- ```
340
-
341
- Telegram 명령어: `/start` `/reset` `/issue 제목`
342
-
343
- 선택적으로 GitHub 이슈 연동:
344
-
345
- ```bash
346
- GITHUB_TOKEN=ghp-... GITHUB_REPO=owner/repo
347
- ```
348
-
349
- ---
350
-
351
- ## 보안
352
-
353
- - **인증**: 모든 `/tools/*`, `/agent`, `/mcp/*`, `/local/*` 등 민감 엔드포인트는 로그인 세션 필요 (`REQUIRE_AUTH=true` 시)
354
- - **세션**: 7일 TTL, 서버 메모리 저장 (재시작 시 로그아웃)
355
- - **바인딩**: 기본 `127.0.0.1:4825` — 외부 접근 허용 시 명시적으로 `LATTICEAI_HOST=0.0.0.0` 설정
356
- - **CORS**: 기본 localhost만 허용 — 외부 허용 시 `LATTICEAI_CORS_ALLOW_NETWORK=true`
357
- - **API 키**: OS keyring/Keychain 저장 — 평문 저장 허용 시 `LATTICEAI_ALLOW_PLAINTEXT_API_KEYS=true`
358
- - **히스토리**: 저장 전 API key/token/password 패턴 자동 마스킹
359
- - **쿠키**: `HttpOnly + SameSite=Lax` (CSRF 방어)
360
-
361
225
  ---
362
226
 
363
227
  ## 어드민 패널
364
228
 
365
- `http://localhost:4825/admin` — 관리자 계정으로 로그인 후 접근 가능
229
+ `http://localhost:4825/admin` — 관리자 계정으로 로그인 후 접근
366
230
 
367
231
  - 사용자 목록 및 역할 관리 (admin / user)
368
- - 사용자 비활성화 / 삭제
369
- - 대시보드 (메모리, 모델, 시스템 상태)
232
+ - 대시보드 (메모리, 모델, 시스템 상태, 활동 차트)
233
+ - 초대 링크 생성 복사
370
234
 
371
- > **첫 번째로 가입한 계정이 자동으로 admin이 됩니다.** 서버를 처음 실행한 후 `/register` 또는 웹 UI에서 회원가입하면 됩니다. 이후 추가 admin은 어드민 패널에서 지정할 수 있습니다.
372
- >
373
- > 환경변수로 admin을 고정할 수도 있습니다:
374
- > ```bash
375
- > LATTICEAI_ADMIN_EMAILS=you@example.com LTCAI
376
- > ```
235
+ > 번째로 가입한 계정이 자동으로 admin입니다.
236
+ > 환경변수로 고정: `LATTICEAI_ADMIN_EMAILS=you@example.com`
377
237
 
378
238
  ---
379
239
 
@@ -383,7 +243,6 @@ GITHUB_TOKEN=ghp-... GITHUB_REPO=owner/repo
383
243
 
384
244
  ```
385
245
  ~/.ltcai-brain/
386
- ├── INDEX.md
387
246
  ├── 00_Raw/ # 원시 데이터, 아이디어
388
247
  ├── 10_Wiki/ # 검증된 개념, 레퍼런스
389
248
  ├── 20_Skills/ # 코드 스니펫, 프롬프트
@@ -393,27 +252,14 @@ GITHUB_TOKEN=ghp-... GITHUB_REPO=owner/repo
393
252
 
394
253
  에디터에서 텍스트 선택 → 우클릭 → **"Save to Knowledge Garden"**
395
254
 
396
- 또는 API:
397
-
398
- ```bash
399
- curl -X POST localhost:4825/garden \
400
- -H "Content-Type: application/json" \
401
- -d '{"content": "학습한 내용", "category": "10_Wiki"}'
402
- ```
403
-
404
255
  ---
405
256
 
406
257
  ## Data Graph / Graph RAG
407
258
 
408
- 웹 채팅과 AI 답변, 업로드 문서(PDF/DOCX/XLSX/PPTX/TXT/CSV)를 `~/.ltcai/knowledge_graph.sqlite`에 자동 저장합니다.
259
+ 채팅·AI 답변·업로드 문서(PDF/DOCX/XLSX/PPTX/TXT/CSV)를 `~/.ltcai/knowledge_graph.sqlite`에 자동 저장합니다.
409
260
 
410
- - 채팅/AI 답변: `Message`, `AIResponse`, `Person`, `Conversation`, `Topic`, `Decision`, `Task`
411
- - 문서 업로드: `File`, `Chunk`, `Page`, `Slide`, `Sheet`, `Image`, `Topic`
412
- - 원본 파일 blob: `~/.ltcai/knowledge_graph_blobs/`
413
261
  - 시각화: `http://localhost:4825/graph`
414
- - API: `/knowledge-graph/graph`, `/knowledge-graph/search`, `/knowledge-graph/context`
415
-
416
- `/clear`, `/clear_all`, 대화 삭제는 사용자 채팅창만 정리합니다. Data Graph/RAG 데이터와 관리자 감사 로그는 보존됩니다.
262
+ - 검색 RAG 컨텍스트 자동 주입
417
263
 
418
264
  ---
419
265
 
@@ -428,12 +274,12 @@ curl -X POST localhost:4825/garden \
428
274
  | DELETE | `/models/unload/{id}` | 모델 언로드 |
429
275
  | POST | `/chat` | 채팅 생성 (`stream=true/false`) |
430
276
  | POST | `/agent` | 파일 생성/수정 에이전트 |
431
- | POST | `/garden` | 지식 정원 저장 |
432
- | GET | `/garden/tree` | 지식 트리 조회 |
433
277
  | GET | `/tools/list_dir` | 디렉토리 목록 |
434
278
  | POST | `/tools/run_command` | 터미널 명령 실행 |
435
279
  | GET | `/mcp/installed` | 설치된 MCP 목록 |
436
280
 
281
+ 자세한 MCP 도구 목록: [docs/mcp-tools.md](docs/mcp-tools.md)
282
+
437
283
  ---
438
284
 
439
285
  ## 자동 시작 (Mac)
@@ -445,8 +291,7 @@ cat > ~/Library/LaunchAgents/com.ltcai.plist << 'EOF'
445
291
  <plist version="1.0">
446
292
  <dict>
447
293
  <key>Label</key><string>com.ltcai</string>
448
- <key>ProgramArguments</key>
449
- <array>
294
+ <key>ProgramArguments</key><array>
450
295
  <string>/usr/local/bin/LTCAI</string>
451
296
  </array>
452
297
  <key>RunAtLoad</key><true/>
@@ -456,18 +301,25 @@ cat > ~/Library/LaunchAgents/com.ltcai.plist << 'EOF'
456
301
  </dict>
457
302
  </plist>
458
303
  EOF
459
-
460
304
  launchctl load ~/Library/LaunchAgents/com.ltcai.plist
461
305
  ```
462
306
 
463
- 또는 동봉된 스크립트 사용:
464
-
465
- ```bash
466
- ./start_ai.sh # 자동 재시작 + caffeinate (슬립 방지)
467
- ```
307
+ 또는: `./start_ai.sh` (자동 재시작 + caffeinate)
468
308
 
469
309
  ---
470
310
 
311
+ ## 기여
312
+
313
+ [CONTRIBUTING.md](CONTRIBUTING.md)를 참고하세요.
314
+
315
+ ## 보안 취약점 제보
316
+
317
+ [SECURITY.md](SECURITY.md)를 참고하세요.
318
+
319
+ ## 릴리스 노트
320
+
321
+ 현재 버전: **0.1.11** — 자세한 변경 이력은 [docs/CHANGELOG.md](docs/CHANGELOG.md) 참고.
322
+
471
323
  ## 라이선스
472
324
 
473
325
  MIT