You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add search-based /learn command for entity discovery and LearnLoopAgent
for adaptive background research driven by interest scores.
/learn <topic> searches via Perplexity, discovers entities from results
via LLM entity identification, and seeds them with LEARN_COMMAND
engagements. Works for both specific entities (/learn kef ls50) and
broad topics (/learn travel in china 2026). The learn loop then
continues researching those entities in the background, prioritized by
interest score, fact count, and staleness.
Co-authored-by: Jared Lockhart <119884+jaredlockhart@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
-**/profile** (`profile.py`): View or update user profile (name, location, DOB). Derives IANA timezone from location. Required before Penny will chat
270
+
-**/learn** (`learn.py`): Signal active interest in a topic for background research. `/learn` lists tracked entities; `/learn <topic>` searches via SearchTool, discovers entities from results via LLM entity identification, creates them with LEARN_COMMAND engagements. Works for both specific entities (`/learn kef ls50`) and broad topics (`/learn travel in china 2026`). Falls back to creating a single entity from topic text if no SearchTool is configured
254
271
-**/like**, **/dislike**, **/unlike**, **/undislike** (`preferences.py`): Explicitly manage preferences for discovery
255
272
-**/personality** (`personality.py`): View, set, or reset custom personality prompt per user. Affects Penny's tone and behavior
256
273
-**/research** (`research.py`): Start autonomous multi-iteration research. Supports clarification step with output format options, task queueing, and cancellation
@@ -266,7 +283,7 @@ Penny supports slash commands sent as messages (e.g., `/debug`, `/config`). Comm
266
283
-`/config` reads and writes to a `RuntimeConfig` table in SQLite (migration `0002_add_runtime_config_table.py`)
267
284
-`ConfigParam` definitions in `config_params.py` declare which settings are runtime-configurable, with types and validation
268
285
- Config values are read on each use (not cached), so changes take effect immediately
0 commit comments