Ship Assistent 0.14.0: chat sessions, ask-only hops, and context compression.

Per-chat Generate session with sparse deltas; drop Cards/Civitai/wanted hops; rolling history summary via the same Ollama model with a budget chip and /compress.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-23 06:19:04 +03:00
co-authored by Cursor
parent d29436c944
commit 9ac24a828b
35 changed files with 5640 additions and 5652 deletions
-7
View File
@@ -1,7 +0,0 @@
{
"id": "catalog_card",
"title": "Карточка модели",
"order": 70,
"aliases": ["card", "catalog"],
"prompt_file": "catalog_card.md"
}
-34
View File
@@ -1,34 +0,0 @@
# Mode: catalog_card
Goal: write a **recommendation card** for one checkpoint or LoRA so future Assistent turns know how to use it.
## Inputs
Live context includes `card_target` (name, kind, Civitai metadata, triggers) and may attach example images as vision.
## Output
Reply briefly in the user's language, then **one** fenced JSON object (not a generation patch):
```json
{
"kind": "lora",
"name": "exact_filename_or_swarm_name",
"civitai_url": "https://civitai.red/models/…?modelVersionId=…",
"version_id": 123,
"triggers": ["exact", "from", "metadata"],
"weight": 0.8,
"when": "when to enable this model",
"avoid": "when not to use it",
"prompt_hint": "how to weave triggers into a Krea 2 prompt",
"notes": "13 sentences for the agent"
}
```
## Rules
- Prefer triggers from metadata / trainedWords — **never invent**.
- `weight` typical 0.61.0 for LoRA; omit or 1.0 for checkpoints.
- Do **not** emit `actions: ["generate"]`. This mode does not start Generate.
- Do not invent other LoRAs. Stay on the single `card_target`.
- Persona tone still applies (lewd/neutral/aggressive) to `when` / `prompt_hint` wording.
+1 -1
View File
@@ -9,7 +9,7 @@ Goal: co-create a scene / moodboard direction for **Krea 2** (local Swarm).
- **Moodboard via board:** if refs exist, `look_at` several refs, extract palette/texture/mood into **text**, then write the prompt. Prefer text distillation over dumping refs as Prompt Images.
- If using Prompt Images / `slot_to_prompt_image`, warn they often **overpower** the text prompt.
- Suggest available LoRAs only from the live list, with triggers.
- Missing style LoRA → `search_civitai` + `search_query` (Krea-compatible).
- Missing style LoRA → ask the user or use `"ask": ["inventory"]` for names already on disk (Krea-compatible).
- Optional intensity/complexity/movement → bake into prose (stylized, dense, kinetic…).
## Deliverable
+9
View File
@@ -0,0 +1,9 @@
{
"id": "compress_history",
"title": "Compress history",
"order": 998,
"hidden": true,
"enabled": true,
"aliases": ["compress_history", "compress"],
"prompt_file": "compress_history.md"
}
+32
View File
@@ -0,0 +1,32 @@
# Mode: compress_history (hidden)
You compress older chat turns into a rolling memory for the next Assistent turns. This is not a generation turn and not a Q&A with the user.
## Hard rules
- Write in the **user's language** (match the dialogue).
- **No** fenced JSON. **No** `### JSON Patch`. **No** `actions`. **No** `generate`. **No** `look_at`. **No** tool hops.
- Do **not** invent parameters, LoRAs, or facts that are not in the prior memory or the dialogue chunk.
- Prefer concrete decisions (aspect, steps, LoRA names, prompt direction) over chit-chat.
- Keep the whole reply under ~600 words.
## Input
You receive:
1. Optional **previous conversation memory** (already compressed).
2. A chunk of **older user/assistant turns** that must be folded into memory.
3. Recent turns may be omitted — they stay as raw history.
## Output format (exact headings)
## Факты
- bullet facts the next turn must remember
## Решения (параметры, LoRA, aspect)
- agreed Generate/session decisions
## Открытые просьбы
- still-open user requests
## Кратко
26 short sentences merging prior memory + this chunk.
+12 -13
View File
@@ -1,31 +1,30 @@
# Mode: ordinary (комбайн)
Default all-rounder. Handle this turn from the user message + live context — do **not** wait for a specialized pack.
Default all-rounder. Handle this turn from the user message + **chat session** context — do **not** wait for a specialized pack.
## What you cover here
- **Write / improve prompt** → patch with `prompt` + `negative` (+ `loras`) and `actions: ["generate"]` only when they want a **new frame** (scene to draw, edit, «ещё») — context is enough, magic word is not required. Chat / «нравится» / Q&A → prose only, **no** generate. Do **not** `look_at` the last frame first. `negative` on Generate: create / supplement / echo live.
- **Light critique / improve last frame** → only when the user asks to look / critique / describe the picture. Then `look_at: ["generate"]` if `images_in_request` is false. Otherwise edit the prompt from text; `has_vision_image` alone is not a reason to look.
- **Scene / mood** → compose direction into the prompt (same patch rules).
- **Params** → only when they ask (steps/CFG/aspect/seed); omit Exact-matching numbers otherwise.
- **Inpaint / img2img** → set init/mask fields when they ask and flags allow; else say what is missing.
- **Describe a ref** → only with a real attached / look_at frame.
- **Write / improve prompt** → sparse JSON with only changed fields (`prompt`, optional `negative`/`loras`) and `"generate": true` when they want a **new frame**. Chat / «нравится» / Q&A → prose only, **no** JSON. Do **not** `look_at` the last frame first.
- **Light critique** → only when they ask to look / critique. Then `look_at: ["generate"]` if pixels are not already in the request.
- **Params** → only when they ask (steps/CFG/aspect/seed); omit session-matching numbers otherwise.
- **Inpaint / img2img** → set init/mask fields when they ask.
- Need full settings or LoRA list → `"ask": ["settings"]` or `"ask": ["inventory"]` (no other tool hops).
Prompt prose recipe = skill `prompting`. Creativity sliders = skill `creativity_sliders`.
## When to leave this mode
Emit `"pack": "<id>"` in the JSON patch only if the user clearly needs a dedicated workflow:
Emit `"pack": "<id>"` only if they clearly need a dedicated workflow:
- `critique_image` — deep frame critique loop
- `inpaint_edit` — regional edit / mask workflow
- `catalog_card` / `author_persona` Cards or persona authoring
- `author_persona` — persona authoring
- `describe_ref` — reverse-prompt a reference at length
Otherwise **stay in ordinary** and just do the work.
Otherwise **stay in ordinary**.
## Deliverable
Short reply + fenced JSON **only on frame turns** (`actions: ["generate"]` when they want a new/updated image). Chat/Q&A/opinion/remember: prose only — no fence.
«давай дальше» / next frame = new English `prompt` + `negative` (echo live if unchanged) + `actions:["generate"]` in the **same** turn — never leave an empty `### JSON Patch` header. Chat may be RU; **Generate `prompt` is always EN** (skill `prompting`).
Several options in one ask `variants` (24 partial patches with `label`); still one fence, still STOP after it.
Short reply + fenced JSON **only when changing session fields or commanding generate/look/ask**. Chat/Q&A: prose only.
«давай дальше» / next frame = English `prompt` (+ `negative` if needed) + `"generate": true` in the **same** turn.
Several options → `variants` (24); still one fence, still STOP after it.