Skip to main content

위키 기술 자료

Myrm에는 에이전트가 해석할 마크다운 기술 더미가 아니라 **컴파일된 지식 베이스(Wiki)**가 포함되어 있습니다. 전용 엔진은 컴파일, 색인, 검색, 검토 및 유지 관리를 처리합니다. 동일한 워크플로가 로컬 WebUI, Tauri 데스크톱SaaS 클라우드에서 작동합니다.

위키 지식 기반

에이전트가 해석할 마크다운 기술이 아닌 컴파일러 엔진으로 구조화된 지식을 구축하세요. 동일한 워크플로가 로컬 WebUI, Tauri 데스크톱SaaS 클라우드에서 실행됩니다.

소비 루프

Myrm은 12개의 코드 수준 경로를 통해 Wiki를 에이전트에 연결합니다(OpenWiki와 같은 수동 AGENTS.md 없음).
  • 에이전트 프로필에서 Wiki가 활성화되면 4개의 도구가 자동으로 마운트됩니다(수집/컴파일/쿼리/유지 관리).
  • 대형 업로드 힌트 wiki_ingest → wiki_query 지침을 삽입하여 PDF가 채팅 컨텍스트에 붙여넣어지지 않도록 합니다.
  • Deep Research 볼트는 공유 아카이버를 통해 동일한 Wiki 볼트에 보고서를 작성하고 컴파일을 트리거합니다.
  • 출처가 포함된 모든 보조 메시지를 위키에 저장하세요.
  • 압축 후 세션 노트 — 컨텍스트가 압축되면 세션 노트가 자동으로 Wiki에 보관됩니다(요약 지속 후, 모든 노트 저장이 아님).
  • 임시 쿼리, 컴파일, 유지 관리 및 상태 배지 저장을 위한 설정 개요 탭입니다.

메모리 → Wiki 자동 브리지

