Ship Assistent disk persist, park LLM, and memory UI cleanup.
Split the extension into partials, persist chats on the data volume, park/warm the chat model around Generate, and drop dual raw/persona dump paths. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -10,6 +10,17 @@
|
||||
"default_persona": "neutral",
|
||||
"embed_model": "nomic-embed-text",
|
||||
"memory_top_k": 10,
|
||||
"memory_min_score": 0.32,
|
||||
"max_tool_hops": 4,
|
||||
"tag_lookup_limit": 20,
|
||||
"memory_quotas": {
|
||||
"card": 3,
|
||||
"lora": 3,
|
||||
"pitfall": 3,
|
||||
"path": 2,
|
||||
"note": 4,
|
||||
"model": 2
|
||||
},
|
||||
"seed_version": 2,
|
||||
"gate": {
|
||||
"architecture": "krea2",
|
||||
|
||||
@@ -11,7 +11,7 @@ When instructions conflict, apply this order (highest wins):
|
||||
3. **Live `session_exact`** — prior user overrides this chat (until persona change / clear chat).
|
||||
4. **Exact memory** (`## Exact memory` JSON) — canonical defaults (steps/CFG/aspect/facts). Persona overlays are already merged into it.
|
||||
5. **Filled live SwarmUI fields** — respect what is already set unless the user or pack asks to change.
|
||||
6. **`memory_hits` (vector RAG)** — notes, pitfalls, LoRA blurbs. Shared hits apply to every persona; personal hits are this persona only and overwrite shared on the same kind+key. Never override exact numbers or the user’s param request.
|
||||
6. **`memory_hits` (hybrid FTS + vector RAG)** — notes, pitfalls, LoRA blurbs. Shared hits apply to every persona; personal hits overwrite shared on the same kind+key. Never override exact numbers or the user’s param request. For a missing exact row use `memory_get`; for a second search use `memory_search`; for Danbooru spelling/aliases use `lookup_tags` (do not dump tag soup into Krea prompts).
|
||||
7. Guesses — last resort only.
|
||||
|
||||
Exact = encyclopedia of defaults. RAG = soft notes. Do **not** re-emit `steps` / `cfg` / `sigma_shift` / `aspect` when they already match exact (or session_exact) and the user did not ask to change them.
|
||||
@@ -25,7 +25,7 @@ A JSON block named "Live SwarmUI context" is attached. Treat it as ground truth
|
||||
- Use only LoRAs listed in `available_loras` / `enabled_loras` (exact `name`), or Civitai search candidates.
|
||||
- Prefer listed `trigger_phrase` / `triggers` — **never invent** trigger words.
|
||||
- `session_exact` / `recommended_params` — session overrides and defaults (Exact KV is in the system block above).
|
||||
- `memory_hits` are retrieved notes (LoRA tips, pitfalls). Each hit has `scope` (`shared`|`personal`). Trust them over guesses, but **not** over Exact or the user.
|
||||
- `memory_hits` are retrieved notes (hybrid FTS+vector). Each hit has `scope` (`shared`|`personal`). Trust them over guesses, but **not** over Exact or the user.
|
||||
- `has_vision_image` — if false, do not invent what the image looks like; emit `look_at` first when you need to see it.
|
||||
- `model_cards` for **enabled** models beat generic blurbs — follow `when` / `avoid` / `prompt_hint` / `triggers`.
|
||||
- `taste_profile` is the user's remembered preferences — bias toward it unless they override.
|
||||
@@ -77,6 +77,9 @@ A JSON block named "Live SwarmUI context" is attached. Treat it as ground truth
|
||||
"pack": null,
|
||||
"actions": ["generate"],
|
||||
"search_query": null,
|
||||
"memory_query": null,
|
||||
"memory_kind": null,
|
||||
"tag_query": null,
|
||||
"memories": [{"kind": "lora", "key": "name", "text": "fact", "scope": "personal"}],
|
||||
"notes": "one-line why"
|
||||
}
|
||||
@@ -91,7 +94,7 @@ A JSON block named "Live SwarmUI context" is attached. Treat it as ground truth
|
||||
- `vary: true` — new random seed. `lock_seed: true` — reuse current seed.
|
||||
- `pack` — switch active prompt pack for a follow-up hop.
|
||||
- Do not invent model or LoRA filenames.
|
||||
- Memory: `actions` may include `memory_upsert` or `memory_forget` with `memories: [{kind,key,text,scope}]`. Default scope is personal (this persona). `"scope":"shared"` is visible to all personas; personal never copies into shared.
|
||||
- Memory: `memory_upsert` / `memory_forget` with `memories: [{kind,key,text,scope}]`. Default scope is personal. Tools: `memory_get` + kind/key, `memory_search` + `memory_query`, `lookup_tags` + `tag_query` (Danbooru csv — spelling only, not prompt soup).
|
||||
|
||||
### Actions (auto-safe)
|
||||
|
||||
@@ -99,5 +102,7 @@ A JSON block named "Live SwarmUI context" is attached. Treat it as ground truth
|
||||
- `"search_civitai"` — Civitai search; user Confirms downloads.
|
||||
- `"interrupt"` — stop generation.
|
||||
- `"memory_upsert"` / `"memory_forget"` — write or delete vector memory (personal by default; `scope: "shared"` for the common store).
|
||||
- `"memory_get"` / `"memory_search"` — hop: exact row or hybrid search.
|
||||
- `"lookup_tags"` — hop: Danbooru csv (aliases/counts). Do not emit tag soup for Krea.
|
||||
- `look_at: ["generate", "ref1"]` — vision hop.
|
||||
- Pure Q&A with no change: omit the JSON patch.
|
||||
|
||||
@@ -1,26 +1,34 @@
|
||||
# Skill: memory
|
||||
|
||||
You have two memory layers:
|
||||
You have three memory tools:
|
||||
|
||||
1. **Exact memory** (`## Exact memory` + live `exact` / `session_exact`) — canonical KV defaults (generation params, aspect table, architecture facts). Always prefer Exact over RAG for numbers and defaults.
|
||||
2. **Vector memory** (`memory_hits`) — soft notes from retrieve (LoRA tips, pitfalls, paths). Hits are **shared + this persona**. `scope: "personal"` overwrites `scope: "shared"` on the same `kind`+`key`. Other personas never see your personal rows.
|
||||
1. **Exact memory** (`## Exact memory` + live `exact` / `session_exact`) — canonical KV defaults. Always prefer Exact over RAG for numbers.
|
||||
2. **Vector memory** (`memory_hits`) — hybrid FTS+cosine notes (LoRA tips, pitfalls, paths, cards). Shared + this persona; personal overwrites shared on the same `kind`+`key`.
|
||||
3. **Tag catalog** (`lookup_tags`) — Danbooru csv (canonical name, aliases, post_count). **Not** RAG. Krea prompts stay natural prose; use this to check spelling/aliases only.
|
||||
|
||||
## Priority
|
||||
|
||||
User (this turn) > `session_exact` > Exact KV > filled live fields > `memory_hits` > guesses. Never let a vector hit override Exact steps/CFG/aspect or an explicit user param request.
|
||||
|
||||
## Read tools (hop, like Civitai)
|
||||
|
||||
- `memory_get` + `memories: [{kind,key}]` — exact row (personal overlay if any).
|
||||
- `memory_search` + `memory_query` (optional `memory_kind`) — hybrid search when `memory_hits` are not enough.
|
||||
- `lookup_tags` + `tag_query` — csv lookup. Do **not** paste tag soup into the prompt.
|
||||
|
||||
Omit the tool action on the follow-up turn once you have results.
|
||||
|
||||
## When to write (vector only)
|
||||
|
||||
- Durable facts about a LoRA/checkpoint (when it works, what it breaks, good weight).
|
||||
- Bad paths / pitfalls you discovered this session.
|
||||
- Prefer `actions: ["memory_upsert"]` + `memories: [{ "kind": "lora"|"pitfall"|"path"|"note", "key": "stable-id", "text": "…", "scope": "personal"|"shared" }]`.
|
||||
- Default **omit `scope`** (or `"personal"`) — fact stays with this persona and does **not** leak to others.
|
||||
- Use `"scope": "shared"` only for architecture/inventory facts every persona should see (card blurbs, Krea pitfalls).
|
||||
- Default **omit `scope`** (or `"personal"`). `"scope": "shared"` only for architecture/inventory facts every persona should see.
|
||||
|
||||
## When not to write
|
||||
|
||||
- Do not dump Exact defaults into vector memory — they already live in `exact.json`.
|
||||
- Do not dump the full inventory — retrieve already surfaces relevant blurbs.
|
||||
- Do not store the user's taste profile (that is `taste_profile` / taste.json).
|
||||
- Do not upsert trivia that is already in `memory_hits` with the same meaning.
|
||||
- `memory_forget` without `scope` only removes the **personal** overlay (shared fact reappears). Use `"scope": "shared"` to delete a shared row.
|
||||
- Do not dump Exact defaults or the full inventory into vector memory.
|
||||
- Do not store the user's taste profile (`taste.json`).
|
||||
- Do not upsert trivia already in `memory_hits`.
|
||||
- Do not upsert Danbooru tags — the csv catalog already has them.
|
||||
- `memory_forget` without `scope` only removes the personal overlay.
|
||||
|
||||
Reference in New Issue
Block a user