oh-my-llmwikimode 1.0.0

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 (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +494 -0
  3. package/bin/llmwiki.js +1493 -0
  4. package/docs/INSTALLATION.md +228 -0
  5. package/docs/SCOPE_LOCK.md +79 -0
  6. package/docs/STAGE1_GUIDE.md +265 -0
  7. package/docs/STAGE2_AGENT_TEAM_GUIDE.md +141 -0
  8. package/docs/STAGE3_CONVERSATIONAL_GROWTH_GUIDE.md +50 -0
  9. package/docs/TEST_WORKSHEET.md +120 -0
  10. package/docs/github-private-bootstrap.md +53 -0
  11. package/docs/release.md +79 -0
  12. package/docs/stage4-slice1-manual-test.md +259 -0
  13. package/docs/stage4-slice1-user-guide.md +269 -0
  14. package/docs/user-guide-ko.md +452 -0
  15. package/package.json +76 -0
  16. package/scripts/install-llmwiki.ps1 +229 -0
  17. package/src/config.js +74 -0
  18. package/src/curator/browser-data.js +134 -0
  19. package/src/curator/queue.js +324 -0
  20. package/src/curator/schema.js +237 -0
  21. package/src/curator/scoring.js +83 -0
  22. package/src/hooks.js +199 -0
  23. package/src/librarian/schema.js +218 -0
  24. package/src/librarian/weekly-digest.js +478 -0
  25. package/src/security.js +127 -0
  26. package/src/server.js +860 -0
  27. package/src/stage4/graph-reasoning/analyzer.js +255 -0
  28. package/src/stage4/graph-reasoning/browser-data.js +130 -0
  29. package/src/stage4/graph-reasoning/index.js +35 -0
  30. package/src/stage4/graph-reasoning/loader.js +122 -0
  31. package/src/stage4/graph-reasoning/queue.js +154 -0
  32. package/src/stage4/graph-reasoning/schema.js +190 -0
  33. package/src/team/browser-data.js +142 -0
  34. package/src/team/capabilities.js +79 -0
  35. package/src/team/dispatch.js +108 -0
  36. package/src/team/queue.js +290 -0
  37. package/src/team/schema.js +225 -0
  38. package/src/team/shared-memory.js +183 -0
  39. package/src/todo/browser-data.js +71 -0
  40. package/src/todo/queue.js +159 -0
  41. package/src/todo/schema.js +90 -0
  42. package/src/utils/embedding-model.js +111 -0
  43. package/src/wiki/alias-suggestions.js +180 -0
  44. package/src/wiki/browser-data.js +284 -0
  45. package/src/wiki/doctor.js +218 -0
  46. package/src/wiki/entry-normalizer.js +139 -0
  47. package/src/wiki/ingest.js +443 -0
  48. package/src/wiki/lesson-proposal-analyzer.js +463 -0
  49. package/src/wiki/lesson-proposal-manager.js +331 -0
  50. package/src/wiki/lesson-template.js +182 -0
  51. package/src/wiki/lint.js +294 -0
  52. package/src/wiki/notebooklm-adapter.js +264 -0
  53. package/src/wiki/query.js +304 -0
  54. package/src/wiki/raw-manager.js +400 -0
  55. package/src/wiki/search-feedback.js +211 -0
  56. package/src/wiki/semantic-index.js +333 -0
  57. package/src/wiki/semantic-search.js +170 -0
  58. package/src/wiki/source-ledger.js +370 -0
  59. package/src/wiki/store.js +1329 -0
  60. package/src/wiki/usage-events.js +144 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 oh-my-llmwikimode
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,494 @@
1
+ # oh-my-llmwikimode
2
+
3
+ > **AI-Powered Local Wiki Knowledge Workbench for OpenCode** — 당신이 말하면 AI가 알아서 위키를 검색하고, 저장하고, 정리합니다.
4
+
5
+ ## 개요
6
+
7
+ oh-my-llmwikimode는 OpenCode 플러그인으로, **채팅으로 자연어를 말하기만 하면** AI가 알아서 로컬 위키를 관리합니다.
8
+
9
+ CLI 명령어를 외울 필요 없습니다. OpenCode 채팅창에서 말하기만 하세요.
10
+
11
+ ---
12
+
13
+ ## 설치 (AI가 자동으로)
14
+
15
+ ### 방법 1: 채팅으로 설치 (권장)
16
+
17
+ OpenCode 채팅창에서 말하세요:
18
+
19
+ > "oh-my-llmwikimode 플러그인 설치해줘"
20
+
21
+ AI가 자동으로 플러그인을 다운로드하고 설정합니다.
22
+
23
+ ### 방법 2: 수동 설치
24
+
25
+ ```bash
26
+ npm install oh-my-llmwikimode
27
+ ```
28
+
29
+ `opencode.json` 예시:
30
+
31
+ ```json
32
+ {
33
+ "plugin": [
34
+ ["oh-my-llmwikimode", {
35
+ "wikiRoot": "~/Documents/llm-wiki",
36
+ "autoMemoryEnabled": true,
37
+ "autoSearchEnabled": true
38
+ }]
39
+ ]
40
+ }
41
+ ```
42
+
43
+ ### 설치 후 확인
44
+
45
+ > "내 위키 상태 확인해줘"
46
+
47
+ AI가 위키 폴드를 만들고 상태를 보고합니다.
48
+
49
+ ---
50
+
51
+ ## 사용법 — 채팅으로 말하기만 하세요
52
+
53
+ ### 1. 지식 검색
54
+
55
+ **당신이 말하는 것:**
56
+ > "Docker Compose 볼륨 오류가 나는데, 전에 비슷한 문제 해결한 기록 있어?"
57
+
58
+ **AI가 뒤에서 하는 것:**
59
+ ```
60
+ wiki_search(query="docker compose volume error", max_results=3)
61
+ ```
62
+
63
+ **결과:**
64
+ - 위키에서 관련 메모를 찾아서 보여줌
65
+ - 메모의 제목, 태그, 상태, 내용 요약을 제시
66
+ - "이 메모를 참고하세요" 형태로 제안
67
+
68
+ ---
69
+
70
+ ### 2. 지식 저장
71
+
72
+ **당신이 말하는 것:**
73
+ > "방금 해결한 이 방법을 다음에도 참고할 수 있게 저장해줘"
74
+
75
+ **AI가 뒤에서 하는 것:**
76
+ ```
77
+ wiki_store(summary="Docker Compose stale volume 해결",
78
+ details="docker compose down -v 실행 후 재시작",
79
+ tags=["docker", "compose", "troubleshooting"])
80
+ ```
81
+
82
+ **결과:**
83
+ - `inbox/` 폴드에 마크다운 파일로 저장
84
+ - 자동으로 색인 생성
85
+ - "저장 완료: inbox/2026-05-08-docker-compose-stale-volume.md" 알림
86
+
87
+ ---
88
+
89
+ ### 3. 메모 정리 및 승격
90
+
91
+ **당신이 말하는 것:**
92
+ > "inbox에 있는 Docker 메모를 레슨으로 올려줘"
93
+
94
+ **AI가 뒤에서 하는 것:**
95
+ ```
96
+ wiki_promote(path="inbox/2026-05-08-docker-compose-stale-volume.md")
97
+ ```
98
+
99
+ **결과:**
100
+ - `editorial/lessons/`로 이동
101
+ - 상태가 `candidate` → `lesson`으로 변경
102
+ - "승격 완료: editorial/lessons/docker-compose-stale-volume.md" 알림
103
+
104
+ ---
105
+
106
+ ### 4. 위키 전체 분석 (Stage 4)
107
+
108
+ **당신이 말하는 것:**
109
+ > "내 위키에서 연결 안 된 메모들 찾아줘"
110
+
111
+ **실행 방법 (CLI 전용):**
112
+ ```
113
+ npx llmwiki stage4 graph-reasoning analyze
114
+ ```
115
+
116
+ > **참고**: graph reasoning은 CLI로만 사용할 수 있습니다. OpenCode 도구로는 등록되어 있지 않습니다.
117
+
118
+ **결과:**
119
+ - 고립된 메모 목록
120
+ - "이 메모들은 다른 메모와 연결이 없습니다. 링크를 추가하시겠어요?"
121
+
122
+ ---
123
+
124
+ ### 5. 큐레이터 작업
125
+
126
+ **당신이 말하는 것:**
127
+ > "이 두 메모를 하나로 통합 검토해줘"
128
+
129
+ **AI가 뒤에서 하는 것:**
130
+ ```
131
+ wiki_curator_propose_consolidation(
132
+ entries=["inbox/memo1.md", "inbox/memo2.md"],
133
+ rationale="중복 내용 통합 검토"
134
+ )
135
+ ```
136
+
137
+ **결과:**
138
+ - 큐레이터 대기열에 통합 제안 추가
139
+ - 사용자가 승인해야 실제 통합됨 (자동 실행 안 됨)
140
+
141
+ ---
142
+
143
+ ### 6. 주간 요약 (Weekly Digest)
144
+
145
+ **당신이 말하는 것:**
146
+ > "이번 주 위키 요약해줘"
147
+
148
+ **실행 방법 (CLI 전용):**
149
+ ```bash
150
+ npx llmwiki digest generate
151
+ npx llmwiki digest list --json
152
+ npx llmwiki digest show digest_2026-05-09
153
+ ```
154
+
155
+ **결과:**
156
+ - 고립된 메모, 중복 의심 항목, 승격 제안, 방치 메모 분석
157
+ - `.system/digests/`에 아티팩트로 저장
158
+ - 사용자가 검토 후 직접 조치
159
+
160
+ > **참고**: Weekly Digest는 Librarian AI가 위키 건강 상태를 분석하는 CLI 전용 기능입니다.
161
+
162
+ ---
163
+
164
+ ## 일상 사용 시나리오
165
+
166
+ ### 시나리오 1: 문제 해결 중 지식 재사용
167
+
168
+ **당신:** "Spring Boot에서 CORS 오류가 나는데..."
169
+
170
+ **AI:**
171
+ 1. 위키 검색: `wiki_search("spring boot cors error")`
172
+ 2. 관련 메모 발견: "2026-03-15-spring-cors-config.md"
173
+ 3. 해결책 제시: "이 메모에 WebMvcConfigurer 설정이 있어요. 참고하시겠어요?"
174
+ 4. 해결 후: "이번에 새로 알게된 점을 저장할까요?"
175
+
176
+ ### 시나리오 2: 주간 위키 정리
177
+
178
+ **당신:** "이번 주에 쌓인 메모들 정리해줘"
179
+
180
+ **AI:**
181
+ 1. 분석 실행: orphaned, stale, high-connectivity 검출
182
+ 2. 보고: "3개 메모가 고립 상태, 2개가 30일 이상 방치됨"
183
+ 3. 제안: "이 메모들을 연결하거나 레슨으로 승격하시겠어요?"
184
+
185
+ ### 시나리오 3: 간단한 TODO 관리 (기본)
186
+
187
+ **당신:** "이번 주 할 일로 문서 작성 작업 만들어줘"
188
+
189
+ **AI:**
190
+ 1. TODO 생성: `npx llmwiki todo add "문서 작성" --project docs --tags urgent`
191
+ 2. 진행 추적: `npx llmwiki todo list --project docs`
192
+ 3. 완료 처리: `npx llmwiki todo done "문서 작성"`
193
+
194
+ > **참고**: Simple TODO가 기본 작업 관리 방식입니다. Agent Team Kanban(`team` 명령)은 **deprecated** 호환 기능이며, 새 작업에는 `todo`를 사용하세요.
195
+
196
+ ### 시나리오 4: NotebookLM 연구 결과 통합
197
+
198
+ **당신:** "NotebookLM에서 뽑은 React Hooks 리포트를 위키에 넣어줘"
199
+
200
+ **AI:**
201
+ 1. 파일 확인: "C:\Users\USER\Downloads\notebooklm-export 경로가 맞나요?"
202
+ 2. 가져오기: `notebooklm_llmwikiflow(input_path, title="React Hooks Research")`
203
+ 3. 결과: "3개 파일을 가져왔습니다. inbox에 후보 항목이 생성되었습니다."
204
+
205
+ ---
206
+
207
+ ## 고급: CLI 직접 사용 (선택)
208
+
209
+ AI가 처리해주지만, 직접 제어하고 싶을 때:
210
+
211
+ ```bash
212
+ # 위키 상태 점검
213
+ npx llmwiki lint
214
+
215
+ # 코어 상태 점검과 dry-run migration plan
216
+ npx llmwiki doctor --json
217
+
218
+ # 검색 (그래프 확장)
219
+ npx llmwiki query "docker compose error"
220
+
221
+ # 파일 가져오기
222
+ npx llmwiki ingest /path/to/file.md
223
+
224
+ # 원본 자료 가져오기 (CLI 전용, 자동 승격 없음)
225
+ npx llmwiki source-ledger import /path/to/source.md --title "Docker evidence"
226
+ npx llmwiki source-ledger list --json
227
+ npx llmwiki source-ledger search "docker" --json
228
+
229
+ # 그래프 리빌드
230
+ npx llmwiki rebuild
231
+
232
+ # Simple TODO (기본 작업 관리)
233
+ npx llmwiki todo add "문서 작성" --project backend --tags urgent
234
+ npx llmwiki todo list --project backend --json
235
+ npx llmwiki todo done "문서 작성"
236
+ npx llmwiki todo remove "문서 작성"
237
+
238
+ # Weekly Digest (Librarian AI)
239
+ npx llmwiki digest generate
240
+ npx llmwiki digest list --json
241
+ npx llmwiki digest show digest_2026-05-09
242
+
243
+ # Stage 4 분석
244
+ npx llmwiki stage4 graph-reasoning analyze
245
+
246
+ # 검색 피드백 (선택적, B1/B2 sidecar)
247
+ npx llmwiki search-feedback list --json
248
+ npx llmwiki search-feedback record --query "docker volume reset" --result-count 0 --json
249
+ npx llmwiki search-feedback suggest-aliases --json
250
+ ```
251
+
252
+ > **참고**: `search-feedback`는 검색 실패를 기록하고 alias 제안을 생성하는 **선택적** CLI 전용 기능입니다. 제안은 `review_required` 상태로 생성되며 자동으로 적용되지 않습니다.
253
+
254
+ > **참고**: 대부분의 사용자는 CLI를 사용할 필요가 없습니다. 채팅으로 충분합니다.
255
+
256
+ ### Simple TODO (기본 작업 관리)
257
+
258
+ `todo`는 Agent Team Kanban보다 단순한 기본 작업 관리 기능입니다.
259
+
260
+ - TODO는 `.system/todos.json`에 versioned JSON으로 저장됩니다.
261
+ - 사용자가 명시적으로 `todo add`를 실행할 때만 TODO가 생성됩니다.
262
+ - `add`, `done`, `remove` 후에는 `.system/browser-data.json`이 갱신됩니다.
263
+ - 기존 `team` 명령은 deprecated 호환 기능으로 남아 있지만, 새 작업에는 `todo`를 권장합니다.
264
+
265
+ ```bash
266
+ npx llmwiki todo add "문서 작성" --project backend --tags urgent
267
+ npx llmwiki todo list --project backend --json
268
+ npx llmwiki todo done todo_abc123
269
+ npx llmwiki todo remove "문서 작성"
270
+ ```
271
+
272
+ ### 반복 패턴 자동 lesson 제안 (B1 Auto Lesson Proposal)
273
+
274
+ `lesson-proposal`은 사용자가 반복해서 검색하거나 참조하는 주제를 자동으로 감지하여 lesson 제안을 생성하는 CLI 전용 기능입니다.
275
+
276
+ - 제안은 `.system/lesson-proposals/`에 JSON 아티팩트로 저장됩니다.
277
+ - 모든 제안은 `review_required` 상태로 생성되며, **자동으로 승격되지 않습니다**.
278
+ - 원본 항목(inbox/ 문제 메모 등)은 절대 수정되지 않습니다.
279
+ - frontmatter에 `used_count`, `last_used` 등을 기록하지 않습니다.
280
+
281
+ ```bash
282
+ # usage event 분석 후 lesson 제안 생성
283
+ npx llmwiki lesson-proposal analyze
284
+
285
+ # 현재 제안 목록 조회
286
+ npx llmwiki lesson-proposal list --json
287
+
288
+ # 특정 제안 상세 보기
289
+ npx llmwiki lesson-proposal show lp_abc123
290
+
291
+ # 사용자 승인 후 lesson으로 승격
292
+ npx llmwiki lesson-proposal apply lp_abc123
293
+ ```
294
+
295
+ ### 검색 피드백 및 Alias 제안 (Search Feedback)
296
+
297
+ `search-feedback`는 검색 실패를 안전하게 기록하고 review-only alias suggestion을 생성하는 CLI 전용 기능입니다.
298
+
299
+ - 실패한 검색어는 `.system/search-feedback/failures.jsonl`에 append-only로 저장됩니다.
300
+ - API 키, 토큰, 비밀번호는 저장 전 자동으로 마스킹됩니다.
301
+ - `search-feedback suggest-aliases`는 기존 alias/title과 중복되지 않는 제안만 생성합니다.
302
+ - 제안은 `.system/search-feedback/suggestions/`에 `review_required` 상태로 저장되며, **자동으로 적용되지 않습니다**.
303
+ - Markdown entry frontmatter는 변경되지 않습니다.
304
+
305
+ ### 원본 자료 창고 (Source Ledger)
306
+
307
+ `source-ledger`는 검토되지 않은 원본 자료를 `raw/sources/`에 보관하는 CLI 전용 기능입니다.
308
+
309
+ - 원본 자료는 `raw/sources/ledger.jsonl`과 `raw/sources/files/{source_id}/`에 저장됩니다.
310
+ - 자료를 가져와도 `inbox/`, `problems/`, `editorial/lessons/`는 자동으로 변경되지 않습니다.
311
+ - `source-ledger search` 결과는 `review_status: "raw_evidence"`로 표시되며, 검토된 지식(`wiki_search` 결과)과 구분됩니다.
312
+ - 원본 자료를 위키 지식으로 변환하려면 명시적으로 `wiki_ingest`나 수동 편집을 사용해야 합니다.
313
+
314
+ ### 원본 자료 통합 관리 (Raw Folder)
315
+
316
+ `raw/`는 원본 자료와 외부 가져오기를 통합 관리하는 공간입니다. 3개 하위 시스템이 공존합니다:
317
+
318
+ ```text
319
+ raw/
320
+ ├── sources/ # Source Ledger 원본 자료
321
+ │ ├── ledger.jsonl
322
+ │ └── files/{source_id}/
323
+ ├── notebooklm/ # NotebookLM 가져오기 결과
324
+ │ └── imports/{run_id}/
325
+ └── packs/ # Knowledge Pack 원본
326
+ └── {pack_id}/{version}/
327
+ ```
328
+
329
+ **CLI 명령어:**
330
+
331
+ ```bash
332
+ # 전체 raw 항목 목록
333
+ npx llmwiki raw list --json
334
+
335
+ # raw 통계 요약
336
+ npx llmwiki raw status --json
337
+
338
+ # raw 구조 검증 (malformed pack 감지)
339
+ npx llmwiki raw validate --json
340
+ ```
341
+
342
+ - `raw list`는 source-ledger, notebooklm imports, packs를 카테고리별로 보여줍니다.
343
+ - `raw status`는 파일 수와 바이트 수를 카테고리별로 집계합니다.
344
+ - `raw validate`는 `raw/` 디렉터리 구조를 검증하고 malformed pack을 감지합니다 (버전 디렉터리 누락, manifest.json 누락 등).
345
+ - 모든 raw 조회는 read-only이며 curated 영역(inbox/problems/lessons)을 변경하지 않습니다.
346
+
347
+ ---
348
+
349
+ ### 6. 프로젝트별 지식 분류
350
+
351
+ **당신이 말하는 것:**
352
+ > "이 Docker 설정은 'my-web-project' 프로젝트에 저장해줘"
353
+
354
+ **AI가 뒤에서 하는 것:**
355
+ ```
356
+ wiki_store(summary="Docker Compose 설정",
357
+ details="...",
358
+ tags=["docker"],
359
+ project="my-web-project")
360
+ ```
361
+
362
+ **결과:**
363
+ - `projects/my-web-project/inbox/` 폴드에 저장
364
+ - 프로젝트별로 지식이 분리되어 관리됨
365
+ - "my-web-project 관련 메모 보여줘"라고 검색 가능
366
+
367
+ ---
368
+
369
+ ## 프로젝트별 지식 관리
370
+
371
+ 프로젝트별로 지식을 분리하여 관리할 수 있습니다. 이는 여러 프로젝트를 동시에 진행할 때 유용합니다.
372
+
373
+ ### 위키 폴드 구조
374
+
375
+ ```text
376
+ ~/Documents/llm-wiki/
377
+ ├── inbox/ # 기본 메모 (프로젝트 미지정)
378
+ ├── problems/
379
+ ├── editorial/
380
+ │ └── lessons/
381
+ ├── projects/ # 프로젝트별 지식
382
+ │ ├── my-web-project/
383
+ │ │ ├── inbox/
384
+ │ │ ├── problems/
385
+ │ │ └── editorial/
386
+ │ │ └── lessons/
387
+ │ └── another-project/
388
+ │ ├── inbox/
389
+ │ ├── problems/
390
+ │ └── editorial/
391
+ │ └── lessons/
392
+ ├── raw/
393
+ └── .system/
394
+ ```
395
+
396
+ ### 채팅으로 사용하기
397
+
398
+ **저장:**
399
+ > "이 메모를 'backend-api' 프로젝트에 저장해줘"
400
+
401
+ **검색:**
402
+ > "backend-api 프로젝트에서 Docker 관련 메모 찾아줘"
403
+
404
+ **프로젝트 지정 없이 저장:**
405
+ > "이 메모 저장해줘" (기본 inbox/에 저장됨)
406
+
407
+ ### CLI로 사용하기
408
+
409
+ ```bash
410
+ # 파일을 프로젝트 지정하여 가져오기
411
+ npx llmwiki ingest /path/to/memo.md --project my-web-project --tags docker,compose
412
+
413
+ # 전체 위키 검색 (프로젝트 필터는 그래프 확장 검색에서 자동 적용)
414
+ npx llmwiki query "docker" --json
415
+
416
+ # 특정 프로젝트 폴드 구조 확인
417
+ ls ~/Documents/llm-wiki/projects/my-web-project/
418
+
419
+ # 전체 인덱스 재생성 (프로젝트 포함)
420
+ npx llmwiki rebuild
421
+ ```
422
+
423
+ ### 동작 방식
424
+
425
+ - **저장**: `project`를 지정하면 `projects/{project}/inbox/`에 저장됩니다.
426
+ - **검색**: `project`를 지정하면 해당 프로젝트 내에서만 검색합니다.
427
+ - **인덱스**: 프로젝트별 인덱스는 `.system/index.json`에 통합되어 있어, 프로젝트 지정 여부에 따라 필터링됩니다.
428
+ - **역호환**: 기존 메모(프로젝트 미지정)는 그대로 `inbox/`에 저장되며, 프로젝트별 메모와 공존합니다.
429
+
430
+ ---
431
+
432
+ ## 설정 옵션
433
+
434
+ | 옵션 | 기본값 | 설명 |
435
+ |------|--------|------|
436
+ | `wikiRoot` | `~/Documents/llm-wiki` | 위키 폴드 경로 |
437
+ | `autoMemoryEnabled` | `true` | 문제 해결 대화 자동 캡처 |
438
+ | `autoSearchEnabled` | `true` | 시스템 프롬프트에 위키 규칙 주입 |
439
+ | `contextBudget` | `2500` | 검색 결과 최대 문자 수 |
440
+ | `maxEntries` | `3` | 기본 검색 결과 수 |
441
+
442
+ ---
443
+
444
+ ## 보안 및 프라이버시
445
+
446
+ - **자동 캡처**: 문제 해결 대화만 캡처, 일반 대화는 무시
447
+ - **비밀 정보 마스킹**: API 키, 토큰, 비밀번호 자동 삭제 후 저장
448
+ - **신뢰 경계**: 검색 결과는 "신뢰할 수 없는 참고 자료"로 표시되며, 내부 컨텍스트에는 `untrusted reference knowledge` 경계가 포함됩니다.
449
+ - **제외 상태**: `rejected`, `superseded`, `needs-clarification`, `private` 항목은 검색 제외
450
+ - **자동 승격 금지**: 모든 승격/통합/삭제는 사용자 승인 필요
451
+
452
+ ### 로컬 상태 디렉터리
453
+
454
+ 플러그인의 로컬 런타임 상태는 기본적으로 `~/.config/opencode/.llmwikimode/` 아래에 저장됩니다. 위키 원문은 `wikiRoot`에 남고, 상태 디렉터리는 OpenCode 통합에 필요한 보조 데이터만 보관합니다.
455
+
456
+ ---
457
+
458
+ ## 기능 로드맵
459
+
460
+ | 단계 | 기능 | 상태 |
461
+ |------|------|------|
462
+ | Stage 1 | 자동 메모리, 검색, 저장, 승격 | ✅ 완료 |
463
+ | Stage 2 | 에이전트 팀 작업 관리 | ✅ 완료 (deprecated → Simple TODO로 전환) |
464
+ | Stage 3 | 큐레이터 검토 및 제안 | ✅ 완료 |
465
+ | Stage 4 | 그래프 추론 분석 | ✅ 완료 |
466
+ | Phase 1 | Weekly Digest (Librarian) | ✅ 완료 |
467
+ | Phase 1 | Simple TODO (기본 작업 관리) | ✅ 완료 |
468
+ | Phase 1 | 설치 자동화 (`llmwiki init`) | ✅ 완료 |
469
+ | Phase 1 | Search Feedback + Alias | ✅ 완료 (optional) |
470
+
471
+ ---
472
+
473
+ ## 문제 해결
474
+
475
+ ### "위키를 찾을 수 없어요"
476
+ - 위키 폴드가 생성되지 않음 → "위키 폴드 만들어줘"라고 말하세요
477
+
478
+ ### "검색 결과가 안 나와요"
479
+ - 위키에 메모가 없음 → 먼저 몇 개 메모를 저장하세요
480
+ - 그래프가 오래됨 → "위키 그래프 리빌드해줘"라고 말하세요
481
+
482
+ ### "자동 캡처가 안 돼요"
483
+ - `autoMemoryEnabled: false`로 설정됨 → 설정 확인
484
+ - 프라이버시 옵트아웃 문구 감지 → "private", "저장하지 마" 등의 단어가 포함된 경우 스킵
485
+
486
+ ---
487
+
488
+ ## 라이선스
489
+
490
+ MIT
491
+
492
+ ## 릴리스
493
+
494
+ 패키지 릴리스 자동화는 semantic-release 기준을 따릅니다. 실제 GitHub/npm 배포는 별도 승인 절차 이후에만 진행합니다.