Add analysis profiles with distance/proximity-aware axes
A discrete verdict collapses magnitude and a generic axis can hide what you're calibrating (a blowjob where the head is 20cm away still reads sexual_act=oral -> MATCH). New 'profile' input selects an act-specialized axis set (general / oral / penetration / handjob / solo) whose act-critical axes capture distance explicitly (mouth_genital_distance: touching/<5cm/10-20cm/>20cm, oral_depth, insertion_depth, stroke_position, ...). axes now overrides the profile when set. agent_bridge gains --profile; workflows + docs updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -56,6 +56,27 @@ Each axis carries a one-line definition in the prompt (so e.g. `gender_mix` is a
|
||||
not a position). Coarse axes blur the differences that matter for adult imagery; the act /
|
||||
pose cluster is split into many axes so the agent gets specific, actionable targets.
|
||||
|
||||
## Analysis profiles (pick the axis set for the act)
|
||||
|
||||
A discrete verdict collapses *magnitude*, and a generic axis can hide the very thing you're
|
||||
calibrating: for a blowjob, `sexual_act` reads "oral" in both ref and gen → MATCH, even if
|
||||
in the gen the head is 20 cm from the penis. So the judge has **analysis profiles** — act-
|
||||
specialized axis sets whose act-critical axes are **distance/proximity-aware**:
|
||||
|
||||
| profile | adds (beyond the shared identity/body/render base) |
|
||||
|---|---|
|
||||
| `general` | sexual_act, body_orientation, limb_arrangement, penetration, contact_points, genital_visibility, pose |
|
||||
| `oral` | **mouth_genital_contact**, **mouth_genital_distance** (touching / <5cm / 10–20cm / >20cm), **oral_depth** (tip/half/throat), tongue, hand_on_shaft, gaze_up |
|
||||
| `penetration` | insertion_depth (tip/shallow/half/hilt), insertion_angle, body_orientation, limb_arrangement, … |
|
||||
| `handjob` | hand_on_shaft, grip_style, stroke_position (base/mid/tip), mouth_genital_contact, … |
|
||||
| `solo` | self_touch_location, toy_use, insertion_depth, … |
|
||||
|
||||
Now "mouth on the tip" vs "head 20 cm away" is a concrete, scored difference
|
||||
(`mouth_genital_distance: mismatch ref:[contact] gen:[far >20cm]`) — the magnitude lives
|
||||
in the `ref`/`gen` text. Set `profile` on the node (or `agent_bridge.py --profile oral`),
|
||||
or override entirely with a custom `axes` list. Profiles are easy to extend in
|
||||
`PROFILES`/`AXIS_DEFS` in `nodes/qwen_judge.py`.
|
||||
|
||||
## Step 0 — first pass (describe / bootstrap)
|
||||
|
||||
The very first iteration has no generated image yet, so the judge runs in **describe
|
||||
|
||||
Reference in New Issue
Block a user