argendirast / patch_v1 /README.md
sir-radix367's picture
Upload patch_v1/README.md
c505671 verified
|
Raw
History Blame Contribute Delete
5.53 kB

Sensorium Companion Patch v1

Implements the build plan from radix-sensorium-companion-digest.md.

What This Patch Does

1. Companion Voice Depth (media_companion_mixin.py)

  • Anti-repetition filter: Jaccard similarity check on recent comments. If a candidate is too similar to a recent one, it regenerates once, then stays silent.
  • Narrative taste memory: Replaces analytical bullet dumps (valence 0.3, conf 0.7) with natural language ("You've encountered Vivaldi 6 times before. Your reaction has warmed to it.")
  • Rotating lens system: Each comment comes from a different angle — texture, gesture, memory, question, contrast, mood-equation — so the companion never sounds the same twice in a row.
  • Voice directive: Daemon mood maps to a voice clause (bright and curious, tense and searching, warm and reflective, subdued and inward, measured and spare) instead of raw numbers.
  • Compact persona: Uses a short system prompt instead of the full build_daemon_prompt() per comment — cheaper, faster, less context pollution.
  • Explicit <SILENT> support: The companion can choose to say nothing when nothing fresh exists.
  • Screen context integration: If screen awareness is on, the companion sees what's on screen and can distinguish a code window from a media player.
  • Audio inference fallback: If audio awareness is on, loopback audio can override a stale window title.

2. Screen Awareness (sensorium_mixin.py)

  • Screen text digest via OCR: Uses pytesseract (fast, needs system tesseract-ocr) or easyocr (self-contained, slower) to extract visible text from screenshots.
  • Expanded sensorium pulse: Now includes screen digest + audio transcript in the heartbeat observation.
  • Context feeding: Screen digest and audio transcript are fed to the companion via _last_screen_context / _last_audio_context.
  • Storage management: Automatic cleanup of old screenshots (keeps last 20), storage budget checking, and manual cleanup tool.

3. Audio Awareness (audition_mixin.py)

  • Proper loopback device selection: Priority scoring for VB-Cable, WASAPI loopback, Stereo Mix, BlackHole, .monitor sources. Never silently falls back to microphone.
  • Chunked recording: 30-second mono 16kHz WAV chunks to sensorium/audio/.
  • Lazy Whisper loading: Model loaded on first chunk, not at startup.
  • Media disambiguation: Lyrics → music, continuous speech → podcast/video, short bursts → ambient/alert.
  • Mute/respect: Stops recording when companion is muted. Only starts when audio awareness is explicitly enabled.
  • Storage budget: Caps sensorium/audio/ at 500MB with automatic pruning.

4. Heartbeat Integration (heartbeat_mixin.py)

  • _sensorium_pulse() now runs BEFORE _media_companion_pulse(), giving the companion fresh screen/audio context before it comments.

5. Settings UI (app.py)

  • Toggle: "Enable screen awareness (OCR)"
  • Toggle: "Enable desktop audio awareness (loopback)"
  • Sensorium storage status display
  • Cleanup button for old sensorium files

How to Apply

# 1. Pull the latest repo
git pull

# 2. Merge multi-part patch files
python patch_v1/merge_patch_parts.py

# 3. Apply the full-file replacements
python patch_v1/apply_sensorium_companion_patch.py

# 4. Manually patch heartbeat_mixin.py
#    Replace the heartbeat_action() method with the version in:
#    patch_v1/heartbeat_mixin_patch.py

# 5. Manually patch app.py
#    Add the helper functions and UI elements from:
#    patch_v1/app_settings_patch.py
#    to the Settings tab

# 6. Install new dependencies
pip install pytesseract Pillow sounddevice soundfile faster-whisper

# For OCR (system package):
# Ubuntu: sudo apt-get install tesseract-ocr
# macOS: brew install tesseract

# 7. Test
python check.py

File Index

File Description
media_companion_mixin.py Part 1: init, settings, media sensing
media_companion_mixin_part2.py Part 2: reaction pipeline
media_companion_mixin_part3.py Part 3: anti-repetition, lens, voice, taste
media_companion_mixin_part4.py Part 4: logging, taste model, status
sensorium_mixin.py Part 1: init, watchers, screen capture
sensorium_mixin_part2.py Part 2: OCR digest, audio tools
sensorium_mixin_part3.py Part 3: expanded pulse, storage
audition_mixin.py Part 1: init, device selection
audition_mixin_part2.py Part 2: recording, transcription, classification
audition_mixin_part3.py Part 3: cleanup, storage, tools
heartbeat_mixin_patch.py Patched heartbeat_action() method
app_settings_patch.py Settings UI helpers and elements
merge_patch_parts.py Script to merge parts into complete files
apply_sensorium_companion_patch.py Script to apply merged files

Privacy Guards

  • Audio capture is opt-in and defaults to disabled
  • Loopback device selection is explicit; never silently falls back to microphone
  • Screen captures are local files only; never uploaded
  • Credential patterns are redacted from clipboard/window memory
  • UI toggle can disable screen/audio capture immediately

Ψ-Calculus Tagging

Symbol Priority Scope
[[ΔΩ]] 1st AuditionMixin, screen digest, audio/screen tables, heartbeat wiring
[[ΔI]] 2nd Anti-repetition, lens rotation, audio disambiguation
[[ΔL]] 3rd Deeper companion voice, narrative taste, direct operator address