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.
- package/LICENSE +21 -0
- package/README.md +494 -0
- package/bin/llmwiki.js +1493 -0
- package/docs/INSTALLATION.md +228 -0
- package/docs/SCOPE_LOCK.md +79 -0
- package/docs/STAGE1_GUIDE.md +265 -0
- package/docs/STAGE2_AGENT_TEAM_GUIDE.md +141 -0
- package/docs/STAGE3_CONVERSATIONAL_GROWTH_GUIDE.md +50 -0
- package/docs/TEST_WORKSHEET.md +120 -0
- package/docs/github-private-bootstrap.md +53 -0
- package/docs/release.md +79 -0
- package/docs/stage4-slice1-manual-test.md +259 -0
- package/docs/stage4-slice1-user-guide.md +269 -0
- package/docs/user-guide-ko.md +452 -0
- package/package.json +76 -0
- package/scripts/install-llmwiki.ps1 +229 -0
- package/src/config.js +74 -0
- package/src/curator/browser-data.js +134 -0
- package/src/curator/queue.js +324 -0
- package/src/curator/schema.js +237 -0
- package/src/curator/scoring.js +83 -0
- package/src/hooks.js +199 -0
- package/src/librarian/schema.js +218 -0
- package/src/librarian/weekly-digest.js +478 -0
- package/src/security.js +127 -0
- package/src/server.js +860 -0
- package/src/stage4/graph-reasoning/analyzer.js +255 -0
- package/src/stage4/graph-reasoning/browser-data.js +130 -0
- package/src/stage4/graph-reasoning/index.js +35 -0
- package/src/stage4/graph-reasoning/loader.js +122 -0
- package/src/stage4/graph-reasoning/queue.js +154 -0
- package/src/stage4/graph-reasoning/schema.js +190 -0
- package/src/team/browser-data.js +142 -0
- package/src/team/capabilities.js +79 -0
- package/src/team/dispatch.js +108 -0
- package/src/team/queue.js +290 -0
- package/src/team/schema.js +225 -0
- package/src/team/shared-memory.js +183 -0
- package/src/todo/browser-data.js +71 -0
- package/src/todo/queue.js +159 -0
- package/src/todo/schema.js +90 -0
- package/src/utils/embedding-model.js +111 -0
- package/src/wiki/alias-suggestions.js +180 -0
- package/src/wiki/browser-data.js +284 -0
- package/src/wiki/doctor.js +218 -0
- package/src/wiki/entry-normalizer.js +139 -0
- package/src/wiki/ingest.js +443 -0
- package/src/wiki/lesson-proposal-analyzer.js +463 -0
- package/src/wiki/lesson-proposal-manager.js +331 -0
- package/src/wiki/lesson-template.js +182 -0
- package/src/wiki/lint.js +294 -0
- package/src/wiki/notebooklm-adapter.js +264 -0
- package/src/wiki/query.js +304 -0
- package/src/wiki/raw-manager.js +400 -0
- package/src/wiki/search-feedback.js +211 -0
- package/src/wiki/semantic-index.js +333 -0
- package/src/wiki/semantic-search.js +170 -0
- package/src/wiki/source-ledger.js +370 -0
- package/src/wiki/store.js +1329 -0
- package/src/wiki/usage-events.js +144 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# LLM Wiki Installation Guide
|
|
2
|
+
|
|
3
|
+
This guide sets up `oh-my-llmwikimode` for OpenCode with a local wiki at `~/Documents/llm-wiki`.
|
|
4
|
+
|
|
5
|
+
The installer only writes inside your user profile. It does not need administrator privileges, does not install global packages, and does not start OpenCode for you. Restart OpenCode after changing `opencode.json`.
|
|
6
|
+
|
|
7
|
+
## Local checkout CLI commands
|
|
8
|
+
|
|
9
|
+
This repository is usually tested from a local checkout before npm publication. In that mode, do not use `npx llmwiki --help`; it can fail if `llmwiki` is not published in the npm registry yet.
|
|
10
|
+
|
|
11
|
+
Use the package-local command instead:
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
npm --prefix plugins/oh-my-llmwikimode exec -- llmwiki --help
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
For other CLI examples in this guide, replace `npx llmwiki <args>` with `npm --prefix plugins/oh-my-llmwikimode exec -- llmwiki <args>` when working from the workspace root.
|
|
18
|
+
|
|
19
|
+
## Prerequisites
|
|
20
|
+
|
|
21
|
+
- Node.js 18 or newer.
|
|
22
|
+
- OpenCode installed and able to read `opencode.json`.
|
|
23
|
+
- The `oh-my-llmwikimode` package available through npm, a local checkout, or your team's package source.
|
|
24
|
+
- A writable user config directory:
|
|
25
|
+
- Windows: `%USERPROFILE%\.config\opencode\opencode.json`
|
|
26
|
+
- macOS/Linux: `~/.config/opencode/opencode.json`
|
|
27
|
+
|
|
28
|
+
Default plugin config:
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"plugin": [
|
|
33
|
+
["oh-my-llmwikimode", {
|
|
34
|
+
"wikiRoot": "~/Documents/llm-wiki",
|
|
35
|
+
"autoMemoryEnabled": true,
|
|
36
|
+
"autoSearchEnabled": true
|
|
37
|
+
}]
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Method 1: AI Prompt + `llmwiki init` (Recommended)
|
|
43
|
+
|
|
44
|
+
The fastest way to install is to ask an AI assistant (OpenCode, Claude, etc.) to set it up for you.
|
|
45
|
+
|
|
46
|
+
### AI-facing installation prompt
|
|
47
|
+
|
|
48
|
+
Copy and paste this prompt into your AI assistant:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
Install the oh-my-llmwikimode OpenCode plugin for me. Steps:
|
|
52
|
+
|
|
53
|
+
1. Run: npx llmwiki init --wiki-root ~/Documents/llm-wiki
|
|
54
|
+
2. The init command creates the wiki directory structure and writes a plugin snippet to:
|
|
55
|
+
~/Documents/llm-wiki/.system/opencode.plugin-snippet.json
|
|
56
|
+
3. Read that snippet file.
|
|
57
|
+
4. Merge the snippet into my OpenCode config at:
|
|
58
|
+
- Windows: %USERPROFILE%\.config\opencode\opencode.json
|
|
59
|
+
- macOS/Linux: ~/.config/opencode/opencode.json
|
|
60
|
+
5. If opencode.json already has an oh-my-llmwikimode entry, update it. If not, add it to the "plugin" array.
|
|
61
|
+
6. Back up opencode.json before modifying.
|
|
62
|
+
7. Tell me to restart OpenCode.
|
|
63
|
+
|
|
64
|
+
Do NOT overwrite existing plugin entries. Preserve the rest of the config.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### What `llmwiki init` does
|
|
68
|
+
|
|
69
|
+
```sh
|
|
70
|
+
npx llmwiki init --wiki-root ~/Documents/llm-wiki
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
The command writes:
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
~/Documents/llm-wiki/.system/opencode.plugin-snippet.json
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
It creates these folders if they do not exist: `inbox/`, `problems/`, `editorial/lessons/`, `raw/`, `.system/`.
|
|
80
|
+
|
|
81
|
+
Copy the generated snippet into your OpenCode config if you prefer a no-surprises setup, or let the AI do it.
|
|
82
|
+
|
|
83
|
+
## Method 2: Manual steps
|
|
84
|
+
|
|
85
|
+
### Windows
|
|
86
|
+
|
|
87
|
+
Create the wiki folders:
|
|
88
|
+
|
|
89
|
+
```powershell
|
|
90
|
+
$wiki = Join-Path $HOME "Documents\llm-wiki"
|
|
91
|
+
New-Item -ItemType Directory -Force -Path $wiki | Out-Null
|
|
92
|
+
New-Item -ItemType Directory -Force -Path (Join-Path $wiki "inbox") | Out-Null
|
|
93
|
+
New-Item -ItemType Directory -Force -Path (Join-Path $wiki "problems") | Out-Null
|
|
94
|
+
New-Item -ItemType Directory -Force -Path (Join-Path $wiki "editorial\lessons") | Out-Null
|
|
95
|
+
New-Item -ItemType Directory -Force -Path (Join-Path $wiki "raw") | Out-Null
|
|
96
|
+
New-Item -ItemType Directory -Force -Path (Join-Path $wiki ".system") | Out-Null
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Back up your config before editing:
|
|
100
|
+
|
|
101
|
+
```powershell
|
|
102
|
+
$config = Join-Path $HOME ".config\opencode\opencode.json"
|
|
103
|
+
Copy-Item $config "$config.bak" -ErrorAction SilentlyContinue
|
|
104
|
+
notepad $config
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Merge this plugin entry into the top-level `plugin` array:
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
["oh-my-llmwikimode", {
|
|
111
|
+
"wikiRoot": "~/Documents/llm-wiki",
|
|
112
|
+
"autoMemoryEnabled": true,
|
|
113
|
+
"autoSearchEnabled": true
|
|
114
|
+
}]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
If `plugin` does not exist yet, use the full default config shown in the prerequisites.
|
|
118
|
+
|
|
119
|
+
### macOS/Linux
|
|
120
|
+
|
|
121
|
+
Create the wiki folders:
|
|
122
|
+
|
|
123
|
+
```sh
|
|
124
|
+
mkdir -p ~/Documents/llm-wiki/inbox
|
|
125
|
+
mkdir -p ~/Documents/llm-wiki/problems
|
|
126
|
+
mkdir -p ~/Documents/llm-wiki/editorial/lessons
|
|
127
|
+
mkdir -p ~/Documents/llm-wiki/raw
|
|
128
|
+
mkdir -p ~/Documents/llm-wiki/.system
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Create or edit OpenCode config:
|
|
132
|
+
|
|
133
|
+
```sh
|
|
134
|
+
mkdir -p ~/.config/opencode
|
|
135
|
+
test -f ~/.config/opencode/opencode.json && cp ~/.config/opencode/opencode.json ~/.config/opencode/opencode.json.bak
|
|
136
|
+
${EDITOR:-vi} ~/.config/opencode/opencode.json
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Use the default config block from the prerequisites section, or merge this entry into an existing `plugin` array:
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
["oh-my-llmwikimode", {
|
|
143
|
+
"wikiRoot": "~/Documents/llm-wiki",
|
|
144
|
+
"autoMemoryEnabled": true,
|
|
145
|
+
"autoSearchEnabled": true
|
|
146
|
+
}]
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Method 3: PowerShell installer script (advanced)
|
|
150
|
+
|
|
151
|
+
For automated or scripted setups, a PowerShell installer is available in the package checkout:
|
|
152
|
+
|
|
153
|
+
```powershell
|
|
154
|
+
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install-llmwiki.ps1
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Custom wiki root:
|
|
158
|
+
|
|
159
|
+
```powershell
|
|
160
|
+
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install-llmwiki.ps1 -WikiRoot "~/Documents/llm-wiki"
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
What the script does:
|
|
164
|
+
|
|
165
|
+
1. Detects the OpenCode config directory under your user profile.
|
|
166
|
+
2. Creates `~/Documents/llm-wiki` if it does not exist.
|
|
167
|
+
3. Creates these folders: `inbox/`, `problems/`, `editorial/lessons/`, `raw/`, `.system/`.
|
|
168
|
+
4. Reads `opencode.json`, or creates a new config object when the file does not exist.
|
|
169
|
+
5. Prompts before modifying an existing `opencode.json` and writes a timestamped backup first.
|
|
170
|
+
6. Adds or updates the `oh-my-llmwikimode` plugin entry.
|
|
171
|
+
7. Prints next steps. Restart OpenCode manually.
|
|
172
|
+
|
|
173
|
+
## Verification
|
|
174
|
+
|
|
175
|
+
1. Restart OpenCode.
|
|
176
|
+
2. In OpenCode, ask:
|
|
177
|
+
|
|
178
|
+
```text
|
|
179
|
+
내 위키 상태 확인해줘
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
3. Optional CLI checks:
|
|
183
|
+
|
|
184
|
+
```sh
|
|
185
|
+
npx llmwiki init --wiki-root ~/Documents/llm-wiki --json
|
|
186
|
+
npx llmwiki lint --wiki-root ~/Documents/llm-wiki
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Expected result: OpenCode recognizes the plugin config, and the local wiki folders exist under `~/Documents/llm-wiki`.
|
|
190
|
+
|
|
191
|
+
## Troubleshooting
|
|
192
|
+
|
|
193
|
+
### PowerShell says script execution is disabled
|
|
194
|
+
|
|
195
|
+
Use the one-command bypass for this script only:
|
|
196
|
+
|
|
197
|
+
```powershell
|
|
198
|
+
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install-llmwiki.ps1
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Existing `opencode.json` is invalid JSON
|
|
202
|
+
|
|
203
|
+
The installer stops before writing changes. Fix the JSON first, then rerun the installer. Your existing file is not overwritten.
|
|
204
|
+
|
|
205
|
+
### Plugin entry is duplicated
|
|
206
|
+
|
|
207
|
+
Keep one `oh-my-llmwikimode` entry in the top-level `plugin` array. The installer updates an existing matching entry when it can parse the config.
|
|
208
|
+
|
|
209
|
+
### OpenCode does not load the plugin
|
|
210
|
+
|
|
211
|
+
- Confirm the package name is `oh-my-llmwikimode`.
|
|
212
|
+
- Confirm `opencode.json` is in `%USERPROFILE%\.config\opencode\` on Windows or `~/.config/opencode/` on macOS/Linux.
|
|
213
|
+
- Restart OpenCode after editing config.
|
|
214
|
+
- Run `npx llmwiki init --wiki-root ~/Documents/llm-wiki --json` and confirm the snippet uses the same `wikiRoot`.
|
|
215
|
+
|
|
216
|
+
### Wiki folders were created in the wrong place
|
|
217
|
+
|
|
218
|
+
Run init again with an explicit path:
|
|
219
|
+
|
|
220
|
+
```sh
|
|
221
|
+
npx llmwiki init --wiki-root /absolute/path/to/llm-wiki
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Then update `wikiRoot` in `opencode.json` to the same path.
|
|
225
|
+
|
|
226
|
+
### Permission errors
|
|
227
|
+
|
|
228
|
+
Choose a directory inside your user profile, such as `~/Documents/llm-wiki`. Do not use system directories that require administrator privileges.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Scope Lock: oh-my-llmwikimode Identity and Prototype Policy
|
|
2
|
+
|
|
3
|
+
> **Status**: Active | **Version**: 1.0.0 | **Locked**: 2026-05-02
|
|
4
|
+
>
|
|
5
|
+
> 이 문서는 oh-my-llmwikimode 시스템의 canonical 이름, 경로, 정책을 고정합니다.
|
|
6
|
+
> 계획 문서: `.sisyphus/plans/oh-my-llmwikimode-ralph-hardening.md`
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Canonical Names (유일하게 사용할 이름)
|
|
11
|
+
|
|
12
|
+
| 대상 | Canonical 값 | 비고 |
|
|
13
|
+
|------|-------------|------|
|
|
14
|
+
| **npm package name** | `oh-my-llmwikimode` | registry에 배포될 이름 |
|
|
15
|
+
| **plugin ID** | `oh-my-llmwikimode` | OpenCode `opencode.json` plugin 배열에 사용 |
|
|
16
|
+
| **display / log prefix** | `oh-my-llmwikimode` | 콘솔 로그, UI 표시 |
|
|
17
|
+
| **GitHub repo** | `oh-my-llmwikimode` | repo slug |
|
|
18
|
+
| **state directory** | `~/.config/opencode/.llmwikimode/` | 런타임 상태/로그 저장 |
|
|
19
|
+
| **wiki root default** | `~/Documents/llm-wiki` | 사용자 wiki 저장소 기본 위치 |
|
|
20
|
+
| **display term** | "LLM Wiki" | 사용자에게 보여줄 설명용 용어 (package/plugin ID와 구분) |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Legacy / Non-Canonical Names (사용 금지)
|
|
25
|
+
|
|
26
|
+
다음 이름들은 **legacy, prototype, 또는 잘못된 참조**입니다. 새 코드/문서/설정에서 canonical 이름으로 사용하지 마세요.
|
|
27
|
+
|
|
28
|
+
- `opencode-plugin-llm-wiki` — 초기 prototype package 이름
|
|
29
|
+
- `opencode-plugin-wikiloop` — 초기 계획서에서 사용했던 plugin 이름
|
|
30
|
+
- `.omw` — 임의로 만든 state directory 이름 (OMO + Wiki의 줄임말이나 canonical이 아님)
|
|
31
|
+
- `wikiloop` — slash command alias로는 사용 가능하나 plugin ID로 사용 금지
|
|
32
|
+
|
|
33
|
+
이름들은 **마이그레이션 문서나 이력 섹션**에서만 참조할 수 있습니다.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Prototype Policy (root-level prototype cleanup)
|
|
38
|
+
|
|
39
|
+
### Retired prototype artifacts
|
|
40
|
+
다음 파일들은 **2026-05-02에 만들어진 premature prototype**이었고, production package와 혼동되지 않도록 정리되었습니다:
|
|
41
|
+
|
|
42
|
+
- `package.json` (root) — `name: opencode-plugin-llm-wiki`
|
|
43
|
+
- `.github/workflows/ci-cd.yml` (root) — 수동 release 기반, semantic-release 없음
|
|
44
|
+
- `package-lock.json` (root) — root prototype dependency lock
|
|
45
|
+
- `src/server.js` (root) — archived to `.archive/root-prototype-20260502/src/server.js`
|
|
46
|
+
- `test/run-tests.js` (root) — archived to `.archive/root-prototype-20260502/test/run-tests.js`
|
|
47
|
+
|
|
48
|
+
Root `README.md` and `RALPH.md` now point to the canonical package under `plugins/oh-my-llmwikimode/`.
|
|
49
|
+
`.ralph/bootstrap.*` and `.ralph/check.*` now run package-local commands for the canonical package.
|
|
50
|
+
|
|
51
|
+
### 정책
|
|
52
|
+
1. **root workspace는 publishable npm package가 아닙니다**.
|
|
53
|
+
2. **새로운 production package는 `plugins/oh-my-llmwikimode/` 아래에만 둡니다**.
|
|
54
|
+
3. **root-level package metadata나 release workflow를 다시 만들지 않습니다**.
|
|
55
|
+
4. **모든 새 구현/문서/테스트는 `plugins/oh-my-llmwikimode/` 안에서만 작성**합니다.
|
|
56
|
+
5. **GitHub/npm/OpenCode registration은 사용자 승인 후 별도 단계에서 진행**합니다.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Support Matrix
|
|
61
|
+
|
|
62
|
+
| 항목 | 버전/범위 |
|
|
63
|
+
|------|----------|
|
|
64
|
+
| OpenCode SDK | `@opencode-ai/plugin` ^1.14.0 |
|
|
65
|
+
| Node.js | >= 18.0.0 |
|
|
66
|
+
| OS | Windows, macOS, Linux |
|
|
67
|
+
| Path style | POSIX preferred; Windows paths normalized via `path` module |
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Decision Log
|
|
72
|
+
|
|
73
|
+
| 날짜 | 결정 | 이유 |
|
|
74
|
+
|------|------|------|
|
|
75
|
+
| 2026-05-02 | `oh-my-llmwikimode`로 이름 고정 | 사용자 명시 요청; oh-my-ralph, oh-my-openagent 패밀리와 일관 |
|
|
76
|
+
| 2026-05-02 | package root를 `plugins/oh-my-llmwikimode/`로 분리 | root workspace에 관련 없는 파일이 많아 npm pack 안전성 확보 |
|
|
77
|
+
| 2026-05-02 | `.llmwikimode`를 state dir로 고정 | `.omw`는 의미 불명확; canonical name에서 직접 유래 |
|
|
78
|
+
| 2026-05-02 | prototype은 삭제하지 않고 reference로 유지 | 향후 migration guide나 audit trace에 활용 가능 |
|
|
79
|
+
| 2026-05-02 | root prototype source/test를 `.archive/root-prototype-20260502/`로 이동 | 활성 루트에 결함 있는 spike 코드가 남아 future publish/register를 혼동시키지 않도록 함 |
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
# Stage 1 Guide: LLM Wiki Knowledge Workbench
|
|
2
|
+
|
|
3
|
+
**버전**: v2 Stage 1
|
|
4
|
+
**대상**: oh-my-llmwikimode 런타임 플러그인 + oh-my-llmwiki-pack VSIX 확장
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Stage 1 개요
|
|
9
|
+
|
|
10
|
+
Stage 1은 LLM Wiki를 로컬 지식 작업대(Knowledge Workbench)로 만드는 단계입니다. 핵심 원칙은 "자동 수집, 사람이 검토"입니다.
|
|
11
|
+
|
|
12
|
+
### Stage 1이 제공하는 것
|
|
13
|
+
|
|
14
|
+
| 기능 | 설명 |
|
|
15
|
+
|------|------|
|
|
16
|
+
| 자동 후보 캡처 | 대화에서 문제 패턴을 감지해 `inbox/`에 candidate로 저장 |
|
|
17
|
+
| 수동 저장 | `wiki_store`로 원하는 내용을 직접 저장 |
|
|
18
|
+
| 검색 | `wiki_search`로 로컬 위키에서 관련 항목 찾기 |
|
|
19
|
+
| 승격/거절 | `wiki_promote`로 lesson으로 승격, 또는 `rejected`로 처리 |
|
|
20
|
+
| CLI 명령어 | `llmwiki lint`, `query`, `ingest`, `rebuild` |
|
|
21
|
+
| 결정론적 그래프 | `.system/graph.json`과 `.system/browser-data.json` 자동 생성 |
|
|
22
|
+
| 비밀 자동 가리기 | API 키, 비밀번호 패턴을 저장 전에 가림 |
|
|
23
|
+
| VS Code 브라우저 | Knowledge Workbench, 그래프 뷰, Git sync |
|
|
24
|
+
|
|
25
|
+
### Stage 1에서 없는 것
|
|
26
|
+
|
|
27
|
+
아래 기능은 구현되지 않았습니다. 문서 어디에서도 "지원한다"고 적지 마세요.
|
|
28
|
+
|
|
29
|
+
- 사람 검토 없는 lesson 전환 기능
|
|
30
|
+
- 명시 승인 없는 원격 업로드 / 커밋
|
|
31
|
+
- Obsidian 연동 / 양방향 동기화
|
|
32
|
+
- MCP 서버
|
|
33
|
+
- SQLite 그래프 데이터베이스
|
|
34
|
+
- 원격 벡터 검색
|
|
35
|
+
- Hermes 실행 환경
|
|
36
|
+
- 자율 에이전트 팀 디스패치
|
|
37
|
+
- 실행형 Tool Pack
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 워크플로 단계별 설명
|
|
42
|
+
|
|
43
|
+
### 1. 자동 후보 생성
|
|
44
|
+
|
|
45
|
+
OpenCode 대화에서 아래 키워드가 포함된 메시지를 별낸면, 플러그인이 문제 패턴으로 감지합니다.
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
bug, error, failure, crash, exception, broken, not working, fails, issue, problem
|
|
49
|
+
버그, 오류, 실패, 문제, 에러, 오작동
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
감지되면 `inbox/`에 Markdown 파일이 자동 생성됩니다. 파일 형태:
|
|
53
|
+
|
|
54
|
+
```markdown
|
|
55
|
+
---
|
|
56
|
+
title: (자동 추출된 제목)
|
|
57
|
+
status: candidate
|
|
58
|
+
source: chat.message
|
|
59
|
+
tags:
|
|
60
|
+
- auto-captured
|
|
61
|
+
- problem
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
(캡처된 내용)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**조용한 모드 정책**: 정상적인 자동 저장은 콘솔에 출력되지 않습니다. 실제 오류(파일 쓰기 실패 등)만 표시됩니다. 저장/걸�promise기록은 위키 루트의 `.system/auto-memory-audit.jsonl`에서 확인할 수 있습니다.
|
|
68
|
+
|
|
69
|
+
자동 저장이 걸�promise는 경우:
|
|
70
|
+
- `autoMemoryEnabled`가 `false`
|
|
71
|
+
- 메시지에 "do not store", "저장하지 마" 포함
|
|
72
|
+
- 메시지 크기가 안전 한도 초과
|
|
73
|
+
- 프롬프트 인젝션 패턴 감지
|
|
74
|
+
- 명시적 "저장해줘" 요청 (에이전트가 `wiki_store`로 처리)
|
|
75
|
+
- 남부 오케스트레이션 프롬프트 (`[analyze-mode]`, `OMO_INTERNAL_INITIATOR` 등)
|
|
76
|
+
|
|
77
|
+
### 2. VS Code / Antigravity에서 검토
|
|
78
|
+
|
|
79
|
+
VS Code에 `oh-my-llmwiki-pack` 확장을 설치하면 Knowledge Workbench가 열립니다.
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
Ctrl+Shift+P → "LLM Wiki: Open Knowledge Workbench"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Workbench에서 볼 수 있는 것:
|
|
86
|
+
- 후보 항목 목록
|
|
87
|
+
- 중복 경고
|
|
88
|
+
- 그래프 연결 정보
|
|
89
|
+
- 항목 내용 미리보기
|
|
90
|
+
|
|
91
|
+
### 3. 승격 또는 거절
|
|
92
|
+
|
|
93
|
+
검토 후 두 가지 선택이 있습니다:
|
|
94
|
+
|
|
95
|
+
**승격** (lesson으로):
|
|
96
|
+
```text
|
|
97
|
+
wiki_promote inbox/2026-05-07-...-항목이름.md
|
|
98
|
+
```
|
|
99
|
+
파일이 `editorial/lessons/`로 이동하고 `status: lesson`이 됩니다.
|
|
100
|
+
|
|
101
|
+
**거절**:
|
|
102
|
+
항목의 frontmatter에서 `status: candidate`를 `status: rejected`로 바꿉니다. 거절된 항목은 검색 결과에서 제외됩니다.
|
|
103
|
+
|
|
104
|
+
### 4. 그래프 / 브라우저 보기
|
|
105
|
+
|
|
106
|
+
`.system/` 아래 파생 파일은 `llmwiki rebuild`로 재생성하거나 프로모션/거절 시 자동 갱신됩니다.
|
|
107
|
+
|
|
108
|
+
```text
|
|
109
|
+
.system/
|
|
110
|
+
├── index.json # 검색용 키워드 인덱스
|
|
111
|
+
├── graph.json # 항목 간 연결 그래프
|
|
112
|
+
└── browser-data.json # VS Code 브라우저 렌더링 데이터
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
VS Code에서 그래프 보기:
|
|
116
|
+
```text
|
|
117
|
+
Ctrl+Shift+P → "LLM Wiki: Open Knowledge Graph"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
그래프는 위키링크(`[[다른 항목]]`)와 태그 기반으로 항목을 연결합니다. `rejected`, `superseded`, `private`, `needs-clarification` 상태는 그래프에서 제외됩니다.
|
|
121
|
+
|
|
122
|
+
그래프는 결정론적입니다. 같은 내용에서 항상 같은 그래프가 생성됩니다. 필요하면 `llmwiki rebuild`로 언제든 재생성할 수 있습니다.
|
|
123
|
+
|
|
124
|
+
### 5. 수동 Git sync
|
|
125
|
+
|
|
126
|
+
변경사항은 자동으로 커밋되거나 push되지 않습니다. 직접 커밋해야 합니다.
|
|
127
|
+
|
|
128
|
+
VS Code에서:
|
|
129
|
+
```text
|
|
130
|
+
Ctrl+Shift+P → "LLM Wiki: Manual Git Sync" → "Stage & Commit"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
또는 터미널에서:
|
|
134
|
+
```bash
|
|
135
|
+
cd ~/Documents/llm-wiki
|
|
136
|
+
git add -A
|
|
137
|
+
git commit -m "update wiki entries"
|
|
138
|
+
# push는 선택
|
|
139
|
+
git push
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## CLI 명령어 상세
|
|
145
|
+
|
|
146
|
+
모든 명령어는 패키지 루트(`plugins/oh-my-llmwikimode/`)에서 실행합니다.
|
|
147
|
+
|
|
148
|
+
### `llmwiki lint`
|
|
149
|
+
|
|
150
|
+
항목의 스키마, 수명주기, 개인정보, 중복을 검사합니다.
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
npx llmwiki lint
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
검사 항목:
|
|
157
|
+
- frontmatter 필수 필드 (`title`, `status`, `source`)
|
|
158
|
+
- 올바른 상태값 (`candidate`, `lesson`, `rejected`, `superseded`, `needs-clarification`, `private`)
|
|
159
|
+
- 민감정보 노출 여부
|
|
160
|
+
- 같은 제목의 중복 항목
|
|
161
|
+
|
|
162
|
+
자동 수정은 하지 않습니다. 경고만 출력합니다.
|
|
163
|
+
|
|
164
|
+
### `llmwiki query`
|
|
165
|
+
|
|
166
|
+
로컬 위키를 키워드로 검색합니다. 1홉 관련 항목과 관계 레이블을 포함합니다.
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
npx llmwiki query "docker compose error"
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### `llmwiki ingest`
|
|
173
|
+
|
|
174
|
+
로컬 파일을 candidate로 `inbox/`에 가져옵니다.
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
npx llmwiki ingest /path/to/file.md
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
가져오기 전 비밀번호 자동 가리기, 안전하지 않은 경로 차단이 적용됩니다.
|
|
181
|
+
|
|
182
|
+
### `llmwiki rebuild`
|
|
183
|
+
|
|
184
|
+
`.system/index.json`, `.system/graph.json`, `.system/browser-data.json`을 처음부터 다시 만듭니다.
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npx llmwiki rebuild
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
결정론적이므로 언제든 안전하게 실행할 수 있습니다.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 문제 해결
|
|
195
|
+
|
|
196
|
+
### 플러그인이 로드되지 않을 때
|
|
197
|
+
|
|
198
|
+
1. OpenCode를 재시작합니다.
|
|
199
|
+
2. 콘솔에서 `[oh-my-llmwikimode] init:` 메시지를 확인합니다.
|
|
200
|
+
3. `opencode.json`의 `plugin` 배열에 플러그인이 등록되어 있는지 확인합니다.
|
|
201
|
+
4. npm 공개 전이라면 로컬 경로가 올바른지 확인합니다.
|
|
202
|
+
|
|
203
|
+
### 검색 결과가 없을 때
|
|
204
|
+
|
|
205
|
+
1. `~/Documents/llm-wiki/inbox/`에 파일이 있는지 확인합니다.
|
|
206
|
+
2. 항목의 frontmatter에 `title` 필드가 있는지 확인합니다.
|
|
207
|
+
3. 상태가 `rejected`, `superseded`, `needs-clarification`이면 검색에서 제외됩니다.
|
|
208
|
+
4. 더 구체적인 키워드로 다시 검색합니다.
|
|
209
|
+
5. `llmwiki rebuild`로 인덱스를 재생성합니다.
|
|
210
|
+
|
|
211
|
+
### 자동 메모리가 동작하지 않을 때
|
|
212
|
+
|
|
213
|
+
1. `autoMemoryEnabled`가 `true`인지 확인합니다.
|
|
214
|
+
2. 메시지에 문제 키워드가 포함되어 있는지 확인합니다.
|
|
215
|
+
3. "저장해줘" 같은 명시적 요청은 자동 캡처를 걸�promise니다 (정상 동작).
|
|
216
|
+
4. 위키 루트의 `.system/auto-memory-audit.jsonl` 디버그 로그를 확인합니다.
|
|
217
|
+
|
|
218
|
+
### 그래프에 항목이 보이지 않을 때
|
|
219
|
+
|
|
220
|
+
1. 항목 상태가 `rejected`, `superseded`, `private`, `needs-clarification`이 아닌지 확인합니다.
|
|
221
|
+
2. `llmwiki rebuild`로 재생성합니다.
|
|
222
|
+
3. `wiki_search`를 한 번 실행해 인덱스를 갱신합니다.
|
|
223
|
+
|
|
224
|
+
### 중복 항목이 많을 때
|
|
225
|
+
|
|
226
|
+
같은 문제를 여러 번 말하면 중복 항목이 생길 수 있습니다. `inbox/`를 확인하고 불필요한 항목은 `status: rejected`로 바꾸거나 삭제합니다. 완전한 중복 병합은 아직 지원하지 않습니다.
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Post-MVP 로드맵 참고
|
|
231
|
+
|
|
232
|
+
아래는 Stage 1 이후의 계획입니다. 현재 동작하지 않습니다.
|
|
233
|
+
|
|
234
|
+
| 단계 | 이름 | 핵심 내용 |
|
|
235
|
+
|------|------|-----------|
|
|
236
|
+
| **Stage 2** | Agent Team Workbench | 역할 기반 워커, 오케스트레이터 모드, 작업 큐, 능력 게이트, wiki 기반 공유 메모리 |
|
|
237
|
+
| **Stage 3** | Hermes-like Conversational Growth | 검토된 스킬 추출, 메모리 큐레이션, 중요도/최신성/신뢰도 점수 |
|
|
238
|
+
| **Stage 4** | Personal/Team AI OS | 통합 대시보드, 그래프 추론, 안전한 동기화, 팀 협업 |
|
|
239
|
+
|
|
240
|
+
Post-MVP 후보 기능 (Stage 1에 해당하지 않음):
|
|
241
|
+
- Obsidian 연동 / 양방향 동기화
|
|
242
|
+
- MCP 서버 인터페이스
|
|
243
|
+
- SQLite 그래프 데이터베이스
|
|
244
|
+
- 원격 벡터 검색
|
|
245
|
+
- 사람 검토 없는 lesson 전환 / 명시 승인 없는 원격 업로드
|
|
246
|
+
- 실행형 Tool Pack
|
|
247
|
+
- 공개 마켓플레이스
|
|
248
|
+
|
|
249
|
+
자세한 내용은 [4-stage roadmap memo](../../.sisyphus/drafts/llmwiki-4-stage-roadmap-memo.md)를 참고하세요.
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## 관련 문서
|
|
254
|
+
|
|
255
|
+
| 문서 | 위치 |
|
|
256
|
+
|------|------|
|
|
257
|
+
| 플러그인 README | [`README.md`](../README.md) |
|
|
258
|
+
| 사용자 가이드 (한국어) | [`docs/user-guide-ko.md`](user-guide-ko.md) |
|
|
259
|
+
| 사용자 테스트 가이드 | [`../../docs/LLMWIKI_USER_TEST_GUIDE.md`](../../docs/LLMWIKI_USER_TEST_GUIDE.md) |
|
|
260
|
+
| Scope Lock | [`docs/SCOPE_LOCK.md`](SCOPE_LOCK.md) |
|
|
261
|
+
| 4단계 로드맵 메모 | [`../../.sisyphus/drafts/llmwiki-4-stage-roadmap-memo.md`](../../../.sisyphus/drafts/llmwiki-4-stage-roadmap-memo.md) |
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
*이 가이드는 LLM Wiki v2 Stage 1 Knowledge Workbench의 개념, 워크플로, 문제 해결을 설명합니다.*
|