AI Agent를 위한 VCS - chronon
개요
AI가 문서를 다루는 경우가 많은데, 실수도 종종 하고 너무 많은 양을 만들어 내기 때문에 그 결과물만 보기에는 사람이 보는 것도 벅차고 힘들다. AI와 사람 모두를 위해 chronon이라는 VCS(Version Control System) 서비스를 만들었다. 현재는 끊임없이 계속 업데이트 중이라 이 글에서 근간이 되는 내용만 다루도록 하겠다(여기서 다루는 내용은 대부분 실제 구현된 내용이지만 일부는 아직 올라가지 않은 내용이다).
chronon은 텍스트 파일을 버전 관리하는 시스템이다. Git과 같은 다른 시스템처럼 히스토리를 보고 diff를 볼 수도 있지만, 더 근본적으로는 쓰기를 제한하는 것에 핵심을 둔다. AI의 쓰기와 커밋은 동시에(권장 사항) 이루어지기 때문에 모든 추적을 다 남길 수 있다.
AI가 작성하는 시스템의 문제점
첫 번째로, 일단 AI도 실수를 한다. 실수를 하는 것 자체는 문제가 아니지만, 그 실수가 비가역적이면 문제가 된다. 내 경우도 A 내용을 B로 붙이라고 했더니 append가 아닌 paste로 알아듣고 B의 내용을 다 삭제해버린 경험이 있다. 이것이 히스토리를 남겨주는 Obsidian을 유료 구독한 이유가 되기도 했다.
두 번째로, AI가 작성하는 양은 어마어마하다. 순식간에 사람이 몇 시간 동안 읽어야 할 양을 만들어내는 경우가 허다하다. 처음이야 괜찮다고 해도 이것이 여러 번 반복되면 그때마다 뭐가 변경되었는지, 얼마나 변경되었는지 알기 힘들다. 의외로 방대한 양의 히스토리를 파악하는 데는 최근의 변경 내역을 확인하는 것이 상당히 유용하다. AI가 작성한 방대한 양이더라도 최근의 변경 내역을 보면 좀 더 파악하기 쉽다는 말이다.
AI에게 문서 작성과 유지 보수를 시키다 보면 그 문서는 곧 사람의 손을 떠나게 된다. 일주일 전 내가 기억하는 문서와 지금의 문서가 제법 달라진 것 같은데, 뭐가 얼마나 달라졌는지 기억을 더듬으면서 문서를 파악하기란 쉽지 않다. 이때 히스토리와 최근 변경 내역은 엄청난 도움이 된다.
chronon은 무엇을 하는가
chronon이 하는 것은 간단하다. 본래의 파일 접근은 막고, chronon을 통해 접근하도록 하는 것이고 특히 쓰기와 커밋을 동기화 시켜서 모든 쓰기는 각각의 히스토리를 남기게 강제한다. 근간이 되는 내용은 다음과 같다.
- AI는 실제 raw path는 알 수 없게 하거나 접근하지 못하도록 한다.
- 데이터의 묶음은 Vault로 관리된다(Obsidian과 유사).
- AI가 읽는 것은 권한이 필요하지 않고 마음대로 가능하다. 단, 모든 정보는 read일지라도 revision 상태라는 것이 존재한다(읽기를 위한 파일 경로의 예, chronon://knowledge/notes.md).
- 기본적으로는 쓰기는 반드시 커밋과 함께 한다. 커밋은 커밋 메시지와 함께 한다. 커밋은 이번 수정의 요약이 될 것이다. AI와 사람이 모두 참고하기 좋다. 모든 수정은 커밋 메시지와 함께이므로 추적에 매우 용이하다.
- 수정이 잦은 프로젝트의 경우는 예외적으로 커밋 없는 수정을 가능하게 하는 scratch 모드를 허용할 수 있다. Git에서 로컬 파일을 수정하는 것과 비슷하다. 커밋 없는 수정이 있을 경우 함부로 덮어씌우는 작업을 하지 않도록 감지가 가능하다.
- 이러한 과정을 통해 여러 AI가 동시에 작업을 할 경우 리비전 감지를 통해서 잘못 덮어씌우는 경우를 방지할 수도 있고, lock을 통해 독립된 제어권을 얻어서 동시 접근으로 발생하는 문제를 봉쇄할 수도 있다.
여기서 핵심은 AI가 ls, cat과 같은 linux/mac 명령어들을 chronon 내부의 ls, cat(read) 명령어를 수행하는 것이므로 기존과 크게 다르진 않다는 것이다1. 문제는 쓰기에서 발생한다. 실수로 쓰기를 하거나 여러 에이전트가 동시에 쓰기 접근을 하여 문서가 꼬이는 경우가 문제다. 이런 경우를 관리하는 것이 chronon이다.
사용법
여러 방법이 있겠으나 PyPI로 설치를 한다면 다음과 같다.
$ pipx install chronon-vcs
그 외의 다른 방법은 github의 README나 Installation을 참고 하면 된다.
그 이후는 Quick start에 적혀 있듯이 vault를 만들고 AI에게 지침을 알려주면 된다.
먼저 예시로 knowledge라는 vault 생성.
$ mkdir -p ~/Documents/knowledge
$ chronon init ~/Documents/knowledge --register knowledge
그 후에는 AI Agent에게 chronon agent-instructions –vault knowledge를 실행하도록 하여 직접 AI 지침에 추가하라고 하거나(추천). 아니면 사용자가 직접 cli에서 chronon agent-setup을 실행하면 스크립트가 실행되어 지침을 추가할 수도 있다. cli 외에도 mcp도 지원하므로, mcp도 등록해두는 것을 추천한다.
GUI - Viewer
이 프로젝트 자체에는 뷰어를 포함하지 않는다. Git과 마찬가지다. 그런데 변경 내역이나 히스토리를 cli로 보는 것은 불편하고 한계가 있다. 물론 git은 터미널 기반으로 UI가 좀 더 괜찮은 것들도 있지만 여기에는 해당되지 않는다.
내 경우는 md, yaml 뷰어를 만들어서 사용하고 있다. 변경 내역을 보고 히스토리를 본다. 각 히스토리마다 커밋 메시지까지 있으니 파악하기 매우 좋다. 아직은 읽기 전용이며 github에 올리진 않았다. 여기에 편집과 온라인 동기화까지 되면 Obsidian과 비슷해질 것이다. View는 올릴 예정이지만, 요즘처럼 각자 만들 수 있는 시대에는 그렇게 중요한 것으로 보이진 않는다.
-
물론 요즘의 AI들은 cat 명령어 대신 자체 read 구현을 사용해 읽는다. ↩