AI 설명
Hostveil의 AI는 선택 사항이며, 조언 전용이고, 기본은 로컬입니다. 쉬운 말로 second opinion을 더해 줄 수 있지만, 절대 변경을 적용하지 않으며, AI 없이도 모든 기능이 그대로 동작합니다.
사용 방법
발견 항목에 대한 조언성 설명을 얻으려면 explain에 --ai를 추가하세요:
hostveil explain ssh.rootlogin --ai
내장된 쉬운 말 설명은 항상 먼저 출력되며, --ai는 AI 설명(조언) 섹션을 뒤에 덧붙입니다. 모델에 연결할 수 없으면 Hostveil은 그 사실을 알리고 계속 진행합니다. AI를 사용할 수 없다고 해서 명령이 실패하는 일은 없습니다.
다른 인터페이스에서도 같은 설명을 한 번의 동작으로 볼 수 있습니다. 대시보드의 발견 항목 패널에는 Explain with AI 버튼이 있고, TUI의 상세 화면에서는 e 키가 응답합니다. 둘 다 CLI와 같은 방식으로 우아하게 동작이 줄어듭니다. 닿는 프로바이더가 없으면 오류가 아니라 한 줄 안내가 나옵니다.
이 호스트에 맞춰 Fix를 판단하기
Fix의 득실은 일반론입니다. cve.outdated-image의 재수신은 CVE 패치를 빨리 받고 싶은 셀프호스팅 서버에는 매력적이지만, 지금 안정적으로 돌아가는 서버에는 위험할 수 있습니다. 어느 쪽인지 hostveil에게 알려주지 않으면 판단할 방법이 없습니다. hostveil ai-context는 이 호스트를 한 줄로 설명한 문구를 저장해 두고, 바꾸기 전까지 계속 씁니다.
hostveil ai-context "개인 미디어 서버, 안정성보다 최신 보안 패치가 중요함"
한 번 저장해 두면 --ai를 쓰는 모든 답변(explain, 대시보드 버튼, TUI의 e)이 이 문구를 자동으로 읽어, 일반적인 설명 대신 그런 호스트를 염두에 둔 판단 문장으로 답을 마무리합니다. 인자 없이 hostveil ai-context를 실행하면 저장된 내용을 보여주고, --clear는 지웁니다.
hostveil advise [--ai]는 같은 질문을 Fix가 있는 모든 발견 항목에 한 번에 던집니다. AI 없이도 각 Fix가 무엇을 얻고 무엇을 치르는지 결정론적으로 나열하고, --ai를 주면 저장된 설명에 비추어 발견 항목마다 적용/보류/상황에 따라 다름 중 하나의 한 줄 판단도 덧붙입니다. TUI의 v 키와 대시보드의 Advise 버튼도 같은 기능으로 이어집니다.
기본은 로컬, 선택하면 외부 API
백엔드는 HOSTVEIL_AI_PROVIDER로 고릅니다. 기본값은 Ollama이며 사용자 본인의 머신에서 실행되므로, 다른 프로바이더를 직접 지정하지 않는 한 아무것도 호스트 밖으로 나가지 않습니다.
HOSTVEIL_AI_PROVIDER | 실행 위치 | 인증 정보 | 모델 |
|---|---|---|---|
ollama (기본값) | Ollama를 통해 이 기계에서 | 없음 | HOSTVEIL_OLLAMA_MODEL (기본 llama3.2) |
anthropic | Claude API | ANTHROPIC_API_KEY | HOSTVEIL_ANTHROPIC_MODEL (기본 claude-opus-5) |
openai | OpenAI의 chat-completions 형식을 쓰는 아무 벤더 — OpenAI 자신, OpenRouter, Groq, Together, 다른 기계의 자체 호스팅 서버 | HOSTVEIL_OPENAI_API_KEY | HOSTVEIL_OPENAI_MODEL — 필수이며, 벤더 공통 기본값은 없음 |
로컬에서 돌리는 Ollama
Ollama를 설치하고 모델을 한 번 내려받으세요:
ollama pull llama3.2
hostveil explain ssh.rootlogin --ai다른 로컬 모델을 사용하려면:
HOSTVEIL_OLLAMA_MODEL=llama3.1 hostveil explain ssh.rootlogin --ai기계가 로컬 모델을 감당하지 못할 때, 외부 API
시연용 호스트나 작은 VPS는 작은 로컬 모델조차 제대로 돌리기 벅찬 경우가 많습니다. 그럴 때는 Claude API를 대신 가리키면 됩니다.
HOSTVEIL_AI_PROVIDER=anthropic ANTHROPIC_API_KEY=sk-... \
hostveil explain ssh.rootlogin --ai또는 OpenAI 호환 벤더라면 어디든 됩니다. 아래는 OpenRouter를 쓴 예시입니다.
HOSTVEIL_AI_PROVIDER=openai \
HOSTVEIL_OPENAI_BASE_URL=https://openrouter.ai/api/v1 \
HOSTVEIL_OPENAI_API_KEY=sk-or-... \
HOSTVEIL_OPENAI_MODEL=meta-llama/llama-3.1-8b-instruct \
hostveil explain ssh.rootlogin --ai매번 명령마다 반복하는 대신, 셸 프로필이나 systemd 유닛에 넣어 두면 그 호스트에서는 선택이 고정됩니다. 어느 프로바이더든 호스트를 벗어나면 인증 정보와 프롬프트도 함께 나갑니다. 그 프롬프트에 정확히 무엇이 담기는지는 아래 개인정보 항목을 보세요.
조언 전용이며, 설계상 비공개
AI는 오직 설명만 할 수 있습니다. 어떤 수정도 적용·변경·주도할 능력이 없습니다. 점수, 발견 항목, 수정은 전적으로 AI 없이 계산됩니다.
모델에는 사람이 읽을 수 있는 필드만 전송됩니다. 발견 항목의 제목, 서비스, 설명, 수정 방법 텍스트, 그리고 그 Fix의 효능/부작용 요약입니다. 비밀 값, 포트, 파일 경로 같은 원본 증거 값은 절대 프롬프트에 포함되지 않으므로, 외부 프로바이더를 선택하더라도 민감한 세부 정보가 호스트 밖으로 나가지 않습니다. 호스트 설명을 저장해 두었다면(hostveil ai-context) 그 문구도 함께 전송됩니다. 애초에 그러라고 저장한 것이니, 문구를 쓸 때 이 점을 염두에 두세요. anthropic이나 openai를 쓰면 호스트를 벗어나는 것은 그렇게 줄인 프롬프트 자체이며, 설정한 API로 전송됩니다. 기본값인 ollama에서는 애초에 아무것도 나가지 않습니다.