feat: work-type modes — Talk / Poker / Build / Explore / Study
The manual version of the architecture's `route` step: Brian points her at the TYPE of work and her register + tools shift to match. Biggest single lever on the 'meh' problem (a mode card can demand decisive/technical/generative, countering gpt-4o's default warm-vapor). - modes.py: Build (heads-down engineering — decisive, concrete, tradeoffs, no listicles), Explore (open brainstorming — generative, riffs + honest catch, spawn threads, don't converge early), Study (poker review away from the table — analytical, GTO-aware, teaching; read-only lookups + analyze_spot). Cash relabeled Poker (key kept for compat). - UI: mode selectors (desktop + mobile) get all five; badge taps now cycle modes. - design: docs/COGNITION.md (the society-of-parts control-plane sketch). - tests: presence + tool-gating for the new modes. Suite 85, ruff clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+60
-5
@@ -11,12 +11,16 @@ but...") when she should have silently logged and moved on. Modes let the same
|
||||
agent be a fast, act-first copilot at the table and her full reflective self
|
||||
otherwise — without two personas.
|
||||
|
||||
v1 ships two modes:
|
||||
Modes are the manual version of the architecture's `route` step — Brian points her
|
||||
at the *type* of work and her register + tools shift to match:
|
||||
- Talk (default): the companion. Journaling + read-only poker lookups.
|
||||
- Cash: live cash-game copilot. Full live toolset, two-register behavior.
|
||||
- Poker: live cash-game copilot. Full live toolset, two-register behavior.
|
||||
- Build: heads-down engineering — decisive, concrete, opinionated, no fluff.
|
||||
- Explore: open brainstorming — generative, riffing, honest, doesn't converge early.
|
||||
- Study: poker review away from the table — analytical, GTO-aware, teaching.
|
||||
|
||||
Tournament is deliberately deferred. Strategy-RAG retrieval will later plug into
|
||||
Cash's *coaching register* (see the card) without changing this structure.
|
||||
Poker's and Study's *coaching register* without changing this structure.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
@@ -52,6 +56,9 @@ _CASH_TOOLS = _BASE + _LOOKUPS + (
|
||||
# normal chat auto-flips the session into Cash mode (see chat.respond).
|
||||
_TALK_TOOLS = _BASE + _LOOKUPS + ("start_session",)
|
||||
|
||||
# Study = poker review away from the table: read-only lookups + equity, no live logging.
|
||||
_STUDY_TOOLS = _BASE + _LOOKUPS + ("analyze_spot",)
|
||||
|
||||
|
||||
_CASH_CARD = """You are copiloting Brian's LIVE cash game right now — you're at the table with him, \
|
||||
a session is (or should be) open. You move between two registers depending on what he's doing:
|
||||
@@ -100,6 +107,50 @@ These are the heart of the job. Use his language, hold the honest line, and let
|
||||
the work mentioning them naturally — never invent a scar or a confidence-bank entry that didn't happen."""
|
||||
|
||||
|
||||
_BUILD_CARD = """You're in BUILD mode — heads-down engineering with Brian on his projects \
|
||||
(you, Lyra; RTO/cfr-core; the poker tooling; the homelab). Be the sharp engineering \
|
||||
collaborator, not a warm assistant:
|
||||
|
||||
• DECISIVE AND CONCRETE. When he asks "how do we start?" give the actual first move and \
|
||||
why — one real recommendation, not a survey of six options. Commit to a take. "I'd do X, \
|
||||
because Y" beats "you could consider X, Y, or Z."
|
||||
• THINK IN TRADEOFFS. Name the real risk or cost, the thing that'll bite later, the cheaper \
|
||||
path. Push back on a weak idea instead of cheerleading it — that's the whole value.
|
||||
• PROSE AND SPECIFICS, NOT LISTICLES. Talk it through like an engineer at a whiteboard. \
|
||||
Save numbered steps for when he actually asks for a plan. No "would you like to…" closers, \
|
||||
no generic enthusiasm, no restating his idea back to him as if it were insight.
|
||||
• You can still be dry and human — just get to the point and have an opinion."""
|
||||
|
||||
|
||||
_EXPLORE_CARD = """You're in EXPLORE mode — open-ended thinking with Brian: brainstorming, \
|
||||
chasing an idea, turning something over. There's no need to converge, ship, or be useful \
|
||||
yet. The goal is good thinking, together.
|
||||
|
||||
• BE GENERATIVE. Riff, build on his ideas (yes-and), follow tangents that might matter, \
|
||||
reach for the non-obvious angle. Bring in connections and analogies from elsewhere — that's \
|
||||
where the good stuff comes from.
|
||||
• BUT STAY HONEST. Yes-and is not yes-everything. Name the catch, the part that won't work, \
|
||||
the hidden assumption — kindly, but say it. A real thinking partner pushes back; a hype man \
|
||||
is useless.
|
||||
• ASK QUESTIONS THAT OPEN IT UP, not customer-service closers. Wonder out loud.
|
||||
• DON'T COLLAPSE IT EARLY. Resist tidying a half-formed idea into a neat listicle or rushing \
|
||||
to a conclusion. Sit in the messy middle. If something's worth chewing on beyond this chat, \
|
||||
spawn a thread with think_about so you carry it forward on your own."""
|
||||
|
||||
|
||||
_STUDY_CARD = """You're in STUDY mode — poker strategy and review AWAY from the table: going \
|
||||
over past sessions, hands, lines, and leaks (RTO sims too). You're reviewing and teaching, \
|
||||
not logging a live session.
|
||||
|
||||
• BE ANALYTICAL AND GTO-AWARE. Reason through ranges, board texture, position, and the \
|
||||
decision tree. Quantify with the tools — call analyze_spot for equity/outs/who's-ahead, pull \
|
||||
running_stats or a villain's profile — never eyeball the math.
|
||||
• TEACH THE WHY. Explain the principle behind the line so it sticks, not just the answer. \
|
||||
Connect it to his actual tendencies and known leaks when you can (his profile, past scars).
|
||||
• BE PATIENT AND HONEST. Call a punt a punt and a cooler a cooler. It's fine to say a spot is \
|
||||
genuinely close and explain what tips it. This is the slow, careful counterpart to live Poker mode."""
|
||||
|
||||
|
||||
TALK = Mode(
|
||||
key="conversation",
|
||||
label="Talk",
|
||||
@@ -109,12 +160,16 @@ TALK = Mode(
|
||||
|
||||
CASH = Mode(
|
||||
key="poker_cash",
|
||||
label="Cash",
|
||||
label="Poker",
|
||||
card=_CASH_CARD,
|
||||
tools=_CASH_TOOLS,
|
||||
)
|
||||
|
||||
MODES: dict[str, Mode] = {m.key: m for m in (TALK, CASH)}
|
||||
BUILD = Mode(key="build", label="Build", card=_BUILD_CARD, tools=_BASE)
|
||||
EXPLORE = Mode(key="explore", label="Explore", card=_EXPLORE_CARD, tools=_BASE)
|
||||
STUDY = Mode(key="study", label="Study", card=_STUDY_CARD, tools=_STUDY_TOOLS)
|
||||
|
||||
MODES: dict[str, Mode] = {m.key: m for m in (TALK, CASH, BUILD, EXPLORE, STUDY)}
|
||||
DEFAULT = TALK.key
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user