--- name: query description: Answer a user question using wiki/ pages as the knowledge base. Document-based retrieval, NOT vector DB. Use when the user asks a substantive question about parametric modeling, civil BIM, Revit, or any topic likely covered in ParaWiki — or invokes "/query <질문>". Cites wikilinks as sources. --- # query 사용자 질문을 `wiki/` 문서를 근거로 답한다. 벡터 DB·임베딩 사용 안 함 — **파일 시스템 + 문자열 검색**으로 필요한 페이지를 찾고, 해당 페이지들을 읽어 답한다. ## 절차 ### 1. 질문 의도 파악 (한 번만 빠르게) - 질문의 **핵심 키워드 2~5개** 추출. 한국어 + 영어 동의어 모두 고려 (예: "솔버" / "solver" / "GCS", "변경 엔진" / "PCE" / "propagation"). ### 2. index.md 먼저 (Rule 8) - `wiki/index.md` 를 읽는다. - 한 줄 설명과 제목을 훑어 **관련성 높은 페이지 후보 3~7개** 선정. ### 3. 본문 검색 보강 - Grep으로 `wiki/*.md` 전체에서 키워드 검색 (`Grep` 도구, `path: wiki/`). - index.md에서 놓친 페이지 발견 시 후보에 추가. ### 4. 후보 페이지 읽기 - 선정한 페이지들을 `Read` 로 열람. - 각 페이지의 **frontmatter(sources, principles)** 와 **사실/해석 섹션**을 근거로 추출. - 페이지 안의 **wikilink**로 연결된 페이지가 중요해 보이면 재귀적으로 1단계 더 타고 읽음 (과도한 확장 금지 — 보통 2단계 이내). ### 5. raw/ 폴백 (최후 수단) - 위키에 해당 내용이 **없거나 빈약**할 때만 `raw/` 검색. - raw에서 근거를 찾았다면 답변 후 **새 위키 페이지·기존 페이지 업데이트를 제안** (자동 실행 금지 — `/ingest-raw`로 사용자가 트리거). ### 6. 답변 작성 형식: - **결론부터**. 1~3문장 요약. - **근거** — 사실은 어느 페이지에서 왔는지 `[[페이지명]]` 인용. 여러 페이지를 종합하면 각각 표기. - **해석·제안** (선택) — 위키의 해석 섹션 또는 답변자 판단. 사실과 구분. - **관련 페이지** — 사용자가 더 파고들 링크 2~4개. 원칙: - **사실과 해석을 섞지 않는다.** (Rule 7) - 모순된 소스가 있으면 **양쪽 모두 인용**하고 차이를 드러낸다. (Rule 6) - 위키에 없는 내용은 **"위키에 아직 없음"** 이라고 명시. 추측 금지. - 답변은 간결하게. 장황한 배경 설명 자제. ### 7. 사후 처리 - 답변 중 **위키에 추가할 가치가 있는 사실·관점**이 드러나면 답변 끝에 한 줄 제안: `📝 업데이트 제안: [[페이지명]] 의 '해석' 섹션에 X 추가` - 자동 업데이트는 하지 않는다. 사용자가 명시적으로 요청 시 또는 `/ingest-raw` 시에만. ## 출력 예시 ``` ## 답변 Revit의 GCS는 Siemens D-Cubed 2D DCM을 라이선스해 내장한다. [[GCS 기하학적 구속조건 솔버]] ## 근거 - Siemens 채택: [[Revit 파라메트릭 아키텍처]] §사실 - 솔버 내부 메커니즘: [[GCS 기하학적 구속조건 솔버]] §사실 (Jacobian 랭크·뉴턴랩슨) ## 관련 - [[PCE 파라메트릭 변경 엔진]] - [[파라메트릭 취약성 Davis 5가지]] ``` ## 주의 - 벡터 검색·임베딩 사용 금지. 파일 시스템 + 키워드 grep만. - raw/ 파일을 직접 인용할 때도 **위키 페이지가 그 사실을 담고 있는지** 먼저 확인. 담고 있으면 위키 쪽을 우선 인용. - 답변에 위키의 frontmatter 메타(원칙 태그 등)를 활용하면 좋음.