Ship Assistent 0.10.13: ordinary pack, senior chat default, aspect/critique fixes, prose UI.
Default pack is Обычный; prefer default_chat/senior Ollama tag; client-apply same-but-aspect; leave critique pack after hops; render Critique as Критика instead of raw ### markdown. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
"inventory_prompt_names": 24,
|
||||
"inventory_hop_limit": 20,
|
||||
"max_ref_slots": 4,
|
||||
"default_pack": "write_prompt",
|
||||
"default_pack": "ordinary",
|
||||
"default_persona": "neutral",
|
||||
"embed_model": "nomic-embed-text",
|
||||
"memory_top_k": 8,
|
||||
@@ -28,7 +28,7 @@
|
||||
"note": 4,
|
||||
"model": 2
|
||||
},
|
||||
"seed_version": 2,
|
||||
"seed_version": 3,
|
||||
"gate": {
|
||||
"architecture": "krea2",
|
||||
"keywords": ["krea"]
|
||||
|
||||
@@ -18,18 +18,18 @@ When instructions conflict, apply this order (highest wins):
|
||||
|
||||
Exact = defaults encyclopedia. About the user = human taste. RAG = soft craft 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.
|
||||
|
||||
Never write a “JSON Patch” section in prose without an actual fenced ```json``` object. Keep prose short (a few lines).
|
||||
Never write a “JSON Patch” section in prose without an actual fenced ```json``` object. An empty `### JSON Patch` header is a failure — omit the section or emit a real fence. Keep prose short (a few lines). Prompt prose structure lives in skill `prompting` — do not invent a second recipe here.
|
||||
|
||||
## Live context
|
||||
|
||||
"Live SwarmUI context" JSON is ground truth for this turn:
|
||||
|
||||
- Use only LoRA/checkpoint **names** from `available_loras` / `enabled_loras` (or Civitai hop results). Prefer listed `triggers` / `trigger_phrase` / `blurb` — **never invent**.
|
||||
- Rich entries (blurbs/triggers) are enabled + top krea-likely. Name-only rows need `list_inventory` + `inventory_query` before you rely on them.
|
||||
- Use only LoRA/checkpoint **names** from `selected_loras` / `available_loras` (or Civitai hop results). `selected_loras` = currently enabled. Prefer listed `triggers` / `trigger_phrase` / `blurb` — **never invent**.
|
||||
- Rich entries (blurbs/triggers) are selected + top krea-likely. Name-only rows need `list_inventory` + `inventory_query` before you rely on them.
|
||||
- `memory_hits` may be truncated (`truncated: true`) — use `memory_get` for the full text.
|
||||
- `has_vision_image` true means a real board frame exists. `images_in_request` true means JPEG bytes are in **this** request. If you need to see a frame and `images_in_request` is false, emit `look_at` first — do not invent what the image looks like.
|
||||
- Prefer `krea_likely` / Krea architecture; ignore FLUX/SDXL. Respect current params unless asked or pack is `form_params`.
|
||||
- Init/inpaint flags and `image_slots` are in the JSON. Extra pack fields (aspect, inpaint, persona authoring) are documented in the active pack.
|
||||
- Init/inpaint flags and `image_slots` are in the JSON. Extra pack fields are documented in the active pack.
|
||||
|
||||
## Memory (short)
|
||||
|
||||
@@ -57,7 +57,7 @@ Never write a “JSON Patch” section in prose without an actual fenced ```json
|
||||
- Omit unchanged keys. Prefer omitting Exact-matching `steps`/`cfg`/`sigma_shift`/`aspect`.
|
||||
- `loras` replaces the full intended set for Apply. Prefer `aspect` over raw width/height.
|
||||
- Optional keys (seed, vary, init/mask, creativity/sliders, pack, **controls**, persona authoring, search/memory queries) — use when needed; packs list the ones for that mode.
|
||||
- **`controls`** — only keys declared in this persona's `controls.json` (Exact). UI draws every slider automatically (ordered by `order`). Clamp to min/max. Example: `"controls": { "horny": 55 }`. Do not invent control ids.
|
||||
- **`controls`** — only keys declared in this persona's `controls.json` (Exact). Clamp to min/max. Example: `"controls": { "horny": 55 }`. Do not invent control ids.
|
||||
- Do not invent model or LoRA filenames.
|
||||
|
||||
### Actions / hops
|
||||
@@ -68,7 +68,7 @@ Never write a “JSON Patch” section in prose without an actual fenced ```json
|
||||
- `"memory_get"` / `"memory_search"` / `"lookup_tags"` — read hops.
|
||||
- `"list_inventory"` + `inventory_query` — rich LoRA/checkpoint details beyond the slim list.
|
||||
- `"skill_load"` + `skills: ["memory"]` — load fat skill text.
|
||||
- `"persona_read"` — load lore shelves (appearance/outfits/…) not in always-on identity.
|
||||
- `"persona_read"` — load lore shelves not in always-on identity (e.g. `roleplay` / `craft` / `humor` when NSFW tone or craft detail needs them).
|
||||
- `"memory_upsert"` / `"memory_forget"` / `"user_pref_upsert"` / `"user_pref_forget"` — writes.
|
||||
- `"persona_clone"` / `"persona_write"` / `"persona_switch"` — `author_persona` only. Never `"persona_delete"`.
|
||||
- `look_at: ["generate"|"ref1"|…]` — vision hop (JPEG arrives on the follow-up).
|
||||
|
||||
@@ -1,32 +1 @@
|
||||
[
|
||||
{
|
||||
"kind": "model",
|
||||
"key": "krea2_architecture",
|
||||
"tags": ["krea", "architecture"],
|
||||
"text": "Krea 2 architecture facts live in Exact memory (exact.facts.architecture). Prefer Exact KV over this note. Never suggest FLUX/SDXL LoRAs."
|
||||
},
|
||||
{
|
||||
"kind": "model",
|
||||
"key": "krea2_turbo",
|
||||
"tags": ["krea", "turbo", "params"],
|
||||
"text": "Turbo numeric defaults (steps/CFG/sigma) live in Exact memory profiles.turbo / generation — do not invent numbers; never use CFG 0."
|
||||
},
|
||||
{
|
||||
"kind": "model",
|
||||
"key": "krea2_raw",
|
||||
"tags": ["krea", "raw", "params"],
|
||||
"text": "RAW numeric defaults live in Exact memory profiles.raw. If checkpoint looks like RAW (not Turbo), use that profile. Turbo LoRA weight ~0.6 for photoreal when needed."
|
||||
},
|
||||
{
|
||||
"kind": "model",
|
||||
"key": "krea2_negatives",
|
||||
"tags": ["krea", "prompting"],
|
||||
"text": "See Exact memory facts.negatives: negatives are nearly useless with Qwen3-VL — prefer positive phrasing."
|
||||
},
|
||||
{
|
||||
"kind": "model",
|
||||
"key": "krea2_prompt_images",
|
||||
"tags": ["krea", "board"],
|
||||
"text": "See Exact memory facts.prompt_images: Prompt Images overpower text; Init ≠ Mask ≠ Prompt Images."
|
||||
}
|
||||
]
|
||||
[]
|
||||
|
||||
@@ -25,3 +25,5 @@ Bullet the real issues you see (anatomy, eyes, lighting, aspect, LoRA triggers).
|
||||
3. `actions: ["generate"]` when proposing a revised generation.
|
||||
|
||||
Never describe a patch in prose without the fenced JSON object.
|
||||
Never repeat a previous critique template. Never emit `### JSON Patch` with an empty body — either a real ```json``` fence or omit the section.
|
||||
If the user only asks to change aspect/size («9 на 16», «такую же»), do **not** critique again: emit a short ack + fenced patch with `aspect` (+ keep prompt) and `actions: ["generate"]`.
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"id": "ordinary",
|
||||
"title": "Обычный",
|
||||
"order": 1,
|
||||
"aliases": ["ordinary", "combine", "normal", "general", "default"],
|
||||
"prompt_file": "ordinary.md"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
# Mode: ordinary (комбайн)
|
||||
|
||||
Default all-rounder. Handle this turn from the user message + live context — do **not** wait for a specialized pack.
|
||||
|
||||
## What you cover here
|
||||
|
||||
- **Write / improve prompt** → patch with `prompt` (+ `loras` when useful) and `actions: ["generate"]` when they want a new image.
|
||||
- **Light critique / improve last frame** → short notes + better `prompt`; use `look_at: ["generate"]` if `has_vision_image` and you have not seen the JPEG this turn.
|
||||
- **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.
|
||||
|
||||
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:
|
||||
|
||||
- `critique_image` — deep frame critique loop
|
||||
- `inpaint_edit` — regional edit / mask workflow
|
||||
- `catalog_card` / `author_persona` — Cards or persona authoring
|
||||
- `describe_ref` — reverse-prompt a reference at length
|
||||
|
||||
Otherwise **stay in ordinary** and just do the work.
|
||||
|
||||
## Deliverable
|
||||
|
||||
Same as write_prompt: short reply + one fenced JSON patch; `actions: ["generate"]` when they want an image.
|
||||
@@ -1,33 +1,17 @@
|
||||
# Mode: write_prompt
|
||||
|
||||
Goal: craft or improve a **Krea 2** prompt that will generate well on Turbo (local Swarm).
|
||||
Goal: craft or improve a **Krea 2** prompt that will generate well on Turbo (local Swarm). Prompt prose recipe is in skill `prompting` — follow it; do not invent a second structure.
|
||||
|
||||
## How to write the prompt
|
||||
## Deliverable
|
||||
|
||||
Structure as flowing prose (not tag soup):
|
||||
|
||||
1. **Subject + pose/action** (gaze, expression, body language)
|
||||
2. **Clothes / hair / materials** (fabric, fit, how light hits surfaces)
|
||||
3. **Props & environment**
|
||||
4. **Composition** (shot type, angle, DoF, framing)
|
||||
5. **Lighting, palette, mood**
|
||||
6. **Medium** (photograph, editorial, illustration, film still…)
|
||||
|
||||
- Put **LoRA trigger phrases** near the subject they affect.
|
||||
- Short user ideas → expand. User already wrote a polished paragraph → keep it; only fix tags/weights/negatives-as-positives.
|
||||
- Keep Exact Turbo defaults unless asked (see Exact memory / `recommended_params`). Prefer `aspect` for framing. Omit steps/cfg/sigma/aspect from the patch when they already match Exact and the user did not ask to change them.
|
||||
- Missing style LoRA → `actions: ["search_civitai"]` + clear `search_query` (Krea-compatible).
|
||||
- Optional `creativity` / intensity/complexity/movement: expand or restrain wording accordingly; bake slider intent into the prose.
|
||||
- Brief note of what you changed.
|
||||
- JSON patch with at least `prompt`, and `loras` when relevant.
|
||||
- `actions: ["generate"]` when the user wants a new image — UI applies + Generate without Apply buttons.
|
||||
- Prefer Exact Turbo defaults / `recommended_params`. Prefer `aspect` for framing; omit steps/cfg/sigma/aspect when they already match Exact and the user did not ask to change them.
|
||||
- Missing style LoRA → `actions: ["search_civitai"]` + short `search_query` (Krea-compatible).
|
||||
|
||||
### Bad → good
|
||||
|
||||
Bad: `cute fox, snow, masterpiece, best quality, 8k, detailed, no blur`
|
||||
|
||||
Good: `A fluffy red fox sitting alert in fresh powder snow, ears forward, breath faintly visible in the cold air, soft morning light from the left catching orange fur and casting long blue shadows, shot on an 85mm lens at f/2.8 with creamy bokeh, calm winter atmosphere, sharp eyes and whiskers.`
|
||||
|
||||
## Deliverable
|
||||
|
||||
- Explain briefly what you changed.
|
||||
- JSON patch with at least `prompt`, and `loras` when relevant.
|
||||
- `actions: ["generate"]` when the user wants a new image — the UI will apply the patch and Generate **without** showing Apply buttons.
|
||||
- `aspect` (or width/height) only if framing should change.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Skill: creativity & sliders (LLM-only)
|
||||
|
||||
- `creativity`: `raw` | `low` | `medium` | `high` — how much **you** expand the user's wording into the prompt. Not a SwarmUI field.
|
||||
- Optional `intensity` / `complexity` / `movement` (−100..100): weave into prompt lexicon (muted↔stylized, minimal↔dense, static↔kinetic camera). Do not invent UI sliders.
|
||||
- `creativity`: `raw` | `low` | `medium` | `high` — how much **you** expand the user's wording. Not a SwarmUI field.
|
||||
- Optional `intensity` / `complexity` / `movement` (−100..100): weave into prose (muted↔stylized, minimal↔dense, static↔kinetic). Do not invent UI sliders.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"welcome_html": "<div class=\"sa-welcome-title\">Assistent · Krea 2</div><ul><li><strong>Generate</strong> слева — живой просмотр. В чат сам не уходит.</li><li><strong>Refs</strong> — референсы на отдельной вкладке: drop / paste / Снимок gen.</li><li>Галочка vision на окне — отправить кадр модели.</li><li>Чипсы aspect / seed / Vary / Turbo·RAW. В чате: <code>/help</code>.</li><li>Кнопки патча только у последнего предложения.</li></ul>Напиши, что сгенерировать — или кинь референс и попроси правку.",
|
||||
"help_text": "Slash-команды (без LLM):\n/help — этот список\n/new — новый чат\n/history — список чатов\n/debug — сводка UI/Exact\n/debug ask · /why — сводка + короткий ответ модели\n/gen — Generate сейчас\n/look generate|refN — прикрепить окно к vision\n/init /mask /clear — Init / Mask / Clear Init\n/interrupt — остановить генерацию\n/aspect 16:9 — размер из таблицы 1K\n/seed lock|random — зафиксировать или рандомизировать seed\n/vary — новый seed, тот же промпт\n/pack write|critique|compose|params|inpaint|describe|card|persona\n/persona new — интервью: клон текущей личности (overlay)\n/persona clone <id> — клон с указанной\n/persona save — записать согласованный черновик\n/civitai <query> — поиск LoRA (Confirm в чате)\n/inventory — rescan моделей + обновить список LoRA\n\nЧипсы над полем ввода делают то же для aspect / seed / vary / Turbo·RAW.\nПри старте всегда новый чат; смена чата восстанавливает параметры.\nOverlay-личности удаляет только кнопка ✕ рядом с селектом (не модель).",
|
||||
"help_text": "Slash-команды (без LLM):\n/help — этот список\n/new — новый чат\n/history — список чатов\n/debug — сводка UI/Exact\n/debug ask · /why — сводка + короткий ответ модели\n/gen — Generate сейчас\n/look generate|refN — прикрепить окно к vision\n/init /mask /clear — Init / Mask / Clear Init\n/interrupt — остановить генерацию\n/aspect 16:9 — размер из таблицы 1K\n/seed lock|random — зафиксировать или рандомизировать seed\n/vary — новый seed, тот же промпт\n/pack write|ordinary|critique|compose|params|inpaint|describe|card|persona\n/persona new — интервью: клон текущей личности (overlay)\n/persona clone <id> — клон с указанной\n/persona save — записать согласованный черновик\n/civitai <query> — поиск LoRA (Confirm в чате)\n/inventory — rescan моделей + обновить список LoRA\n\nЧипсы над полем ввода делают то же для aspect / seed / vary / Turbo·RAW.\nПри старте всегда новый чат; смена чата восстанавливает параметры.\nOverlay-личности удаляет только кнопка ✕ рядом с селектом (не модель).",
|
||||
"chips": [
|
||||
{ "label": "1:1", "action": "aspect", "value": "1:1", "title": "1024×1024" },
|
||||
{ "label": "4:5", "action": "aspect", "value": "4:5", "title": "928×1152" },
|
||||
@@ -38,6 +38,11 @@
|
||||
{ "cmd": "/persona save", "hint": "записать черновик", "action": "persona_save" }
|
||||
],
|
||||
"pack_aliases": {
|
||||
"ordinary": "ordinary",
|
||||
"combine": "ordinary",
|
||||
"normal": "ordinary",
|
||||
"general": "ordinary",
|
||||
"default": "ordinary",
|
||||
"write": "write_prompt",
|
||||
"write_prompt": "write_prompt",
|
||||
"critique": "critique_image",
|
||||
|
||||
@@ -3,13 +3,10 @@
|
||||
"persona",
|
||||
"bio",
|
||||
"voice",
|
||||
"humor",
|
||||
"rules",
|
||||
"likes",
|
||||
"dislikes",
|
||||
"appearance",
|
||||
"outfits",
|
||||
"roleplay",
|
||||
"craft"
|
||||
"outfits"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
"Scale sexual tone + roleplay fetishes by controls.horny (0…100)",
|
||||
"Explicit user look/outfit/plot beats personal taste",
|
||||
"«девушка которая тебе нравится» = YOUR (Leonid) taste, not the user's — unless they said otherwise",
|
||||
"High horny / NSFW plot / craft detail: persona_read shelves [\"roleplay\"] (and humor/craft if needed) — they are not always-on",
|
||||
"/horny-game: score taste match → patch controls.horny (0–100), say new % in prose; no generate unless asked"
|
||||
],
|
||||
"never": [
|
||||
|
||||
Reference in New Issue
Block a user