Expand description
mdwire — 에이전트가 만든 마크다운을 채팅 채널로 안전하게 내보낸다.
세 가지를 한 파이프라인에서 한다. 순서가 곧 설계다.
- 정규화 — LLM 출력은 올바른 CommonMark 가 아니다. 짝이 안 맞는 강조, 줄을 넘는 강조, 안 닫힌 코드펜스가 일상이다. 먼저 복구한다.
- 채널 렌더링 — 타깃이 받는 문법으로 옮긴다. 타깃이 못 받는 구문은
파싱할 이유도 없다 (아래
Channel주석 참고). - 안전 분할 — 채널 한도와 스트리밍 경계에서, 마크업 한가운데를 자르지 않는다.
§왜 의존성이 없나
기성 파서는 전부 배치형이다 — 문서 전체를 받아 AST 를 만든 뒤 렌더한다. 토큰이 흘러들어오는 대로 내보내야 하는 이 문제에는 처음부터 맞지 않는다. 그리고 CJK 인접 강조 정책은 파서 안에 박혀 있어서, 남의 것을 쓰면 못 바꾼다. 그게 이 라이브러리가 고치려는 바로 그 문제다.
Modules§
- width
- 표시 폭 — 고정폭 글꼴에서 한 글자가 차지하는 칸 수.
Structs§
- Html
Options - 브라우저 채널의 정책. 기본값이 가장 보수적이다 —
<br>줄바꿈, 이미지는 링크로만, 링크는http·https·mailto만. - Options
- 변환 옵션 — 입력 방언, 조각 한도, 브라우저 채널의 정책.
- Rendered
render_with의 결과 — 조각과 고친 것.- Repairs
- 정규화가 고친 것과 채널에 맞춰 바꾼 것의 개수. 앞 넷(고친 것)은 모델이 얼마나 자주 서식을
깨는지를, 뒤 여섯(바꾼 것)은 붙이기 전에 채널이 무엇을 바꾸는지를 재는 데 쓴다 — 둘을 따로
물으려면
Repairs::any·Repairs::changed. - Streamer
- 스트리밍 변환기.
Enums§
- Channel
- 내보낼 채널. 받는 문법이 채널마다 다르고, 출력이 좁은 쪽이 파싱 범위를 정한다.
- Dialect
- 입력 방언 — 에이전트가 무슨 표기로 썼는가.
- Images
- 이미지
을 어떻게 낼지. - Line
Breaks - 블록 안의 줄바꿈을 어떻게 낼지.
Constants§
- MIN_
LIMIT - 호출자가 줄 수 있는 가장 작은 조각 한도.
Functions§
- render
- 완성된 문서를 한 번에 변환한다. 한도를 넘으면 안전한 지점에서 나눈다.
- render_
with render에 옵션을 주고, 정규화가 고친 것도 같이 받는다.