에이전트 프로필에서 Wiki가 활성화되면 4개의 자동 수신 경로가 **publish_raw**를 통해 동일한 저장소에 위치합니다(로드맵 #16 - 별도의 토글 아님). 보안 및 게이트: 모든 경로는 #15 아카이브 보안(자격 증명 차단/수정) 및 #14 원시 게이트(안정적인 경로에서 자동 덮어쓰기 없음)를 실행합니다. 에이전트 수준 **enable_wiki**은 마스터 스위치이며 소스별 설정 토글이 없습니다. 호출 방향: Wiki와 메모리가 모두 활성화되면 Wiki 콘텐츠는 **knowledge_recall_tool(corpus=wiki|all)**을 통해 채팅으로 끌어옵니다. OpenClaw 스타일 다이제스트 삽입처럼 모든 차례에 푸시되지는 않습니다. 테스트: pytest 대상 37개(하네스 18 + 서버 19, 2026년 7월).

Wiki 대 메모리 쓰기 경계

Wiki와 Memory가 모두 활성화되면 Myrm는 컴팩트 메모리 저장소에 장기 지식을 보관합니다. 대 Hermes: 2,200자 제한이 있는 플랫 MEMORY.md — 컴파일된 위키 볼트 또는 통합 corpus=all 검색이 없습니다. 테스트: 25개 대상 pytest(Harness wiki 경계 모듈, 2026년 7월).

Karpathy 인지 지도 트리오(인덱스/로그/핫) + SCHEMA

컴파일, 유지 관리, 가져오기 또는 사람의 검토 후 엔진은 결정론적으로 볼트 루트 방향 파일을 유지 관리합니다(추가 비용 LLM 없음). 쿼리 방향(W36): FTS가 직접 일치하는 항목을 찾지 못한 경우 0-LLM 위키 쿼리 접두사에는 최근 볼트 컨텍스트(hot.md) 및 최근 활동 로그(log.md, 제한됨)가 모두 포함됩니다. 따라서 답변은 에이전트 글로벌 시스템 프롬프트에 방향을 삽입하지 않고 최근에 변경된 내용을 반영합니다. 컴파일 인덱스 시드(#32): LLM 개념 추출 중에 컴파일러는 index.md의 기존 카탈로그를 삽입하므로 새 페이지는 중복을 생성하는 대신 설정된 개념 이름을 재사용합니다. 경쟁사와의 정직한 차별화:
  • Molio보다 강력함: 핫/로그는 Wiki 쿼리 경로에서만 사용됩니다. — 에이전트 전역 시스템 프롬프트에 삽입되지 않습니다 → 더 안전한 프롬프트 캐시
  • 해마보다 강력함: 세션별 핫 주입이 아닌 이벤트 기반 새로 고침
  • Hermes llm-wiki보다 강력함: 자동 SCHEMA + cron 유지 + 쿼리 로그 방향 — Hermes에서는 수동 SKILL 린트 및 로그 검색이 필요합니다.
  • 의도적이지 않음: Molio 스타일 LLM 핫 재작성(토큰/환각 비용); 글로벌 미들웨어 핫(캐시 중단); Hermes SCHEMA의 전체 태그 분류(GUI 첫 번째 사용자의 경우 낮은 ROI)
설정 개요는 트리오 준비 상태 통계를 자동 로드합니다. CLI가 필요하지 않습니다.

통합된 볼트 경로

모든 Wiki 데이터는 작업공간당 단일 볼트 디렉토리에 있습니다. 설정, REST API, 에이전트 도구, Wiki에 저장, Deep Research 및 압축 아카이브는 동일한 경로를 공유합니다. 시작 시 레거시 경로가 자동으로 마이그레이션됩니다. 설정 → 위키 → 개요에서 페이지를 열 때 통계가 로드되고 다음이 표시됩니다.
  • Vault 준비됨 — Wiki 디렉토리가 존재하며 쓰기 가능합니다.
  • 기존 마이그레이션 — 이전 Vault 위치가 현재 경로에 병합되었습니다.
  • 지식 카탈로그/활동 로그/최근 컨텍스트 — Karpathy 스타일 트리오(index.md, log.md, hot.md)가 컴파일, 가져오기 또는 검토 작업 후에 빌드되고 새로 만들어졌는지 여부입니다.
이는 임시 CLI “의사” 검사를 제품 내 상태 가시성으로 대체합니다.

프로젝트 볼트(파일 중심 SSOT)와 Wiki 가져오기 비교

두 가지 경로 - 귀하의 워크플로에 맞는 경로를 선택하세요. 경쟁사 마이그레이션 후 마이그레이션 결과 저장소 바인드 카드를 사용하면 첫 번째 채팅이 이미 실제 저장소를 가리키므로 수동 프로젝트 설정이 필요하지 않습니다. 채팅별 작업 범위(프로젝트 생성 없음): 메시지 작성기(WorkspaceDirPicker)의 폴더 아이콘을 사용하여 이 대화에 대한 디렉터리를 바인딩합니다.

에이전트별 위키 범위

각 에이전트는 자체적인 위키 저장소를 가질 수 있습니다. 설정 → Wiki에서 에이전트 범위 드롭다운을 사용하거나 에이전트 배너에서 /settings/wiki?agentId=<agent-id>을 엽니다. 통계, 컴파일, 유지 관리 및 가져오기는 선택한 에이전트에만 적용됩니다. 아티팩트 Wiki에 저장 및 채팅 바인딩 수집은 현재 채팅의 에이전트 ID를 사용하므로 문서가 실수로 기본 저장소에 저장되지 않습니다. 정직한 경계(에이전트 범위 SSOT v2가 출시될 때까지): 탭 및 수집 SSE은 선택한 에이전트를 즉시 따릅니다. 보류 중 또는 개념 상태에 있는 동안 에이전트를 전환하는 경우 범위 다시 로드가 완전히 연결될 때까지 페이지를 다시 로드하거나 탭을 전환하세요. 잘못된 저장소에 대한 초안을 승인하면 다음 범위 강화 릴리스에서 종료될 위험이 있습니다.

통합 메모리 + 위키 리콜

에이전트 프로필에서 Wiki와 Memory가 모두 활성화되면 Myrm은 corpus=all을 사용하여 통합된 **knowledge_recall_tool**을 마운트합니다. 한 번의 도구 호출로 장기 메모리와 에이전트 Wiki를 함께 검색합니다. 메모리 적중은 UI에 대한 인용된 메모리 ID를 방출합니다. 위키 조회수는 도구 결과 텍스트에 나타납니다. 기본 에이전트 프로필에는 메모리가 포함됩니다. 통합 경로를 얻으려면 에이전트 구성 → 내장 도구에서 Wiki를 활성화하세요.

메모리 인용 버튼(다시 로드 가능)

에이전트가 의미/에피소드 기억을 회상하면 완료된 어시스턴트 메시지의 작업 표시줄에 Memory N 버튼이 표시됩니다. 시트를 열어 어떤 기억이 답변에 영향을 미쳤는지 살펴보세요(유형, 점수, 네임스페이스, 소스 채팅으로의 링크). 인용은 데이터베이스에 유지되며 페이지 새로고침 후에도 유지됩니다. 이는 SSE 전용 임시 상태가 아닙니다.

위키 설정 열기

  1. **설정 → Wiki 知识库(Wiki)**로 이동합니다.
  2. 탭을 사용하십시오.
    • 개요 — 목적, 통계, 컴파일/유지 작업, 임시 쿼리.
    • 개념(词条管리) — 폴더 트리, CRUD, 드래그 앤 드롭.
    • 보류 중인 편집 — 인간이 직접 참여하여 LLM 초안을 승인/거부합니다.
    • — 문서 수집 파이프라인 상태입니다.

라이브 컴파일 가시성(설정 열기)

브라우저 또는 데스크톱 앱에서 설정 → Wiki가 열려 있는 경우:
실시간 업데이트를 위해서는 설정 위키 페이지가 열려 있어야 합니다(EventSource 구독). 설정 닫기가 SSE 중지됩니다. 이는 백그라운드 데몬이 아닌 의도적인 GUI 범위 가시성입니다. CLI 전용 또는 파일 트리 전용 위키(Hermes SKILL, OpenClaw 마크다운 폴더)를 사용하는 경쟁업체는 동등한 대기열 패널 + 라이브 수집 배지를 제공하지 않습니다.

외부 소스 동기화(설정 개요)

설정 → 위키 → 개요 → 외부 소스는 일정에 따라 또는 요청 시 저장된 메일과 피드를 wiki/raw/로 가져옵니다. 제로-LLM 풀: Gmail/RSS를 가져오더라도 채팅 모델을 호출하지 않습니다. 선택사항 동기화 후 자동 컴파일은 모델이 구성된 경우에만 LLM을 사용합니다. Cron: 나중에 읽기 수집 청사진은 매일 실행됩니다(주로 Second Brain 사전 설정을 통해 Wiki 아침 델타Wiki 유지관리와 쌍을 이룸). 라우터 작업 __wiki_source_sync____wiki_maintain__:{structural|full}에이전트 도구 없이 서버 측에서 실행됩니다. 즉, 안전하고 결정적인 자동화입니다. 관찰 가능성: 마지막 동기화 시간, 게시/건너뛰기/실패 횟수 및 첫 번째 오류 줄(예: Gmail label not found)이 카드에 표시됩니다.
정직한 경계: Gmail 라벨과 드라이브 폴더 ID는 수동으로 입력됩니다. 라벨 드롭다운이나 드라이브 선택 도구가 없습니다. Gmail에서 일치하는 라벨을 만듭니다(기본 사전 설정은 ReadLater을 사용함). Google이 연결되어 있지만 드라이브 읽기 범위가 누락된 경우 카드에 다시 연결 힌트(google_drive_authorized: false)가 표시됩니다. OneDrive는 지원되지 않습니다(Microsoft OAuth 인프라 없음). 잘못된 구성은 자동으로 무시되지 않고 동기화 시 표시됩니다.
테스트(2026년 7월 30일): gdrive 3 + gmail/rss/status/oauth 12 + state/config/defaults/blueprint/hygiene/second_brain 15 + gmail_html 2 = 32 pytest 통과 (Gmail/Drive API 모의; 이번 라운드에는 Chrome 없음 MCP).

컴파일 시 진화 합성(CCSP)

위키 컴파일 시, 2.5단계에서는 일반 기사 생성 후 컴파일 시간 모순 합성 단계를 실행합니다. 실시간 카운트: SSE을 수집하면 synthesis_pending_count이 노출됩니다. 설정 → Wiki가 열려 있으면 전체 페이지를 다시 로드하지 않고도 개요가 새로 고쳐집니다. 정직한 차별화 대 OpenClaw: OpenClaw은 reports/contradictions.md을 작성하고 CLI 후속 조치를 기대합니다. Myrm은 설정 보류 중 + GUI 필터 + 양방향 타임라인 링크에서 동일한 인텔리전스를 유지합니다. Article 8 스타일의 “어떤 정의가 승리할지 결정” 워크플로우에 더 적합합니다. 정직한 경계: 교차 개념에만 해당됩니다(동일 배치 이름 병합은 ​​건너뜁니다). 이는 별도의 Memory ConferenceCard 알림 경로가 아닌 Wiki 컴파일 합성입니다. 테스트(2026-07-29): 하네스 8(test_contradiction_synthesis) + 12(test_linter_extended) + 서버 2(통계/보류 API) = 22 통과. 브라우저 MCP E2E는 이번 라운드를 실행하지 않습니다.

트리에서 개념 관리

개념에서:
  • 새 폴더 — 선택적 상위 폴더(루트 또는 중첩)를 선택한 다음 폴더 이름을 지정합니다.
  • 이름 바꾸기/삭제 — 행에 마우스를 올려 놓습니다. delete는 전체 경로와 내부 항목이 제거될 수 있는 항목 수를 표시합니다.
  • 끌어서 놓기 — 상위 간에 폴더나 개념을 이동합니다(링크 참조는 서버측에서 업데이트됩니다).
  • 세부정보 패널 — 개념을 선택하여 풍부한 렌더링 콘텐츠(인어 다이어그램, KaTeX 수학, GFM 테이블, 구문 강조 코드 블록 및 다크 모드)를 보거나 원시 Markdown 편집으로 전환합니다.
  • 4개 탭 편집기(편집)POST /wiki/apply을 통한 좁은 쓰기(전체 페이지 PUT 아님):
    • 컴파일된 진실## Compiled Truth 섹션만 패치하세요.
    • 타임라인 — 추가 전용 항목입니다. 중복된 줄은 토스트와 함께 건너뜁니다.
    • 메타데이터 — 머리말의 태그와 별칭을 바꿉니다(설정 경로, 에이전트 병합은 다른 호출자 게이트를 사용함).
    • 고급 — 전체 페이지 교체; 설정 전용(caller=settings). 상담원과 채팅은 이 작업을 사용할 수 없습니다.
저장할 때마다 임대(if_match = 마지막으로 알려진 content_hash) 페이지가 전송됩니다. 다른 탭이나 클라이언트가 페이지를 먼저 변경한 경우 페이지 충돌 알림이 표시됩니다. 다시 로드하고 다시 시도하세요.

제어된 쓰기 표면(POST /wiki/apply)

모든 위키 변형은 하나의 REST 엔드포인트인 POST /wiki/apply?caller= (settings | agent | chat)를 통과합니다. 쓰기 시간 중복 제거: canonical_id 및 별칭 인덱스는 생성 시 거의 중복된 페이지를 거부합니다(HTTP 409 canonical_conflict). Wiki에 저장은 동일한 주제에 대한 메모가 이미 존재하는 경우 친근한 알림을 표시합니다. 정직한 경계: 상담원 wiki_apply_tool은 여전히 ​​CSV 스타일 매개변수를 사용하며 if_match을 자동 전송하지 않습니다. 설정 GUI 및 Wiki에 저장 경로가 완료되었습니다.

원시 증거 레이어 게이트(가져오기 및 수집)

wiki/raw/에 대한 안정 경로 쓰기는 개념 계층 POST /wiki/apply(#12+#13)를 보완하는 하네스 publish_raw 게이트를 통과합니다. 정직한 경계: 타임스탬프/uuid 원시 경로(연구 덤프, 아티팩트 수집, 세션 아카이브)는 의도적으로 공개되지 않으며 안정적인 경로 충돌이 없습니다. 전용 원시 감사 패널은 없습니다. wiki/log.md을 읽거나 개요 통계를 사용하세요.

아카이브 보안 거버넌스(민감한 콘텐츠)

모든 내구성 있는 Wiki 쓰기는 하네스 지속성 검사 SSOT(core/security/persistence/content_scan.py)를 공유합니다. 정직한 경계: 아직 보안 통계 대시보드가 ​​없습니다. 설정/채팅 가져오기 주입은 경고 전용입니다. 에이전트 wiki_ingest은 신뢰도가 높은 주입을 차단합니다. 에이전트 차단 경로는 설정 대화 상자가 아닌 도구 오류로 표시됩니다.

원시 코퍼스 중복 제거 거버넌스(#7)

가져오기 또는 대량 수집 후 Myrm은 SQLite(.raw_dedup.db)에 저장된 3계층 지문을 사용하여 wiki/raw/에서 중복 증거를 검색합니다. 설정 → Wiki → 중복 검토에는 계층 배지, 나란히 있는 diff 스니펫 및 그룹 작업이 포함된 공개 그룹이 나열됩니다.
  • 휴지통 / 제외 / 연기 / 해제 — 감사 기록을 잃지 않고 중복 문제 해결
  • Vault 위생 복원 — 원시 증거가 이동하면 편집된 페이지를 다시 연결합니다.
컴파일 하드 게이트: 정확한 또는 정규화된 그룹이 여전히 열려 있는 경우 컴파일은 409를 반환합니다. LLM 컴파일이 실행되기 전에 중복 문제를 해결합니다. 자동화: 가져오기 후 검사가 자동으로 실행됩니다. 예약된 위생을 위한 선택적 Cron 청사진 wiki_dedup. 테스트: 67개 대상 pytest(Harness corpus_dedup 27 + Server dedup_runner/API 40) + Chrome E2E(시드 고정 장치 → 중복 검토 탭 → 정확한 그룹 패널). 정직한 경계: 대규모로 가까운 계층 LSH가 없습니다. 해제는 영구적입니다(실행 취소 불가). Turn1에는 에이전트 관련 중복 제거 도구가 없습니다. 경쟁업체 대비: Hermes llm-wiki / OpenClaw / deer-flow / LobsterAI / CoPaw / jiuwenclaw — 원시 레이어 3계층 중복 제거 + GUI 검토 + 컴파일 게이트 루프 없음; Obsidian 플러그인은 로컬에서 중복을 감지하지만 Agent Vault 컴파일과 통합되지 않습니다.
Wiki 파일은 디스크에 일반 마크다운으로 유지됩니다. Obsidian과 다른 편집자는 동일한 저장소를 열 수 있습니다. Myrm은(는) 색인 생성, 검색 및 GUI 관리를 맨 위에 추가합니다.

@wiki와의 채팅에서 Wiki 참조:

실시간 자동 완성으로 Wiki 개념을 검색하려면 채팅 입력에 @wiki:을 입력하세요. 컴파일된 컨텐츠를 현재 메시지의 컨텍스트로 삽입할 개념을 선택하십시오.
  • @wiki:keyword — 드롭다운을 필터링하여 일치하는 Wiki 개념만 표시합니다(개념 이름의 퍼지 일치).
  • 개념 선택 — 입력은 @staged 또는 @diff처럼 제거 가능한 알약 태그가 있는 @wiki:ConceptName이 됩니다.
  • **에이전트는 <mentioned_files> XML 블록의 개념 콘텐츠를 수신하여 지식 기반에 대한 답변을 기반으로 합니다.
  • 참조 결합@wiki:ProjectArchitecture @staged는 위키 기사와 Git이 준비한 변경 사항을 모두 하나의 메시지로 보냅니다.
  • 일반 @ 검색@keyword(wiki: 접두사 없이)을 입력하면 에이전트, Wiki 개념 및 업로드된 파일의 혼합 목록이 표시됩니다.
이를 통해 자동 검색이나 프롬프트 엔지니어링에 의존하지 않고 에이전트가 사용하는 지식을 메시지별로 명시적으로 제어할 수 있습니다.

채팅 메시지를 Wiki에 저장

완성된 보조 메시지에서 메시지 작업 표시줄의 위키에 합성(책 아이콘)을 사용하세요.
  1. 트리 선택기에서 파일 이름과 선택적 대상 폴더를 선택합니다.
  2. 확인 — 클라이언트는 source_chatsource_message ID만 보냅니다. 서버는 데이터베이스에서 Q&A 및 신뢰 신호를 로드합니다(클라이언트 제공 본문 없음).
  3. 초안은 사람의 검토를 위해 설정 → Wiki → 보류 중인 편집에 저장됩니다. Vault에 직접 게시되지는 않습니다.
  4. 준비되면 승인합니다. 답변이 추측에 불과한 경우 거부하거나 인라인으로 편집하세요. 동일한 메시지의 중복 스테이징은 보류 중인 열기 링크와 함께 409를 반환합니다.
  5. 시크릿 채팅은 버튼을 숨기고 API을 통해 호출되면 403을 반환합니다.
확인되지 않은 답변에는 보류 중인 초안에 적용 범위 면책 조항이 포함됩니다. 채팅 발신자는 직접 create_note(HTTP 403)을 사용하여 이 경로를 우회할 수 없습니다.

페이지 유형 계약(머리말 type)

모든 위키 페이지는 YAML 서문에서 페이지 유형을 선언해야 합니다. 이는 단지 프롬프트 제안이 아니라 컴파일 타임, 편집 승인 보류 시, 린터에 의해 시행됩니다. 허용되는 값: source, entity, concept, comparison, overview, question, session(Google OKF 호환 하위 집합) 정직한 경계: 보류 중인 채팅 화합물에는 초안 미리보기에 전체 Q&A가 포함됩니다. Vault에 게시하도록 승인합니다. 설정 고급 전체 페이지 교체는 Frontmatter에서 하드 차단되지 않습니다. 린터는 다음 유지 단계에서 드리프트를 치료합니다. 이렇게 하면 대화 → 원클릭 준비 → 사람의 검토 → 검색 가능한 지식이라는 루프가 종료됩니다.

검색 및 유지

  • Query Wiki(개요 탭) — 쿼리 경로에서 제로 LLM가 포함된 자연어 답변: 인지 인덱스, 사이드카 요약, FTS5 및 키워드의 시드가 L0/L1/L2 스니펫 및 청구/증거 카드를 조립하기 전에 예산이 책정된 최선의 그래프 확장을 통해 수렴됩니다.
  • 검색 모드(개요 → 위키 쿼리) — 일반(색인, 디렉토리 및 기사에 균형을 이룸) 또는 주장 먼저(구조화된 서문 주장 및 연결된 증거로 개념을 강화하고 주장 일치가 없으면 일반으로 대체)를 선택합니다. OpenClaw은 CLI를 통해서만 유사한 raw-claim 동작을 제공합니다. Myrm은 플래그를 기억하지 않고 설정에 노출합니다.
  • 인용 신뢰 — 답변 카드에는 주장 텍스트, 증거 경로 및 snapshot_status이 포함되어 있으므로 인용된 콘텐츠가 여전히 디스크 저장소와 일치하는지 확인할 수 있습니다.
  • 증거 인용 서랍(Closure v2) — 채팅 또는 설정에서 인용 칩을 탭하세요. 청구 상태 배지(노이즈를 줄이기 위해 이의가 있는/지원되지 않는 경우에만 해당), 명시적으로 설정된 경우 신뢰도 % 컴파일 및 원시 발췌 차단. 검색에서는 LLM 비용이 들지 않는 오래된 이의가 제기된 주장보다 새로운 지원 주장의 순위를 매깁니다.
  • 검색 경로 추적 설정 — 쿼리 결과 아래 카드에는 인덱스 적중, 시드, 사이드카 디렉터리 및 선택한 개념이 표시되므로 고급 사용자가 “이 개념이 일치하는 이유”를 디버그할 수 있습니다.
  • 컴파일/유지 관리 — 증분 컴파일(SHA256 변경 감지), 병렬 배치 수집(~40% 더 빠른 다중 문서 처리를 위한 세마포 제한 동시성), 시각적 요소 안내(컴파일러는 LLM에 적절한 경우 인어 다이어그램, GFM 테이블 및 울타리 코드 블록을 생성하도록 요청), 린터 기반 상태 수정(깨진 링크, 드리프트, 오래된 콘텐츠, 격리된/브리지 개념에 대한 지식 격차 감지).
  • 유지 관리 모드(#31) — 설정 개요 → 유지 관리구조적(빠른 린트 + 유형 복구 + 차단된 원시 정리) 또는 전체(드리프트 감지 및 백링크 새로 고침 추가)를 제공합니다. Cron 청사진 **wiki_maintain**은 라우터 작업 __wiki_maintain__:{mode}을 통해 동일한 모드를 예약합니다. 두 번째 브레인 사전 설정은 나중에 읽기 및 아침 델타와 함께 주말 03:00 전체 유지 크론을 추가합니다.
  • 구조적 상태 통계(개요 탭) — 0-LLM 스캔에서는 깨진 마크다운 링크, 깨진 Obsidian [[wikilink]] 대상(경로 + 고유 제목 별칭) 및 누락된 서문 type 값을 계산합니다. 컴파일, 가져오기, 개념 편집, 승인 보류 및 폴더 삭제 후에 황색 배지가 업데이트됩니다. CLI wiki lint가 필요하지 않습니다. CI는 모든 하네스 변경에 대해 4가지 사례 검색 회귀 게이트를 실행합니다.
  • 라이브러리/브레인 보기 — 커뮤니티 감지 및 개념 탐색이 포함된 3D 지식 그래프(제품 탐색은 배포에 따라 다를 수 있음)
  • 지식 그래프 — 컴파일러는 개념과 그 관계를 자동 추출하여 가중치가 부여된 에지(직접 링크 + 소스 중복 + 공통 이웃)가 있는 그래프를 작성합니다. LPA 커뮤니티 탐지 그룹 관련 개념; 격차 분석은 별도의 도메인을 연결하는 격리된 노드와 브리지 개념을 강조합니다.
  • 스마트 컨텍스트 회상 — 새 대화를 시작할 때 에이전트는 현재 주제를 기반으로 관련 기억과 지식을 자동으로 회상하므로 수동으로 올바른 문서를 가리킬 필요가 없습니다.
  • 모순 감지 — 청구 그래프는 지식 항목 전체에서 contradiction_statusCONTRADICTED_BY 관계를 추적합니다. 통합은 자동으로 덮어쓰는 대신 사람이 검토할 수 있도록 충돌하는 사실에 자동으로 플래그를 지정합니다.
  • 연합 검색 — 여러 Wiki 네임스페이스 또는 게시된 디렉터리가 있는 경우 쿼리는 모든 소스에서 검색하고 결과를 RRF 순위와 병합하여 수동 범위 지정 없이 포괄적인 적용 범위를 보장합니다.

흑요석에서 가져오기

Myrm은 메모, 태그, 이미지를 보존하는 전용 Obsidian Vault 가져오기를 제공합니다.
  1. 설정 → Wiki에서 가져오기 섹션으로 스크롤합니다.
  2. Tauri 데스크탑: Obsidian Vault 가져오기를 클릭하고 로컬 Vault 디렉토리를 선택합니다.
  3. WebUI / 클라우드: Obsidian ZIP 업로드를 클릭하고 볼트를 .zip 파일로 업로드합니다.
수입업자는 다음을 처리합니다.
  • YAML 머리말 — 인라인 배열(tags: [a, b]) 및 YAML 들여쓰기 목록(tags:\n - a\n - b) 모두(aliases, createdupdated 포함).
  • 이미지 삽입![[image.png]] 구문이 표준 마크다운으로 다시 작성되고 이미지가 위키 자산 디렉터리에 복사됩니다.
  • .canvas 파일 — 빈 보드나 추출 가능한 텍스트가 없는 보드는 건너뜁니다. 텍스트 노드가 있는 보드는 Markdown(JSON Canvas 1.0에 따른 텍스트 콘텐츠 및 파일/링크 레이블)으로 변환됩니다.
  • 인코딩 탄력성 — UTF-8 디코딩에 실패한 파일이 보고되지만 가져오기는 차단되지 않습니다.
  • 충돌 방지 다시 가져오기 — 다른 콘텐츠가 포함된 원시 파일이 이미 존재하는 경우 기본적으로 건너뛰기됩니다. 대화 상자를 사용하면 이유(wiki/log.md에 기록됨)로 대체할 수 있습니다.
가져오기가 완료되면 토스트 알림에 처리된 노트 수, 추출된 태그 및 마이그레이션된 이미지가 표시됩니다. 가져온 파일은 컴파일 대기열에 들어가고 자동으로 색인화됩니다.

흑요석에서 열기 및 내보내기 팩(#22 + #22b)

설정 → Wiki → 개요Obsidian Vault 카드는 역방향 열기/내보내기로 위의 가져오기를 보완합니다. 압축을 푼 후: Obsidian → 폴더를 볼트로 열기 → 그래프 보기에는 페이지 유형별로 색상이 지정된 노드가 표시됩니다. 테스트(2026년 7월): 14개 대상 pytest(교차 플랫폼 실행 + 공개 + 내보내기 - Chrome 없음 MCP E2E).
vs 프로젝트 마운트: Obsidian/Typora를 사용하여 자신의 디스크에서 계속 편집하려면 설정 → 프로젝트 → 동기화 폴더 마운트를 사용하세요. #22는 Myrm 호스팅된 컴파일된 볼트용입니다. 원클릭 열기 또는 스냅샷 내보내기입니다.
정직한 한계: 클라우드는 로컬 경로를 공개할 수 없습니다. Obsidian이 설치되지 않은 경우 숨겨진 열기 버튼(폴더에 표시 + 다운로드는 계속 작동함) Windows %ProgramFiles%\Obsidian\Obsidian.exe은 아직 조사되지 않았습니다. 이식 가능한 obsidian:// 딥 링크가 없습니다.

로컬 볼트 git 스냅샷(#23)

Wiki Vault에서 버전 제어가 활성화되면(Local/Tauri은 세션 아카이브 및 유사한 경로에 대해 기본값으로 설정됨) Myrm은 Vault 내부에 실제 .git 디렉터리를 유지합니다. — Shadow-git 플러그인은 아닙니다. 테스트(2026년 7월): Vault git에 대해 5개 대상 pytest(test_wiki_vault_git_mutation 2 + Harness test_vault_git 3 — Chrome 없음 MCP E2E).
정직한 제한: 설정 내 커밋 목록 UI가 없습니다. 자세한 기록을 보려면 git log 또는 Obsidian Git을 사용하세요. Obsidian 팩 다운로드 ZIP에는 .git이 포함되지 않습니다. 클라우드 배포는 Vault git을 약속하지 않습니다.

가져온 이미지 검색(흑요석 자산)

Vision Fallback ModelSettings → Models에서 구성되면 Myrm은 비전 생성 캡션(FTS5 + 선택적 벡터 하이브리드)을 사용하여 wiki/assets/ 아래의 이미지를 색인화합니다. 별도의 이미지 검색 도구 없이도 찾을 수 있습니다.
  • wiki_query / knowledge_recall(corpus=wiki|all) — “아키텍처 다이어그램은 어디에 있나요?”와 같은 텍스트 질문 채팅 소스에서 캡션 및 썸네일 인용과 함께 자산 조회수를 반환할 수 있습니다.
  • 설정 → Wiki → 개요asset_index 배지는 색인화됨/보류 중/실패한 수를 표시합니다. 이미지가 있지만 비전이 구성되지 않은 경우 황색 힌트가 모델로 연결됩니다.
  • 가져오기 경로 — Obsidian 가져오기는 백그라운드 자산 인덱싱을 예약합니다. 컴파일/유지 관리는 자산 인덱스도 새로 고칩니다.
정직한 한계: 캡션을 통한 텍스트 → 이미지 검색이며 이미지 → 이미지(멀티모달 삽입)가 아닙니다. OpenViking과 같은 경쟁업체는 후자를 제공합니다. 일반 클로 에이전트(OpenClaw, Hermes)에는 Obsidian 자산 캡션 파이프라인이 전혀 없습니다. 비전이 구성되지 않은 경우 자산을 가져오지만 검색할 수는 없습니다. 개요 힌트에서 해당 사례를 다룹니다. 채팅에는 오해의 소지가 있는 빈 캡션 자산 소스가 표시되지 않습니다.

URL 수집 및 동영상 자막 추출

Wiki에 URL을 수집할 때 Myrm은 CrawlEngine을 통해 모든 링크를 라우팅합니다.
  • YouTube 동영상 — 자막이 자동으로 추출됩니다(10개 이상의 언어 지원). 위키는 원시 HTML이 아닌 검색 가능한 텍스트를 저장합니다.
  • Bilibili 동영상 — 직접 API을 통한 자막 추출, DOM 구문 분석이 필요하지 않습니다.
  • WeChat 기사 — 다중 계층 가져오기 프로그램은 크롤링 방지 보호(HTTP → 브라우저 → 스텔스 모드 점진적 저하)를 자동으로 처리합니다.
  • 일반 웹페이지 — CrawlEngine은 최적의 가져오기 전략을 적응적으로 선택합니다. JS 렌더링 페이지는 자동으로 브라우저 엔진으로 업그레이드됩니다.
  • 고가용성 폴백 — CrawlEngine이 실패하면 시스템은 자동으로 secure_get + 마크다운 변환으로 폴백하여 수집이 차단되지 않도록 합니다.
사용자는 에이전트와 링크를 공유하고 “이것을 가져오세요”라고 말하면 시스템이 자동으로 URL 유형을 식별하고 최적의 추출 방법을 선택합니다.

문서 구문 분석 및 OCR

Wiki에 문서를 수집할 때 Myrm은 최적의 구문 분석 전략을 자동으로 선택합니다.
  • 텍스트가 풍부한 PDF — 병렬 처리, 북마크 삽입 및 글꼴 기반 제목 감지 기능을 갖춘 pdfplumumber를 통해 추출됩니다.
  • 스캔한 PDF — 텍스트 내용이 희박한 경우(< 200자) 자동 감지됩니다. 페이지를 PNG 이미지로 렌더링한 뒤 로컬 PaddleOCR 엔진(한중일영 네이티브, 클라우드·비전 모델 불필요)으로 페이지마다 인식해 검색 가능한 텍스트로 다시 조립합니다. OCR을 사용할 수 없을 때만 비전 모델 보조로 대체됩니다.
  • 하이브리드 PDF — 텍스트는 정상적으로 추출되는 반면, 포함된 차트와 사진도 스마트 이미지 절제 필터(UI 노이즈, 로고, 장식 요소 제거)를 통해 캡처 및 필터링됩니다.
  • 이미지 — 로컬 PaddleOCR 엔진은 클라우드 종속성 없이 중국어, 일본어, 한국어, 영어를 지원합니다. 결과에는 신뢰도 점수와 경계 상자가 포함됩니다.
  • Office 파일 — MarkItDown과 같은 외부 종속성이 없는 DOCX, XLSX, PPTX용 기본 파서입니다.
모든 전략은 비동기식으로 실행되며 동일한 컴파일 파이프라인에 반영되므로 수동으로 선택할 필요가 없습니다.

보안

Wiki 수집은 경로 순회 방어지속성 레이어 콘텐츠 검사를 통해 보호됩니다.
  1. 파일 이름 삭제 — LLM 제공 파일 이름의 모든 디렉터리 구성 요소가 제거되어(Path(filename).name) 삽입된 도구 호출이 ../../../etc/cron.d/evil.md과 같은 경로를 대상으로 삼는 것을 방지합니다.
  2. 경계 유효성 검사safe_join_path()는 확인된 경로가 wiki 원시 디렉터리 내에 있는지 확인하여 절대 경로, 널 바이트 삽입, 심볼릭 링크 이스케이프 및 ../ 통과를 차단합니다.
  3. 사전 쓰기 스캔 — 바이트가 디스크에 도달하기 전에 publish_raw 및 컴파일된 게시 실행 자격 증명/삽입 검사를 수행합니다(위의 아카이브 보안 거버넌스 참조).
이러한 방어는 하네스 프레임워크 수준에서 작동합니다. 즉, 모든 Wiki 수집 경로(에이전트 도구 호출, 자동 보관, 설정 가져오기, 대용량 문서 RAG 수집)가 자동으로 보호됩니다. Wiki 디렉터리 자체는 사용자 홈 디렉터리 외부에 있으며 코드 실행 중에 OS 수준 샌드박스(macOS Seatbelt/Linux bubblewrap/Windows AppContainer)에 의해 더욱 격리됩니다.

DIY 위키 스킬과 비교

Myrm은 아직 Wiki 삭제를 위한 Notion 스타일 휴지통을 제공하지 않습니다. 삭제 확인을 중요하게 다루십시오. 중요한 메모에는 백업을 사용하세요.

관련된