Skip to main content

Crate mdwire

Crate mdwire 

Source
Expand description

mdwire — 에이전트가 만든 마크다운을 채팅 채널로 안전하게 내보낸다.

세 가지를 한 파이프라인에서 한다. 순서가 곧 설계다.

  1. 정규화 — LLM 출력은 올바른 CommonMark 가 아니다. 짝이 안 맞는 강조, 줄을 넘는 강조, 안 닫힌 코드펜스가 일상이다. 먼저 복구한다.
  2. 채널 렌더링 — 타깃이 받는 문법으로 옮긴다. 타깃이 못 받는 구문은 파싱할 이유도 없다 (아래 Channel 주석 참고).
  3. 안전 분할 — 채널 한도와 스트리밍 경계에서, 마크업 한가운데를 자르지 않는다.

§왜 의존성이 없나

기성 파서는 전부 배치형이다 — 문서 전체를 받아 AST 를 만든 뒤 렌더한다. 토큰이 흘러들어오는 대로 내보내야 하는 이 문제에는 처음부터 맞지 않는다. 그리고 CJK 인접 강조 정책은 파서 안에 박혀 있어서, 남의 것을 쓰면 못 바꾼다. 그게 이 라이브러리가 고치려는 바로 그 문제다.

Modules§

width
표시 폭 — 고정폭 글꼴에서 한 글자가 차지하는 칸 수.

Structs§

HtmlOptions
브라우저 채널의 정책. 기본값이 가장 보수적이다 — <br> 줄바꿈, 이미지는 링크로만, 링크는 http·https·mailto 만.
Options
변환 옵션 — 입력 방언, 조각 한도, 브라우저 채널의 정책.
Rendered
render_with 의 결과 — 조각과 고친 것.
Repairs
정규화가 고친 것과 채널에 맞춰 바꾼 것의 개수. 앞 넷(고친 것)은 모델이 얼마나 자주 서식을 깨는지를, 뒤 여섯(바꾼 것)은 붙이기 전에 채널이 무엇을 바꾸는지를 재는 데 쓴다 — 둘을 따로 물으려면 Repairs::any·Repairs::changed.
Streamer
스트리밍 변환기.

Enums§

Channel
내보낼 채널. 받는 문법이 채널마다 다르고, 출력이 좁은 쪽이 파싱 범위를 정한다.
Dialect
입력 방언 — 에이전트가 무슨 표기로 썼는가.
Images
이미지 ![alt](url) 을 어떻게 낼지.
LineBreaks
블록 안의 줄바꿈을 어떻게 낼지.

Constants§

MIN_LIMIT
호출자가 줄 수 있는 가장 작은 조각 한도.

Functions§

render
완성된 문서를 한 번에 변환한다. 한도를 넘으면 안전한 지점에서 나눈다.
render_with
render 에 옵션을 주고, 정규화가 고친 것도 같이 받는다.