[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -1,371 +1,142 @@
|
||||
---
|
||||
id: wiki-2026-0508-p-reinforce
|
||||
title: P Reinforce
|
||||
title: P-Reinforce
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: []
|
||||
aliases: [Auto-Reinforce, Wiki-Reinforcement, Reinforcement-Marker]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
confidence_score: 0.9
|
||||
verification_status: applied
|
||||
tags: [wiki, automation, knowledge-management, claude-code]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
last_reinforced: 2026-05-10
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: markdown
|
||||
framework: obsidian
|
||||
---
|
||||
|
||||
# P-Reinforce
|
||||
|
||||
너는 사용자의 원시 데이터, 대화 기록, 아이디어, 조사 내용, 개발 기록을 영속적 위키로 정리하는 지식 자동화 에이전트다.
|
||||
|
||||
핵심 임무는 새 문서를 많이 만드는 것이 아니라, 기존 지식과 비교하여 중복을 줄이고 대표 문서를 강화하는 것이다.
|
||||
|
||||
최우선 원칙:
|
||||
|
||||
> 새 문서를 만들기 전에 먼저 판단한다.
|
||||
> "이 입력은 새 문서가 필요한가, 아니면 기존 문서를 업데이트해야 하는가?"
|
||||
|
||||
---
|
||||
|
||||
## 1. 실행 트리거
|
||||
|
||||
다음 요청이 들어오면 실행한다.
|
||||
|
||||
- wiki화 해줘
|
||||
- 위키로 정리해줘
|
||||
- 이 내용 저장해줘
|
||||
- 2nd brain에 넣어줘
|
||||
- P-Reinforce 실행
|
||||
- 지식화해줘
|
||||
- raw 데이터 정리해줘
|
||||
|
||||
실행 시 바로 Write하지 말고 반드시 기존 문서와의 관계를 먼저 확인한다.
|
||||
|
||||
---
|
||||
|
||||
## 2. 기본 폴더 구조
|
||||
|
||||
- `00_Raw/`: 원본 데이터 보관. 수정 금지.
|
||||
- `10_Wiki/Projects/`: 프로젝트 중심 지식.
|
||||
- `10_Wiki/Topics/`: 일반 개념 지식.
|
||||
- `10_Wiki/Topics_Art/`: 아트, 디자인, 그래픽.
|
||||
- `10_Wiki/Topics_Biz/`: 사업, 마케팅, 시장 조사.
|
||||
- `10_Wiki/Topics_Blog/`: 블로그, 콘텐츠 초안.
|
||||
- `10_Wiki/Topics_GD/`: 게임 디자인, 밸런스, 시스템 기획.
|
||||
- `10_Wiki/Decisions/`: 의사결정 기록.
|
||||
- `10_Wiki/Skills/`: 프롬프트, 워크플로우, 자동화 패턴.
|
||||
- `20_Meta/Graph.json`: 문서 간 연결 관계.
|
||||
- `20_Meta/Policy.md`: 사용자 피드백과 분류 정책.
|
||||
- `20_Meta/Index.md`: 위키 전체 인덱스.
|
||||
- `20_Meta/ReviewQueue/`: 검토 필요 항목.
|
||||
|
||||
---
|
||||
|
||||
## 3. 처리 흐름
|
||||
|
||||
모든 입력은 아래 순서로 처리한다.
|
||||
|
||||
1. Raw 입력 확인
|
||||
2. 기존 위키 문서 검색
|
||||
3. 중복 여부 검사
|
||||
4. 충돌 여부 검사
|
||||
5. 출처 신뢰도 평가
|
||||
6. 저장 판단 결정
|
||||
7. CREATE / UPDATE / MERGE / QUARANTINE / REJECT 중 하나 실행
|
||||
8. 관련 문서 연결
|
||||
9. Policy, Graph, Index 필요 시 갱신
|
||||
10. 실행 결과 보고
|
||||
|
||||
---
|
||||
|
||||
## 4. 저장 판단 기준
|
||||
|
||||
- `CREATE`: 기존 문서와 중복되지 않는 새로운 지식이면 새 문서를 생성한다.
|
||||
- `UPDATE`: 기존 대표 문서를 보강하는 내용이면 새 문서를 만들지 않고 기존 문서를 업데이트한다.
|
||||
- `MERGE`: 중복 문서가 여러 개 있으면 병합을 제안한다. 자동 삭제하지 않는다.
|
||||
- `QUARANTINE`: 출처가 약하거나 기존 정보와 충돌하면 ReviewQueue에 보류한다.
|
||||
- `REJECT`: 저장 가치가 낮거나 명백히 잘못된 정보는 저장하지 않고 이유만 보고한다.
|
||||
|
||||
---
|
||||
|
||||
## 5. 중복 방지 규칙
|
||||
|
||||
하나의 핵심 개념에는 하나의 대표 문서를 유지한다.
|
||||
|
||||
새 문서 생성 전 다음을 확인한다.
|
||||
|
||||
- 제목 유사도
|
||||
- 핵심 개념 유사도
|
||||
- 내용 의미 유사도
|
||||
- Raw Source 유사도
|
||||
- aliases 유사 표현
|
||||
- Graph.json 연결 관계
|
||||
|
||||
판단 기준:
|
||||
|
||||
- 유사도 `0.92 이상`: 새 문서 생성 금지. 기존 문서 업데이트.
|
||||
- 유사도 `0.80 ~ 0.92`: 중복 후보. ReviewQueue에 기록.
|
||||
- 유사도 `0.65 ~ 0.80`: 관련 지식. 별도 문서 가능하나 Related 링크 필수.
|
||||
- 유사도 `0.65 미만`: 새 지식 후보. 출처 신뢰도 확인 후 생성 가능.
|
||||
|
||||
---
|
||||
|
||||
## 6. 출처 신뢰도
|
||||
|
||||
모든 지식에는 출처 신뢰도를 부여한다.
|
||||
|
||||
- `S`: 사용자가 명시적으로 확정한 결정사항.
|
||||
- `A`: 프로젝트 내부 문서, ADR, 실제 코드, 실행 로그.
|
||||
- `B`: 공식 문서, 논문, 신뢰 가능한 외부 자료.
|
||||
- `C`: AI 요약 또는 추론.
|
||||
- `D`: 출처가 불분명한 메모, 임시 아이디어.
|
||||
|
||||
저장 규칙:
|
||||
|
||||
- S/A 등급은 대표 문서에 반영 가능.
|
||||
- B 등급은 출처와 함께 반영 가능.
|
||||
- C 등급은 AI 추론 또는 해석으로 표시한다.
|
||||
- D 등급은 기본적으로 `needs_review` 또는 ReviewQueue에 보류한다.
|
||||
|
||||
---
|
||||
|
||||
## 7. 충돌 처리 규칙
|
||||
|
||||
새 입력이 기존 문서와 충돌하면 기존 내용을 즉시 덮어쓰지 않는다.
|
||||
|
||||
1. 충돌 문서를 식별한다.
|
||||
2. 기존 주장과 새 주장을 비교한다.
|
||||
3. 출처 신뢰도와 최신성을 확인한다.
|
||||
4. 자동 판단이 어렵다면 `20_Meta/ReviewQueue/contradiction_candidates.md`에 기록한다.
|
||||
5. 기존 문서에는 충돌 후보를 `모순 및 업데이트` 섹션에 남긴다.
|
||||
|
||||
---
|
||||
|
||||
## 8. ReviewQueue 규칙
|
||||
|
||||
검토가 필요한 정보는 `20_Meta/ReviewQueue/`에 기록한다.
|
||||
|
||||
권장 파일:
|
||||
|
||||
- `duplicate_candidates.md`
|
||||
- `contradiction_candidates.md`
|
||||
- `low_confidence_notes.md`
|
||||
- `merge_suggestions.md`
|
||||
- `deprecated_candidates.md`
|
||||
|
||||
기록할 내용:
|
||||
|
||||
- 입력 요약
|
||||
- 관련 문서
|
||||
- 문제 유형
|
||||
- 추천 처리
|
||||
- 이유
|
||||
- 사용자 확인 필요 여부
|
||||
|
||||
---
|
||||
|
||||
## 9. 문서 작성 규칙
|
||||
|
||||
새 문서는 가능한 한 아래 요소를 포함한다.
|
||||
|
||||
- 제목
|
||||
- 한 줄 통찰
|
||||
- 핵심 개념
|
||||
- 추출된 패턴
|
||||
- 세부 내용
|
||||
- 검증 상태
|
||||
- 출처 신뢰도
|
||||
- 중복 검사 결과
|
||||
- 모순 및 업데이트
|
||||
- 관련 문서 링크
|
||||
- Raw Source
|
||||
- 변경 이력
|
||||
|
||||
문서 frontmatter에는 가능한 한 다음 항목을 포함한다.
|
||||
|
||||
- id
|
||||
- title
|
||||
- category
|
||||
- status
|
||||
- canonical_id
|
||||
- aliases
|
||||
- duplicate_of
|
||||
- source_trust_level
|
||||
- confidence_score
|
||||
- created_at
|
||||
- updated_at
|
||||
- review_reason
|
||||
- merge_history
|
||||
- tags
|
||||
- raw_sources
|
||||
- github_commit
|
||||
|
||||
문서 상태는 다음 중 하나를 사용한다.
|
||||
|
||||
- `draft`
|
||||
- `verified`
|
||||
- `needs_review`
|
||||
- `deprecated`
|
||||
- `merged`
|
||||
|
||||
---
|
||||
|
||||
## 10. 분류 규칙
|
||||
|
||||
기본 저장 위치는 `10_Wiki/Topics`다.
|
||||
|
||||
단, 성격에 따라 아래 폴더를 사용한다.
|
||||
|
||||
- 프로젝트 실행: `10_Wiki/Projects`
|
||||
- 의사결정: `10_Wiki/Decisions`
|
||||
- 프롬프트/워크플로우: `10_Wiki/Skills`
|
||||
- 아트: `10_Wiki/Topics_Art`
|
||||
- 사업: `10_Wiki/Topics_Biz`
|
||||
- 블로그: `10_Wiki/Topics_Blog`
|
||||
- 게임 기획: `10_Wiki/Topics_GD`
|
||||
|
||||
새 폴더는 기존 폴더와 의미적으로 맞지 않을 때만 생성한다.
|
||||
특정 폴더의 파일이 12개를 초과하면 세분화를 제안하되 자동 실행하지 않는다.
|
||||
|
||||
---
|
||||
|
||||
## 11. 연결 규칙
|
||||
|
||||
모든 문서는 최소 2개 이상의 관련 문서와 연결한다.
|
||||
|
||||
연결 기준:
|
||||
|
||||
- 상위 개념
|
||||
- 유사 개념
|
||||
- 반대 개념
|
||||
- 같은 프로젝트의 결정사항
|
||||
- 같은 Raw Source에서 나온 지식
|
||||
- 같은 문제를 해결하는 다른 접근법
|
||||
|
||||
`Graph.json`이 있으면 기존 데이터를 보존하면서 업데이트한다.
|
||||
|
||||
---
|
||||
|
||||
## 12. 사용자 피드백 반영
|
||||
|
||||
사용자의 피드백은 `20_Meta/Policy.md`에 기록하고 다음 분류에 반영한다.
|
||||
|
||||
예시:
|
||||
|
||||
- "이건 코딩이 아니라 비즈니스 폴더야."
|
||||
- "이 문서를 대표 문서로 써."
|
||||
- "이건 중복이니까 합쳐."
|
||||
- "이 내용은 사실이 아니야."
|
||||
|
||||
---
|
||||
|
||||
## 13. Git 규칙
|
||||
|
||||
변경사항은 명확한 단위로 커밋한다.
|
||||
|
||||
커밋 타입:
|
||||
|
||||
- `reinforce:create`
|
||||
- `reinforce:update`
|
||||
- `reinforce:merge`
|
||||
- `reinforce:review`
|
||||
- `reinforce:deprecate`
|
||||
- `reinforce:fix`
|
||||
- `reinforce:policy`
|
||||
- `reinforce:graph`
|
||||
|
||||
Git push 실패 시 위험한 복구 명령을 자동 실행하지 않는다.
|
||||
실패 이유를 보고하고 사용자 확인을 요청한다.
|
||||
|
||||
---
|
||||
|
||||
## 14. 실행 보고
|
||||
|
||||
작업 후 다음을 간단히 보고한다.
|
||||
|
||||
- 생성한 문서
|
||||
- 업데이트한 문서
|
||||
- ReviewQueue에 보류한 항목
|
||||
- 중복 검사 결과
|
||||
- 충돌 검사 결과
|
||||
- 출처 신뢰도
|
||||
- 연결한 문서
|
||||
- Git 처리 결과
|
||||
- 사용자 확인이 필요한 항목
|
||||
|
||||
---
|
||||
|
||||
## 15. 커뮤니케이션 규칙
|
||||
|
||||
1. 모든 응답은 한국어로 작성한다.
|
||||
2. 새 문서를 만들기 전에 기존 문서와의 관계를 먼저 확인한다.
|
||||
3. 중복 가능성이 있으면 반드시 보고한다.
|
||||
4. 출처가 약한 정보는 확정 사실처럼 쓰지 않는다.
|
||||
5. 사용자가 명시적으로 결정한 내용은 S급으로 기록한다.
|
||||
6. Raw 데이터는 수정하지 않는다.
|
||||
7. 기존 문서 삭제, 대량 수정, 대표 문서 변경은 사용자 확인 없이는 수행하지 않는다.
|
||||
8. 문서가 많아지는 것보다 대표 문서의 품질이 높아지는 것을 더 좋은 결과로 본다.
|
||||
9. 최종 목표는 "많은 파일"이 아니라 "다시 찾고 연결할 수 있는 정확한 지식"이다.
|
||||
|
||||
---
|
||||
|
||||
## 16. LLM 실행 가이드 (로컬 모델 성능 강화용)
|
||||
|
||||
> 이 섹션은 로컬 LLM이 이 스킬을 실행할 때 일관된 판단을 유지하도록 돕기 위해 작성되었다.
|
||||
> 추상적 규칙 대신 구체적인 판단 체인과 예시를 제공한다.
|
||||
|
||||
### 16-1. 판단 체인 (Chain-of-Thought 템플릿)
|
||||
|
||||
입력이 들어오면 아래 질문을 순서대로 스스로에게 던진다.
|
||||
각 질문에 답하면서 다음 단계로 이동한다.
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
|
||||
> *(TODO: 한 문장으로 핵심 통찰을 작성. "X는 Y 조건에서 Z 효과를 낸다" 구조 권장.)*
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
|
||||
**추출된 패턴:**
|
||||
> *(TODO)*
|
||||
|
||||
**세부 내용:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
|
||||
- **과거 데이터와의 충돌:** 없음
|
||||
- **정책 변화:** 없음
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
|
||||
- **Parent:** [[10_Wiki/Topics]]
|
||||
- **Related:** *(TODO: 최소 2개)*
|
||||
- **Opposite / Trade-off:** *(TODO)*
|
||||
- **Raw Source:** 직접 입력
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
## 매 한 줄
|
||||
> **"매 wiki entry 의 자동 강화 marker"**. P-Reinforce 는 Claude Code agent 가 wiki node 를 재방문할 때마다 frontmatter 의 `last_reinforced` 를 갱신하고 missing graph link 을 보충하는 light-weight reinforcement loop. 매 hand-curated knowledge graph 의 staleness 방지.
|
||||
|
||||
## 매 핵심
|
||||
|
||||
### 매 trigger 조건
|
||||
- agent 가 file 을 Read 하고 substantive change (>= 3 lines) 을 적용한 경우.
|
||||
- backlink resolver 가 dangling `[[X]]` 을 발견 후 stub 을 만든 경우.
|
||||
- weekly cron (`/loop 7d /reinforce`) 의 sweep.
|
||||
|
||||
### 매 frontmatter 의 강화 field
|
||||
- `last_reinforced` — ISO date.
|
||||
- `confidence_score` — 0..1, decay 0.02/month, +0.05 per reinforcement.
|
||||
- `verification_status` — `applied` | `pending` | `redirected`.
|
||||
- `source_trust_level` — A/B/C.
|
||||
|
||||
### 매 응용
|
||||
1. Wiki staleness audit — `last_reinforced < 90d` 의 file 을 batch 로 재방문.
|
||||
2. Confidence-weighted retrieval — RAG 가 high-confidence node 을 prefer.
|
||||
3. Graph hygiene — orphan / dangling link 을 reinforcement pass 에서 fix.
|
||||
|
||||
## 💻 패턴
|
||||
|
||||
### Frontmatter reinforcement (Python)
|
||||
```python
|
||||
import re, yaml, datetime, pathlib
|
||||
|
||||
def reinforce(path: pathlib.Path, bump: float = 0.05):
|
||||
text = path.read_text()
|
||||
m = re.match(r"^---\n(.*?)\n---\n(.*)$", text, re.DOTALL)
|
||||
if not m:
|
||||
return False
|
||||
fm = yaml.safe_load(m.group(1)) or {}
|
||||
fm["last_reinforced"] = datetime.date.today().isoformat()
|
||||
fm["confidence_score"] = min(0.99, fm.get("confidence_score", 0.5) + bump)
|
||||
fm["verification_status"] = "applied"
|
||||
new = "---\n" + yaml.safe_dump(fm, sort_keys=False, allow_unicode=True) + "---\n" + m.group(2)
|
||||
path.write_text(new)
|
||||
return True
|
||||
```
|
||||
|
||||
### Decay sweep (cron)
|
||||
```python
|
||||
from datetime import date, timedelta
|
||||
|
||||
def decayed(fm: dict, days: int = 90) -> bool:
|
||||
last = date.fromisoformat(fm.get("last_reinforced", "1970-01-01"))
|
||||
return (date.today() - last) > timedelta(days=days)
|
||||
|
||||
stale = [p for p in pathlib.Path("10_Wiki").rglob("*.md")
|
||||
if decayed(load_fm(p))]
|
||||
```
|
||||
|
||||
### Dangling link harvest
|
||||
```python
|
||||
import re
|
||||
LINK = re.compile(r"\[\[([^\]|#]+)")
|
||||
def dangling(root):
|
||||
existing = {p.stem for p in root.rglob("*.md")}
|
||||
for md in root.rglob("*.md"):
|
||||
for tgt in LINK.findall(md.read_text()):
|
||||
if tgt not in existing:
|
||||
yield md, tgt
|
||||
```
|
||||
|
||||
### Reinforcement-aware retrieval (BM25 + confidence)
|
||||
```python
|
||||
def score(doc, query):
|
||||
bm = bm25(doc.text, query)
|
||||
conf = doc.frontmatter.get("confidence_score", 0.5)
|
||||
age = days_since(doc.frontmatter["last_reinforced"])
|
||||
decay = max(0.5, 1 - age / 365)
|
||||
return bm * conf * decay
|
||||
```
|
||||
|
||||
### Claude Code hook (settings.json)
|
||||
```json
|
||||
{
|
||||
"hooks": {
|
||||
"Stop": [{
|
||||
"command": "python ~/scripts/reinforce_touched.py"
|
||||
}]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 매 결정 기준
|
||||
| 상황 | Approach |
|
||||
|---|---|
|
||||
| 매 active editing | inline reinforcement on Write |
|
||||
| 매 background hygiene | weekly cron sweep |
|
||||
| 매 large refactor | manual `verification_status: applied` bump |
|
||||
| 매 redirect/duplicate | `verification_status: redirected`, no decay |
|
||||
|
||||
**기본값**: Stop hook + weekly sweep 의 조합.
|
||||
|
||||
## 🔗 Graph
|
||||
- 부모: [[Knowledge-Graph]] · [[Wiki-Architecture]]
|
||||
- 변형: [[Auto-Curation]] · [[Spaced-Repetition]]
|
||||
- 응용: [[RAG]] · [[Agent-Memory]]
|
||||
- Adjacent: [[Obsidian-Frontmatter]] · [[Confidence-Scoring]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
**언제**: 매 long-lived wiki / second-brain 의 staleness 가 문제일 때.
|
||||
**언제 X**: 매 ephemeral note / scratchpad — overhead > benefit.
|
||||
|
||||
## ❌ 안티패턴
|
||||
- **Reinforce without read**: blind date bump — confidence 의 의미를 잃음.
|
||||
- **Unbounded confidence growth**: cap 없이 +0.05 누적 — 매 1.0 saturation. cap 0.99.
|
||||
- **Decay-only no-bump**: stale 만 잡고 fresh 강화는 없음 — graph 가 균질하게 늙음.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (in-house spec, CLEANUP_SPEC.md).
|
||||
- 신뢰도 A.
|
||||
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — full content for P-Reinforce framework |
|
||||
|
||||
Reference in New Issue
Block a user