SourceTrace은(는) 무엇을 하나요?
SourceTrace는 AI가 생성한 지식 트리를 원본 이미지와 대조하고, 모든 문제를 추적 가능한 증거와 함께 설명합니다. 사용자는 어떤 발견 사항도 맹신할 필요가 없습니다. 각 발견 사항은 왜 문제인지, 원본 자료의 어디에 있는지(페이지 및 인용문), 무엇에 기반하는지(증거 ID)를 알려줍니다.
일반 모델도 대개 오류를 찾아낼 수 있습니다. SourceTrace가 추가하는 것은 결과가 검증 가능하다는 점입니다. 모든 노드와 엣지가 판정을 받고, 모든 판정이 증거를 인용하며, 범주와 위험 수준이 고정되어 있고, 출력이 매번 동일한 형식을 갖습니다.
입력
- 원본 이미지: PNG/JPG, 페이지당 하나의 이미지(예: 이미지로 내보낸 슬라이드). 이것이 유일한 진실 공급원입니다. 사용자가 PPT 또는 PDF를 가지고 있다면 먼저 이미지로 내보내도록 요청하세요.
- 지식 트리:
schemas/knowledge-tree.schema.json을 따르는 JSON(id,label,definition,kind가 있는 노드;id,source,target,relation이 있는 엣지). 트리가 다른 형식이나 다른 관계 이름을 사용하는 경우 먼저 변환하고 사용자에게 매핑한 내용을 알려주세요.
scripts/…, schemas/…, references/…와 같은 경로는 이 스킬의 폴더를 기준으로 합니다.
출력
모든 파일을 하나의 출력 폴더(기본적으로 지식 트리 옆에 있는 sourcetrace-output/)에 작성합니다.
| 파일 | 단계 | 내용 |
|---|---|---|
evidence-index.json | 2 | 이미지에서 추출한 모든 증거 (사용자가 작성) |
audit.json | 4–6 | 모든 노드와 엣지에 대한 판정 및 누락 사항 (사용자가 판정을 작성; 스크립트가 완성) |
report.md | 6 | 사람이 읽을 수 있는 보고서 (scripts/build_report.py가 생성; 직접 작성하지 않음) |
사용자의 지식 트리를 절대 수정하지 마세요. SourceTrace는 보고하고 권장합니다. 사용자가 결정합니다.
워크플로
여섯 단계를 순서대로 실행하세요. 증거 색인이 존재하기 전에 트리를 판단하려고 앞서 가지 마세요. 슬라이드에 대한 자신의 인상 대신 색인에 대해 감사하는 것이 발견 사항을 추적 가능하게 만듭니다.
1. 자료 수집
python scripts/validate_input.py --tree <knowledge-tree.json> --images <이미지 폴더 또는 파일> --json
- 오류 (
"valid": false): 중단하고, 사용자에게 오류를 일반 언어로 보여주고 입력을 수정하도록 요청하세요. 유효하지 않은 트리를 감사하지 마세요. - 경고 (예:
DISCONNECTED_TREE,ISOLATED_NODE,DUPLICATE_EDGE): 계속 진행하세요.build_report.py가 이를 보고서의 구조 섹션에 넣습니다. summary.images는 각 이미지에source_id와page를 제공합니다. 2단계에서 정확히 이것들을 사용하세요.
그런 다음 모든 이미지를 살펴보고 제목, 텍스트, 표 및 다이어그램을 기록하세요.
2. 증거 추출
references/evidence-extraction.md를 따라 evidence-index.json을 구축하세요. 추출하기 전에 해당 파일을 읽으세요. 요약:
- 슬라이드 제목, 글머리 기호, 표 행 및 다이어그램 관계당 하나의 항목.
- 원본 언어로 텍스트를 그대로 인용하세요. 작은 표현 변경은 감사가 잡아내야 할 부분입니다.
- 숙제나 읽기 노트를 포함하여 모든 것을 추출하세요.
certainty를 정직하게 설정하세요.low증거만으로는 트리 항목을 기각할 수 없습니다.
그런 다음 검증하고 계속 진행하기 전에 모든 오류를 수정하세요.
python scripts/validate_evidence.py --index <출력>/evidence-index.json
3. 지식 매핑
트리를 테스트할 주장의 집합으로 취급하고, 절대 사실로 간주하지 마세요. 다음으로 분할하세요.
- 노드: 레이블과 정의가 올바른가?
- 엣지: 두 노드 간의 관계가 올바른가? 엣지를
source relation target으로 읽으세요.
이들을 별도로 감사하세요. 노드가 올바르지만 이를 사용하는 엣지가 틀릴 수 있으며(그 반대도 가능), 각각은 고유한 판정을 받습니다.
각 노드와 엣지에 대해 관련된 증거 항목을 나열하세요. 예상하는 페이지뿐만 아니라 전체 색인을 검색하세요. 일부 주장은 두 페이지를 결합해야만 확인되거나 반박됩니다.
4. 양방향 감사
- 트리 → 원본: 모든 노드와 엣지에 대해 증거가 이를 지지하는지 결정하세요. 모든 노드와 엣지는 올바른 것을 포함하여 판정을 받습니다. 올바른 것을 확인하는 것도 결과의 일부입니다.
- 원본 → 트리: 증거 색인을 살펴보고 어떤 노드나 엣지도 다루지 않는 중요한 내용을 찾으세요.
판정, 중요한 것으로 간주되는 기준 및 예외 사항에 대해서는 references/audit-rules.md를 따르세요.
5. 충돌 분류
각 문제를 정확히 하나의 범주로 분류하고 위험 수준을 할당하세요. references/audit-rules.md의 결정 순서를 사용하세요. 해당 문서의 질문을 순서대로 살펴보고 첫 번째 "예"에서 멈추세요. 발견 사항의 느낌에 따라 범주를 선택하지 마세요. 순서가 두 번의 실행을 일관되게 만듭니다.
| 범주 | 의미 |
|---|---|
conceptual-error | 노드의 정의가 원본과 모순됩니다. |
incorrect-relationship | 엣지가 원본과 모순됩니다. 두 노드가 모두 올바르더라도 마찬가지입니다. |
unsupported-expansion | 일반적으로 사실이더라도 원본에서 찾을 수 없는 내용입니다. |
overgeneralization | 지지되는 내용이 원본이 말하는 것보다 확장되었습니다. |
ambiguous | 확인하거나 기각하기에는 너무 모호하거나 불확실합니다. |
omission | 트리에서 누락된 중요한 원본 내용입니다. |
6. 감사 보고서
판정을 audit.json에 작성한 다음 스크립트가 이를 확인하고 보고서를 생성하도록 하세요. 사용자가 결정합니다. 스크립트는 계산, 번호 매기기, 정렬 및 형식화를 수행합니다. 이러한 분리가 두 번의 실행이 동일한 보고서를 생성하도록 만듭니다.
사용자가 작성하는 audit.json (v0.1, 스키마 schemas/audit.schema.json):
{
"schema_version": "0.1",
"items": [
{ "target": "N001", "verdict": "supported", "evidence": ["EV-002"] },
{ "target": "N002", "verdict": "finding", "evidence": ["EV-008"],
"category": "conceptual-error", "risk": "high",
"reason": "...", "recommendation": "..." }
],
"omissions": [
{ "category": "omission", "tier": "core", "risk": "medium", "evidence": ["EV-016"],
"reason": "...", "recommendation": "..." },
{ "category": "omission", "tier": "core", "risk": "high", "risk_reason": "강의의 핵심 개념",
"evidence": ["EV-003"], "reason": "...", "recommendation": "..." }
]
}
items: 트리의 모든 노드와 엣지당 정확히 하나의 항목.reason: 차이가 나는 정확한 단어를 인용하여, 한두 문장으로 문제가 되는 이유.recommendation: 트리 스키마 내에 머무르는 구체적인 수정 사항(허용된kind및relation값만 사용).tier(누락만 해당):core또는supporting,references/audit-rules.md에 정의된 대로.risk_reason: 위험이 기본값과 다를 때만.summary,structure_warnings및finding_id는 생략하세요. 스크립트가 계산합니다.
그런 다음 실행하세요.
python scripts/build_report.py --tree <knowledge-tree.json> --index <출력>/evidence-index.json --audit <출력>/audit.json
- 오류: 아무것도 작성되지 않습니다.
audit.json을 수정하고 성공할 때까지 다시 실행하세요. 검사를 우회하지 마세요. - 성공: 스크립트가
audit.json을summary,structure_warnings및finding_id(F-001, F-002, … 보고서 순서)로 다시 쓰고, 그 옆에report.md를 작성합니다. 보고서 언어는 슬라이드를 따릅니다. 사용자가 다른 언어를 요청하면--lang zh또는--lang en을 전달하세요.
마지막으로 사용자에게 보고서 위치, 요약의 개수 및 상위 문제 몇 가지를 몇 줄로 알려주세요. 전체 보고서를 붙여넣지 마세요.
입력이 특이한 경우
- 읽을 수 없는 이미지:
low확실성으로 추출할 수 있는 것을 추출하고, 해당 페이지를 관련 발견 사항의reason에 언급하고 사용자에게 알리세요. 내용을 지어내지 마세요. - 트리가 이미지에 없는 자료를 다루는 경우 (예: 일부 슬라이드만 제공됨): 해당 항목을
unsupported-expansion으로 보고하고, 누락된 페이지가 원인일 수 있다고 사용자에게 알리세요. - 매우 큰 덱 또는 트리: 2단계에서는 페이지별로, 4단계에서는 노드별로 작업하면서 모든 것을 머릿속에 담지 말고 결과를 파일에 기록하세요.