Show HN: 1667, 언어 모델을 활용한 소설 쓰기용 터미널 UI
요약
1667은 터미널 환경에서 언어 모델을 활용하여 소설 쓰기를 돕는 새로운 도구입니다. 사용자는 단락 작성 후 다음 내용을 요청하고, 모든 시도와 버전을 비교하며 이야기 흐름을 이어갈 수 있습니다. 이 프로젝트는 다양한 설치 방법을 제공하며, 특히 CLI 및 개발자 친화적인 인터페이스를 갖추고 있습니다.
핵심 포인트
- 터미널 기반 UI로 소설 쓰기 경험 제공
- 여러 버전의 스토리 시도를 기록하고 비교 가능
- 다양한 OS(macOS, Windows, Linux)와 환경 지원
- CLI 설치 및 개발자 친화적인 구조 (npm, bun 등)
- 작곡기, 경로 지도 탐색 등 고급 기능 탑재
터미널에서 글쓰기
단락 하나를 작성한 후, 1667에게 다음 단락을 요청하세요. 모든 시도를 기록하고 화살표 키로 버전을 비교하며, 선택한 이야기 흐름을 계속 이어가세요. 프로젝트는 컴퓨터의 폴더에 저장됩니다.
curl -fsSL https://1667.ai/install.sh | sh
1667 0.11.0을 설치합니다. macOS arm64/x64 및 glibc 2.17+ Linux arm64/x64를 지원합니다. 나중에 관리되는 릴리스는 1667 upgrade를 실행하세요.
powershell -ExecutionPolicy Bypass -c "irm https://1667.ai/install.ps1 | iex"
Windows x64에 1667 0.11.0을 설치합니다. 1667을 종료하고 이 명령어를 다시 실행하여 나중 릴리스를 설치하세요.
npm install --global @1667-ai/cli@latest
Node 22가 필요합니다. npm이 이 설치를 관리합니다. 나중 릴리스는 npm을 사용하여 설치하세요.
git clone https://github.com/1667-ai/1667.git
cd 1667 && npm ci
cd tui && bun install --frozen-lockfile && bun start
Bun 1.3.14 이상, 그리고 Node 22가 필요합니다. Git이 이 설치를 관리합니다.
설치 스크립트 검증하기
이 선택적 경로는 GitHub CLI가 필요합니다. 로컬 파일을 실행하기 전에 버전 0.11.0을 검증합니다.
d=$(mktemp -d) && (trap 'rm -rf "$d"' EXIT && cd "$d" && gh release download v0.11.0 --repo github.com/1667-ai/1667 --pattern install-stable.sh && gh attestation verify install-stable.sh --hostname github.com --repo 1667-ai/1667 --signer-workflow 1667-ai/1667/.github/workflows/release-npm.yml --source-ref refs/tags/v0.11.0 --source-digest bc4dc6e316045c9e117db076cd41fe6bc8787762 --deny-self-hosted-runners && sh install-stable.sh)
1667 홈페이지 데모: 첫 번째 작성 화면에는 '등대지기(The lantern keeper)'의 3장 중 11~13 부분이 표시됩니다. 12번째 부분은 5번 중 3번째 시도입니다: '그는 계단 쪽으로 움직이지 않았다. 대신 그는 황동 나침반을 그들 사이의 바 위에 올려놓았고, 바늘은 개가 누울지 말지를 결정하는 것처럼 느리게 두 번 회전하더니 마렌(Maren)을 가리키는 것을 멈췄다. '절벽 길을 밤에 불빛 없이 걸어본 적이 있나요?' 그가 물었다. '돌아온 사람은 아무도 그런 적 없어요.' 그녀가 말했다. 바늘은 떨리다가 고정되었다.' 작성하기(Compose): 엔터를 누르면 작곡기(composer)가 열립니다. '불을 켜지 않은 등대에게 대답하게 하라'라는 지시문을 입력하고 제출합니다. 생성된 다음 부분은 다음과 같습니다: '등대 불꽃이 나침반 쪽으로 휘어졌지만, 어떤 문도 열리지 않았다.' 프로그램은 그 후 기다립니다. 시도 비교(Compare takes): 위쪽 화살표 키를 누르면 이야기의 여러 부분을 거슬러 5가지 시도 부분이 표시됩니다. 왼쪽과 오른쪽 화살표 키는 아무것도 제거하지 않고 형제 시도들을 비교합니다. 경로 지도 탐색(Explore the path map): 'M'을 누르면 스토리 부분마다 한 줄이 열립니다. 원은 형제 시도들을 나타내고, 선택된 시도는 강조 표시되며, 단어 수는 오른쪽에 있습니다. 화살표 키는 부분과 시도를 이동하며, Escape를 누르면 이야기로 돌아갑니다.
모든 키가 한곳에 모였습니다. 물음표(?)를 누르면 전체 참조가 열리고, Page Down을 누르면 나머지 명령어들이 표시됩니다. 1667 키 참조 MOVE — 읽고 이동하기 ↑ ↓: 이전 또는 다음 줄 ← →: 테이크(take) 간 전환 Shift+↑ Shift+↓: 페이지를 한 줄씩 조정 Page Up 또는 Control+U: 페이지 위로 이동 Page Down 또는 Control+D: 페이지 아래로 이동 G 또는 Shift+G: 첫 부분 또는 마지막 부분 [ ]: 이전 또는 다음 챕터 U: 챕터 구분 추가 또는 제거 WRITE — 다음 부분을 작성하기 Space: 이 부분을 계속하기 Enter 또는 I: 다음에 일어날 내용을 입력 R: 동일한 프롬프트로 다시 시도 Shift+R: 다시 시도하고 프롬프트를 수정 W: 스스로 테이크 작성하기 E: 산문 및 프롬프트 편집 N: 작가의 노트 Y 또는 Shift+Y: 부분 또는 전체 줄 복사 Control+↑ Control+↓: 직접(Direct)의 이전 프롬프트 OPEN — 패널 및 보기 M: 전체 이야기 지도 F: 컨텍스트로 유지되는 사실 A: 여담 O: 이야기 전환 또는 라이브러리 열기 콜론(:) 또는 Control+P: 명령어 팔레트 슬래시(/): 이야기나 금고 검색 쉼표(,): 생성 설정 Control+G: 넓은 컨텍스트 상세 정보 Control+R: 다음 요청 검사 L: 모델이 얼마나 확신했는지 H: 과거 모델 요청 느낌표(!): 앱이 말한 모든 것 물음표(?): 이 키 참조 Escape: 열린 것 닫기 Q: 종료 1667 SHAPE — 존재하는 것을 배열하기 D: 이 테이크와 현재 줄 아래의 모든 것을 삭제 T: 여기에 라벨 지정 C 또는 Shift+C: 여기를 챕터로 끝내기 X: 이 부분에 대한 액션 P: 지시 사항 표시 또는 숨기기 Shift+T: 생각(thought) 표시 또는 숨기기 Z: 타자기 모드 Shift+F: 사실 레일, 자동 또는 비활성화 MAP — 지도가 열려 있는 동안 M: 경로, 트리 및 질량 순환 F: 렌즈 하나 트리의 사실 A: 모든 테이크 또는 스케치 Enter: 노드 또는 스케치를 재경로 지정 L: 트리 라인을 따라가거나 질량 라인 열기 ← →: 트리에서 다음 레인으로 이동 Tab: 트리 레인 또는 경로 숨기기 S: 질량 보기 정렬 D 또는 T: 경로 가지치기, 라벨 지정 또는 변경 SEARCH — 검색이 열려 있는 동안 ↑ ↓: 이전 또는 다음 항목 ← →: 그룹 접거나 열기 Tab: 이 트리를 검색하거나 전체 금고 검색 Enter: 항목으로 이동 Control+S: 대소문자 일치 챕터 행은 다릅니다;
이야기 아래 줄은 활성화된 행을 설명합니다. 드래그하면 선택되고, Control+C를 누르면 복사되며, Escape를 누르면 닫힙니다.
Enter 키를 눌러 작곡가(composer)를 열고, 다음에 무슨 일이 일어날지 입력한 다음 Enter를 다시 눌러 다음 이야기 부분을 생성합니다.
위/아래 화살표로 이야기 부분을 선택하고; 좌/우 화살표로 다른 부분들을 삭제하지 않고 그 형제 테이크(sibling takes) 중 하나를 선택할 수 있습니다.
경로 맵(path map)은 부분별로 한 줄을 보여주고, 형제 테이크는 원으로, 단어 수는 오른쪽에 표시합니다. 방향키로 커서를 이동시킵니다.
?를 눌러 전체 키보드 참조를 열고, Page Down을 사용하여 나머지 명령들을 읽습니다.
01 / 테이크(Takes)
모든 버전 비교하기
준비가 되면 다음 단락을 요청하세요. 1667은 하나의 테이크를 작성한 후, 사용자가 계속하거나 수정하거나 다시 시도할 때까지 기다립니다.
모든 테이크 유지하기
단락의 다른 버전을 요청하면 새로운 테이크가 현재 테이크 옆에 나타납니다. ←와 →를 사용하여 비교하세요. 삭제하고 싶을 때만 D를 누르세요.
이야기 줄 선택하기
각 부분은 여러 개의 테이크를 가질 수 있습니다. 사용자가 선택한 테이크들이 이야기 줄을 형성합니다. 맵을 열어 모든 분기점을 보거나 다른 테이크부터 계속할 수 있습니다.
폴더에 저장하기
각 프로젝트는 사용자가 선택하는 폴더에 존재합니다. Export를 실행하면 선택된 이야기 줄이 같은 폴더의 Markdown 파일로 작성됩니다.
02 / 트리(The tree)
모든 분기점 보기
새로운 테이크는 현재 부분에서 분기됩니다. m을 눌러 맵을 열고, 이야기 줄, 부분, 테이크 사이를 이동할 수 있습니다.
다시 m을 누르면 경로(path), 트리(tree), 그리고 전체(mass) 보기로 순환합니다. 삭제하고 싶은 테이크가 있을 때만 d를 누르세요.
- path
- 시작부터 끝까지 선택된 이야기 줄을 읽습니다. 각 행은 하나의 부분이며; 원들은 그 다른 테이크들을 보여줍니다.
- tree
- 이야기가 어디서 분기되는지 봅니다. 아무 테이크나 선택하고 l을 눌러 그 라인을 따라갑니다.
- mass
- 단어 수로 이야기 줄을 비교합니다. 크기, 날짜, 깊이 또는 이름별로 정렬할 수 있습니다.
d래그하거나 방향키를 사용하여 이동하세요.
Path 맵: "The lantern keeper." 깊이(Depth) 1부터 13까지이며, 4개의 스토리라인에 걸쳐 23개의 파트로 구성되어 있습니다. 한 행은 선택된 각 스토리 부분을 나타냅니다. 3, 5, 8, 11, 그리고 12행 옆의 원은 형제(sibling) 테이크를 보여줍니다. 12번 파트는 5개 중 3번째 테이크에서 선택되었고, 13번 파트에는 canon-storm 태그가 붙어 있습니다. 클립은 인접한 부분으로 이동하고, 12번 파트로 돌아와 형제 테이크들을 비교한 다음, 다시 3번째 테이크로 돌아갑니다. 조작: 위/아래 화살표 키는 깊이(depth)를 따라 움직이고, 왼쪽/오른쪽 화살표 키는 테이크(take)를 변경합니다. Esc 키는 닫습니다.
d래그하거나 화살표 키를 사용하여 이동하세요.
Tree 맵: "The lantern keeper." 이 스토리는 4개의 라인, 23개의 파트, 그리고 5개의 분기점(fork)을 포함합니다. 보이는 줄기는 여섯 개의 통과 행(passage row), 세 개의 접힌 콜드 싱글라인 브랜치(cold single-line branch), 그리고 일곱 개의 공개된 스케치를 보여줍니다. 커서는 "Maren counted the lanterns twice." 아래에 있는 스케치 "Ashe offered her the compass without…"에서 시작합니다. 클립은 보이는 행을 위로 두 개 이동한 다음, 그 스케치로 돌아가기 위해 두 행을 아래로 이동합니다. 조작: 위/아래 화살표 키는 행(row)을 따라 움직이고, L은 라인을 따르며, M은 대량(mass)을 열고, Esc 키는 닫습니다.
d래그하거나 화살표 키를 사용하여 이동하세요.
Mass 맵: "The lantern keeper." 이 스토리는 4개의 라인에 걸쳐 477 단어를 포함합니다. 가로 막대는 canon-storm, alt-quiet-inn, burned, draft-ledger, 일곱 개의 스케치, 그리고 콜드 싱글 문단 브랜치를 단어 수별로 비교합니다. 클립은 라인 사이를 이동한 다음, 가장 큰(largest), 최근의(recent), 깊은(deepest), 알파벳순 정렬을 순환한 후 가장 큰 것으로 돌아갑니다. 조작: 위/아래 화살표 키는 행(row)을 따라 움직이고, S는 정렬을 변경하며, L은 라인을 열고, M은 경로(path)로 돌아가며, Esc 키는 닫습니다.
03 / 키
시작하기 위한 여덟 가지 키
완벽한 작문 세션을 위해 이 여덟 개의 키를 사용하세요. 언제든지 ?를 눌러 모든 40가지 명령을 확인하세요.
- continueWrite: 여기서 다음 부분을 계속 작성합니다.
- directSay: 다음에 무슨 일이 일어났는지 말하고, 계속 작성합니다.
- flip takes: 이 부분의 형제(sibling)들 사이를 이동합니다.
- movePrevious and next part: 이전 및 다음 파트로 이동합니다.
- retake: 동일한 프롬프트에 대한 또 다른 테이크를 만듭니다.
- write: 자신의 말로 테이크를 추가합니다.
- edit: 부분을 전체 화면 편집기에서 엽니다.
- mapCycle: 경로(path), 트리(tree), 그리고 대량(mass)을 보여주는 모든 명령입니다.
d래그하거나 화살표 키를 사용하여 이동하세요.
1667 키 참조 이동(MOVE) — 읽기 및 탐색 ↑ ↓: 이전 또는 다음 행 ← →: 테이크 전환 Shift+↑ Shift+↓: 페이지를 한 줄씩 조정 Page Up 또는 Control+U: 페이지 위로 Page Down 또는 Control+D: 페이지 아래로 G 또는 Shift+G: 첫 부분 또는 마지막 부분 [ ]: 이전 또는 다음 챕터 U: 챕터 구분 추가 또는 제거 취소 쓰기(WRITE) — 다음 부분을 작성 Space: 이 부분을 계속 Enter 또는 I: 다음에 일어날 내용을 입력 R: 동일한 프롬프트로 재시도 Shift+R: 재시도 및 프롬프트 편집 W: 스스로 테이크 작성 E: 산문 및 프롬프트 편집 N: 작가의 노트 Y 또는 Shift+Y: 부분 또는 전체 줄 복사 Control+↑ Control+↓: 직접 이전 프롬프트 열기(OPEN) — 패널 및 보기 M: 전체 이야기 지도 F: 컨텍스트를 위해 유지되는 사실 A: 부가 정보 O: 이야기 전환 또는 라이브러리 열기 콜론(:) 또는 Control+P: 명령어 팔레트 슬래시(/): 이야기 또는 저장소 검색 쉼표(,): 생성 설정 Control+G: 광범위한 컨텍스트 세부 정보 Control+R: 다음 요청 검사 L: 모델이 얼마나 확신했는지 H: 과거 모델 요청 느낌표(!): 앱이 말한 모든 것 물음표(?): 이 키 참조 Escape: 열린 것 닫기 Q: 종료 1667 모양(SHAPE) — 존재하는 것을 배열 D: 현재 줄의 테이크와 그 아래의 모든 것 삭제 T: 여기에 줄 태그 C 또는 Shift+C: 여기에서 챕터 또는 끝내기 X: 이 부분에 대한 동작 P: 방향 표시 보거나 숨기기 Shift+T: 생각 보거나 숨기기 Z: 타자기 모드 Shift+F: 사실 레일, 자동 또는 비활성화 지도(MAP) — 지도가 열려 있는 동안 M: 경로, 트리 및 질량 순환 F: 렌즈 하나 트리의 사실 A: 모든 테이크 또는 스케치 Enter: 노드 또는 스케치 재경로 지정 L: 트리 라인을 따르거나 질량 라인 열기 ← →: 트리의 다음 레인으로 이동 Tab: 트리 레인 또는 경로 숨기기 S: 질량 보기 정렬 D 또는 T: 경로 가지치기, 태그 지정 또는 변경 검색(SEARCH) — 검색이 열려 있는 동안 ↑ ↓: 이전 또는 다음 항목 ← →: 그룹 접거나 열기 Tab: 이 트리를 검색하거나 전체 저장소 Enter: 항목으로 이동 Control+S: 대소문자 일치 정확히 챕터 행은 다르며; 이야기 아래의 줄은 활성 행을 설명합니다. 드래그는 선택하고, Control+C는 복사하며, Escape는 닫습니다.
분석 또는 원격 측정 기능 없음
작성하신 이야기는 프로젝트 폴더에 보관됩니다. 모델 요청은 사용자가 선택한 엔드포인트로 전송됩니다.
- 분석 데이터 수집 안 함 (analytics not collected)
- 원격 측정 데이터 수집 안 함 (telemetry not collected)
- 충돌 보고서 오류는 로컬 로그에 저장됨 (crash reporter errors stay in a local log)
- 설치 ID 없음 (install ID none)
- 계정 필요 없음 (account not required)
사용하는 모델 제공업체(model provider)가 각 요청에 포함된 이야기 텍스트를 받게 되므로, 해당 제공업체의 개인정보 보호정책이 적용됩니다.
백그라운드 업데이트 확인은 npm에서 패키지 정보를 읽어옵니다. 이 과정에는 사용자의 이야기가 포함되거나 설정 정보가 전송되지 않습니다. 만약 이러한 확인 기능을 원하지 않는다면 '설정'에서 비활성화할 수 있습니다.
소스 코드 읽기 → 드래그하거나 화살표 키를 사용하여 이동
1667 설정 앱 업데이트 확인: 켜짐. 더 새로운 버전을 확인합니다. 이야기나 계정 데이터는 전송되지 않습니다. 프롬프트 작성자 간략 설명 (Prompt Author brief): 다음에서 이야기를 계속하기… 산문(prose)의 기본 작성자 간략 설명 (Default Author Brief for prose)… 계속하기 (Continue): 이야기를 계속합니다. 방향에 대한 기본 계속 지침 (Default Continue direction for)… 연결 제공업체 (Connection Provider): 드라이-런 (dry-run). t…을 실행하는 서비스를 선택합니다. 기본 URL (Base URL): 설정 안 됨. m…에 도달하는 데 사용되는 주소입니다. API 키 (API key): 설정 안 됨. 이 장치에 저장되며, 절대 전송되지 않습니다 (never stored)… 모델 (Model): 설정 안 됨. th…에서 사용되는 모델 이름을 입력합니다. 생성 컨텍스트 크기 (Generation Context size): 32,768, 1부터 1,000k까지. 얼마나 많은 이야기 컨텍스트를 사용할지 설정합니다. 제어 기능: 위/아래 이동; 왼쪽/오른쪽 선택; Enter는 진행; S는 저장; C는 확인; M은 고급 보기 열기; Escape는 닫기.
여기서 제공업체, 기본 URL, API 키, 모델 및 생성 설정을 구성하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Claude Code Search의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기