프로젝트 소개
99는 에이전트형 AI 워크플로를 편집기에 직접 통합하는 Neovim 플러그인입니다. 프로그래머를 대체하기보다 보강하는 것을 목표로 하는 Neovim용 AI 클라이언트로 설명되며, API가 변경될 수 있는 베타 제품으로 명시되어 있습니다.
핵심 아이디어
특정 코드 조각을 대체하는 데만 초점을 맞추는 대신, 프로젝트의 방향은 에이전트형 프로그래밍과 정보 표면화를 지향하며, `search`와 `work`가 더 유용한 진입점으로 제시됩니다. 작성자는 이 저장소를 AI와 전통적인 수동 코딩을 혼합하는 탐구 공간으로 설명합니다.
설정
설정은 플러그인 매니저 스펙에서 Lua `setup` 호출을 통해 이루어집니다. 옵션에는 로거(레벨, 경로, print_on_error), `tmp_dir`, 완성 설정, 그리고 원래 요청을 기준으로 자동으로 발견되어 컨텍스트로 주입되는 `AGENT.md`와 같은 `md_files`가 포함됩니다. 키맵은 사용자 정의이며, README에는 비주얼 선택, 요청 중지, 검색에 대한 예시가 나와 있습니다.
주요 API
- `setup(opts)` — 필수 초기화; 스피너, 기본값, 완성을 구성합니다.
- `search(opts)` — 프롬프트로 프로젝트 전체 검색을 실행하고 위치와 메모를 quickfix 목록으로 반환합니다.
- `visual(opts)` — 현재 비주얼 선택과 프롬프트를 보내고 선택 영역을 결과로 대체합니다.
- `vibe(opts)` — 설명 없이 나열됨.
- `open()` — 마지막 상호작용에 대한 선택 창을 열고, 유형에 적합한 보기(검색/vibe는 quickfix, 튜토리얼은 튜토리얼 창)로 결과를 표시합니다.
- `view_logs()` — 최근 로그를 보고 이전/이후 로그 탐색을 준비합니다.
- `stop_all_requests()` — 진행 중인 요청을 중단하고 결과를 폐기합니다.
- `clear_previous_requests()` — 이전 검색 및 비주얼 작업을 지웁니다.
- `Extensions` — Worker 추상화를 노출합니다.
옵션 및 유형
README에는 여러 옵션 테이블이 문서화되어 있습니다: `_99.Options` (logger, model, in_flight_options, md_files, provider, display_errors, auto_add_skills, completion, tmp_dir), `_99.ops.Opts` (additional_prompt, additional_rules), `_99.ops.SearchOpts`, `_99.WorkOpts` (description), `_99.Completion` (source, custom_rules, files), `_99.InFlight.Opts` (throbber_opts, in_flight_interval, enable), `_99.Logger.Options`, `_99.Agents.Rule` (name, path, absolute_path).
`additional_prompt`는 대화형 입력 없이 실행되는 리맵을 정의할 수 있게 하며, 예를 들어 `make test`를 실행하고 실패를 진단하여 quickfix 목록에 넣는 검색이 있습니다. `additional_rules`는 "cloudflare" 규칙과 같은 추가 스킬 컨텍스트를 주입합니다.
완성
프롬프트 버퍼에서 `#`는 구성된 규칙 디렉토리의 규칙 파일을 자동 완성하고, `@`는 gitignore된 항목을 제외한 프로젝트 파일을 퍼지 검색합니다. 참조된 콘텐츠는 해석되어 AI 컨텍스트에 주입됩니다. 기본 완성은 네이티브이며, nvim-cmp와 blink.cmp는 `source = "cmp"` 또는 `"blink"`를 통해 지원됩니다.
프로바이더
여러 AI CLI 백엔드가 지원되며 `provider`로 선택합니다: OpenCodeProvider (기본값, `opencode`, 기본 모델 `opencode/claude-sonnet-4-5`), ClaudeCodeProvider (`claude`, `claude-sonnet-4-5`), CursorAgentProvider (`cursor-agent`, `sonnet-4.5`), GeminiCLIProvider (`gemini`, `auto`). `model` 옵션으로 프로바이더 기본값을 재정의할 수 있습니다. README는 `tmp_dir`을 작업 디렉토리 밖으로 지정하면 Claude Code나 OpenCode 같은 도구에서 권한 문제가 발생할 수 있다고 언급합니다.
확장 기능
Worker 확장은 작업 추적을 위한 지속적인 방법을 제공합니다: `set_work`는 작업 설명을 기록하고 `search`는 `_99.search`를 사용하여 남은 작업을 찾습니다. 작성자는 이 영역이 가장 많이 변경될 가능성이 높으며, 향후 워크트리 지원이 있을 수 있다고 밝힙니다.
Telescope와 fzf-lua 확장은 런타임에 모델이나 프로바이더를 전환하는 피커를 제공합니다. 프로바이더를 전환하면 모델이 해당 프로바이더의 기본값으로 재설정됩니다.
버그 보고
README는 버그 보고 시 전체 디버그 로그를 요청하며, `:lua require("99").view_logs()`로 얻을 수 있고, 로그에 출력된 쿼리에 비밀이 포함될 수 있다고 경고합니다. 기능 요청은 공개 토론을 선호하여 명시적으로 권장되지 않습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.