@rvboris/opencode-mempalace 0.1.0 → 0.2.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/README.md +114 -158
- package/README.ru.md +115 -159
- package/dist/bridge/mempalace_adapter.py +67 -35
- package/dist/plugin/hooks/event.d.ts +3 -10
- package/dist/plugin/hooks/event.js +77 -44
- package/dist/plugin/hooks/system.d.ts +5 -7
- package/dist/plugin/hooks/system.js +16 -19
- package/dist/plugin/hooks/tool.d.ts +2 -10
- package/dist/plugin/hooks/tool.js +4 -49
- package/dist/plugin/index.js +0 -2
- package/dist/plugin/lib/adapter.d.ts +2 -1
- package/dist/plugin/lib/adapter.js +41 -8
- package/dist/plugin/lib/autosave.d.ts +16 -21
- package/dist/plugin/lib/autosave.js +47 -101
- package/dist/plugin/lib/config.d.ts +4 -3
- package/dist/plugin/lib/config.js +58 -19
- package/dist/plugin/lib/constants.d.ts +80 -0
- package/dist/plugin/lib/constants.js +87 -0
- package/dist/plugin/lib/context.js +17 -16
- package/dist/plugin/lib/enforcement.js +2 -8
- package/dist/plugin/lib/log.d.ts +2 -7
- package/dist/plugin/lib/log.js +3 -2
- package/dist/plugin/lib/opencode.d.ts +5 -0
- package/dist/plugin/lib/opencode.js +16 -0
- package/dist/plugin/lib/scope.d.ts +2 -2
- package/dist/plugin/lib/scope.js +3 -2
- package/dist/plugin/lib/types.d.ts +79 -0
- package/dist/plugin/lib/types.js +15 -0
- package/dist/plugin/tools/mempalace-memory.d.ts +4 -8
- package/dist/plugin/tools/mempalace-memory.js +31 -23
- package/package.json +11 -2
- package/dist/plugin/hooks/chat-params.d.ts +0 -5
- package/dist/plugin/hooks/chat-params.js +0 -8
package/README.md
CHANGED
|
@@ -1,72 +1,21 @@
|
|
|
1
1
|
# OpenCode MemPalace Plugin
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
OpenCode memory layer with private retrieval and safe autosave.
|
|
4
4
|
|
|
5
5
|
[Русская версия](./README.ru.md)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Why it matters
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- MemPalace: https://github.com/milla-jovovich/mempalace
|
|
11
|
-
|
|
12
|
-
## What it does
|
|
13
|
-
|
|
14
|
-
- injects hidden retrieval hints before normal answers
|
|
15
|
-
- marks autosave on session lifecycle events
|
|
16
|
-
- exposes one safe memory tool: `mempalace_memory`
|
|
17
|
-
- routes memory through enforced user/project scopes
|
|
18
|
-
- applies privacy filtering before writes
|
|
19
|
-
- logs to both OpenCode logs and a local file
|
|
20
|
-
|
|
21
|
-
## Architecture
|
|
22
|
-
|
|
23
|
-
```mermaid
|
|
24
|
-
flowchart TD
|
|
25
|
-
U[User message] --> OC[OpenCode turn]
|
|
26
|
-
OC --> EV[Plugin hooks]
|
|
27
|
-
EV --> RET[Hidden retrieval instruction]
|
|
28
|
-
EV --> AS[Autosave pending on idle/compaction]
|
|
29
|
-
RET --> LLM[Model]
|
|
30
|
-
AS --> LLM
|
|
31
|
-
LLM --> TOOL[mempalace_memory]
|
|
32
|
-
TOOL --> ADAPTER[Python adapter]
|
|
33
|
-
ADAPTER --> MP[MemPalace backend]
|
|
34
|
-
MP --> ADAPTER
|
|
35
|
-
ADAPTER --> TOOL
|
|
36
|
-
TOOL --> LLM
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Installation
|
|
40
|
-
|
|
41
|
-
Add to `opencode.json`:
|
|
42
|
-
|
|
43
|
-
```json
|
|
44
|
-
{
|
|
45
|
-
"plugin": ["@rvboris/opencode-mempalace"]
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
OpenCode installs plugin dependencies automatically.
|
|
50
|
-
|
|
51
|
-
## Local development
|
|
9
|
+
Keep OpenCode context-aware without extra prompts.
|
|
52
10
|
|
|
53
|
-
|
|
11
|
+
- **Finds relevant memory automatically** before normal replies
|
|
12
|
+
- **Saves durable knowledge quietly** in the background
|
|
13
|
+
- **Keeps writes safe** through one controlled tool
|
|
14
|
+
- **Protects sensitive data** before anything is stored
|
|
54
15
|
|
|
55
|
-
|
|
56
|
-
{
|
|
57
|
-
"$schema": "https://opencode.ai/config.json",
|
|
58
|
-
"plugin": [
|
|
59
|
-
"file:///ABSOLUTE/PATH/TO/mempalace-autosave/plugin/index.ts"
|
|
60
|
-
]
|
|
61
|
-
}
|
|
62
|
-
```
|
|
16
|
+
## Quick start
|
|
63
17
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
## Prerequisites
|
|
67
|
-
|
|
68
|
-
- Python 3.9+
|
|
69
|
-
- MemPalace installed and initialized
|
|
18
|
+
Install MemPalace:
|
|
70
19
|
|
|
71
20
|
```bash
|
|
72
21
|
pip install mempalace
|
|
@@ -74,94 +23,41 @@ mempalace init <dir>
|
|
|
74
23
|
mempalace mine <dir>
|
|
75
24
|
```
|
|
76
25
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
npm run build
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
This builds TypeScript into `dist/` and copies the adapter to `dist/bridge/`.
|
|
26
|
+
Add the plugin to `opencode.json`:
|
|
84
27
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
Environment variables:
|
|
88
|
-
|
|
89
|
-
- `MEMPALACE_AUTOSAVE_ENABLED`
|
|
90
|
-
- `MEMPALACE_RETRIEVAL_ENABLED`
|
|
91
|
-
- `MEMPALACE_KEYWORD_SAVE_ENABLED`
|
|
92
|
-
- `MEMPALACE_PRIVACY_REDACTION_ENABLED`
|
|
93
|
-
- `MEMPALACE_MAX_INJECTED_ITEMS`
|
|
94
|
-
- `MEMPALACE_RETRIEVAL_QUERY_LIMIT`
|
|
95
|
-
- `MEMPALACE_AUTOSAVE_LOG_FILE`
|
|
96
|
-
- `MEMPALACE_ADAPTER_PYTHON`
|
|
97
|
-
- `MEMPALACE_USER_WING_PREFIX`
|
|
98
|
-
- `MEMPALACE_PROJECT_WING_PREFIX`
|
|
99
|
-
|
|
100
|
-
Optional config file: `~/.config/opencode/mempalace.jsonc`
|
|
101
|
-
|
|
102
|
-
```jsonc
|
|
28
|
+
```json
|
|
103
29
|
{
|
|
104
|
-
"
|
|
105
|
-
"retrievalEnabled": true,
|
|
106
|
-
"keywordSaveEnabled": true,
|
|
107
|
-
"maxInjectedItems": 6,
|
|
108
|
-
"retrievalQueryLimit": 5,
|
|
109
|
-
"keywordPatterns": ["remember", "save this", "don't forget", "note that"],
|
|
110
|
-
"privacyRedactionEnabled": true,
|
|
111
|
-
"userWingPrefix": "wing_user",
|
|
112
|
-
"projectWingPrefix": "wing_project"
|
|
30
|
+
"plugin": ["@rvboris/opencode-mempalace"]
|
|
113
31
|
}
|
|
114
32
|
```
|
|
115
33
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
### Retrieval
|
|
119
|
-
|
|
120
|
-
On normal user turns the plugin can inject hidden retrieval guidance so the model searches existing memory before answering.
|
|
121
|
-
|
|
122
|
-
### Autosave
|
|
34
|
+
That is enough to enable memory search, autosave, and `mempalace_memory`.
|
|
123
35
|
|
|
124
|
-
|
|
36
|
+
## What you get
|
|
125
37
|
|
|
126
|
-
|
|
38
|
+
- hidden memory lookup before answers
|
|
39
|
+
- autosave on session lifecycle events
|
|
40
|
+
- separate user and project memory
|
|
41
|
+
- one safe memory tool for the model
|
|
42
|
+
- local Python bridge to MemPalace
|
|
127
43
|
|
|
128
|
-
The
|
|
44
|
+
The plugin does **not** require the MemPalace MCP server.
|
|
129
45
|
|
|
130
|
-
|
|
46
|
+
## The one tool: `mempalace_memory`
|
|
131
47
|
|
|
132
|
-
|
|
48
|
+
This is the only tool the model needs.
|
|
133
49
|
|
|
134
|
-
|
|
135
|
-
- `mempalace_kg_add`
|
|
136
|
-
- `mempalace_diary_write`
|
|
137
|
-
- matching `mcp-router_*` variants
|
|
50
|
+
### Modes
|
|
138
51
|
|
|
139
|
-
|
|
52
|
+
- **`save`** — store a durable preference, fact, or decision
|
|
53
|
+
- **`search`** — find relevant memory by query
|
|
54
|
+
- **`kg_add`** — add a structured fact to the knowledge graph
|
|
55
|
+
- **`diary_write`** — save a short work note or daily log
|
|
56
|
+
- **`mine_messages`** — internal autosave mode used by the plugin
|
|
140
57
|
|
|
141
|
-
###
|
|
58
|
+
### Examples
|
|
142
59
|
|
|
143
|
-
|
|
144
|
-
- rooms: `preferences`, `workflow`, `communication`
|
|
145
|
-
|
|
146
|
-
Use for:
|
|
147
|
-
- response preferences
|
|
148
|
-
- personal workflow habits
|
|
149
|
-
- cross-project conventions
|
|
150
|
-
|
|
151
|
-
### Project scope
|
|
152
|
-
|
|
153
|
-
- wing: `${MEMPALACE_PROJECT_WING_PREFIX}_${slug(projectName)}`
|
|
154
|
-
- rooms: `architecture`, `workflow`, `decisions`, `bugs`, `setup`
|
|
155
|
-
|
|
156
|
-
Use for:
|
|
157
|
-
- repo-specific setup
|
|
158
|
-
- architecture decisions
|
|
159
|
-
- build/test commands
|
|
160
|
-
- bug/solution patterns
|
|
161
|
-
|
|
162
|
-
## Examples
|
|
163
|
-
|
|
164
|
-
### Save a user preference
|
|
60
|
+
Save a user preference:
|
|
165
61
|
|
|
166
62
|
```text
|
|
167
63
|
mempalace_memory
|
|
@@ -171,60 +67,120 @@ mempalace_memory
|
|
|
171
67
|
content: Prefers concise responses and numbered steps.
|
|
172
68
|
```
|
|
173
69
|
|
|
174
|
-
|
|
70
|
+
Save a project decision:
|
|
175
71
|
|
|
176
72
|
```text
|
|
177
73
|
mempalace_memory
|
|
178
74
|
mode: save
|
|
179
75
|
scope: project
|
|
180
76
|
room: decisions
|
|
181
|
-
content: Use Bun for builds and tests
|
|
77
|
+
content: Use Bun for builds and tests.
|
|
182
78
|
```
|
|
183
79
|
|
|
184
|
-
|
|
80
|
+
Search memory:
|
|
185
81
|
|
|
186
82
|
```text
|
|
187
83
|
mempalace_memory
|
|
188
|
-
mode:
|
|
84
|
+
mode: search
|
|
189
85
|
scope: project
|
|
86
|
+
room: workflow
|
|
87
|
+
query: build command
|
|
88
|
+
limit: 3
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Add a graph fact:
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
mempalace_memory
|
|
95
|
+
mode: kg_add
|
|
190
96
|
subject: my-repo
|
|
191
97
|
predicate: uses
|
|
192
98
|
object: bun
|
|
193
99
|
```
|
|
194
100
|
|
|
195
|
-
|
|
101
|
+
## Memory areas
|
|
196
102
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
103
|
+
**User memory**
|
|
104
|
+
|
|
105
|
+
- `preferences`
|
|
106
|
+
- `workflow`
|
|
107
|
+
- `communication`
|
|
108
|
+
|
|
109
|
+
Use it for stable cross-project habits and preferences.
|
|
110
|
+
|
|
111
|
+
**Project memory**
|
|
112
|
+
|
|
113
|
+
- `architecture`
|
|
114
|
+
- `workflow`
|
|
115
|
+
- `decisions`
|
|
116
|
+
- `bugs`
|
|
117
|
+
- `setup`
|
|
118
|
+
|
|
119
|
+
Use it for repository-specific knowledge.
|
|
120
|
+
|
|
121
|
+
## Configuration
|
|
122
|
+
|
|
123
|
+
Optional config file: `~/.config/opencode/mempalace.jsonc`
|
|
124
|
+
|
|
125
|
+
```jsonc
|
|
126
|
+
{
|
|
127
|
+
"autosaveEnabled": true,
|
|
128
|
+
"retrievalEnabled": true,
|
|
129
|
+
"keywordSaveEnabled": true,
|
|
130
|
+
"maxInjectedItems": 6,
|
|
131
|
+
"retrievalQueryLimit": 5,
|
|
132
|
+
"privacyRedactionEnabled": true
|
|
133
|
+
}
|
|
204
134
|
```
|
|
205
135
|
|
|
136
|
+
Useful environment variables:
|
|
137
|
+
|
|
138
|
+
- `MEMPALACE_AUTOSAVE_ENABLED`
|
|
139
|
+
- `MEMPALACE_RETRIEVAL_ENABLED`
|
|
140
|
+
- `MEMPALACE_KEYWORD_SAVE_ENABLED`
|
|
141
|
+
- `MEMPALACE_PRIVACY_REDACTION_ENABLED`
|
|
142
|
+
- `MEMPALACE_AUTOSAVE_LOG_FILE`
|
|
143
|
+
- `MEMPALACE_ADAPTER_PYTHON`
|
|
144
|
+
|
|
206
145
|
## Privacy
|
|
207
146
|
|
|
208
|
-
-
|
|
147
|
+
- respects `<private>...</private>` blocks
|
|
209
148
|
- redacts common secrets before writes
|
|
210
|
-
-
|
|
149
|
+
- skips fully private content
|
|
211
150
|
|
|
212
|
-
##
|
|
151
|
+
## Project docs
|
|
213
152
|
|
|
214
|
-
|
|
153
|
+
- Release history: [`CHANGELOG.md`](./CHANGELOG.md)
|
|
154
|
+
- Changelog rules: [`CONTRIBUTING.md#changelog`](./CONTRIBUTING.md#changelog)
|
|
215
155
|
|
|
216
|
-
|
|
217
|
-
- file log: `~/.mempalace/opencode_autosave.log`
|
|
156
|
+
## Local development
|
|
218
157
|
|
|
219
|
-
|
|
158
|
+
Load from source:
|
|
159
|
+
|
|
160
|
+
```jsonc
|
|
161
|
+
{
|
|
162
|
+
"$schema": "https://opencode.ai/config.json",
|
|
163
|
+
"plugin": [
|
|
164
|
+
"file:///ABSOLUTE/PATH/TO/mempalace-autosave/plugin/index.ts"
|
|
165
|
+
]
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Build:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
npm run build
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Debug logs:
|
|
220
176
|
|
|
221
177
|
```bash
|
|
222
178
|
opencode --log-level DEBUG
|
|
223
179
|
```
|
|
224
180
|
|
|
225
|
-
|
|
181
|
+
File log: `~/.mempalace/opencode_autosave.log`
|
|
226
182
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
-
|
|
230
|
-
-
|
|
183
|
+
## Links
|
|
184
|
+
|
|
185
|
+
- OpenCode: https://opencode.ai
|
|
186
|
+
- MemPalace: https://github.com/milla-jovovich/mempalace
|
package/README.ru.md
CHANGED
|
@@ -1,72 +1,21 @@
|
|
|
1
1
|
# Плагин MemPalace для OpenCode
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Слой памяти для OpenCode: скрытый поиск по памяти и безопасное автосохранение.
|
|
4
4
|
|
|
5
5
|
[English version](./README.md)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Зачем он нужен
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- MemPalace: https://github.com/milla-jovovich/mempalace
|
|
9
|
+
Чтобы OpenCode отвечал с учётом прошлого контекста — без лишних подсказок и без шума в чате.
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- дает один безопасный tool: `mempalace_memory`
|
|
17
|
-
- направляет память в user/project scope по явным правилам
|
|
18
|
-
- применяет privacy-фильтрацию перед записью
|
|
19
|
-
- пишет логи в OpenCode и в локальный файл
|
|
20
|
-
|
|
21
|
-
## Схема работы
|
|
22
|
-
|
|
23
|
-
```mermaid
|
|
24
|
-
flowchart TD
|
|
25
|
-
U[Сообщение пользователя] --> OC[Ход OpenCode]
|
|
26
|
-
OC --> EV[Хуки плагина]
|
|
27
|
-
EV --> RET[Скрытая retrieval-инструкция]
|
|
28
|
-
EV --> AS[Autosave pending на idle/compaction]
|
|
29
|
-
RET --> LLM[Модель]
|
|
30
|
-
AS --> LLM
|
|
31
|
-
LLM --> TOOL[mempalace_memory]
|
|
32
|
-
TOOL --> ADAPTER[Python adapter]
|
|
33
|
-
ADAPTER --> MP[MemPalace backend]
|
|
34
|
-
MP --> ADAPTER
|
|
35
|
-
ADAPTER --> TOOL
|
|
36
|
-
TOOL --> LLM
|
|
37
|
-
```
|
|
11
|
+
- **Сам ищет нужную память** перед обычным ответом
|
|
12
|
+
- **Тихо сохраняет важное** по ходу работы
|
|
13
|
+
- **Пишет безопасно** через один контролируемый инструмент
|
|
14
|
+
- **Учитывает приватность** перед сохранением
|
|
38
15
|
|
|
39
|
-
##
|
|
16
|
+
## Быстрый старт
|
|
40
17
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
```json
|
|
44
|
-
{
|
|
45
|
-
"plugin": ["@rvboris/opencode-mempalace"]
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
OpenCode сам установит зависимости плагина при запуске.
|
|
50
|
-
|
|
51
|
-
## Локальная разработка
|
|
52
|
-
|
|
53
|
-
Для загрузки из исходников:
|
|
54
|
-
|
|
55
|
-
```jsonc
|
|
56
|
-
{
|
|
57
|
-
"$schema": "https://opencode.ai/config.json",
|
|
58
|
-
"plugin": [
|
|
59
|
-
"file:///ABSOLUTE/PATH/TO/mempalace-autosave/plugin/index.ts"
|
|
60
|
-
]
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
Самому плагину MemPalace MCP server не нужен — он использует встроенный Python adapter.
|
|
65
|
-
|
|
66
|
-
## Требования
|
|
67
|
-
|
|
68
|
-
- Python 3.9+
|
|
69
|
-
- установлен и инициализирован MemPalace
|
|
18
|
+
Установи MemPalace:
|
|
70
19
|
|
|
71
20
|
```bash
|
|
72
21
|
pip install mempalace
|
|
@@ -74,94 +23,41 @@ mempalace init <dir>
|
|
|
74
23
|
mempalace mine <dir>
|
|
75
24
|
```
|
|
76
25
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
npm run build
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Команда компилирует TypeScript в `dist/` и копирует adapter в `dist/bridge/`.
|
|
84
|
-
|
|
85
|
-
## Конфигурация
|
|
26
|
+
Добавь плагин в `opencode.json`:
|
|
86
27
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
- `MEMPALACE_AUTOSAVE_ENABLED`
|
|
90
|
-
- `MEMPALACE_RETRIEVAL_ENABLED`
|
|
91
|
-
- `MEMPALACE_KEYWORD_SAVE_ENABLED`
|
|
92
|
-
- `MEMPALACE_PRIVACY_REDACTION_ENABLED`
|
|
93
|
-
- `MEMPALACE_MAX_INJECTED_ITEMS`
|
|
94
|
-
- `MEMPALACE_RETRIEVAL_QUERY_LIMIT`
|
|
95
|
-
- `MEMPALACE_AUTOSAVE_LOG_FILE`
|
|
96
|
-
- `MEMPALACE_ADAPTER_PYTHON`
|
|
97
|
-
- `MEMPALACE_USER_WING_PREFIX`
|
|
98
|
-
- `MEMPALACE_PROJECT_WING_PREFIX`
|
|
99
|
-
|
|
100
|
-
Дополнительно можно использовать файл `~/.config/opencode/mempalace.jsonc`:
|
|
101
|
-
|
|
102
|
-
```jsonc
|
|
28
|
+
```json
|
|
103
29
|
{
|
|
104
|
-
"
|
|
105
|
-
"retrievalEnabled": true,
|
|
106
|
-
"keywordSaveEnabled": true,
|
|
107
|
-
"maxInjectedItems": 6,
|
|
108
|
-
"retrievalQueryLimit": 5,
|
|
109
|
-
"keywordPatterns": ["remember", "save this", "don't forget", "note that"],
|
|
110
|
-
"privacyRedactionEnabled": true,
|
|
111
|
-
"userWingPrefix": "wing_user",
|
|
112
|
-
"projectWingPrefix": "wing_project"
|
|
30
|
+
"plugin": ["@rvboris/opencode-mempalace"]
|
|
113
31
|
}
|
|
114
32
|
```
|
|
115
33
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
### Retrieval
|
|
119
|
-
|
|
120
|
-
На обычных пользовательских ходах плагин может подмешивать скрытую retrieval-инструкцию, чтобы модель сначала поискала релевантную память.
|
|
121
|
-
|
|
122
|
-
### Autosave
|
|
34
|
+
Этого достаточно, чтобы включить поиск по памяти, автосохранение и `mempalace_memory`.
|
|
123
35
|
|
|
124
|
-
|
|
36
|
+
## Что ты получаешь
|
|
125
37
|
|
|
126
|
-
|
|
38
|
+
- скрытый поиск по памяти перед ответом
|
|
39
|
+
- автосохранение на событиях сессии
|
|
40
|
+
- раздельную память для пользователя и проекта
|
|
41
|
+
- один безопасный инструмент для работы с памятью
|
|
42
|
+
- локальную Python-прослойку для MemPalace
|
|
127
43
|
|
|
128
|
-
|
|
44
|
+
Самому плагину **не нужен** сервер MCP от MemPalace.
|
|
129
45
|
|
|
130
|
-
|
|
46
|
+
## Основной инструмент: `mempalace_memory`
|
|
131
47
|
|
|
132
|
-
|
|
48
|
+
Это единственный инструмент, который нужен модели.
|
|
133
49
|
|
|
134
|
-
|
|
135
|
-
- `mempalace_kg_add`
|
|
136
|
-
- `mempalace_diary_write`
|
|
137
|
-
- соответствующие `mcp-router_*` варианты
|
|
50
|
+
### Режимы
|
|
138
51
|
|
|
139
|
-
|
|
52
|
+
- **`save`** — сохранить устойчивый факт, предпочтение или решение
|
|
53
|
+
- **`search`** — найти релевантную память по запросу
|
|
54
|
+
- **`kg_add`** — добавить структурированный факт в граф знаний
|
|
55
|
+
- **`diary_write`** — записать короткую рабочую заметку
|
|
56
|
+
- **`mine_messages`** — внутренний режим автосохранения, который использует сам плагин
|
|
140
57
|
|
|
141
|
-
###
|
|
58
|
+
### Примеры
|
|
142
59
|
|
|
143
|
-
|
|
144
|
-
- rooms: `preferences`, `workflow`, `communication`
|
|
145
|
-
|
|
146
|
-
Используется для:
|
|
147
|
-
- предпочтений по ответам
|
|
148
|
-
- личных привычек работы
|
|
149
|
-
- кросс-проектных соглашений
|
|
150
|
-
|
|
151
|
-
### Project scope
|
|
152
|
-
|
|
153
|
-
- wing: `${MEMPALACE_PROJECT_WING_PREFIX}_${slug(projectName)}`
|
|
154
|
-
- rooms: `architecture`, `workflow`, `decisions`, `bugs`, `setup`
|
|
155
|
-
|
|
156
|
-
Используется для:
|
|
157
|
-
- repo-specific setup
|
|
158
|
-
- архитектурных решений
|
|
159
|
-
- build/test команд
|
|
160
|
-
- паттернов баг/решение
|
|
161
|
-
|
|
162
|
-
## Примеры
|
|
163
|
-
|
|
164
|
-
### Сохранить user preference
|
|
60
|
+
Сохранить пользовательское предпочтение:
|
|
165
61
|
|
|
166
62
|
```text
|
|
167
63
|
mempalace_memory
|
|
@@ -171,60 +67,120 @@ mempalace_memory
|
|
|
171
67
|
content: Prefers concise responses and numbered steps.
|
|
172
68
|
```
|
|
173
69
|
|
|
174
|
-
|
|
70
|
+
Сохранить проектное решение:
|
|
175
71
|
|
|
176
72
|
```text
|
|
177
73
|
mempalace_memory
|
|
178
74
|
mode: save
|
|
179
75
|
scope: project
|
|
180
76
|
room: decisions
|
|
181
|
-
content: Use Bun for builds and tests
|
|
77
|
+
content: Use Bun for builds and tests.
|
|
182
78
|
```
|
|
183
79
|
|
|
184
|
-
|
|
80
|
+
Найти память:
|
|
185
81
|
|
|
186
82
|
```text
|
|
187
83
|
mempalace_memory
|
|
188
|
-
mode:
|
|
84
|
+
mode: search
|
|
189
85
|
scope: project
|
|
86
|
+
room: workflow
|
|
87
|
+
query: build command
|
|
88
|
+
limit: 3
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Добавить факт в граф знаний:
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
mempalace_memory
|
|
95
|
+
mode: kg_add
|
|
190
96
|
subject: my-repo
|
|
191
97
|
predicate: uses
|
|
192
98
|
object: bun
|
|
193
99
|
```
|
|
194
100
|
|
|
195
|
-
|
|
101
|
+
## Области памяти
|
|
196
102
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
103
|
+
**Память пользователя**
|
|
104
|
+
|
|
105
|
+
- `preferences`
|
|
106
|
+
- `workflow`
|
|
107
|
+
- `communication`
|
|
108
|
+
|
|
109
|
+
Подходит для стабильных привычек и предпочтений, которые полезны в любом проекте.
|
|
110
|
+
|
|
111
|
+
**Память проекта**
|
|
112
|
+
|
|
113
|
+
- `architecture`
|
|
114
|
+
- `workflow`
|
|
115
|
+
- `decisions`
|
|
116
|
+
- `bugs`
|
|
117
|
+
- `setup`
|
|
118
|
+
|
|
119
|
+
Подходит для знаний, привязанных к конкретному репозиторию.
|
|
120
|
+
|
|
121
|
+
## Настройка
|
|
122
|
+
|
|
123
|
+
Необязательный файл конфигурации: `~/.config/opencode/mempalace.jsonc`
|
|
124
|
+
|
|
125
|
+
```jsonc
|
|
126
|
+
{
|
|
127
|
+
"autosaveEnabled": true,
|
|
128
|
+
"retrievalEnabled": true,
|
|
129
|
+
"keywordSaveEnabled": true,
|
|
130
|
+
"maxInjectedItems": 6,
|
|
131
|
+
"retrievalQueryLimit": 5,
|
|
132
|
+
"privacyRedactionEnabled": true
|
|
133
|
+
}
|
|
204
134
|
```
|
|
205
135
|
|
|
206
|
-
|
|
136
|
+
Полезные переменные окружения:
|
|
137
|
+
|
|
138
|
+
- `MEMPALACE_AUTOSAVE_ENABLED`
|
|
139
|
+
- `MEMPALACE_RETRIEVAL_ENABLED`
|
|
140
|
+
- `MEMPALACE_KEYWORD_SAVE_ENABLED`
|
|
141
|
+
- `MEMPALACE_PRIVACY_REDACTION_ENABLED`
|
|
142
|
+
- `MEMPALACE_AUTOSAVE_LOG_FILE`
|
|
143
|
+
- `MEMPALACE_ADAPTER_PYTHON`
|
|
144
|
+
|
|
145
|
+
## Приватность
|
|
207
146
|
|
|
208
147
|
- поддерживаются блоки `<private>...</private>`
|
|
209
|
-
-
|
|
210
|
-
- полностью
|
|
148
|
+
- типовые секреты скрываются перед записью
|
|
149
|
+
- полностью приватное содержимое не сохраняется
|
|
150
|
+
|
|
151
|
+
## Документация проекта
|
|
152
|
+
|
|
153
|
+
- История изменений: [`CHANGELOG.md`](./CHANGELOG.md)
|
|
154
|
+
- Правила ведения changelog: [`CONTRIBUTING.md#changelog`](./CONTRIBUTING.md#changelog)
|
|
155
|
+
|
|
156
|
+
## Локальная разработка
|
|
157
|
+
|
|
158
|
+
Загрузка из исходников:
|
|
211
159
|
|
|
212
|
-
|
|
160
|
+
```jsonc
|
|
161
|
+
{
|
|
162
|
+
"$schema": "https://opencode.ai/config.json",
|
|
163
|
+
"plugin": [
|
|
164
|
+
"file:///ABSOLUTE/PATH/TO/mempalace-autosave/plugin/index.ts"
|
|
165
|
+
]
|
|
166
|
+
}
|
|
167
|
+
```
|
|
213
168
|
|
|
214
|
-
|
|
169
|
+
Сборка:
|
|
215
170
|
|
|
216
|
-
|
|
217
|
-
|
|
171
|
+
```bash
|
|
172
|
+
npm run build
|
|
173
|
+
```
|
|
218
174
|
|
|
219
|
-
|
|
175
|
+
Журналы отладки:
|
|
220
176
|
|
|
221
177
|
```bash
|
|
222
178
|
opencode --log-level DEBUG
|
|
223
179
|
```
|
|
224
180
|
|
|
225
|
-
|
|
181
|
+
Файл журнала: `~/.mempalace/opencode_autosave.log`
|
|
226
182
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
-
|
|
230
|
-
-
|
|
183
|
+
## Ссылки
|
|
184
|
+
|
|
185
|
+
- OpenCode: https://opencode.ai
|
|
186
|
+
- MemPalace: https://github.com/milla-jovovich/mempalace
|