diff --git a/think/conversation.py b/think/conversation.py index a2c71cf00..e262e0c44 100644 --- a/think/conversation.py +++ b/think/conversation.py @@ -65,8 +65,6 @@ def record_exchange( 1. conversation/exchanges.jsonl — append-only quick-read index 2. YYYYMMDD/conversation/HHMMSS_1/talents/conversation.md — journal entry for FTS5 search indexing (matches */*/*/talents/*.md formatter pattern) - - Also runs lightweight entity extraction on the conversation text. """ if not user_message or not agent_response: return @@ -129,55 +127,6 @@ def record_exchange( except Exception: logger.exception("Failed to write conversation journal entry") - # 3. Entity extraction - _extract_entities(user_message + " " + agent_response, facet=facet, day=day) - - -def _extract_entities(text: str, *, facet: str, day: str) -> None: - """Detect known entity names mentioned in conversation text. - - Matches against attached entities for the active facet. Any matches - are recorded as detected entities for the day, integrating with the - existing entity signal infrastructure. - """ - if not facet: - return - - try: - from think.entities.loading import load_entities - - entities = load_entities(facet) - if not entities: - return - - text_lower = text.lower() - - for entity in entities: - name = entity.get("name", "") - if not name or len(name) < 3: - continue - - # Word boundary match for entity name - if re.search(r"\b" + re.escape(name.lower()) + r"\b", text_lower): - try: - from think.entities.saving import save_detected_entity - - save_detected_entity( - facet=facet, - day=day, - entity_type=entity.get("type", "Person"), - name=name, - description="Mentioned in conversation", - ) - except ValueError: - pass # Already detected today — expected - except Exception: - logger.debug( - "Failed to record entity detection: %s", name, exc_info=True - ) - except Exception: - logger.debug("Entity extraction from conversation failed", exc_info=True) - # --------------------------------------------------------------------------- # Exchange Retrieval