计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
higgsfield-troubleshoot【效率与协作】Use when a Higgsfield generation fails, produces poor quality, looks wrong, doesn't match the prompt, or the user needs to fix or improve an output.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Generated-checked block (scripts/build_index.py verifies anchors). Read the linked sections for full context — these lines are routing aids, not the rules themselves.
notes →reject_reason, the human confirms — advisory until a class clears the agreement gate →Cause: No Soul ID reference; prompt has conflicting appearance descriptions Fix:
Cause: Camera described vaguely, not using exact preset names Fix:
Cause: Prompt too long, conflicting instructions, over-specified Fix:
SKILL.md HARD RULE 8)Cause: No style specified, or style description too vague Fix:
Cause: Preset not explicitly named, or scene context doesn't support the effect Fix:
Cause: Prompt re-describes the static elements instead of what should animate Fix:
Cause: Wrong model for the preset, or prompt style conflicts with effect Fix:
Cause: No lighting specification, background too plain Fix:
Cause: Platform safety filters triggering on explicit content Fix:
When a Kling 3.0 Motion Control generation comes back wrong, the cause is almost always upstream of the prompt — the motion reference clip, the character image, or the orientation/scene-source settings. Walk this list before you regenerate.
| Symptom | Root cause | Fix |
|---|---|---|
| Output suddenly jumps or snaps mid-clip | The motion reference contains a hidden cut, dissolve, or hard transition | Re-trim the reference to a single continuous shot. If the source clip can't be cleaned up, reshoot or pick a different reference |
| Output is shorter than the reference clip | The source motion is too fast or too dense for clean transfer | Slow the source (50–75% playback baked in), reshoot at a calmer pace, or pick a reference with simpler motion |
| Character face drifts or warps across the clip | The character image doesn't have a clearly readable face — bad framing, low light, or the face is too small in frame | Re-shoot or re-generate the character image with closer framing, even lighting, and a neutral or slight expression |
| Body motion looks correct but the face is dead or frozen | Wrong orientation mode for the shot — Image Orientation when you needed Video Orientation, or vice versa | Switch modes: Video Orientation for full-body movement (dance, action); Image Orientation for camera-driven shots with a mostly static body. Regenerate |
| Generated character feels detached from the environment | Scene source is set incorrectly — pulling the wrong background | Decide whether the environment should come from the motion video or the character image, then set Scene source accordingly |
| Motion transfers but identity drifts across the clip | The character image isn't full enough — head or body is cut off, or framing is too tight to anchor identity | Re-upload a character image that shows both head AND body fully; this is what Element Binding needs to keep the face stable through movement |
For the full Motion Control workflow and pre-flight input checklist, see
../higgsfield-motion/SKILL.md→ "Kling 3.0 Motion Control — When and How to Run It" and "Motion Reference Input Checklist".
Cause: Head motion tokens competing with lip engine, non-MP3 format, clip too long Fix:
higgsfield-audio skillCause: Ambient/music tokens in prompt invite generative audio engine to replace your audio Fix:
Before generating, verify:
Full negative constraints reference: For a comprehensive, categorized list of all generation artifacts and the prompt phrasing to prevent them, see
../shared/negative-constraints.md. This troubleshooting guide covers diagnosis and fixes; the shared constraints file covers prevention.
These diagnostics apply to Cinema Studio 3.0's generation engine (Business/Team plan only). For Cinema Studio 2.5 issues, see the general troubleshooting section above.
| Symptom | Likely Cause | Fix |
|---|---|---|
| Output blurry, jittery, or morphing | Overspecification — prompt too long or too detailed | Short-form: cut to 30–100 words; use @reference images/videos instead of 50+ words of description. Block-scaffold briefs: don't shorten — tighten structure instead (one axis per clause, HARD RULE 8 regime) |
| Camera chaotic, spinning, or jittering | Violated the One-Move Rule — multiple camera moves in one shot | Rewrite to ONE primary camera move per shot. Use Cinema Studio 3.0's Smart mode, or split into multi-shot |
| Character doesn't match reference | Prompt text contradicts the reference (a colour, a feature, a garment the image does not show), or varies between shots | Delete the text that contradicts the reference first — binding in every regime. Then by regime (../shared/house-rulings.md P1-1): start frame / I2V — the image is frame one; delete ALL appearance text, describe only motion, action and camera. No identity reference — keep the full descriptor, word for word; it is the only identity the model gets. Character reference attached as identity, multi-shot — whether a matching descriptor helps or hurts is OPEN — unmeasured, no default on volume (the minimal-text side: ../higgsfield-seedance/SKILL.md § Tag naming; the full-descriptor side: ../higgsfield-seedance/HELL-GRIND.md). Whatever you keep is fixed wording from one source, never varied between shots |
| Action stiff or lacking impact | Missing intent/physics language | Add degree adverbs (violently, gently, explosively) and physics consequences (dust erupts, sparks fly, fabric tears) |
| Output "not what I wanted" (vague) | Ambiguous prompt with subjective language | Run Anti-Slop Check: replace beautiful, stunning, epic, amazing, dynamic with observable, measurable details |
| Audio not matching video | Audio description conflicting with visual description, or uploaded audio being overridden | Use timestamp anchoring for uploaded audio. Remove ambient/SFX tokens when using @Audio references |
Output bad?
├── Blurry/morphing → Is it a short-form prompt > 100 words?
│ ├── Yes → Cut to 30–100 words, use @reference
│ │ (block-scaffold briefs: tighten structure, never truncate)
│ └── No → Too many action beats? (>2 per 5s) → Split into multi-shot
├── Camera wrong → How many camera moves specified?
│ ├── Multiple → Reduce to ONE move (One-Move Rule)
│ └── One → Try Smart mode instead, or use @Video camera transfer
├── Character wrong → Does prompt text contradict the reference?
│ ├── Yes → Delete the contradicting text first (every regime — P1-1)
│ │ start frame / I2V: delete ALL appearance, keep motion/camera
│ │ reference-attached multi-shot: matching descriptor = OPEN
│ └── No → Use better reference (frontal + 3/4 + profile shots)
├── Action weak → Does prompt have physics language?
│ ├── No → Add degree adverbs + physical consequences
│ └── Yes → Reduce beat density (1–2 beats per 5s)
└── Just bad → Run Anti-Slop Check
├── Found slop words → Replace with specific observables
└── Clean → Try different genre setting, or use @reference
Cinema Studio 3.0's generation engine produces ~90% usable output. If outputs are consistently bad across multiple attempts, the prompt is almost certainly the problem — not the model. Apply the diagnostic tree systematically before regenerating.
[EMPIRICAL — Emily2040/seedance-2.0 skill (MIT), re-derived 2026-08-09]
The sections above repair outright failure. Most real takes land in between —
partially good — and the expensive habit is treating every flaw as a
regeneration. Before anything re-fires, every delivered take gets exactly one
of five verdicts:
| Verdict | When | Next move |
|---|---|---|
| Keep | The thing this shot is FOR is delivered and nothing is fatal | Lock it, log it, move on. Perfection in secondary details is post's job |
| Fix in post | The flaw lives in the editor's domain: color, on-screen text, sound mix, trim, a few unstable frames at the ends | Never burn takes on what an edit fixes in minutes |
| Edit, don't regenerate | Composition and timing are right; exactly one layer is wrong and an edit surface supports it | Repair only the failing layer — the editor-not-regenerator mindset (../higgsfield-seedance/SKILL.md § Keyframe Workflow; ../higgsfield-pipeline/SKILL.md Pipeline E Stage 2) |
| Re-roll | The prompt is right; the sample was unlucky | Same prompt again, unchanged — every roll is fresh on this surface (no seed parameter; ../higgsfield-seedance/SKILL.md § Drafts Validate the Prompt, Not the Take). With enough ledger history, let the fork verdict decide iterate-vs-batch instead of eyeballing (higgsfield-recall § Read the verdict) |
| Rewrite | The same flaw appears in two takes | Systematic, not luck — two takes with the same flaw = rewrite, by rule. Diagnose (tables above; ../higgsfield-seedance/FAILURE-MODES.md), change the prompt |
The rewrite tripwire cuts both ways: the same flaw twice means stop re-rolling
into the same wall, but different flaws on every roll mean the miss is
stochastic — that's batch-and-cull territory, not a rewrite
(../higgsfield-prompt/SKILL.md § Before You Iterate). When two failed takes
differ, the Retry Ladder below reads them the other way (over-packed → split);
that disagreement is recorded OPEN, with no default, in § Stop-Rule Ladder.
When the verdict is
re-roll or rewrite and the failure keeps recurring, escalation is governed by
the Retry Ladder below.
Whatever the verdict changes — one prompt clause, OR the mode, OR one
reference — change exactly one thing between takes so causality stays
readable. Full mechanics: ../higgsfield-prompt/SKILL.md § The Iteration
Rule — Change One Variable at a Time (and DISCIPLINE.md § Single-Variable
Iteration). The shot log below records which variable, per take.
Write two things down before the first fire:
../../production-benchmarks.md (draft-tier exploration stretches it —
../higgsfield-seedance/SKILL.md § Drafts Validate the Prompt, Not the Take).
A declared budget is what replaces the Retry Ladder's default of three paid
attempts (§ Stop-Rule Ladder).At half the budget with no progress on the same flaw, stop iterating and change strategy: a different mode, a shot split, or the Retry Ladder's rung-4 named options. This is rung 2b of § Stop-Rule Ladder — it sits beside, and can fire before, the 10–15 ceiling. Iteration without a stop condition is how a cheap shot becomes an expensive one. The budget is not a promise of success — it is the tripwire that forces the strategy change.
One line per take — what changed, what resulted — and the repo already has
the surface for it: the generation ledger (../../db/ledger/, § Log the
Outcome below, 5-second rule). Put the one changed variable in notes
("changed: lens lock line"); prompt_hash already dedupes identical
re-rolls. Two rows sharing a flaw is the rewrite tripwire made auditable —
re-reading the log beats re-living it.
[EMPIRICAL — Emily2040/seedance-2.0 skill (MIT), re-derived 2026-08-09]
Symptom → likely cause → single repair variable for chained work:
continuations, extensions, and start-frame-pinned handoffs. One repair
variable per retake — the one-variable rule applied to sequences. Handoff
mechanics live in ../higgsfield-pipeline/SKILL.md § Continuation & Extension
Handoff; prompt templates in ../higgsfield-seedance/SKILL.md § Continuation
Prompt Formula. This table is the symptom-side index into both.
| Symptom | Likely cause | Repair variable (change this one thing) |
|---|---|---|
| Continuation opens from the planned ending, not the delivered one | Prompt written from the shot plan; the accepted take's actual end state was never reviewed | Rewrite the opening from what the parent clip actually shows — the source carries state, the prompt carries only the delta (higgsfield-pipeline § Source-carries-state rule) |
| Action restarts from the top | Completed beat never marked as already done | State the beat as completed ("the door already stands open") and prompt only what happens next |
| A later beat shows up early | Future-beat material leaked into this clip's prompt | Strip every future beat from prompt and endpoint — one clip owns one beat |
| Identity drifts across extensions | The chain tail displaced the canonical identity reference | Re-anchor from the ORIGINAL character refs, never a frame from the drifted tail (higgsfield-pipeline § Chain management) |
| Screen direction flips at the join | Axis never locked, or reset unintentionally | State the direction ("walks screen-left to screen-right") or declare the axis change as intentional coverage |
| Mid-flight motion stops dead | Open motion vector not carried across a still-frame handoff | Carry subject/camera speed and direction in prose — one of the three things a frame cannot carry (higgsfield-pipeline § Source-carries-state rule) |
| Camera move restarts from rest | Parent's camera-move phase missing from the prompt | Open from the observed camera phase ("mid-dolly, continuing in") |
| Prop contradicts the prior clip | Prop owner / position / condition not tracked across the handoff | Add a prop-state line (who holds it, where it sits, what condition); prop sheet for recurring props (higgsfield-pipeline Pipeline E Stage 3) |
| Dialogue repeats a delivered line | Audio phase not carried at the cut point | Mark the line as delivered and continue from the audio phase — a frame cannot carry it |
| Each extension looks worse than the last | Expected chain-depth drift — each generation re-ingests the previous one's artifacts | Re-anchor from canonical refs or cut intentionally; cap chains at 2 extensions, hard ceiling 3 (higgsfield-pipeline § Chain management) |
| A reference bleeds into the wrong role | Transfer / ignore clauses absent | Split the roles: per-image role line plus explicit exclusions (higgsfield-seedance § Reference Roles) |
| Too much happens; nothing lands | Several beats compiled into one prompt | Reassign future beats to later clips (higgsfield-seedance § Single-vs-multi-shot decision) |
A repair that works gets logged (§ Log the Outcome). Two takes failing on the SAME row is the rewrite tripwire in § Take Triage — stop re-rolling into the same wall.
[EMPIRICAL — MiniMax H3 skill corpus, re-derived 2026-08-09] When a take fails or drifts and the
diagnostic tree confirms the references and mappings were right, escalate in this order.
Each rung terminates — never loop on one rung:
placeholder: missing clip note in the deliverable. Silent omission is never one of the options.Log the rung that resolved it (§ Log the Outcome) — rung-2 resolutions are shotlist authoring lessons, not generation luck.
[HOUSE] ordering of six sourced numbers (../shared/house-rulings.md P1-2). Most of them
count different things — read the unit before the number. Two places where they count the
same thing and disagree are recorded below, not smoothed over. The earliest tripwire that
fires wins; every later number is a ceiling, never a quota.
| Rung | What is counted | Where it applies | Tripwire | When it trips | Source |
|---|---|---|---|---|---|
| 1 | Re-rolls of one unchanged prompt showing the same flaw | any shot | 2 | Stop re-rolling; rewrite — diagnose, change one variable. Different flaws per roll → see "Different flaws" below | § Take Triage [EMPIRICAL — Emily2040/seedance-2.0 skill (MIT), re-derived 2026-08-09] |
| 2 | Paid attempts on one shot whose references and mapping are verified right, no budget declared | the agent's own default ceiling | 3 | Stop; present named options — accept the best take, re-scope, defer, or ship a placeholder: missing clip note | § Retry Ladder, rung 4 [EMPIRICAL — MiniMax H3 skill corpus, re-derived 2026-08-09] |
| 2b | Attempts on one shot against a declared take budget, with no progress on the same flaw | any shot with a declared budget — replaces rung 2 | half the budget | Stop iterating; change strategy — a different mode, a shot split, or rung 2's named options | § Attempt budget [heuristic] — read as [HOUSE] |
| 3 | Batches of one v2v prompt + source showing the same defect | Seedance 2.5 omni_reference v2v | 4 (ceiling) | Stop batching — the prompt or the source is at fault; check the plate has an anchor for the action, else fall back to i2v | ../higgsfield-seedance-2-5/VFX-PIPELINE.md § Stage 5 [FIELD — AI-vs-VFX, 2026-08-08] |
| 4 | Prompt versions — one surgical line changed each — on one shot, inside a declared production budget | feature-film and hero shots | 10–15 (ceiling) | Stop rewording; simplify the shot — split it, remove an action, change the angle | ../higgsfield-seedance/HELL-GRIND.md § The iteration loop [OFFICIAL — Hell Grind brief] |
| — | Generations per kept shot across a project | planning only | 65–100 per kept shot; 72 for one iteration-heavy establishing shot | Nothing — a budget benchmark, never a stop rule and never a target | ../../production-benchmarks.md [FIELD — 13-project harvest] · Hell Grind disclosure |
How they compose:
../higgsfield-prompt/SKILL.md § Before You
Iterate) and § Retry Ladder rung 2 (a second failure is evidence the shot is over-packed →
split it) read the same two failures in opposite directions. Both are third-party
practitioner material, and at n = 2 the ledger's fork verdict is low-n — it cannot decide.
No default: a wasted batch and a needless split cost about the same, and nothing here
measures which reading is right. Name both moves and what each costs, and let the user pick;
once the shot has five or more logged rows, the ledger's fork verdict (iterate /
batch+sel) decides instead (../higgsfield-prompt/SKILL.md § Before You Iterate).Troubleshooting that isn't logged is troubleshooting the next session repeats.
After ANY confirmed fix from this skill, write it to the learning memory
(../../scripts/higgsfield_memory.py, databases in ../../db/):
python3 scripts/seedance_lint.py --confirmed "<prompt that passed>"python3 scripts/higgsfield_memory.py add-quality '<json>' with
failure_type, original_prompt, failure_description, improved_prompt, model_used —
then update-quality <id> improved once verified.python3 scripts/higgsfield_memory.py update-filter <id> <fixed|workaround|still-blocked>--project <name> to keep them scoped
under ../../db/projects/ instead of global memory.Before troubleshooting, also CHECK memory first — that's higgsfield-recall's
job (query-filter / query-quality); the preflight's MEMORY RECALL section
does it automatically.
The reject_reason you log feeds the iterate-vs-batch fork (higgsfield-recall
§ Read the verdict). Logged from memory it's hearsay — "I think the face
drifted." When you can actually see the rejected output, classify it from the
frame instead of from recall. This is an opt-in assist ("diagnose this
rejected shot"), and it is advisory: vision proposes, the human confirms.
Scope (v1): stills only — an image, or a single representative frame the user
picks from a video. Full-clip motion failures (FPS drift, temporal de-dup,
multi-motion) are out of scope here; they need frame-by-frame review
(../higgsfield-seedance/FAILURE-MODES.md), not a single-frame classify.
The chain:
media_import_url (never pass a raw URL). Cowork local file → the upload
widget. Outputs are not auto-saved, so capture is an explicit step.reject_reason enum (the table below). Note what you
see in one line (the vision_evidence).other + note. Some visible failures (warped hand, FPS
drift) have no exact enum value. Route to other with the evidence note;
never force-fit a near-miss. If the other pile grows, that's the data
that justifies a future enum-extension PR.physics (warped
left hand, center frame); confirm or correct?" — then:
python3 ../../scripts/higgsfield_memory.py log-gen <project> --model <id> \
--tags <shot_tags> --outcome rejected --reason <confirmed> \
--vision-reason <proposed> --vision-evidence "<one line>"
--reason is the human verdict (drives the fork); --vision-reason is the
proposal (feeds the agreement gate). Logging both is what lets the tool learn.Mapping table — what vision sees → reject_reason:
| Vision observes | reject_reason |
|---|---|
| face / identity changed vs reference | identity-drift |
| wardrobe or colour shifted vs reference | wardrobe-contamination |
| extra cuts / unwanted scene breaks | extra-cuts |
| staging or blocking broken | blocking-broken |
| flat / wrong performance | performance |
| wrong camera move | camera-wrong |
| physics or anatomy violation (incl. warped hand) | physics |
| garbled on-screen text | text-render |
| provider content-filter block | filter-flagged |
| bad framing / composition | composition |
| FPS drift, temporal de-dup, or no clean home | other + evidence note |
Measure before trusting. Vision is the fork's accuracy backstop only once
proven. python3 ../../scripts/higgsfield_memory.py agreement <project> reports, per
reject_reason class, how often the proposal matched the confirmed verdict. A
class is trusted (vision may be logged without confirmation) only above the
agreement gate over enough confirmed diagnoses; until then, confirm every one.
higgsfield-prompt — MCSLA formula, prompt structure, Identity/Motion separationhiggsfield-recall — Pre-generation memory check for past failureshiggsfield-models — Model selection (wrong model = many quality issues)higgsfield-audio — Audio-specific failures and fixeshiggsfield-cinema — Cinema Studio–specific issues (512 char limit, @ Element bugs)higgsfield-pipeline — Continuation & Extension Handoff mechanics (workflow side of the Sequence & Continuation Failure Atlas)../shared/negative-constraints.md — Prevention-focused constraint reference