2026-09-08

linetta에 기억과 스킬 추가

linetta 1.0에서는 내장 AI 컴패니언을 지우고 원고를 MCP로 열었다. 그런데 외부 도구 없이 linetta 안에서만 AI와 소설을 쓰는 흐름도 필요해서 내장 에이전트를 다시 넣기로 했다. 옛 컴패니언은 9,800줄까지 불어나서 지웠던 것이라 되살리지 않고, linetta의 MCP 서버를 앱 안에서 그대로 쓰는 에이전트로 새로 만들었다. 1.0의 방향을 뒤집은 게 아니라 그 연장이라고 봤다.

에이전트가 생기니 기억할 곳이 필요했다. 기존 경험 로그는 부분 문자열로 찾아 쓰는 방식이라 에이전트가 늘 알고 있어야 할 것을 보장하지 못했다. 그래서 Hermes 에이전트처럼 글자 수를 제한한 문서를 직접 가꾸는 방식을 가져왔다.

기억

기존 경험 로그 옆에 짧은 문서 두 개를 추가했다.

  • 작가 프로필: 모든 작품에 적용된다. 문체, 피할 표현 등을 적는다.
  • 작품 노트: 작품마다 따로 둔다.

한도는 1,400자와 2,200자로 정해 두었고, 내용은 설정에서 직접 고칠 수 있다. 바이트로 세면 한국어나 일본어로 쓰는 작가는 3분의 1만 쓸 수 있어서 글자 수는 바이트가 아닌 문자로 센다. 몇 달 동안 가꾼 기억이 복원한 뒤에도 남아야 해서 라이브러리 DB에 저장한다. 내장 에이전트의 프롬프트에 들어가고, 외부 MCP 클라이언트를 쓸 때는 스토리 브리프에 들어간다.

기억을 쓰는 도구가 실제 빌드에서는 연결되지 않은 채여서, 에이전트가 기억을 쓰는 쪽 절반이 통째로 죽어 있었다. 범위를 나눈 리뷰 아홉 번이 모두 놓쳤고 1.2.0 태그 전에 잡았다. 에이전트가 쓴 내용을 프롬프트가 “작가의 변함없는 선호”로 소개하고 있어서, 작가가 승인한 적 없는 글을 작가 뜻처럼 내보이는 문구도 고쳤다. 1.0에서 경험 로그를 찾는 위치만 바꾸고 파일은 옮기지 않아 그동안 프롬프트의 기억 항목이 조용히 비어 있던 것도 이번에 찾아 고쳤다.

스킬

스킬에는 사실이 아니라 작법을 담는다. 작가 공용(“모든 작품”) 또는 작품별(“이 작품”) SKILL.md 파일로 디스크에 저장해 Claude Code에서도 같은 폴더를 쓸 수 있다.

“스스로 익히기”를 켜 두면(기본값) 도구를 8번 이상 부른 긴 작업 뒤에 에이전트가 한 일을 돌아보고 스킬을 쓴다. 이때 같은 프로바이더로 모델 호출이 한 번 더 들고, 스킬을 쓰면 최대 5번까지 는다. 다른 프로바이더를 쓰지 않는 건 작가가 동의하지 않은 비용을 따로 만들지 않으려는 것이다. 에이전트가 쓴 스킬에 승인 절차는 두지 않았다. 스킬마다 승인을 받게 하면 이 기능이 만들려는 순환이 끊긴다고 봤다. 대신 작성자 표시(“직접 작성”, “에이전트가 작성”), 버전 기록, 스킬을 지우지 않고 프롬프트에서만 빼는 “사용” 토글로 작가가 관리한다.

툴 예산

요청마다 모든 도구의 JSON 스키마가 함께 전송되고, 기억과 스킬 도구가 쓰든 안 쓰든 매 턴 그 예산의 5분의 1쯤을 차지한다. 그래서 “기억 툴”과 “스킬 툴” 스위치로 각각 끌 수 있게 했다. 스킬 툴을 끄면 도구와 프롬프트 지침, 스킬 목록이 함께 빠진다. 프롬프트가 에이전트에게 없는 도구를 부르라고 하는 쪽이 도구 비용보다 나쁘다고 봤다. 기억 툴을 끄면 적어 둔 기억은 그대로 읽되 에이전트가 더 쓰지는 못한다.

그런데 세션 도중 스위치를 켜 보니, 프롬프트는 linetta_edit_memory를 부르라고 하는데 실제로 넘어간 도구 16개에는 그게 없어서 스위치로 막으려던 실패가 그대로 났다. 테스트에 쓰던 도구 목록은 구조상 프롬프트와 어긋날 수가 없어서 테스트로는 잡히지 않았다. 도구와 프롬프트가 같은 턴에 함께 바뀌도록 고쳤다.

에이전트 패널

Cmd/Ctrl+J로 에이전트 패널을 연다. 1.0에서 컴패니언과 함께 비워 둔 단축키를 되살렸다. 스트리밍 답변, 접히는 도구 줄, 멈추기를 지원한다. 되돌리기는 아직 개요 일괄 수정처럼 batch_id가 붙은 줄에서만 된다. 원고는 이 기기의 로컬 DB에 저장되고, 에이전트를 쓸 때는 설정한 프로바이더로 전송된다.

이번 변경은 1.2.0에 들어간다. App Store에서 받거나 brew install --cask devlikebear/tap/linetta로 설치한다.

같은 작업대에서 나온 이웃 도구입니다.