tfcace/hash
요약
Hash는 에디터 스타일의 입력과 AI 통합 기능을 갖춘 Go 쉘입니다. 이 쉘은 특정 모델이나 공급업체에 종속되지 않는 '에이전트 독립적' 설계를 채택하여, stdio를 통해 연결된 다양한 ACP 에이전트(Claude Code, Gemini CLI 등)와 연동됩니다. 사용자는 `??` 명령어를 통해 자연어로 명령어 생성을 요청하고, 대화형 세션에서 후속 질문을 이어갈 수 있습니다.
핵심 포인트
- AI 통합 기능을 갖춘 차세대 Go 쉘입니다.
- 특정 AI 모델에 종속되지 않는 에이전트 독립적 구조를 가집니다.
- `??` 명령어로 자연어 기반 명령어 생성이 가능합니다.
- Claude Code, Gemini CLI 등 다양한 ACP 에이전트를 지원합니다.
Harness Assisted SHell — 에디터 스타일의 입력, Helix 키 바인딩, 그리고 에이전트와 독립적인 AI 통합 기능을 갖춘 Go 쉘입니다.
⚠️ 초기 단계 프로젝트 Hash는 활발하게 개발 중입니다. 1.0 버전 이전에 버그 및 변경 사항이 있을 수 있습니다. 0.6 버전에서는 차례별(turn-by-turn) 에이전트 대화, 실험적인 zsh 방언 지원, 그리고 새로워진 Claude ACP 어댑터 설정이 추가되었습니다.
Hash는 AI를 특정 모델이나 공급업체에 종속되지 않는 일급 시민으로 취급하는 쉘입니다. 명령어 어디에서든 ??를 입력하여 도움말을 얻으세요:
# 자연어로 명령어를 생성
?? 오늘 수정된 모든 Go 파일 찾기
→ find . -name "*.go" -mtime 0
...
모드 전환이 없습니다. 특별한 명령어도 없습니다. 필요한 곳에서 ??만 입력하세요. 그리고 에이전트가 질문으로 답변할 때, Hash는 대화 프롬프트를 열어 같은 세션에서 차례별로 답장할 수 있게 합니다.
에이전트 독립적(Agent-agnostic) — stdio를 통해 연결된 모든 ACP 에이전트 (Claude Code, Cursor CLI, Gemini CLI) 또는 Ollama 스타일의 HTTP 모델 서버와 연동됩니다.명시적 권한(Explicit permissions) — 에이전트 도구 호출 프롬프트는 허용/거부/항상 설정을 제공하며, 승인은 프로젝트별, 전역적, 또는 세션별로 범위 지정할 수 있습니다.차례별 대화(Turn-by-turn conversations) (0.6 버전에서 신규) — 후속 질문은 같은 에이전트 세션에서 계속되며, Esc, /exit, 또는
brew tap tfcace/hash
brew install hash
Go 1.25+와 C 컴파일러(SQLite용)가 필요합니다.
git clone https://github.com/tfcace/hash.git
cd hash
go build -o /usr/local/bin/hash ./cmd/hash
Claude over ACP의 경우, 어댑터를 설치하세요:
npm install -g @agentclientprotocol/claude-agent-acp
그런 다음 ~/.config/hash/config.toml에서 Hash가 이를 가리키도록 설정합니다.
:
[agent]
transport = "stdio"
command = "claude-agent-acp"
ANTHROPIC_API_KEY 또는 Claude 구독을 통해 인증합니다. macOS의 경우, 어댑터가 Claude Code CLI 로그인에서 OAuth 자격 증명을 자동으로 재사용합니다.
다른 에이전트를 선호하나요? Gemini CLI와 Cursor CLI도 ACP를 지원합니다:
# Cursor CLI — `agent login`으로 한 번 인증한 후:
[agent]
command = "agent acp"
...
Hash는 또한 이름 지정된 에이전트 프로필과 Ollama 스타일 HTTP 서버를 지원합니다. 모든 옵션은 docs/config-reference.md를, 웹사이트의 agents 가이드를 참조하세요.
sudo sh -c 'echo $(which hash) >> /etc/shells'
chsh -s $(which hash)
로그인 셸(Login shells)은 /etc/profile, ~/.profile, 및 ~/.hash_profile에서 코드를 가져오고;
대화형 셸(interactive shells)은 ~/.hashrc에서 코드를 가져옵니다.
Hash는 기본적으로 셸 코드를 bash로 구문 분석합니다. zsh 문법을 구문 분석하고 zsh 시작 파일을 직접 불러오려면 shell.dialect = "zsh" (실험적)를 설정하세요. 자세한 내용은 구성 참조(config reference)를 참조하세요.
첫 실행 시, Hash는 이전 셸을 감지하고 호환 가능한 설정을 로드하기 전에 사용자에게 요청합니다. 마이그레이션을 다시 실행하려면 hash migrate를 실행하거나, 무엇이 가져와지고 건너뛰어졌는지 보려면 hash migrate status를 실행하세요.
runhash.dev— 구문, 에이전트, 컨텍스트, 완성(completion), 학습, 키 바인딩, 통합, 마이그레이션 및 고급 디버깅(추적(tracing), PTY 로그, 디버그 환경 변수)에 대한 가이드입니다.docs/config-reference.md— 전체 구성 참조입니다.
go build -o hash ./cmd/hash # 빌드
./scripts/build.sh # 버전 정보와 함께 빌드 (--install을 사용하여 /usr/local/bin)
go test ./... # 모든 테스트 실행
...
hash/
├── cmd/hash/ # 메인 진입점
├── internal/
...
주요 의존성: mvdan.cc/sh
(POSIX/zsh 파싱 및 해석), charmbracelet/bubbletea
그리고 lipgloss
(TUI), creack/pty
, mattn/go-sqlite3.
이 프로젝트는 버전 관리를 위해 jj (Jujutsu)를 사용합니다.
테스트 환경— macOS + Ghostty + Claude (ACP via claude-agent-acp)에서만 테스트되었습니다. 다른 플랫폼, 터미널, 에이전트는 작동할 수 있지만 테스트되지 않았습니다.안정성— 버그가 있을 것입니다. 많이요. 무엇이든 깨지면 파일 문제가 발생합니다.성능— 순수 처리량보다는 응답성에 중점을 두고 빌드되었습니다. Go는 셸에게 충분히 빠르지만, 이것은 bash의 Rust 재작성은 아닙니다.범위— 이 프로젝트는 저의 선호도(Helix 키 바인딩, 로컬 우선, 에이전트 비종속적)를 중심으로 만들어졌습니다. 사용자님의 취향에 맞지 않을 수 있습니다.SSH— 지원하지 않습니다. Hash는 로컬 터미널 사용만을 위해 설계되었습니다.
Warp가 현대적인 AI 터미널을 개척했으며, 2026년 4월부터 그 클라이언트는 오픈 소스(AGPL)입니다. 차이점은 아키텍처적입니다: Warp는 전환하는 터미널 에뮬레이터이며, 계정과 측정된 크레딧 뒤에 Warp의 클라우드를 통해 실행되는 AI를 갖추고 있습니다. Hash는 이미 사용하고 있는 터미널 내부에서 실행되는 셸이며, 개방형 프로토콜(ACP)을 통해 모든 에이전트와 통신하며, 모든 것을 로컬로 유지합니다. 세련되고 통합된 제품을 원한다면 Warp가 훌륭합니다. 해킹 가능성과 에이전트 선택의 자유를 원한다면 Hash입니다.
Butterfish는 기존 셸에 OpenAI 기반 도움말 기능을 추가합니다. Hash는 셸 자체를 대체하며, 에이전트에 구애받지 않고(agent-agnostic) 사용자의 오류 수정 경험으로부터 로컬에서 학습합니다. 셸을 전환하지 않고 빠른 오버레이가 필요하면 Butterfish를 선택하고, 더 깊은 통합과 로컬 우선 데이터를 원한다면 Hash를 선택하세요.
MIT
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기