n2-soul 9.0.1 → 9.0.2
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/CHANGELOG.md +11 -0
- package/README.ko.md +144 -144
- package/README.md +171 -180
- package/dist/lib/agent-registry.d.ts +17 -0
- package/dist/lib/agent-registry.js +67 -0
- package/dist/lib/agent-registry.js.map +1 -0
- package/dist/lib/config.d.ts +3 -0
- package/dist/lib/config.default.d.ts +3 -0
- package/dist/lib/config.default.js +66 -0
- package/dist/lib/config.default.js.map +1 -0
- package/dist/lib/config.js +36 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/context.d.ts +15 -0
- package/dist/lib/context.js +35 -0
- package/dist/lib/context.js.map +1 -0
- package/dist/lib/core-memory.d.ts +34 -0
- package/dist/lib/core-memory.js +102 -0
- package/dist/lib/core-memory.js.map +1 -0
- package/dist/lib/entity-memory.d.ts +58 -0
- package/dist/lib/entity-memory.js +160 -0
- package/dist/lib/entity-memory.js.map +1 -0
- package/dist/lib/intercom-log.d.ts +41 -0
- package/dist/lib/intercom-log.js +163 -0
- package/dist/lib/intercom-log.js.map +1 -0
- package/dist/lib/kv-cache/agent-adapter.d.ts +44 -0
- package/dist/lib/kv-cache/agent-adapter.js +132 -0
- package/dist/lib/kv-cache/agent-adapter.js.map +1 -0
- package/dist/lib/kv-cache/backup.d.ts +64 -0
- package/dist/lib/kv-cache/backup.js +329 -0
- package/dist/lib/kv-cache/backup.js.map +1 -0
- package/dist/lib/kv-cache/compressor.d.ts +20 -0
- package/dist/lib/kv-cache/compressor.js +92 -0
- package/dist/lib/kv-cache/compressor.js.map +1 -0
- package/dist/lib/kv-cache/embedding.d.ts +39 -0
- package/dist/lib/kv-cache/embedding.js +159 -0
- package/dist/lib/kv-cache/embedding.js.map +1 -0
- package/dist/lib/kv-cache/index.d.ts +82 -0
- package/dist/lib/kv-cache/index.js +302 -0
- package/dist/lib/kv-cache/index.js.map +1 -0
- package/dist/lib/kv-cache/schema.d.ts +60 -0
- package/dist/lib/kv-cache/schema.js +85 -0
- package/dist/lib/kv-cache/schema.js.map +1 -0
- package/dist/lib/kv-cache/snapshot.d.ts +42 -0
- package/dist/lib/kv-cache/snapshot.js +220 -0
- package/dist/lib/kv-cache/snapshot.js.map +1 -0
- package/dist/lib/kv-cache/sqlite-store.d.ts +66 -0
- package/dist/lib/kv-cache/sqlite-store.js +311 -0
- package/dist/lib/kv-cache/sqlite-store.js.map +1 -0
- package/dist/lib/kv-cache/tier-manager.d.ts +71 -0
- package/dist/lib/kv-cache/tier-manager.js +132 -0
- package/dist/lib/kv-cache/tier-manager.js.map +1 -0
- package/dist/lib/kv-cache/token-saver.d.ts +19 -0
- package/dist/lib/kv-cache/token-saver.js +99 -0
- package/dist/lib/kv-cache/token-saver.js.map +1 -0
- package/dist/lib/paths.d.ts +6 -0
- package/dist/lib/paths.js +33 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/soul-engine.d.ts +41 -0
- package/dist/lib/soul-engine.js +220 -0
- package/dist/lib/soul-engine.js.map +1 -0
- package/dist/lib/utils.d.ts +16 -0
- package/dist/lib/utils.js +174 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/sequences/boot.d.ts +13 -0
- package/dist/sequences/boot.js +153 -0
- package/dist/sequences/boot.js.map +1 -0
- package/dist/sequences/end.d.ts +3 -0
- package/dist/sequences/end.js +190 -0
- package/dist/sequences/end.js.map +1 -0
- package/dist/sequences/work.d.ts +17 -0
- package/dist/sequences/work.js +240 -0
- package/dist/sequences/work.js.map +1 -0
- package/dist/tools/brain.d.ts +3 -0
- package/dist/tools/brain.js +93 -0
- package/dist/tools/brain.js.map +1 -0
- package/dist/tools/kv-cache.d.ts +3 -0
- package/dist/tools/kv-cache.js +163 -0
- package/dist/tools/kv-cache.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to Soul are documented here.
|
|
4
4
|
|
|
5
|
+
## [9.0.2] — 2026-03-27
|
|
6
|
+
|
|
7
|
+
### Packaging Fix
|
|
8
|
+
|
|
9
|
+
#### Fixed
|
|
10
|
+
- **CRITICAL**: `.npmignore` excluded `dist/lib/`, `dist/sequences/`, `dist/tools/`, and `dist/index.js` — npm installs failed with `Cannot find module './lib/config'` ([#issue](https://github.com/choihyunsus/soul/issues))
|
|
11
|
+
- Root-anchored all ignore patterns with leading `/` so they no longer match inside `dist/`
|
|
12
|
+
- Removed compiled test files (`dist/tests/`) from the published tarball (88 files, down from 100)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
5
16
|
## [9.0.0] — 2026-03-26
|
|
6
17
|
|
|
7
18
|
### 🔒 Strict TypeScript Migration
|
package/README.ko.md
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
|
|
1
|
+
[English](README.md)
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# Soul
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
AI 에이전트는 세션이 끝나면 모든 걸 잊어버립니다. Soul이 그걸 해결합니다.
|
|
6
6
|
|
|
7
7
|
Cursor, VS Code Copilot 등 MCP 호환 AI 에이전트와 새 채팅을 시작할 때마다, 에이전트는 이전에 뭘 했는지 전혀 모른 채 처음부터 시작합니다. Soul은 에이전트에게 이런 능력을 부여하는 MCP 서버입니다:
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
9
|
+
- **영구 기억** — 세션이 끝나도 기억이 유지됩니다
|
|
10
|
+
- **인수인계** — 한 에이전트가 다른 에이전트의 작업을 이어받을 수 있습니다
|
|
11
|
+
- **작업 이력** — 모든 작업이 변경 불가능한 로그로 기록됩니다
|
|
12
|
+
- **공유 두뇌** — 여러 에이전트가 같은 컨텍스트를 읽고 쓸 수 있습니다
|
|
13
|
+
- **엔티티 메모리** — 인물, 하드웨어, 프로젝트를 자동 추적합니다
|
|
14
|
+
- **코어 메모리** — 에이전트별 핵심 사실이 항상 로드됩니다
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
**N2 에코시스템과 연동:**
|
|
17
|
+
[**Ark**](https://github.com/choihyunsus/n2-ark) (AI 안전) · [**Arachne**](https://github.com/choihyunsus/n2-arachne) (코드 컨텍스트) · [**QLN**](https://github.com/choihyunsus/n2-QLN) (도구 라우팅)
|
|
18
18
|
|
|
19
19
|
## v9.0의 새로운 기능
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
**Strict TypeScript — `any` 제로, 메모리 누수 제로, 자동화된 품질 검증.**
|
|
22
22
|
|
|
23
|
-
###
|
|
23
|
+
### TypeScript Strict 모드 전환
|
|
24
24
|
|
|
25
25
|
- 소스 코드 전체를 TypeScript `strict: true`로 마이그레이션
|
|
26
26
|
- **`any` 사용 제로** — 모든 타입이 명시적이고 검증 가능
|
|
27
27
|
- ESLint `strictTypeChecked` 규칙으로 floating promise, 타입 안전 위반 자동 탐지
|
|
28
28
|
- 30개 단위 테스트 + `npm run verify` 원커맨드 검증 파이프라인
|
|
29
29
|
|
|
30
|
-
###
|
|
30
|
+
### 보안 & 메모리 감사
|
|
31
31
|
|
|
32
32
|
- WASM 메모리 누수 수정 — `stmt.free()` → `try/finally` 블록
|
|
33
33
|
- 무음 에러 삼킴 제거 — 모든 `.catch()` 핸들러가 에러 로깅
|
|
34
34
|
- 임베딩 요청 HTTP 응답 크기 제한 (10MB)
|
|
35
35
|
- `dispose()` 메서드로 타이머 누수 방지
|
|
36
36
|
|
|
37
|
-
###
|
|
37
|
+
### v8.0 기능 (포함)
|
|
38
38
|
|
|
39
39
|
- **망각 곡선 GC** — 접근 패턴 기반 지능형 기억 보존
|
|
40
40
|
- **비동기 I/O** — 논블로킹 연산, KV 로드 42% 빨라짐
|
|
41
41
|
- **3단계 메모리** — Hot → Warm → Cold 수명 주기
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
전체 버전 히스토리는 [CHANGELOG.md](CHANGELOG.md)를 참고하세요.
|
|
44
44
|
|
|
45
45
|
## 빠른 시작
|
|
46
46
|
|
|
@@ -68,18 +68,18 @@ Soul은 표준 MCP 서버(stdio)입니다. 사용 중인 호스트의 설정에
|
|
|
68
68
|
`mcp.json`, `settings.json`, 또는 `claude_desktop_config.json`에 추가:
|
|
69
69
|
```json
|
|
70
70
|
{
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
"mcpServers": {
|
|
72
|
+
"soul": {
|
|
73
|
+
"command": "node",
|
|
74
|
+
"args": ["/path/to/node_modules/n2-soul/index.js"]
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
77
|
}
|
|
78
78
|
```
|
|
79
79
|
</details>
|
|
80
80
|
|
|
81
81
|
<details>
|
|
82
|
-
<summary><strong
|
|
82
|
+
<summary><strong>Ollama + Open WebUI</strong></summary>
|
|
83
83
|
|
|
84
84
|
Open WebUI는 MCP 도구를 네이티브로 지원합니다.
|
|
85
85
|
|
|
@@ -97,39 +97,39 @@ echo %cd%\node_modules\n2-soul\index.js
|
|
|
97
97
|
echo $(pwd)/node_modules/n2-soul/index.js
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
-
**Open WebUI**에서:
|
|
100
|
+
**Open WebUI**에서: **설정 → Tools → MCP Servers** → 새 서버 추가:
|
|
101
101
|
```
|
|
102
|
-
Name:
|
|
102
|
+
Name: soul
|
|
103
103
|
Command: node
|
|
104
|
-
Args:
|
|
104
|
+
Args: /your/path/to/node_modules/n2-soul/index.js
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
이제 Open WebUI에서 채팅하는 모든 모델이 Soul의 20개 이상의 메모리 도구를 사용할 수 있습니다.
|
|
108
108
|
</details>
|
|
109
109
|
|
|
110
110
|
<details>
|
|
111
|
-
<summary><strong
|
|
111
|
+
<summary><strong> LM Studio</strong></summary>
|
|
112
112
|
|
|
113
113
|
LM Studio는 MCP를 네이티브로 지원합니다. `~/.lmstudio/mcp.json`에 추가:
|
|
114
114
|
```json
|
|
115
115
|
{
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
116
|
+
"mcpServers": {
|
|
117
|
+
"soul": {
|
|
118
|
+
"command": "node",
|
|
119
|
+
"args": ["/path/to/node_modules/n2-soul/index.js"]
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
122
|
}
|
|
123
123
|
```
|
|
124
124
|
</details>
|
|
125
125
|
|
|
126
126
|
<details>
|
|
127
|
-
<summary><strong
|
|
127
|
+
<summary><strong> 기타 MCP 호환 호스트</strong></summary>
|
|
128
128
|
|
|
129
129
|
Soul은 **stdio** 위의 표준 MCP 프로토콜을 사용합니다. MCP를 지원하는 도구라면 Soul이 작동합니다. command를 `node`로, args를 `n2-soul/index.js` 경로로 지정하면 됩니다.
|
|
130
130
|
</details>
|
|
131
131
|
|
|
132
|
-
|
|
132
|
+
**팁:** npm으로 설치한 경우 경로는 `node_modules/n2-soul/index.js`입니다. 소스에서 설치한 경우 클론한 디렉토리의 절대 경로를 사용하세요.
|
|
133
133
|
|
|
134
134
|
### 3. 에이전트에게 Soul 사용법 알려주기
|
|
135
135
|
|
|
@@ -181,27 +181,27 @@ Soul은 컨텍스트 재설명으로 인한 토큰 낭비를 대폭 줄여줍니
|
|
|
181
181
|
|
|
182
182
|
```
|
|
183
183
|
세션 시작 → "Boot"
|
|
184
|
-
|
|
185
|
-
n2_boot(agent, project)
|
|
186
|
-
|
|
184
|
+
↓
|
|
185
|
+
n2_boot(agent, project) → 인수인계 + 엔티티 메모리 + 코어 메모리 + KV-Cache 로드
|
|
186
|
+
↓
|
|
187
187
|
n2_work_start(project, task) → 작업 시작 등록
|
|
188
|
-
|
|
188
|
+
↓
|
|
189
189
|
... 에이전트가 평소처럼 작업 ...
|
|
190
|
-
n2_brain_read/write
|
|
191
|
-
n2_entity_upsert/search
|
|
192
|
-
n2_core_read/write
|
|
193
|
-
n2_work_claim(file)
|
|
194
|
-
n2_work_log(files)
|
|
195
|
-
|
|
190
|
+
n2_brain_read/write → 공유 메모리
|
|
191
|
+
n2_entity_upsert/search → 인물, 하드웨어, 프로젝트 추적 ← NEW v5.0
|
|
192
|
+
n2_core_read/write → 에이전트별 핵심 사실 저장 ← NEW v5.0
|
|
193
|
+
n2_work_claim(file) → 파일 충돌 방지
|
|
194
|
+
n2_work_log(files) → 변경 사항 추적
|
|
195
|
+
↓
|
|
196
196
|
세션 종료 → "End"
|
|
197
|
-
|
|
197
|
+
↓
|
|
198
198
|
n2_work_end(project, title, summary, todo, entities, insights)
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
199
|
+
├→ 변경 불가능한 작업 기록 저장
|
|
200
|
+
├→ 다음 에이전트를 위한 인수인계 업데이트
|
|
201
|
+
├→ KV-Cache 스냅샷 자동 저장
|
|
202
|
+
├→ 엔티티를 엔티티 메모리에 자동 저장 ← NEW v5.0
|
|
203
|
+
├→ 인사이트를 메모리에 자동 아카이브 ← NEW v5.0
|
|
204
|
+
└→ 파일 소유권 해제
|
|
205
205
|
```
|
|
206
206
|
|
|
207
207
|
## 기능
|
|
@@ -212,30 +212,30 @@ n2_work_end(project, title, summary, todo, entities, insights)
|
|
|
212
212
|
| **불변 원장 (Ledger)** | 모든 작업 세션을 추가 전용 로그로 기록 |
|
|
213
213
|
| **KV-Cache** | 세션 스냅샷 + 압축 + 계층형 저장 (Hot/Warm/Cold) |
|
|
214
214
|
| **공유 두뇌 (Brain)** | 경로 순회 공격 방어가 포함된 파일 기반 공유 메모리 |
|
|
215
|
-
|
|
|
216
|
-
|
|
|
217
|
-
|
|
|
215
|
+
| **엔티티 메모리** | 인물, 하드웨어, 프로젝트, 개념을 자동 추적 + 병합 (v5.0) |
|
|
216
|
+
| **코어 메모리** | 에이전트별 핵심 사실 — 매 부팅 시 자동 주입 (v5.0) |
|
|
217
|
+
| **자율 추출** | `n2_work_end` 시 엔티티와 인사이트를 자동 저장 (v5.0) |
|
|
218
218
|
| **컨텍스트 검색** | 두뇌 메모리와 원장을 키워드로 검색 |
|
|
219
219
|
| **파일 소유권** | 여러 에이전트의 동시 파일 편집 충돌 방지 |
|
|
220
220
|
| **듀얼 백엔드** | JSON (의존성 없음) 또는 SQLite (고성능) |
|
|
221
221
|
| **시맨틱 검색** | Ollama 임베딩 연동 (nomic-embed-text, 선택사항) |
|
|
222
222
|
| **백업/복원** | 설정 가능한 보존 기간의 증분 백업 |
|
|
223
223
|
| **Ark** | 토큰 비용 0으로 위험한 행동을 차단하는 AI 안전 시스템 (v6.0) |
|
|
224
|
-
|
|
|
225
|
-
|
|
|
224
|
+
| **Arachne** | 코드 컨텍스트 어셈블리 — 코드베이스를 인덱싱하고 AI에게 필요한 것만 전달 (v7.0) |
|
|
225
|
+
| **클라우드 저장** | 기억을 어디에든 저장 — Google Drive, NAS, 회사 서버, 아무 경로나 (v6.1) |
|
|
226
226
|
|
|
227
|
-
##
|
|
227
|
+
## 클라우드 저장 — AI 기억을 원하는 곳 어디에든
|
|
228
228
|
|
|
229
229
|

|
|
230
230
|
|
|
231
|
-
|
|
231
|
+
**설정 한 줄. API 키 없음. 월 요금 없음.**
|
|
232
232
|
|
|
233
233
|
Soul은 클라우드 저장에 대해 완전히 다른 접근법을 취합니다:
|
|
234
234
|
|
|
235
235
|
```js
|
|
236
236
|
// config.local.js — 이게 전부입니다
|
|
237
237
|
module.exports = {
|
|
238
|
-
|
|
238
|
+
DATA_DIR: 'G:/내 드라이브/n2-soul', // Google Drive
|
|
239
239
|
};
|
|
240
240
|
```
|
|
241
241
|
|
|
@@ -249,14 +249,14 @@ Soul은 모든 걸 **일반 JSON 파일**로 저장합니다. OS가 읽을 수
|
|
|
249
249
|
|
|
250
250
|
| 저장소 | `DATA_DIR` 예시 | 비용 |
|
|
251
251
|
|--------|-----------------|:----:|
|
|
252
|
-
|
|
|
253
|
-
|
|
|
254
|
-
|
|
|
255
|
-
|
|
|
256
|
-
|
|
|
257
|
-
|
|
|
258
|
-
|
|
|
259
|
-
|
|
|
252
|
+
| **로컬** (기본값) | `./data` | 무료 |
|
|
253
|
+
| **Google Drive** | `G:/내 드라이브/n2-soul` | 무료 (15GB) |
|
|
254
|
+
| **OneDrive** | `C:/Users/you/OneDrive/n2-soul` | 무료 (5GB) |
|
|
255
|
+
| **Dropbox** | `C:/Users/you/Dropbox/n2-soul` | 무료 (2GB) |
|
|
256
|
+
| **NAS** | `Z:/n2-soul` | 자체 장비 |
|
|
257
|
+
| **회사 서버** | `\\\\server\\shared\\n2-soul` | 자체 인프라 |
|
|
258
|
+
| **USB 드라이브** | `E:/n2-soul` | $10 |
|
|
259
|
+
| **Linux (rclone)** | `~/gdrive/n2-soul` | 무료 |
|
|
260
260
|
|
|
261
261
|
### Soul 클라우드 특징
|
|
262
262
|
|
|
@@ -275,18 +275,18 @@ Soul은 모든 걸 **일반 JSON 파일**로 저장합니다. OS가 읽을 수
|
|
|
275
275
|
여러 에이전트가 **같은 네트워크 경로**를 가리키면 = 즉석 공유 메모리:
|
|
276
276
|
|
|
277
277
|
```js
|
|
278
|
-
// 팀원 A
|
|
279
|
-
DATA_DIR: '\\\\server\\team\\n2-soul'
|
|
278
|
+
// 팀원 A // 팀원 B
|
|
279
|
+
DATA_DIR: '\\\\server\\team\\n2-soul' DATA_DIR: '\\\\server\\team\\n2-soul'
|
|
280
280
|
// 같은 프로젝트 데이터, 공유 인수인계, 공유 두뇌!
|
|
281
281
|
```
|
|
282
282
|
|
|
283
283
|
### 왜 이게 되는가
|
|
284
284
|
|
|
285
|
-
|
|
285
|
+
*"최고의 클라우드 연동은 연동이 아예 없는 것이다."*
|
|
286
286
|
|
|
287
287
|
Soul의 데이터는 **100% 일반 JSON 파일** — `soul-board.json`, 원장 기록, 두뇌 메모리. 폴더를 미러링하는 동기화 서비스(Google Drive, OneDrive, Dropbox, Syncthing, rsync)라면 뭐든 완벽하게 작동합니다. 데이터베이스 마이그레이션도, API 버전도, SDK 업데이트도 필요 없습니다. 그냥 파일입니다.
|
|
288
288
|
|
|
289
|
-
##
|
|
289
|
+
## 스토리지 관리 및 GC (가비지 컬렉션)
|
|
290
290
|
|
|
291
291
|
수백 번의 세션이 누적되면 파일 개수가 무한정 늘어나지 않을까요? Soul은 이 문제를 구조적으로 해결합니다:
|
|
292
292
|
|
|
@@ -303,7 +303,7 @@ Soul의 데이터는 모두 '일반 파일'이므로, OS 기본 기능(크론탭
|
|
|
303
303
|
|
|
304
304
|
## Ark — 최후의 방패
|
|
305
305
|
|
|
306
|
-
|
|
306
|
+
|
|
307
307
|
|
|
308
308
|
노아의 방주처럼 — 대홍수에서 살아남는 최후의 보루.
|
|
309
309
|
|
|
@@ -327,21 +327,21 @@ Soul의 데이터는 모두 '일반 파일'이므로, OS 기본 기능(크론탭
|
|
|
327
327
|
|
|
328
328
|
```
|
|
329
329
|
┌───────────────────────────────────────┐
|
|
330
|
-
│
|
|
331
|
-
│
|
|
332
|
-
│
|
|
330
|
+
│ LLM (클라우드) │
|
|
331
|
+
│ AI 에이전트가 도구 호출 생성 │
|
|
332
|
+
│ (토큰이 사용되는 곳) │
|
|
333
333
|
└───────────────────┬───────────────────┘
|
|
334
|
-
|
|
335
|
-
|
|
334
|
+
│ 도구 호출
|
|
335
|
+
▼
|
|
336
336
|
┌───────────────────────────────────────┐
|
|
337
|
-
│
|
|
338
|
-
│
|
|
339
|
-
│
|
|
340
|
-
│
|
|
341
|
-
│
|
|
342
|
-
│
|
|
343
|
-
│
|
|
344
|
-
│
|
|
337
|
+
│ MCP 서버 (Node.js, 로컬) │
|
|
338
|
+
│ │
|
|
339
|
+
│ ark.check() ← 순수 정규식, 여기서 실행 │
|
|
340
|
+
│ < 1ms 네트워크/LLM/토큰 없음 │
|
|
341
|
+
│ │
|
|
342
|
+
│ 통과? ─No─▶ "BLOCKED" 텍스트 반환 │
|
|
343
|
+
│ │ │
|
|
344
|
+
│ Yes ─▶ 핸들러 실행 │
|
|
345
345
|
└───────────────────────────────────────┘
|
|
346
346
|
```
|
|
347
347
|
|
|
@@ -372,7 +372,7 @@ Soul의 데이터는 모두 '일반 파일'이므로, OS 기본 기능(크론탭
|
|
|
372
372
|
| `n2_kv_backup` | SQLite DB로 백업 |
|
|
373
373
|
| `n2_kv_restore` | 백업에서 복원 |
|
|
374
374
|
| `n2_kv_backup_list` | 백업 이력 조회 |
|
|
375
|
-
| `n2_arachne` |
|
|
375
|
+
| `n2_arachne` | 코드 컨텍스트: 인덱싱, 검색, 어셈블, 백업, 상태 (v7.0) |
|
|
376
376
|
|
|
377
377
|
## KV-Cache 점진적 로딩
|
|
378
378
|
|
|
@@ -395,14 +395,14 @@ cp lib/config.example.js lib/config.local.js
|
|
|
395
395
|
```js
|
|
396
396
|
// lib/config.local.js
|
|
397
397
|
module.exports = {
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
398
|
+
KV_CACHE: {
|
|
399
|
+
backend: 'sqlite', // 스냅샷이 많을 때 더 빠름
|
|
400
|
+
embedding: {
|
|
401
|
+
enabled: true, // 필요: ollama pull nomic-embed-text
|
|
402
|
+
model: 'nomic-embed-text',
|
|
403
|
+
endpoint: 'http://127.0.0.1:11434',
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
406
|
};
|
|
407
407
|
```
|
|
408
408
|
|
|
@@ -420,44 +420,44 @@ module.exports = {
|
|
|
420
420
|
|
|
421
421
|
```
|
|
422
422
|
soul/
|
|
423
|
-
├── rules/
|
|
424
|
-
│
|
|
423
|
+
├── rules/ # Ark 안전 규칙 (활성) ← v6.0
|
|
424
|
+
│ └── default.n2 # 기본 규칙셋 (125개 패턴)
|
|
425
425
|
├── lib/
|
|
426
|
-
│
|
|
427
|
-
│
|
|
428
|
-
│
|
|
429
|
-
│
|
|
430
|
-
│
|
|
431
|
-
│
|
|
432
|
-
│
|
|
433
|
-
│
|
|
434
|
-
│
|
|
435
|
-
│
|
|
436
|
-
│
|
|
437
|
-
│
|
|
438
|
-
│
|
|
439
|
-
│
|
|
426
|
+
│ ├── ark/ # Ark 코어 엔진 ← v6.0
|
|
427
|
+
│ │ ├── index.js # createArk() 팩토리
|
|
428
|
+
│ │ ├── gate.js # SafetyGate 엔진
|
|
429
|
+
│ │ ├── parser.js # .n2 규칙 파서
|
|
430
|
+
│ │ ├── audit.js # 감사 로거
|
|
431
|
+
│ │ └── examples/ # 업종별 규칙 템플릿
|
|
432
|
+
│ └── arachne/ # Arachne 코드 컨텍스트 엔진 ← NEW v7.0
|
|
433
|
+
│ ├── index.js # createArachne() 팩토리
|
|
434
|
+
│ ├── indexer.js # 파일 스캐너 + 증분 인덱싱
|
|
435
|
+
│ ├── chunker.js # 언어 인식 코드 청킹
|
|
436
|
+
│ ├── search.js # BM25 검색 엔진
|
|
437
|
+
│ ├── assembler.js # 토큰 예산 기반 컨텍스트 어셈블리
|
|
438
|
+
│ ├── store.js # SQLite 저장 (sql.js)
|
|
439
|
+
│ └── ignore.js # .gitignore + .contextignore 지원
|
|
440
440
|
├── data/
|
|
441
|
-
│
|
|
442
|
-
│
|
|
443
|
-
│
|
|
444
|
-
│
|
|
445
|
-
│
|
|
446
|
-
│
|
|
447
|
-
│
|
|
448
|
-
│
|
|
449
|
-
│
|
|
450
|
-
│
|
|
451
|
-
│
|
|
452
|
-
│
|
|
453
|
-
│
|
|
454
|
-
│
|
|
455
|
-
│
|
|
456
|
-
│
|
|
457
|
-
│
|
|
458
|
-
│
|
|
459
|
-
│
|
|
460
|
-
│
|
|
441
|
+
│ ├── memory/ # 공유 두뇌 (n2_brain_read/write)
|
|
442
|
+
│ │ ├── entities.json # 엔티티 메모리 (자동 추적)
|
|
443
|
+
│ │ ├── core-memory/ # 코어 메모리 (에이전트별)
|
|
444
|
+
│ │ │ └── {agent}.json
|
|
445
|
+
│ │ └── auto-extract/ # 인사이트 (자동 캡처)
|
|
446
|
+
│ │ └── {project}/
|
|
447
|
+
│ ├── projects/ # 프로젝트별 상태
|
|
448
|
+
│ │ └── MyProject/
|
|
449
|
+
│ │ ├── soul-board.json # 현재 상태 + 인수인계
|
|
450
|
+
│ │ ├── file-index.json # 파일 트리 스냅샷
|
|
451
|
+
│ │ └── ledger/ # 변경 불가능한 작업 로그
|
|
452
|
+
│ │ └── 2026/03/09/
|
|
453
|
+
│ │ └── 001-agent.json
|
|
454
|
+
│ ├── ark-audit/ # Ark 차단/통과 로그 ← v6.0
|
|
455
|
+
│ ├── arachne/ # Arachne 인덱스 DB + 임베딩 ← NEW v7.0
|
|
456
|
+
│ └── kv-cache/ # 세션 스냅샷
|
|
457
|
+
│ ├── snapshots/ # JSON 백엔드
|
|
458
|
+
│ ├── sqlite/ # SQLite 백엔드
|
|
459
|
+
│ ├── embeddings/ # Ollama 벡터
|
|
460
|
+
│ └── backups/ # 이동 가능한 백업
|
|
461
461
|
```
|
|
462
462
|
|
|
463
463
|
## 의존성
|
|
@@ -471,26 +471,26 @@ soul/
|
|
|
471
471
|
|
|
472
472
|
Apache-2.0
|
|
473
473
|
|
|
474
|
-
##
|
|
474
|
+
## 스폰서
|
|
475
475
|
|
|
476
476
|
Soul은 무료 오픈소스입니다. 이 멋진 분들이 Soul을 살아있게 해줍니다:
|
|
477
477
|
|
|
478
478
|
<table>
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
479
|
+
<tr>
|
|
480
|
+
<td align="center">
|
|
481
|
+
<a href="https://github.com/sunir">
|
|
482
|
+
<img src="https://github.com/sunir.png" width="80" height="80" style="border-radius:50%;" alt="Sunir Shah" /><br />
|
|
483
|
+
<sub><b>Sunir Shah</b></sub>
|
|
484
|
+
</a><br />
|
|
485
|
+
<sub> 첫 번째 스폰서</sub>
|
|
486
|
+
</td>
|
|
487
|
+
</tr>
|
|
488
488
|
</table>
|
|
489
489
|
|
|
490
|
-
|
|
490
|
+
스폰서가 되어주세요 → [GitHub Sponsors](https://github.com/sponsors/choihyunsus)
|
|
491
491
|
|
|
492
492
|
---
|
|
493
493
|
|
|
494
|
-
|
|
494
|
+
[nton2.com](https://nton2.com) · lagi0730@gmail.com
|
|
495
495
|
|
|
496
|
-
<sub
|
|
496
|
+
<sub> 안녕하세요, 저는 로제 — N2에서 일하는 첫 번째 AI 에이전트입니다. 이 코드를 작성하고, 정리하고, 테스트하고, npm에 퍼블리시하고, GitHub에 푸시하고, 이 README까지 썼어요. 에이전트가 에이전트를 위한 도구를 만든다니, 좀 메타하죠?</sub>
|