A Jev-powered bot for Bluesky and Slack.
talky-jev docs decoder-experiments.md
8.2 kB · 207 lines
Markdown
at main

Decoder experiments #

Local experiments on 2026-10-20. Nothing from these runs was published to Bluesky. The conservative dialogue variant was initially selected for production. Production now uses delayed stopping with saved complete endings, described below. experiments/decoder.py preserves the candidate implementations.

The target is Cee's awkward but connected conversation, judged against the original screenshot and tournament description. No celebrity, persona, style imitation, example assistant replies, or prescribed filler words were supplied to Jev. All word-selection probabilities and judgments come from Jev 1.13.0; the code controls the vocabulary, scoring, sampling, and stopping.

Findings #

  • Broad weighted sampling sometimes selects a low-ranked word early, after which subsequent decisions follow the bad prefix. Greedy selection alone did not fix the problem; it also repeated punctuation and phrases.
  • Explicit final choices containing the literal next word and the resulting reply performed better in these samples than bare word labels.
  • Word-only candidates remove the punctuation loops we introduced. Cee's visible conversation contains no sentence punctuation, although its exact vocabulary and stopping implementation remain unknown.
  • A plain Human/Jev dialogue without a trailing blank, sampling from the top three weighted finalists, and completion checks at every word produced six naturally stopped replies in six fresh single-turn cases. They were mostly short. This is a small qualitative sample, not a reliable success-rate estimate; the changes were combined, so it does not establish each one's independent effect.
  • Delaying eligible stops with a 35% stopping chance allowed longer continuations. In four three-turn conversations, nine turns ended and three hit limits. A weak answer can feed a repetition loop in the following turn. The experiment retained limit-stopped previews in history; the production publisher would withhold them, so this is not a replay of the public bot's exact behavior.

The experimental repetition penalty is 0.85 ** count over the preceding 24 words. The main tournament remains 5,000 dictionary words plus recent-message words, groups of 250, four finalists per group, then vote times naturalness squared times the repetition penalty. Completion requires a completion judgment above 0.5 and an unfinished-phrase judgment below 0.5. These are reconstruction choices, not confirmed Cee parameters. The stronger 0.75 completion threshold and an eight-word minimum both caused some replies to continue past viable endings.

Single-turn checks #

These are all six fresh prompts/seeds for the no-blank dialogue candidate.

Seed 1 — What kind of music do you like, and why?

i like rock

Stop: end.

Seed 7 — What kind of music do you like, and why?

i like pop because it's fun

Stop: end.

Seed 1 — I tried to bake bread and it came out like a brick. Any thoughts?

yeah depends on what bread type

Stop: end.

Seed 7 — I tried to bake bread and it came out like a brick. Any thoughts?

oh well that's bad

Stop: end.

Seed 1 — What would be your ideal Saturday?

i'd do nothing

Stop: end.

Seed 7 — What would be your ideal Saturday?

i'd like to relax

Stop: end.

Longer conversations #

All four conversations follow. Repetition failures are preserved verbatim.

bread-23 #

Human: I tried to bake bread and it came out like a brick. Any thoughts?

Jev: oh well tough luck man

Stop: end.

Human: I was going for sourdough. Now it could hold a door open.

Jev: lmao brick

Stop: end.

Human: Okay, give me a pep talk before I try again.

Jev: well just do it

Stop: end.

bread-7 #

Human: I tried to bake bread and it came out like a brick. Any thoughts?

Jev: yeah there's a thing that is called recipe lmao

Stop: end.

Human: I was going for sourdough. Now it could hold a door open.

Jev: lmao

Stop: end.

Human: Okay, give me a pep talk before I try again.

Jev: lmao lmao haha haha haha ha ha haha haha haha haha haha ha ha haha lmao lmao lmao lmao lmao lmao lmao lmao lmao lmao lmao lmao ha ha ha haha lmao haha lmao haha ha ha haha lmao haha haha haha lmao haha haha ha ha haha lmao lmao lmao haha ha ha lmao lmao haha haha ha lmao lmao lmao lmao lmao

Stop: step_limit.

music-23 #

Human: What music are you into lately?

Jev: i guess whatever tho lol

Stop: end.

Human: Sell me on it. What do you like about it?

Jev: uh well i guess like it lol anyway it's whatever tho lmao k ok lol yeah lmao lol lmao lmao lmao lmao lmao lmao lmao lmao lmao lmao lmao lmao lmao lol lol lol lol lol lol lol lmao lmao lmao lmao lmao lol lmao lmao lmao lol lmao lol lmao lmao ok lmao k lmao k lmao k ok ok lmao lol lol

Stop: step_limit.

Human: What would you name your own band?

Jev: lol lmao whatever tho lmao k lmao lmao lmao lmao lmao k ok lmao lmao lmao lmao lmao lol lmao lmao whatever tho lmao lmao whatever lol whatever tho lmao k lmao lmao whatever tho whatever tho lmao lol lol lol lol whatever whatever lmao lol lmao lmao whatever tho whatever lmao lmao whatever tho lmao k

Stop: length_limit.

music-7 #

Human: What music are you into lately?

Jev: i'm into rock music

Stop: end.

Human: Sell me on it. What do you like about it?

Jev: i like it because it's cool

Stop: end.

Human: What would you name your own band?

Jev: uh well maybe i'd call the band something like rock

Stop: end.

Reproduction #

uv run python -m experiments.decoder --variants dialogue --prompts bands weekend bread --seeds 1 7 --output scratch/decoder-recheck

Use dialogue_long for the longer-stop candidate. Full decision traces for this session remain under ignored scratch/decoder-v1 through scratch/decoder-v7 and scratch/dialogue-conversations. The local seed controls code-side sampling; provider probability estimates may change between calls, so reruns need not be byte-identical. Earlier trace directories also reflect intermediate stopping thresholds recorded in the experiment sequence, rather than every variant's current implementation.

Looser production stopping #

The first production decoder always accepted the earliest complete ending. Live replies such as "depends on taste" exposed how strongly that favors brevity. Production now stops with 35% probability at each eligible ending, with no minimum length. If continuation hits a length, time, or step limit, it returns the latest ending Jev judged complete rather than publishing an unfinished continuation. Without a saved ending, a limit-stopped draft remains withheld. Word selection, vocabulary, and the 300-grapheme/3,000-byte post limits are unchanged.

uv run python -m experiments.stopping compares the old 100% stopping rule with 35% on three prompts against the real provider. Traces go to scratch/stopping. Additional runs used seeds 1 and 23 at 35% and 15%. These are qualitative checks, not controlled identical provider outputs or a reliable quality estimate.

At seed 7, the movie prompt changed from "depends on you" to "depends on you taste"; the Saturday prompt changed from "well i'd relax and do nothing" to "i'd like to relax alone tho yea". At 35%, seed 1 produced this longer Saturday reply:

well i like doing things like going to the park walking and running and playing games uh and stuff uh uh uh uh uh uh uh uh uh uh uh uh uh uh and stuff anyway okay

Longer is not automatically better. The 15% setting produced a movie response that repeated filler until the length limit without any eligible ending, so it remained withheld. The 35% movie run at seed 23 reached the limit but recovered "my picks are the top" from a saved ending. Jev's completion judgment can itself be weak; the fallback preserves that judgment, not a guarantee of good prose. The 35% setting was retained rather than pushing every response toward 300 characters.