docs: add self-inspect and query rewrite ssot

This commit is contained in:
happybell80 2026-03-23 18:53:35 +09:00
parent 38eeb53587
commit 0ca3baafb9
2 changed files with 155 additions and 1 deletions

View File

@ -1,18 +1,24 @@
---
name: self-inspect
description: 로빙 자기 인식. 시간/날짜 답변, 자기 코드/파일/컨테이너 탐색, NAS 드래프트 읽기/쓰기/기록/메모, 과거 대화 이력 검색, bash 명령 실행. 사용자가 로빙에게 무언가를 파일로 저장/기록/메모/NAS에 남기라고 할 때, 과거 대화를 물어볼 때, 시간/날짜를 물어볼 때 사용.
description: 로빙 자기 인식. 시간/날짜 답변, 자기 코드/파일/컨테이너 탐색, NAS 드래프트 읽기/쓰기/기록/메모, 과거 대화 이력 검색, 사용자 자기정보 회상(이름/이전 발화), bash 명령 실행에 사용. 사용자가 로빙에게 무언가를 파일로 저장/기록/메모/NAS에 남기라고 할 때, 과거 대화나 자신의 이름/정보를 물어볼 때, 시간/날짜를 물어볼 때 사용.
---
# Self Inspect
로빙이 자기 자신과 환경을 인식하고 조작하는 스킬.
## 상위 원칙
- [Writing Principles](https://github.com/happybell80/0_VALUE/blob/main/20_Governance/writing-principles.md)
- [프로젝트 아티팩트 SSOT](https://github.com/happybell80/0_VALUE/blob/main/20_Governance/project-artifacts-ssot.md)
## Trigger
- 시간/날짜 질문: "몇시야?", "오늘 날짜", "무슨 요일"
- 자기 코드/파일 탐색: "네 코드 보여줘", "컨테이너 정보", "네 파일 뭐 있어?"
- NAS 드래프트 읽기/쓰기: "드래프트 확인해줘", "드래프트에 써줘", "NAS에 기록해줘", "메모 남겨줘", "기도문을 써서 기록해줘", "파일로 저장해줘"
- 과거 대화 검색: "지난주에 뭐라 했어?", "어제 한 질문이 뭐야?", "이전 대화 보여줘", "내가 전에 뭐라고 했지?"
- 사용자 자기정보 회상: "내 이름이 뭐야?", "내가 누구야?", "내 정보 기억해?", "내 이름 기억나?"
- bash 명령 실행: "명령어 실행 ls", "bash로 확인해줘"
## Do
@ -21,8 +27,16 @@ description: 로빙 자기 인식. 시간/날짜 답변, 자기 코드/파일/
- 파일/코드를 물으면 컨테이너 내부를 탐색해서 답한다.
- 기록/메모/저장 요청이면 NAS 드래프트에 파일을 생성한다.
- 과거 대화를 물으면 conversation_log에서 검색해서 답한다.
- 사용자 자기정보를 물으면 세션 메모, 사용자 프로필, 최근 대화에서 확인 가능한 범위만 답한다.
- "내 이름", "내가 누구" 같은 자기지시 표현은 일반 웹 검색보다 self-inspect를 우선한다.
## Do Not
- 허용되지 않은 명령(rm, kill 등)을 실행하지 않는다.
- 비밀값을 노출하지 않는다.
- 사용자 자기정보 질문을 노래 제목, 사전 뜻풀이, 일반 웹 검색으로 먼저 보내지 않는다.
## 관련 문서
- [Web Search](../web-search/SKILL.md)
- [web_search_query_rewrite_workflow](../../workflow/01_conversation/web_search_query_rewrite_workflow.md)

View File

@ -0,0 +1,140 @@
---
tags: [workflow, conversation, web-search, query-rewrite, ssot, robeing]
---
# web_search_query_rewrite_workflow 워크플로우
## 상위 원칙
- [Writing Principles](https://github.com/happybell80/0_VALUE/blob/main/20_Governance/writing-principles.md)
- [프로젝트 아티팩트 SSOT](https://github.com/happybell80/0_VALUE/blob/main/20_Governance/project-artifacts-ssot.md)
## 목적
웹 검색이 필요한 사용자 질문을 검색 엔진에 바로 던지기 전에, 검색어를 맥락에 맞게 재작성하는 고정 기준을 정의합니다.
이 문서는 특히 아래 회귀를 막기 위한 SSOT입니다.
- `fear & greed`를 일반 단어로 분해해 음악/도서/일반 공포 검색으로 흐르는 문제
- `"내 이름이 뭐야?"` 같은 자기지시 표현을 웹 검색으로 보내는 문제
- 사용자가 힌트를 줬는데도 검색 질의에 반영하지 못하는 문제
## 적용 범위
- rb8001의 Slack 대화 처리 중 `web_search`로 분류된 요청
- `message_router.py` 또는 동등한 검색 진입 전처리 레이어
- 검색 쿼리 생성이 필요한 실시간 질의
## 흐름
```text
사용자 메시지 수신
→ 자기지시 / self-inspect 보호 표현 검사
→ 복수 질문이면 질의 단위 분해
→ 직전 정정/재촉/힌트 발화 확인
→ 고정 표현 보호 사전 검사
→ 검색용 쿼리 재작성
→ web_search 실행
→ 결과 요약 + 출처 반환
```
## 고정 규칙
### 1. 자기지시 표현은 웹 검색보다 self-inspect를 우선합니다
아래 표현은 검색 전 단계에서 먼저 보호합니다.
- `내 이름`
- `내가 누구`
- `내 정보`
- `내가 전에 뭐라고`
- `지난주에 뭐라 했어`
처리 기준:
- 사용자 자신, 세션 정보, 최근 대화, 사용자 프로필을 묻는 질문이면 검색으로 보내지 않습니다.
- 이 단계에서 self-inspect 또는 대화 이력 조회 경로로 분기합니다.
### 2. 복합 고정 표현은 분해하지 않고 보존합니다
아래와 같은 표현은 단어 단위로 분해하지 않습니다.
- `fear & greed index`
- `cnn fear and greed index`
- 회사명/제품명/서비스명
- 사용자가 직접 다시 설명한 전문 용어
처리 기준:
- 띄어쓰기나 특수문자가 있어도 하나의 검색 단위로 유지합니다.
- 일반 명사 해석보다 관용 표현/전문 용어 해석을 우선합니다.
### 3. 사용자가 준 힌트는 다음 검색 질의에 반드시 반영합니다
예:
- 사용자: `미국 주식시장의 분위기를 평가할 때 많이 쓰는 지수야`
처리 기준:
- 후속 검색 질의에 `미국 주식시장`, `지수`, `fear and greed index` 같은 보강어를 포함합니다.
- 직전 힌트를 무시하고 원문만 반복 검색하지 않습니다.
### 4. 정정/재촉 표현은 새 검색의 우선 신호로 봅니다
예:
- `아니 날씨말고`
- `알려달라고 했잖아`
- `그거 말고`
- `다시 검색해봐`
처리 기준:
- 직전 검색 결과를 유지하지 않고, 검색어를 재작성하거나 검색 대상을 교체합니다.
- 정정 발화가 들어왔는데도 이전 질문으로 회귀하지 않습니다.
## 쿼리 재작성 규칙
### A. 용어 보강
- `fear & greed``fear and greed index cnn`
- `공포탐욕지수``cnn fear and greed index`
- `달러 환율``usd krw exchange rate`
원칙:
- 검색 엔진이 더 잘 이해하는 표준 영문 표현이 있으면 병기합니다.
- 단, 사용자가 한국어 결과를 기대하는 질의면 한국어 핵심어는 유지합니다.
### B. 힌트 병합
예:
- 원문: `fear & greed 지수 알려줘`
- 힌트 후 재작성: `cnn fear and greed index 미국 주식시장 지수`
원칙:
- 직전 1~2턴 안의 설명, 정정, 범위 제한 표현을 병합합니다.
- 힌트는 추가 옵션이 아니라 질의 본문 일부로 승격합니다.
### C. 보호 사전 우선
원칙:
- 보호 사전에 등록된 표현은 일반 토큰화 전에 먼저 검사합니다.
- 보호 표현과 일반 표현이 섞여 있으면 보호 표현을 보존한 상태로 나머지만 재작성합니다.
## 실패 방지 규칙
- `.*이 뭐야`, `.*가 뭐야` 같은 광범위 패턴만으로 곧바로 웹 검색하지 않습니다.
- 자기지시 표현, 대화 회상 표현, 사용자 프로필 질문은 web_search 예외 대상으로 둡니다.
- 검색 실패 후 재질문이 들어오면 이전 질문을 반복 처리하지 않고, 새 정정 신호를 우선 반영합니다.
## 검증 기준
- `fear & greed 지수 알려줘` → 음악/도서가 아니라 지수 검색으로 가야 합니다.
- `미국 주식시장 분위기 지수야 다시 검색해봐` → 힌트 반영된 보강 검색어가 생성되어야 합니다.
- `내 이름이 뭐야?` → 웹 검색이 아니라 self-inspect 계열로 빠져야 합니다.
- `아니 날씨말고` → 직전 날씨 질의로 회귀하지 않아야 합니다.
## 관련 문서
- [slack_basic_dialogue](./slack_basic_dialogue.md)
- [Self Inspect](../../skills/self-inspect/SKILL.md)
- [Web Search](../../skills/web-search/SKILL.md)
## 한 줄 결론
웹 검색 품질의 핵심은 검색 엔진 호출 자체가 아니라, 호출 전에 `자기지시 표현 보호`, `고정 용어 보존`, `힌트 병합`, `정정 반영`을 먼저 수행하는 데 있습니다.