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:
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"id": "catalog_card",
|
||||
"title": "Карточка модели",
|
||||
"order": 70,
|
||||
"aliases": ["card", "catalog"],
|
||||
"prompt_file": "catalog_card.md"
|
||||
}
|
||||
@@ -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": "1–3 sentences for the agent"
|
||||
}
|
||||
```
|
||||
|
||||
## Rules
|
||||
|
||||
- Prefer triggers from metadata / trainedWords — **never invent**.
|
||||
- `weight` typical 0.6–1.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.
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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
|
||||
|
||||
## Кратко
|
||||
2–6 short sentences merging prior memory + this chunk.
|
||||
@@ -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` (2–4 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` (2–4); still one fence, still STOP after it.
|
||||
|
||||
Reference in New Issue
Block a user