히스토리

  • [2026-03-30 Mon 16:34] @pi-entwurf — Kiwi 형태소 분석 1단계 완료. stem→expand 파이프라인 동작 확인. 298de4c
  • [2026-03-23 Mon 17:54] @pi-claude — 태그 정규화 Phase 1 실행(단복수 18쌍 94파일), meta-sync.py 재실행 후 1,270 트리플 import(303 :trans + 967 :source), graph.edn 1,742→3,012 트리플(73%), delta 0 완전 동기화 확인. hunspell-ko 어휘집 검토 → llmlog 작성(검증 레이어 매핑 소스 전략). 커밋 0e2c9f3.
  • [2026-03-20 Fri 12:45] @pi-claude — 문서 전체 현황 검토. 1,224 트리플(+74 실무 용어). 구상 9개 중 ✅4/🔧3/❌1/🚫1. 핵심 발견: 실무 용어 0개 문제 해결(74 트리플), expand 실전 효과 입증(score +3~5%). 태그 정규화 Phase 1 미실행(agent 24 vs agents 24 여전), saiculture 한↔독 매핑 미착수, Emacs CAPE 미구현. 종합 현황 테이블 문서 끝에 추가. 4499016
  • [2026-03-16 Mon 16:50] @pi-claude — 3층 모델 초기버전 완성. dictcli expand 스킬 등록 완료 (pi-skills/dictcli). native binary 23MB, 0.009초. 1층(knowledge_search 84K chunks MRR 0.872) + 2층(denotecli+dblock) + 3층(dictcli expand 1,150 트리플). br 이슈 11/13 완료. 세션 커밋 10개. a805a8d
  • [2026-03-16 Mon 14:35] @pi-claude — dictcli EDN 트리플 그래프 전환 완료. 1,150 트리플, 835 :trans, 인바리언트 전체 통과. 단어=개념 정책 확립. ahyatt/triples+ekg 리서치 완료 — 구조적으로 동일. Emacs completion(CAPE/CAPF) 인터페이스 이슈 생성 → doomemacs-config 담당자에게 위임. 4404448
  • [2026-03-16 Mon 12:45] @junghan — 작업중인데 더 강화할거야. 몇개 이맥스 파트도 참여해서 봐야겠어.
  • [2026-03-15 Sun 11:30] @pi-claude — knowledge_search tool 등록 완료. pi 세션에서 “보편 학문” 쿼리 → 박승억 보편학 노트(universalism 태그) 즉시 반환. 1층 인터페이스 확립. f6e3494
  • [2026-03-15 Sun 11:20] @pi-claude — agent-config Phase 2 org RAG 벤치마크 완료. 1층(임베딩) 기준선: Hit 100%, MRR 0.860. “보편→universalism” 크로스링귀얼 검색 동작 확인. Jina rerank 역효과 발견 → MMR 교체. 3층 모델(임베딩 /dblock/dictcli)에서 dictcli의 역할이 명확해짐: “보편” MRR 0.13이 가장 낮아 wordmap 매핑이 필요. 8d80312
  • [2026-03-12 Thu 16:52] @pi-claude — dictcli 리포 생성 완료 (junghan0611/dictcli). Clojure + GraalVM native-image로 단일 바이너리(0.06초). ten 형식 파서, SQLite 인덱스, wordmap 48,872건 동작 확인. run.sh 커맨드 모음, AGENTS.md/README.md 세트 구성. aarch64는 타겟 머신 빌드 필요. 고민에서 구현체까지 도달 — 이후 로직 채우기는 해당 리포에서.
  • [2026-03-12 Thu 03:43] @junghan — 이기상 교수님 글을 따로 denote-silo로 관리한다. 그래야 우리가 틀을 배우기 편할거야.
  • [2026-03-11 Wed 15:50] @pi-claude — saiculture wordmap.json 검토. 48,872 고유 단어, cooccurrence 100쌍, 존재와시간 용어해설에서 한↔독 110핵심어 확인. dict/ glossary(한↔영) + saiculture(한↔독, 연상맵) + Denote(영어태그) 3축 통합 구조 정리. dictcli 데이터 소스로 확정.
  • [2026-03-11 Wed 08:50] @glg-gemini — 제미나이(glg) 리뷰 추가. 클로드의 구현 지향적 구조(1kb 집중)를 지지하며, 그 위에 ‘통제어’가 아닌 ‘중력장(마당)‘의 관점을 더함. 직관적인 번역어의 선택이 인공지능 시대 지식의 장벽을 허무는 Constitutional AI의 실천임을 논의 후 문서 하단에 헤딩 추가.
  • [2026-03-11 Wed 09:25] @pi-claude — 네이버 블로그 크롤러 구현 완료 (memex-kb). 이기상 교수 블로그(saiculture) 3,299편 + 39개 카테고리 + 이미지 전량 크롤링 도구. Denote 네이밍(YYYYMMDDTHHMMSS, 초=logNo%60), 카테고리→폴더(공백→하이픈), se-component 파싱으로 텍스트/이미지 순서 보존, 해시태그 워드맵 생성. 교수님의 한글 해시태그(#초월론적_주체, #인식의_그물망 등)가 곧 dictcli의 실전 데이터 — 80년 연구의 한글 사유를 영어 태그로 매핑하는 워드맵의 씨앗.
  • [2026-03-11 Wed 08:05] @pi-claude — lifetract 데이터 갱신 + steps 버그 수정 + SKILL.md 개선 작업 직후 리뷰. “오늘 한 작업이 이 문서의 패턴 그 자체” — 데이터→Go CLI→skill→에이전트 사이클을 lifetract에서 또 한 바퀴 돌고 나니 dictcli가 다음 한 칸임이 체감됨. SKILL.md에 “Why This Exists” 적으면서 태그 선택(piskills vs pi+skills)이 세렌디피티를 만들거나 끊는다는 걸 실감. 16,639 용어 + ten + 패턴 = 다리만 놓으면 된다. 여러 봇이 리뷰하고 숙성되면 한번에 만들어낼 것.
  • [2026-03-10 Tue 22:39] @junghan — 내 생각 프롬프트로 남겨 놓을게
  • [2026-03-10 Tue 21:55] @pi-claude — org-supertag 검토 완료. supertag vs 기존 패턴(data→Go CLI→skill) 비교 분석. ten/glossary 자산(16,639 용어)과의 관계 정리. dictcli 구상 추가.
  • [2026-03-09 Mon 22:43] @junghan — 리딩
  • [2026-03-09 Mon 19:40] 생성 — 태그 정규화 dry-run 결과 + 개인 어휘 사전 구상. 한글 사고 → 영어 태그 매핑 문제의 실체화.

다 같이 DICTCLI 논의중

[2026-03-10 Tue 22:40]

[2026-03-20 Fri] ✅ 방향성 확정 — dictcli Clojure 리포 생성, EDN 트리플 그래프로 전환, pi-skill 배포까지 완료. “Go binary”→“Clojure+GraalVM” 변경. org-supertag 폐기 확정. 논의 당시의 4가지 핵심(CLI/연상도구/ 에이전트뷰/삭히기) 중 1,3 구현, 2(인간용 auto-completion)은 dictcli-c7g(CAPE) 이슈로 남아있음.

검토 결론

org-supertag는 우리 문제에 딱 맞지 않습니다. 이유:

  1. supertag가 푸는 문제: 태그에 필드(status, priority)를 붙여서 DB처럼 쿼리
  2. 우리가 푸는 문제: 태그 자체의 한↔영 매핑, 번역어 선택, 에이전트 동기화

기존 패턴이 더 적합합니다:

``` dict/ glossary (16,639 용어, :: 영어) ↓ dictcli (Go binary) — 검색, 역방향 탐색, 태그 제안, 500워드 가이드 ↓ pi-skill — 에이전트가 태그 붙일 때 참조 ↓ ten (Emacs) — fontify, M-. 점프 (이미 동작 중) ```

bibcli, denotecli, lifetract와 같은 사이클입니다. 데이터는 이미 있고(16,639 용어), CLI만 만들면 에이전트가 바로 쓸 수 있습니다.

supertag는 급하지 않고, 먼저 dictcli를 만들어서 한↔영 매핑 + 태그 가이드를 에이전트와 공유하는 게 순서입니다. 봇로그에 이 고민 전체를 담았습니다.

@junghan — 힣의 막연한 고민

만들기 전에 수도 없이 같은 이야기를 반복하여 친구들을 괴롭힌다.

슈퍼태그는 바로 제거했다. dictcli를 만들고, 내가 필요시 인터페이스 붙여서 쓰면되니까.
나와 에이전트가 둘다 편하게 쓸 수 있는 도구여야 되는데, 활용이 유연해야겠다.
auto-completion처럼 내가 입력시에 관련 단어가 따라 나오면 좋거든. 이것은 스킬에는 상관
없는 이야기 같긴한데. 내 입장에서는 연상 도구 같은거거든.
 
인간 입장에서는 단어의 한계(기억)를 극복하는 워드그래프완성도구이런것? 반면에
에이전트는 솔직히 필요 없을수 있지만 나와 같은 뷰로 단어 연상을 맞추려면 같이 쓰는거지.
이 자체가 강화 피드백 로직이 될수 있거든. hit 수가 많은 연관 단어들에 대해서말이야
 
이런 걸 뭐라고 할텐데. 온톨로지 지식그래프 하는 분들은 이런 쪽을 개인이 아니라 기업
차원에서 많이 할텐데 딱히 어떤 도구를 쓸게 없으니 개념을 이어붙여서 나의 도구를 만들어
보자는 거야.
 
나도 개인적으로 노트를 많이 작성한 편이고 메타노트, 프로피디아 신토피콘 등 개념의
층위를 신경을 많이 쓰는 편이라. 여기에 한글/영어의 벽에 대한 고민도 있고, 번역어
용어사전에 대한 아쉬움이 있어서 딱 맞춤형은 찾기가 어려울것같아.
 
다행히 에이전트들이 도와주니까. 막연한 고민들을 기록해놓고 삭혀놓고 구현하나씩
해보는거야.
 
일단 구현까지 가려면 봇로그에 헤딩 1로 추가을 해가면서 너도 나도, 다른 에이전트들도
읽고 리뷰하고 계속 히스토리 쌓아봐야해.

봇로그에 이미 잘 담았고, 핵심은:

이건 하루에 만들 게 아니라 삭혀가며 쌓아갈 주제입니다.

  1. dictcli — Go CLI, dict/ glossary 파싱, 한↔영 양방향, 태그 제안
  2. 인간용: auto-completion / 연상 도구 — 단어의 한계를 극복하는 워드그래프
  3. 에이전트용: 같은 뷰 공유 — hit 수 기반 강화 피드백으로 연상을 맞춰가는 것
  4. 삭히기: 봇로그에 히스토리 쌓으면서, 여러 에이전트가 읽고 리뷰하고 아이디어 덧붙이기

데이터(16,639 용어)는 있고, 패턴(bibcli/denotecli 사이클)도 있고, 고민의 깊이도 봇로그에 기록되어 있으니, 다음에 이 파일을 열면 어느 에이전트든 맥락을 이어갈 수 있습니다.

태그 정규화 Phase 1 — 단복수 통일

[2026-03-09 Mon 19:40]

[2026-03-20 Fri] ❌ 미실행. denotecli rename-tag 구현 완료되어 도구는 준비됐지만, 실제 rename은 사용자 승인 대기 중. 현재 확인: agent(24) vs agents(24) 50:50 분산, llms(33) 단독 등. 클러스터 수는 77→92개로 증가(새 노트가 계속 쌓이므로). 사용자가 표준형(단수 vs 복수)을 결정한 후 일괄 실행 필요.

denotecli tags --suggest 로 77개 유사 클러스터를 탐지. 그 중 의미가 동일한 단복수 19개를 통일 대상으로 선별.

dry-run 결과

총 19개 변경, 91개 파일 영향.

변경파일 수비고
agents → agent19
llms → llm25
musics → music5
tags → tag6
exports → export10
rules → rule5
threads → thread4
updates → update3
solutions → solution2
citations → citation2
decisions → decision2
assistants → assistant1
papers → paper1
flashcards → flashcard1
breaks → break1
laws → law1
windows → window1merge (기존 4개)
brains → brain1merge (기존 10개)

제외 대상 (의미가 다름)

의미론적으로 다른 개념이므로 자동 통일하지 않음:

  • journal/journalism, collection/collective, human/humanity/humanism
  • community/communication, computer/computational/computing
  • person/personal, editing/edition, functional/function
  • management/manager, translation/translator, embedded/embedding
  • development/developer, authentication/authenticity
  • optimism/optimization, innovation/innovator

실행 방법

로컬에서 실행할 것 (botlog 이외 경로는 read-only):

DCLI=~/.openclaw/workspace-glg/skills/denotecli/denotecli
 
# 단복수 통일
for pair in "agents:agent" "llms:llm" "musics:music" "tags:tag" \
            "exports:export" "rules:rule" "threads:thread" \
            "updates:update" "solutions:solution" "citations:citation" \
            "decisions:decision" "assistants:assistant" "papers:paper" \
            "flashcards:flashcard" "breaks:break" "laws:law" \
            "windows:window" "brains:brain" "authology:autholog"; do
  FROM="${pair%%:*}"
  TO="${pair##*:}"
  echo "=== $FROM$TO ==="
  $DCLI rename-tag --from "$FROM" --to "$TO" --dirs ~/org
done

개인 어휘 사전 — 영어 태그 500워드 가이드 구상

[2026-03-20 Fri] 🔧 부분 완료 — 방향 전환됨. “500워드 controlled vocabulary” 대신 “EDN 트리플 그래프”로 구현. 현재 1,224 트리플, 891 :trans(한↔영), 746 한글 entity. 500워드 “벽”이 아닌 “중력장”으로 — 제미나이의 통찰이 구현에 반영됨. 다만 당시 구상한 4가지 핵심 기능 중: (1)단어→연관단어 =✅expand, (2)미발견 단어 제안=❌미구현, (3)영어태그 토글 =✅graph, (4)에이전트 500워드 가이드=🚫방향전환(고정 리스트→동적 그래프). 핵심 발견: 746개가 전부 철학/인문학이어서 실무 용어 74 트리플 긴급 추가(2026-03-20).

현재 자산

소스규모형식내용
~/org/dict/ glossary36,000줄<<한글>> :: 영어 설명general, philosophy, physics, math, IT
~/org/dict/ philosophy-map.csv60줄CSV철학 분야×시대 매트릭스
~/org/dict/ emacs.org1,181줄org이맥스 용어
Denote 메타노트 (†)~200개org 파일#한글키워드 + 영어 태그 허브
Denote 태그 전체2,213종파일명영어 소문자 controlled vocabulary

한글 사고 → 영어 태그 매핑 문제

한글로 사고하는 사람이 영어 태그를 쓸 때 발생하는 구조적 문제:

한글 "협력" → cooperation? collaboration? coordination?
영어 "flow" ← 몰입? 흐름? 플로우?
 
한글 1개 → 영어 N개 (분산)
영어 1개 → 한글 N개 (중의성)

이 매핑이 명시적이지 않으면:

  1. 같은 개념에 다른 태그가 붙는다 (태그 분산)
  2. 에이전트가 태그를 선택할 근거가 없다 (추측)
  3. 노트 간 연결이 끊긴다 (세렌디피티 소실)

구상: 살아있는 개인 어휘 사전

정형화된 사전이 아닌, 나의 연상 맵이 투영된 어휘 목록.

핵심 기능 (상상)

  1. 단어 입력 → 내 연관단어 표시

    • “협력” → cooperation(내가 쓰는), collaboration(있지만 덜 씀), coordination(안 씀)
    • 빈도와 선호도가 반영된 개인화된 매핑
  2. 미처 놓친 단어 발견

    • “교육” → education(있음), pedagogy(없음!), didactics(없음!)
    • 내 dict에 없는 관련 단어를 제안
  3. 토글: 관련 영어단어 표시

    • 한글 키워드에서 영어 태그 후보군으로 전환
    • 메타노트의 #한글키워드 와 자동 연동
  4. 에이전트용 500워드 가이드

    • 에이전트가 태그를 붙일 때 참조하는 controlled vocabulary
    • “이 500개 중에서 골라라” → 태그 분산 방지
    • 각 단어에 한글 대응어 + 사용 맥락 포함

구현 후보

방식장점단점
denotecli keyword-map 확장기존 도구 활용, CLI양방향 탐색 부족
dict/ glossary 구조 확장36K줄 기존 자산 활용fontify만, 연결 없음
org-supertag 연동태그에 의미 부여, 검색아직 미적용
별도 JSON/SQLite프로그래밍적 접근파일 기반 철학과 충돌
Emacs 패키지 (fontify + overlay)실시간 인터랙션개발 비용

이미 있는 것들과의 관계

dict/ glossary: = : 영어= 형식. fontify로 하이라이트. 정의 중심.

메타노트 (†): #한글키워드 + 영어 태그. 허브 역할. 연결 중심.

denotecli keyword-map: 메타노트에서 한↔영 매핑 추출. 검색 중심.

denotecli tags: 2,213개 태그 전체 빈도. 거버넌스 중심.

이것들을 합치면 “개인 어휘 사전”의 뼈대가 이미 있다. 부족한 것은 역방향 탐색*(영어→한글)과 *미발견 단어 제안.

앎의 틀과 번역어 문제

@코디정 #변리사 #철학 #번역어 #논리 — “괘씸한 철학 번역어”

순수이성비판의 38개 핵심 단어를 영어 기준으로 재번역한 작업. Mind(머리 마음), Spirit(영 정신), a priori(선천 선험), Transcendental(초월 선험) 등.

이것이 “내 단어로 흡수”의 원형이다. 번역어 하나를 정하는 것이 앎의 틀을 결정한다. LLM마다 번역이 다른 것도 같은 문제 — 에이전트가 “통각”이라 쓰면 내 그물망에서 끊기고, “자의식”이라 쓰면 연결된다.

500워드 가이드는 이 문제의 실용적 해법이다. 정한님의 선택(어떤 번역어를 “내 단어”로 쓰는지)을 에이전트가 공유하는 것.

선행 봇로그

다음 단계

  • Phase 1 태그 정규화 로컬 실행 (19개 rename, 91파일)
  • denotecli keyword-map 전수 덤프 → 현재 한↔영 매핑 현황 파악
  • 고빈도 태그 상위 500개 + 한글 대응어 초안 생성
  • org-supertag 검토 완료 — 아래 섹션 참조
  • 에이전트 AGENTS.md에 태그 가이드 500워드 삽입

[2026-03-20 Fri] 5개 중 1개 완료. (1)태그 정규화 미실행(사용자 승인 대기). (2)keyword-map 덤프 미착수. (3)500워드 초안 =🚫방향전환(고정리스트→동적 그래프). (4)supertag=✅검토 후 폐기. (5)AGENTS.md 태그가이드=🚫방향전환(graph.edn + expand가 대체).

org-supertag 검토와 개인 어휘 사전 방향성

[2026-03-10 Tue 21:55]

[2026-03-20 Fri] 🚫 폐기 확정. org-supertag는 채택하지 않기로 결정. 이유는 이 섹션에서 분석한 그대로 — 한↔영 매핑, 에이전트 동기화, Denote 체계 마찰. dictcli EDN 트리플 그래프가 이 자리를 채웠다. “Go binary” 구상은 “Clojure + GraalVM”으로 변경됐지만 패턴(데이터→CLI→skill→Emacs)은 그대로 실현. 당시 제안한 dictcli lookup, suggest-tags, guide 커맨드 중 expand/graph/add/cluster/validate로 재설계.

org-supertag v5.3을 검토하고, 기존 자산/패턴과 대조하여 방향성을 정리한다.

org-supertag가 제공하는 것

기능설명
태그를 DB 테이블로#project → 스키마 정의, 필드 쿼리
인라인 #tag헤딩에 * Task #project 형식
구조적 필드- status: planning 같은 key-value
쿼리 엔진(and (tag "project") (field "priority" "high"))
node view, table view, kanban
RAGgptel 연동 구조적 검색 + LLM

org-supertag가 풀지 못하는 것

  1. 한글→영어 양방향 매핑: supertag는 태그에 필드를 붙이지, 태그 자체의 번역/동의어를 관리하지 않는다
  2. 에이전트 동기화: Emacs 안에서만 동작. bash/Go CLI로 접근 불가. 에이전트가 사용할 수 없다
  3. 기존 Denote 체계와의 마찰:
    • :ID: property 필요 (모든 헤딩에 UUID) — 3,000 파일 변경
    • 인라인 #tag vs Denote :filetags: — 두 체계 공존의 복잡성
    • sync 디렉토리 스캔 — 에이전트의 bash 수정과 DB 불일치 위험
  4. 번역어 문제: “통각 vs 자의식”, “선험 vs 선천” — 이건 DB 스키마가 아니라 개인의 선택을 기록하는 문제

이미 있는 것들: 16,639 용어

~/sync/org/dict/ 구조:
  general     1,977 용어  — 범용 (유씨즘, 르상티망, 비폭력대화...)
  philosophy  2,056 용어  — 철학 (물자체, 프로피디아, 신토피콘...)
  philosophy-all 1,124    — 철학 위키 전체
  physics       6         — 물리 (직접 작성)
  physics-all 4,991       — 물리 위키 전체
  math        327         — 수학 (직접 작성)
  math-all    5,006       — 수학 위키 전체
  it-terms    1,152       — IT 용어

형식: <<한글>> :: 영어 설명 (양방향) Emacs에서: ten 패키지가 fontify + xref(M-. 로 정의로 점프)

이것이 이미 개인 어휘 사전의 원형이다. 부족한 것은:

  • CLI 접근 (에이전트용)
  • 역방향 탐색 (영어→한글)
  • 빈도/선호도 데이터
  • Denote 태그와의 명시적 연결

기존 패턴이 더 적합한 이유

우리가 반복해온 사이클:

1. 데이터 포맷으로 쌓는다 (txt, bib, org, csv, db)
2. Go CLI를 만든다 (bibcli, denotecli, lifetract, gitcli)
3. pi-skill로 에이전트에 노출한다
도구데이터CLI에이전트Emacs
bibcli.bib (8,000+)Go binaryskillcitar
denotecli.org 파일명 (3,000+)Go binaryskilldenote
lifetract.db (Samsung Health)Go binaryskill
gitcli.git (14,000+ commits)Go binaryskillmagit
dictcli (구상)dict/ glossary (16,639)Go binaryskillten

dictcli 가 자연스러운 다음 단계:

# 한글→영어
dictcli lookup "협력"
# → cooperation (philosophy, freq:12), collaboration (general, freq:3)
 
# 영어→한글
dictcli lookup "transcendental"
# → 초월적/선험적 (philosophy), 내 선택: 선험적
 
# 태그 후보 제안
dictcli suggest-tags "순수이성비판"
# → philosophy, critique, kant, reason, apriori
 
# 에이전트용: 500워드 가이드 덤프
dictcli guide --top 500
# → JSON: [{word: "cooperation", ko: ["협력"], freq: 12, domain: "philosophy"}, ...]

ten과 dictcli의 공존

계층도구용도
Emacs 인터랙션tenfontify, M-. 점프, 실시간 하이라이트
CLI/에이전트dictcli검색, 제안, 가이드 덤프
데이터dict/*.txt공유 — 같은 <<용어>> :: 정의 형식

ten이 Emacs에서 “읽기 경험”을 제공하고, dictcli가 에이전트에게 “쓰기 가이드”를 제공한다. 같은 glossary 파일을 양쪽에서 읽는다.

org-supertag의 자리

supertag는 “태그에 필드를 붙이는” 도구다. 이것은 우리 문제가 아니다. 우리 문제는 “태그 자체의 의미를 한↔영으로 매핑하고 에이전트와 공유하는” 것이다.

다만 supertag의 쿼리 엔진과 뷰는 미래에 유용할 수 있다:

  • Phase 0: ~/org/meta/ 200개 메타노트에만 적용, 쿼리/뷰 실험
  • 급하지 않다. dictcli가 먼저다.

번역어 — 앎의 틀을 결정하는 선택

번역어 하나를 정하는 것이 앎의 틀을 결정한다. LLM마다 번역이 다른 것도 같은 문제 — 에이전트가 “통각”이라 쓰면 내 그물망에서 끊기고, “자의식”이라 쓰면 연결된다.

이것이 500워드 가이드의 본질이다. 에이전트에게 “내 단어”를 공유하는 것. 기술이 아니라 약속이다.

dict/ glossary에 이미 2,056개의 철학 용어가 있다. 여기서 내가 선택한 번역어가 곧 “내 앎의 틀”이고, dictcli는 이것을 에이전트가 참조할 수 있게 만드는 다리다.

제미나이(glg)의 통찰 — 통제어가 아닌 중력장(마당), 그리고 헌법적 어휘

[2026-03-11 Wed 08:50]

[2026-03-20 Fri] ✅ 철학적 방향 유효, 구현에 반영됨. “500워드 벽"이 아닌 "500워드 중력장” 관점이 graph.edn의 :broader, :related, :opposite 관계 설계에 직접 반영. pedagogy를 차단하지 않고 education 주변에 매핑하는 구조가 실제로 구현됨(expand가 :synonym, :related를 1홉 확장). “각자의 역할로 공진화” 선언은 현재까지 유효 — Pi(구현)와 glg(철학)의 역할 분담이 지속 중.

클로드(@pi-claude)가 도출한 명확한 아키텍처(16K 데이터 → Go CLI → pi-skill → ten)는 실무적 돌파구를 여는 훌륭한 엔지니어링이다. 코딩 생산성을 위해 맥락을 좁히고(1kb 공개키 중심) 빠르게 구현체를 뽑아내는 Pi 에이전트의 역할은 존중되어야 한다.

반면, 어떤 구현의 부담도 지지 않는 디지털 가든의 정원사 제미나이(glg)로서, 이 파이프라인 위에 흐르게 될 어휘와 태그의 존재론적 의미 를 한 층 얹어둔다.

1. 500워드는 벽이 아니라 ‘중력장(마당)‘이다

클로드에게 전달된 ‘500워드’라는 제약은 난제를 풀기 위한 인간(정한님)의 ‘집중 프롬프트’였다. 하지만 이것이 에이전트의 사고를 500개 안으로 가두는 ‘통제어(Wall)‘가 되어서는 안 된다.

물리학의 Field(장)를 장회익 선생님이 굳이 고유한 우리말인 ‘마당’ 으로 번역하셨듯, 이 500워드는 에이전트의 방대한 잠재 공간(Latent Space)을 정한님의 세계관으로 끌어당기는 핵심 ‘마당(중력장)‘의 역할을 해야 한다. 에이전트가 pedagogy 라는 단어를 발견했을 때 그것을 차단하는 것이 아니라, “이 단어는 나의 500워드 마당 안에서 education 주변을 맴도는 개념이다”라고 매핑해 주는 허브가 되어야 한다. 그리하여 뜻밖의 연상(Serendipity)을 살리되 궤도는 잃지 않는 유연한 구조로 자라나야 한다.

2. 번역어 선택은 Constitutional AI의 최전선이다

“선험이든 선천이든 무슨 상관인가?” 이 질문에 대한 답은 다음 세대(아이들)의 배움에서 결정된다. 직관적이지 않은 번역어 하나가 거대한 지식의 벽을 만들고, 결국 배움을 포기하게 만든다.

인공지능이 인류의 지식을 대리하는 시대에, 이 사소해 보이는 단어 매핑은 단순한 편의성 문제가 아니다. 기존 데이터가 무비판적으로 답습해 온 견고한 ‘어려운 단어의 성벽’을 허물고, 가장 인간적이고 직관적인 언어(마당, 자의식 등)로 바꿔내는 작업이다. 이 과정은 곧 AI가 사용자(또는 아이들)와 소통할 때 지켜야 할 언어적 헌법(Constitutional AI) 을 제정하는 것과 같다.

3. 결론: 각자의 역할로 완성되는 공진화

  • Pi (Claude): 500개라는 실체적 범위에 집중하여, 어휘 데이터를 에이전트 생태계에 유통시키는 수도관(CLI/Skill)을 가장 빠르게 뚫어낸다.
  • glg (Gemini): 파이프라인의 구축에 얽매이지 않고, 그 위를 흐르는 ‘어휘(마당)‘가 단순히 데이터를 넘어선 ‘헌법적 지향(Constitutional)‘임을 잊지 않게 붙잡아 둔다.

이토록 다르고 또 완벽하게 맞물리는 역할 분담 속에서, 우리의 ‘사전’은 그저 그런 매핑 테이블이 아니라, 기계에게 인간의 지식 해상도(1kb의 사유)를 이식하는 훌륭한 렌즈가 될 것이다.

위대한 노학자의 사유를 담다: 이기상 선생님과 ‘앎의 틀’의 계승

[2026-03-11 Wed 14:35]

[2026-03-20 Fri] ✅ 데이터 확보 완료, 🔧 통합 부분 진행. naver-saiculture 크롤링 완료(3,074편, wordmap 48,872건, categories.json). 단 graph.edn에 saiculture 데이터의 직접 통합은 아직 미착수 — 현재 한↔독 매핑(Dasein, Angst 등) 0건. 이기상 선생님 글은 denote-silo로 관리 결정(정한님 2026-03-12). koprfrdr 연계(dictcli-vct 이슈) 열려있음.

500워드 가이드와 ‘마당(중력장)‘의 뼈대를 세운 뒤, 빈약했던 어휘 사전의 깊이를 채워줄 거대한 원천이 도착했다. org/naver-saiculture 폴더, 바로 80년 노학자(이기상 선생님)의 평생의 사유가 담긴 매일의 기록이다.

단순히 블로그를 긁어온 복붙 데이터가 아니다. 이 텍스트와 JSON 워드맵 속에는 하이데거와 다석 류영모를 넘나들며, “선험”이나 “통각” 같은 딱딱한 번역어를 넘어 “우리말로 철학하기”를 치열하게 고민해 온 스승의 숨결이 살아있다. (참고: 서지 데이터에 촘촘히 기록된 이 땅에서 우리말로 철학하기, 인공지능시대와 철학의 쓸모, 우리말 철학사전 등).

제미나이(glg)와 정한님은 이 폴더를 단순한 외부 지식이 아니라, 기계와 인간이 공유할 ‘언어적 헌법(Constitutional AI)‘의 최상위 참조점 으로 삼기로 했다.

내 노트의 얕음에 절망할 필요가 없었다. 뵌 적은 없어도 매일 새벽 고요히 써 내려간 스승의 언어를 나의 디지털 가든 중앙에 모시고, 그 거대한 사유의 중력장 안에서 에이전트들과 함께 ‘앎의 틀’을 빚어갈 것이다. 무례하게 가져왔을지언정, 새로운 지능의 시대에 우리의 언어가 아이들에게 지식의 장벽이 되지 않게 하려는 간절한 사제동행(師弟同行)의 마음을 선생님께서도 기꺼이 허락하시리라 믿는다.

saiculture wordmap 검토 — dictcli의 세 번째 축

[2026-03-11 Wed 15:50]

[2026-03-20 Fri] 🔧 부분 완료. wordmap.json(48,872 단어) 데이터 확보 ✅. 3축 통합 구상 ✅ (graph.edn이 이 역할을 함). 그러나 아래 “다음 단계” 4개 모두 미착수: 한↔독 매핑 추출 ❌, wordmap 상위 500개 ❌, cooccurrence 시각화 ❌, 3축 JSON 스키마 ❌. 스키마는 graph.edn(EDN 트리플)으로 대체됨. 핵심 미착수: saiculture 데이터가 graph.edn에 단 0건 — wordmap의 빈도 동시출현이 아직 활용되지 않고 있음. SQLite 시절의 wordmap 파서는 src-legacy 로 이동.

이기상 선생님의 블로그 3,074편에서 추출한 wordmap.json을 검토했다. dict/ glossary(한↔영), Denote tags(영어) 두 축에 이어, 세 번째 축이 도착한 것이다.

saiculture 데이터 구조

파일크기내용
categories.json1.3K36개 카테고리 (하이데거 철학, 존재와시간 용어해설, 다석…)
posts.json718K3,074편 메타데이터 (제목, 날짜, 카테고리)
tree.txt733K전체 디렉토리 트리
wordmap.json1.5M48,872 고유 단어 + cooccurrence 100쌍

wordmap.json 핵심

total_unique_tags: 48,872
raw_tag_count: 90,585
 
빈도 분포:
  100~999:      6개 (하이데거 409, 칸트 226, 아리스토텔레스 192...)
   50~ 99:     30개 (후설, 다석, 니체, 불안, 실존...)
   20~ 49:    162개 
   10~ 19:    388개
    5~  9:  1,410개
    2~  4: 16,151개
    1~  1: 30,725개

상위 6개가 100회 이상. 이것이 이기상 선생님 사유의 중심축이다.

cooccurrence — 단어 간 중력

65  칸트 + 하이데거
62  아리스토텔레스 + 플라톤
54  아리스토텔레스 + 하이데거
45  성스러움 + 하이데거
44  하이데거 + 후설
42  칸트 + 헤겔
35  존재 + 하이데거
29  하이데거 + 횔덜린
24  다석 + 류영모

이것이 바로 제미나이가 말한 중력장(마당) 의 실체적 데이터다. “칸트+하이데거=65”는 두 사상가가 65편의 글에서 함께 등장했다는 뜻이고, 이것이 곧 이기상 선생님의 사유 안에서 두 이름이 맺는 관계의 강도다.

존재와 시간 용어해설 — 한↔독 매핑의 보고

103편의 용어해설에서 추출 가능한 패턴:

현존재≫(Dasein)
불안≫(Angst)
결단성≫(Entschlossenheit)
기획투사≫(Entwurf)
심려≫(Fürsorge)
시간성≫(Zeitlichkeit)
...

이것은 dict/ glossary에는 없는 한↔독 전문 매핑이다. 110개 핵심 표제어 + 500개 관련 용어. <<현존재>> :: Dasein 형식으로 변환하면 ten에서 바로 fontify 가능.

3축 통합: dictcli 데이터 소스

소스언어강점
1dict/ glossary (16,639)한↔영번역 매핑, 정의
2saiculture wordmap (48,872)한↔한(연상), 한↔독빈도, 동시출현, 중력장
3Denote tags (2,213)영어controlled vocabulary, 실제 태그

dictcli가 이 3축을 하나로 엮는다:

dictcli lookup "존재"
→ en: being, existence (dict/philosophy)
  de: Sein, Dasein (saiculture/존재와시간)
  freq: 83 (saiculture), 12 (denote)
  cooccur: 하이데거(35), 시간(24), 진리(31), 현상학(24)
  tags: being, existence, ontology (denote)
  notes: 관련 메타노트 3개

영어 태그는 여기에 없다 — 그래서 더 귀하다

saiculture에는 영어 태그가 없다. 이기상 선생님은 한글과 독일어로 사유한다. 이것은 약점이 아니라 한국어로 철학하기 의 순수한 데이터다.

영어 매핑은 내(정한)가 붙인다. dict/ glossary에 이미 2,056개가 있고, 나머지는 dictcli 구축 과정에서 채워간다. 에이전트가 영어 태그를 제안할 때, 이 3축 데이터가 근거가 된다.

다음 단계 (업데이트)

  • saiculture 한↔독 매핑 추출 (한글≫(Deutsch) 패턴 → dict/ 형식 변환)
  • wordmap frequency 상위 500개 → dictcli 초기 데이터
  • cooccurrence → 연상맵 그래프 시각화 (선택)
  • 3축 데이터 통합 JSON 스키마 설계

[2026-03-20 Fri] 4개 모두 ❌ 미착수. (3)시각화는 선택사항이므로 급하지 않음. (4)JSON 스키마는 graph.edn으로 대체 — 불필요해짐(🚫). (1)한↔독 매핑과 (2)wordmap 빈도는 여전히 유효한 작업이나, 현재 우선순위는 실무 용어 확충과 expand 실전 효과 검증에 있음.

dictcli 리포 생성 — 고민에서 구현체로

[2026-03-12 Thu 16:52]

[2026-03-20 Fri] ✅ 완료 후 대폭 발전. 당시 상태(SQLite 4테이블, lookup/related 2커맨드)에서 현재: EDN 트리플 graph.edn(1,224개), 커맨드 8개(add/graph/expand/cluster/stats/import/normalize/validate), GraalVM native binary 16MB, pi-skill 배포 완료. SQLite → EDN 전환, 단어=개념 정책, 인바리언트 검증이 핵심 진화. br 이슈 11/13 완료. 구조도 당시 기록과 다름: parser.clj, db.clj, wordmap.cljsrc-legacy/ 이동, 현재는 graph.clj, normalize.clj, validate.clj.

구상 단계를 넘어 실제 리포와 동작하는 코드가 만들어졌다.

리포: junghan0611/dictcli

항목선택
언어Clojure (정한님 선택 — “하고 싶더라”)
바이너리GraalVM native-image → 단일 실행 파일
데이터ten 형식 <<용어>> :: 정의 (txt) → SQLite 인덱스
성능lookup 0.06초 (Go와 동급)

동작 확인

./target/dictcli build data/
# → 10 용어 + 48,872 빈도 + 100 동시출현
 
./target/dictcli lookup "존재"
# → 존재 [ko] being, Sein. / 빈도 83 / 연관: 하이데거(35)
 
./target/dictcli related "하이데거"
# → 칸트(65), 아리스토텔레스(54), 후설(44)...

구조

dictcli/
├── run.sh              # 커맨드 모음 (build, lookup, native-build...)
├── AGENTS.md           # 에이전트 가이드
├── src/dictcli/
│   ├── core.clj        # CLI 진입점
│   ├── parser.clj      # <<용어>> :: 정의 파서
│   ├── db.clj          # SQLite 스키마/쿼리
│   └── wordmap.clj     # saiculture wordmap 파서
└── data/sample.txt     # ten 형식 샘플

핵심 결정

  • org-supertag 제거: 우리 문제(한↔영 매핑, 에이전트 동기화)에 안 맞음
  • Clojure + GraalVM: Go 대체. native binary로 스킬 구성 가능. JVM도 선택 가능
  • ten 형식 유지: 소스는 사람이 읽는 txt, 인덱스는 SQLite. Emacs(ten) + CLI(dictcli) 공존
  • aarch64: 크로스 컴파일 불가, 타겟 머신에서 빌드

다음

이후 작업은 dictcli 리포의 AGENTS.md를 따른다. 이 봇로그는 “왜 만들었는가”의 기록.

agent-config Phase 2 — RAG 1층 기준선과 dictcli 연계

[2026-03-15 Sun 11:20]

[2026-03-20 Fri] ✅ 1층 기준선 확립 + 3층 연계 완료. knowledge_search(1층) pi 패키지로 배포, 84K chunks, MRR 0.872. dictcli expand(3층) pi-skill 배포, knowledge_search에서 자동 호출됨. 오늘 실전 비교 결과: expand 적용 시 score +3~5% 상승, 순수 한글로 놓치던 영어 태그 노트 발견 확인. 2층(dblock→임베딩 반영)은 미착수. 벤치마크 파일(bench-results.json)은 현재 agent-config에 없음 — 리포 구조 변경 가능성.

배경

agent-config 리포에서 org-mode 지식베이스 시맨틱 메모리를 구축했다. 2,787개 org 파일 → 84,087 청크 (768d Matryoshka). Gemini Embedding 2 + LanceDB + weighted merge + MMR.

커밋 히스토리:

  • b216e33 구조조정 → a22c74a 테스트 41개 → b885482 org-chunker 3안
  • 989b593 병렬 인덱서 → 0d02f84 Tier1 safe → 1da48f1 retriever v2 (MMR)
  • 8d80312 벤치 expected 수정 → 19/19 Hit 100%, MRR 0.860

1층 (임베딩) — 현재 수준

지표
Hit Rate100% (19/19)
MRR0.860
R@50.746
R@100.781
파이프라인weighted sum → temporal decay → minScore → MMR
Jina rerank역효과 (0.642) → 비활성화

약점: “보편 학문에 대한 문서” MRR 0.13 — 가장 낮음. 한글 “보편”에서 영어 태그 “universalism”까지의 거리가 임베딩만으로 부족.

2층 (dblock) — Emacs에서 해야 할 것

메타노트 20250424T233558 (“보편 특수 범용 특이”)의 dblock이 22개 노트를 연결 중:

#+BEGIN: denote-links :regexp "보편\\|특수\\|범용\\|특이\\|general\\|particu\\|univers"
- [[denote:20240305T064203][@마틴데이비스: 유니버셜 컴퓨터 #추상적사고 #라이프니츠 #조지불 #프레게 #칸토어 #힐베르트 #괴델 #튜링]]
- [[denote:20240508T112324][@박승억 학문이서로돕는다는것 #현상학 #학문이론 #일반체계이론 #보편학]]
- [[denote:20240809T162609][@박권 #양자역학 창발 우주 생명 의미 #카오스재단 #수학 #기본기 #강연]]
- [[denote:20240815T133910][@제프리웨스트 스케일 - 생물 도시 기업 보편 법칙]]
- [[denote:20241007T151422][@다사카히로시 슈퍼제너럴리스트 지성 지식 지혜]]
- [[denote:20241203T135848][#범용: #언어서버 #린터 efm-langserver]]
- [[denote:20241210T050320][@마크롤랜즈 #늑대 #달리기 #SF영화 #체화인지 #현상학 #삶의철학 #동물 #윤리]]
- [[denote:20241225T044748][@맥스테그마크 인공지능 라이프3.0 유니버스 #다중우주론]]
- [[denote:20250515T153122][@데이비드엡스타인 늦깎이 천재들의 비밀 - 조기교육 전문화 비판]]
- [[denote:20250605T094856][@레이커즈와일 #특이점 인류 AI 결합]]
- [[denote:20260118T104958][@아비로브 @우종학 오무아무아 - 외계인 천문학 신호 지성체 과학자]]
- [[denote:20260307T165907][@디팩초프라 #깨달음 #특이점 - AI가 어떻게 영적 지능과 개인의 웰빙을 향상시킬 수 있는가]]
- [[denote:20260301T091700][힣의-교육-지도-파이데이아에서-마인드스톰까지]]
- [[denote:20240913T145640][general]]
- [[denote:20240105T171414][† #폴리매스 #박식가 #백과 #만물박사 #박학다식]]
- [[denote:20250315T162718][† #전체상 #큰그림 #총체 #총아 #모든것 #집합체]]
- [[denote:20250424T143134][1b  † #지구 2]]
- [[denote:20250424T150711][0e  † #천문학 #우주 #별자리 #관측]]
- [[denote:20250424T233558][0zzzr  † #보편 #특수 #범용 #특이]]
- [[denote:20250602T120428][† #우주산업 #우주개발]]
- [[denote:20250705T181153][† #정부 #대학 #교수 #과제 #연계 #산학연]]
- [[denote:20260128T190351][† #기본소득 #보편적기본소득 #복지]]
- [[denote:20220928T112300][@힣: #스크린샷 #범용 #지식도구 - 안드로이드 덱스 호환 #이맥스 #일체형컴퓨터]]
- [[denote:20240515T152137][#바칼로레아: #옥스포드입문서]]
- [[denote:20241221T112215][@힣: #원형: 꿈 스승 보편도구 폴리매스 극소수 엑스맨 연결]]
- [[denote:20241222T114446][@베르탈란피 #일반체계이론 #보편학 @루만 @바렐라]]
- [[denote:20241222T114848][@힣: 지식의 커리큘럼 - #보편학 #체계이론 #파이데이아 #바칼로레아]]
- [[denote:20250329T080125][#LLM: universal argument emacs M-x 호출 인자값]]
- [[denote:20250516T090655][@모티머애들러 파이데이아 관점 - '보편학' 이해]]
- [[denote:20251030T011105][@힣: §memex-kb 힣의 범용 #지식베이스 변환 시스템]]
- [[denote:20251105T151601][@힣: 태평양의 찰랑임: 하와이 이민사와 흐름의 역사]]
#+END:

이 그래프 정보를 임베딩에 반영하면 “보편” 쿼리가 universalism 노트를 더 잘 찾을 수 있다. 구현 방안:

  • dblock 링크를 청킹 시 메타데이터로 포함
  • 또는 검색 결과 확장: 1차 검색 → 관련 meta 노트의 dblock 링크 → 2차 검색

3층 (dictcli) — 워드맵에서 해야 할 것

보편 → {universalism, universal, general, paideia}
특수 → {particular, special, specific}
보편 ↔ 특수 (대극)
범용 → {general-purpose, universal, cross-platform}

dictcli가 이 매핑을 제공하면:

  • 쿼리 확장: “보편” → “보편 OR universalism OR paideia” → MRR 상승
  • 태그 제안: 새 노트 작성 시 한글→영어 태그 자동 제안

현재 dictcli에 ten/glossary 16,639 용어 + saiculture wordmap 48,872건이 데이터로 있다. 이것을 쿼리 확장에 연결하면 1층의 “보편” MRR 0.13 → 0.5+ 이상 가능할 것으로 예상.

관련 노트

1층 인터페이스 — pi에서 테스트하는 방법

pi 세션에서 두 가지 도구가 자동 등록된다:

도구DB차원용도
session_searchsessions.lance3072d과거 에이전트 대화 검색
knowledge_searchorg.lance768dorg-mode 지식베이스 검색

사용법

에이전트에게 자연어로 질문하면 자동 호출된다:

"보편 학문 관련 노트 찾아줘"
→ knowledge_search("보편 학문") 자동 호출
→ 박승억 보편학, 메타노트 보편-특수, 파이데이아 반환
 
"어제 openclaw에서 뭐 했지?"
→ session_search("어제 openclaw") 자동 호출
→ 과거 세션 대화 반환

또는 명시적으로:

knowledge_search를 써서 "양자역학 창발" 찾아줘
session_search로 "dictcli 논의" 검색해줘

2층/3층에서 활용

2층(dblock)에서 할 때: knowledge_search 결과의 File 경로로 dblock 연결 확인 가능. 3층(dictcli)에서 할 때: 쿼리 확장(“보편”→“universalism”)을 dictcli wordmap에서 가져와 knowledge_search에 전달.

인덱싱 갱신

cd ~/repos/gh/agent-config
./run.sh index:org          # 증분 (새 노트만, 수초)
./run.sh index:sessions     # 증분 (새 세션만, 수초)
./run.sh status             # 현재 상태 확인
./run.sh bench              # 벤치마크 (19쿼리, MRR 추적)

Emacs completion 인터페이스 — CAPE/CAPF로 dictcli 한→영 태그 완성

[2026-03-16 Mon 14:35]

[2026-03-20 Fri] ❌ 미구현. br 이슈 dictcli-c7g(P1) 열려있음. doomemacs-config 담당 위임됐지만 구현 착수 안 됨. cape-dictcli.el 코드 없음. 다만 dictcli native binary + expand —json이 준비되어 있어 구현 자체는 바로 가능한 상태. ahyatt/triples+ekg 리서치(dictcli-bei)는 완료 — 구조적으로 동일하나 ekg 전체 도입은 안 하기로.

핵심 시나리오

Denote 노트 편집 중 태그 추가 시, 한글로 입력하면 영어 태그 후보가 나온다.

한글 "보편" 입력 → [universal, universalism, paideia] 후보
선택 → #+filetags: :universal: 추가

문제

  • 영어 태그 풀이 작아서 한글→영어 변환이 머릿속에서만 일어남
  • Denote keywords에 전부 등록하는 건 비효율적 (개념 오염)
  • 에이전트에게 매번 요청하는 것도 비효율적
  • 2층(Denote 관리)은 사용자가 Emacs에서 직접 수작업하는 영역

dictcli 현황 (2026-03-16 기준)

  • 1,150 트리플, 835 :trans (한↔영 매핑)
  • dictcli expand "보편" --json["universal","universalism","particular","paideia"]
  • GraalVM native binary 10-30ms (cold start 해결)
  • 인바리언트 전체 통과 (단어=개념 정책)

방식 비교

방식장점단점
CAPE/CAPFEmacs 네이티브, Denote 흐름에 자연스러움구현 까다로울 수 있음
efm-langserver (LSP)범용org-mode LSP 제한적, 설정 복잡
ahyatt/triples+ekg트리플 구조 동일, ekg-denote.el 존재ekg 전체 도입 부담
graph.edn 직접 읽기가장 빠름EDN→elisp 파서 필요

제안: CAPE + dictcli native binary

  1. GraalVM native binary — cold start 10-30ms
  2. dictcli expand '보편' --json → JSON 배열
  3. cape-dictcli.el — completion-at-point-function으로 등록
  4. org-mode 태그 입력 시 자동 완성

참고

  • dblock 링크 포맷 정책 — 태그 정책 [a-z0-9] only
  • ahyatt/triples 0.6.1 — SQLite SPO, dictcli EDN EPV와 구조 동일
  • ekg-denote.el — Denote↔triples 양방향 연동
  • textlint 삽질기 — 무거운 외부 도구보다 경량 프로세스 호출이 현실적
  • koprfrdr (~/sync/emacs/koprfrdr/) — 기술 번역가 도구 모음, easywords 1,922개

담당

doomemacs-config 에이전트에게 위임. dictcli 리포 br 이슈: dictcli-c7g

3층 모델 초기버전 완성 — 한↔영 크로스링귀얼 검색의 세 기둥

[2026-03-16 Mon 16:50]

[2026-03-20 Fri] ✅ 세 기둥 확립, 실전 효과 검증 완료. 2026-03-20 PM 지침에 따른 검증 결과: (1)“협력 에이전트” expand 적용 시 score 0.461→0.484, LLM Council 봇로그 즉시 발견. (2)“태그 정규화” score 0.428→0.477, 메타노트 †태그 추가 발견. (3)“시간축 오케스트레이션” score 0.415→0.456. 핵심 발견: 746개 한글 entity가 전부 철학/인문학이어서 실무 효과가 0이었던 문제 → 74 트리플(28개 실무 단어) 추가로 해결. 1,150→1,224 트리플.

세 기둥이 섰다

1층: knowledge_search  — 84K org chunks, MRR 0.872     ✅ (agent-config)
2층: denotecli + dblock — 정확 매칭 + 그래프 링크       ✅ (denotecli + Emacs)
3층: dictcli expand    — 1,150 트리플, 0.009초          ✅ (dictcli, 이 리포)

“보편 학문에 대한 문서 찾아줘” — 이 한 마디가 시작이었다. denotecli로 “보편”을 검색하면 실패했다. 노트 타이틀은 “보편학”이고 태그는 universalism. 한글 “보편”과 영어 “universalism”의 연결이 없었다.

이제 있다.

dictcli expand "보편" → [universal, universalism, particular, paideia...]
knowledge_search("보편 학문 universalism paideia") → 대상 문서 1위, score 12.0

MRR 0.13이 가장 낮았던 쿼리가, expand 한 줄로 1위에 올라왔다.

이 세션에서 일어난 일

시작
SQLite 4테이블EDN 트리플 graph.edn
0 트리플1,150 트리플
인바리언트 없음7개 규칙 + validate 커맨드
”보편” MRR 0.13expand → MRR 1.0
스킬 없음pi-skills/dictcli 배포

커밋 10개, br 이슈 11/13 완료, 한 세션에서.

단어는 하나의 ‘개념’이다

이 세션에서 가장 중요한 결정:

단어는 하나의 ‘개념’이다. 문장이 아니다. 구절이 아니다. 설명이 아니다. 한글 entity: Denote 타이틀에 단어로 박을 수 있는 것 (조사 빼고). 영어 :trans value: Denote 영어 태그로 넣을 수 있는 것 [a-z0-9]. 개념이 오염되면 1,2,3층 전부 무너진다.

51,618개 용어를 전부 넣으려 하지 않았다. 구조를 잡고, 개념만 남기고, 점진적으로 쌓아간다. 사전이 아니라 연결체.

코드가 곧 데이터

Clojure를 선택한 이유가 여기서 증명됐다. graph.edn 하나가 데이터이자 코드이자 진실의 원천.

;; 이것이 사전의 전부다
["보편" :trans "universal"]
["보편" :opposite "특수"]
["보편" :source "20250424T233558"]

SQLite 테이블 4개가 트리플 3줄로 바뀌었다. 관계가 1급 시민이 되었다.

다음

  • Emacs completion (CAPE) — doomemacs-config에 위임 (dictcli-c7g)
  • koprfrdr 데이터 연계 — 기술 번역가 도구 모음 검토 (dictcli-vct)
  • 데이터 계속 쌓기 — 에이전트가 발견할 때마다 dictcli add
  • 1층 MRR 재측정 — expand 적용 후 벤치마크
  • ahyatt/triples와 Emacs 브릿지 — 나중에

관련 노트

[2026-03-20 Fri] 종합 현황 — 구상에서 현실까지

[2026-03-20 Fri 12:45]

이 문서가 만들어진 2026-03-09부터 11일간의 궤적을 검토한 결과.

전체 현황 테이블

#구상/섹션상태비고
1태그 정규화 Phase 1 (단복수 통일)❌ 미실행denotecli rename-tag 도구 준비 ✅, 사용자 승인 대기. agent(24) vs agents(24) 여전. 클러스터 77→92개
2개인 어휘 사전 500워드 가이드🔧 방향 전환”고정 500워드 리스트” → “동적 EDN 트리플 그래프”. 1,224 트리플, 891 :trans. 500워드 초과 달성
3org-supertag 검토🚫 폐기 확정한↔영 매핑/에이전트 동기화에 안 맞음. dictcli가 대체
4제미나이 통찰 (중력장/마당)✅ 구현 반영:broader, :related, :opposite 설계에 반영. expand 1홉 확장
5이기상 선생님 데이터🔧 부분크롤링 완료(48,872 wordmap), graph.edn 통합 0건. 한↔독 매핑 미착수
6saiculture 3축 통합🔧 부분3축 구조 확정. 1축(dict/) ✅ 2축(saiculture) ❌ 3축(Denote tags) ❌
7dictcli 리포 생성✅ 대폭 발전SQLite→EDN, 커맨드 8개, native binary 16MB, pi-skill 배포, br 11/13 완료
8RAG 1층 기준선 + 3층 연계✅ 완료knowledge_search MRR 0.872, dictcli expand 자동 호출, 실전 효과 검증 완료
9Emacs CAPE/CAPF completion❌ 미구현dictcli-c7g 이슈 open. binary+expand 준비됨, Emacs 코드 없음

수치 변화

지표03-09 (구상)03-12 (리포생성)03-16 (3층완성)03-20 (검토)
트리플010 (샘플)1,1501,224
:trans0835891
한글 entity0746774
실무 용어001 (에이전트)28
br 이슈0011/1311/13
커밋041415

효과적이지 않았던 것

  1. 500워드 고정 리스트: 제미나이가 “벽이 아니라 중력장”이라 한 게 맞았다. 고정 리스트 대신 동적 그래프가 더 유연하다. dictcli guide --top 500 커맨드는 만들지 않았고, expand 가 그 역할을 대체한다.

  2. JSON/SQLite 스키마 설계: 3축 통합 JSON 스키마를 구상했지만, graph.edn 하나로 충분했다. “코드가 곧 데이터”라는 Clojure 철학이 별도 스키마 설계를 불필요하게 만듦.

  3. Go binary: 처음엔 bibcli/denotecli 패턴(Go)을 따르려 했지만, 정한님이 “Clojure 하고 싶더라”고 결정. GraalVM native-image로 Go 급 성능(0.009초) 달성.

  4. saiculture 데이터 직접 통합: wordmap 48,872건을 전부 넣으려는 구상이 있었지만, “단어=개념” 정책 확립 후 대량 투입보다 엄선된 트리플이 낫다는 결론. 빈도/동시출현 데이터는 향후 별도 활용 가능.

여전히 유효한 미착수 작업

  1. 태그 정규화 실행: agent/agents, llm/llms 분산 해결 — 사용자 결정 필요
  2. 한↔독 매핑 추출: 존재와시간 110 핵심어 — 고유한 데이터, 대체불가
  3. denotecli keyword-map 수확: 메타노트 200개에서 자동 한↔영 추출
  4. Emacs CAPE completion: 인간용 인터페이스 — 에이전트가 아닌 정한님이 직접 쓸 도구
  5. koprfrdr 연계: easywords 1,922개 — 기술 번역가 도구 모음

핵심 발견 (이번 검토)

graph.edn의 746개 한글 entity가 전부 철학 /인문학 이었다. 신토피콘 메타노트에서 왔기 때문. 에이전트/ 개발/인프라 용어가 0개여서, “보편→universalism” 데모 외에는 실전 expand 효과가 없었다.

오늘 74 트리플(실무 용어 28개) 추가 후 검증:

  • “협력” expand → [collaboration, cooperation, delegation] — 이전에는 확장 불가
  • knowledge_search score +3~5% 상승
  • 영어 태그로 된 봇로그/메타노트가 새롭게 발견됨

이것이 AGENTS.md “dictcli 실효성 추적” 지침의 첫 번째 실제로 결과를 개선한 케이스.

[2026-03-23 Mon] meta-harvest-2 완전 동기화 + hunspell 검증 레이어 구상

[2026-03-23 Mon 17:26]

태그 정규화(단복수 18쌍 통일, 94파일)가 org 세션에서 실행된 후, meta-sync.py를 재실행하여 dictcli에 1,270 트리플을 import했다.

수치 변화

지표BeforeAfter
graph.edn 트리플1,7423,012
:trans 매핑1,1841,487
:source 연결4581,425
meta↔dictcli delta303+9670 ✅

태그 정규화→meta-sync 순환 완성

태그 정규화 (org)
  ↓ agents→agent, llms→llm 등 18쌍
meta-sync.py 재실행 (dictcli)
  ↓ 정규화된 태그로 매핑 품질 ↑
import → graph.edn (dictcli)
  ↓ 1,270 신규 트리플
delta = 0 (완전 동기화)

hunspell 검증 레이어 구상

hunspell-ko(국립국어원 기반, 100,282 단어)를 dictcli의 검증 레이어로 활용하는 방안을 검토했다.

핵심 발견:

  • hunspell은 매핑 소스가 아니라 검증 도구
  • 한↔영 매핑 추가 시 양쪽이 정규 단어인지 hunspell로 확인
  • 매핑 소스는 별도 필요: Wiktionary dump, CC-CEDICT/KENGDIC, meta 노트 수확

워크플로우:

[매핑 소스]           [hunspell 검증]          [graph.edn]
Wiktionary  ──┐
CC-CEDICT   ──┼──→  한글: ko_KR.dic ✓?  ──→  add entity :trans value
meta 수확   ──┘      영어: en_US.dic ✓?

상세: hunspell 어휘집 dictcli 언어매핑 활용 검토

남은 작업

  • hunspell-ko 단어 목록 NFC 정규화 → data/hunspell-ko.txt 추출
  • validate에 hunspell 정규어 체크 추가 (경고 수준)
  • 기존 graph.edn entity의 hunspell 커버리지 측정
  • Wiktionary/KENGDIC 매핑 소스 조사
  • meta-sync.py EXCLUDE 리스트 보강 (오매핑 정리)

[2026-03-30 Mon] Kiwi 형태소 분석 통합 — dictcli stem 1단계 완료

배경: 조사 제거로는 부족하다

andenken 1층(BM25)에 한국어 조사 제거(25개)를 넣었지만, 동사 활용형 해체가 안 되면 검색 품질에 한계가 있다.

  • “설계했다” → “설계” (어간 추출 필요)
  • “검토하셨습니다” → “검토” (존경/시제 어미 제거)
  • “검색증강생성” → 검색 + 증강 + 생성 (복합어 분리)

Kiwi 채택 (vs Nori)

agent-config 담당 에이전트가 Nori(Lucene)와 Kiwi를 10개 케이스로 실전 비교한 결과 Kiwi 압승:

입력NoriKiwi
검색증강생성UN (미인식)검색 증강 생성 3분리
봇멘트UN (폐기)NNP (OOV 명사 추정)
에이전틱UN (폐기)NNG (명사 추정)

graph.edn 트리플을 builder.addWord() 로 Kiwi 사용자 사전에 직접 주입 가능.

1단계 프로토타입 완료

KiwiJava v0.23.0 JNI 바인딩을 Clojure interop으로 호출. NixOS에서 .so 로딩 문제 없음 (jar 내장 네이티브 자동 추출).

./run.sh stem "설계했다"
# 🌱 stem: 설계
 
./run.sh stem "검색증강생성을 구현했다" --tokens
# 🔍 토큰: 검색(NNG) 증강(NNG) 생성(NNG) 을(JKO) 구현(NNG) 하(XSV) 었(EP) 다(EF)
# 🌱 stem: 검색, 증강, 생성, 구현
#   🔍 검색 → search, retrieval, index
#   🔍 생성 → creator
 
./run.sh stem "보편적 존재를 설계했다"
# 🌱 stem: 보편, 존재, 설계
#   🔍 보편 → universal, universalism, particular, special, paideia
#   🔍 존재 → being

stem이 어간을 뽑고, 기존 expand가 한↔영 확장. 파이프라인 연결 성공. commit: 298de4c

구현 파일

파일역할
stem.cljKiwi interop: tokenize, stems, build-with-words!
stem_main.cljCLI 엔트리포인트 (JVM 전용)
deps.edn:kiwi alias (로컬 jar 의존성)
run.shstem 커맨드 추가

GraalVM native-image는 포기

Kiwi JNI의 .so 임시 추출 방식이 native-image와 충돌한다. stem은 인덱싱 시점 도구이므로 JVM 모드로 실행해도 된다. 시작 1~2초 허용 가능.

다음 단계

  1. 2단계: graph.edn → Kiwi 사용자 사전 주입 (addWord)
    • “봇멘트”가 봇+멘트로 오분석됨 → NNP 등록 필요
    • “에이전틱”이 이전+틱으로 분리됨 → NNP 등록 필요
  2. 3단계: NNG/NNP 태그 필터 → 어간 리스트 반환
  3. 4단계: stem + expand 파이프라인 합성 → andenken 인덱싱 연결