HN 표시: SigMap – 자동 확장 토큰 예산으로 AI 코딩 컨텍스트를 97% 축소
hackernews
|
|
📦 오픈소스
#claude
#gemini
#openai
#review
원문 출처: hackernews · Genesis Park에서 요약 및 분석
요약
SigMap는 코드베이스의 함수 및 클래스 서명만을 추출하여 컴팩트한 컨텍스트 파일을 생성함으로써, AI 코딩 시 토큰 사용량을 평균 97% 이상 대폭 절감하는 도구입니다. 적용 시 적정 파일 검색률은 13.6%에서 84.4%로 상승하고, 과업당 프롬프트 횟수와 토큰 비용도 각각 44%와 97% 이상 감소하여 효율성을 크게 높입니다. 최신 버전은 저장소 크기에 따라 토큰 예산을 자동 조정하는 스마트 예산 기능을 지원하며, VS Code와 JetBrains 등 다양한 환경에서 사용 가능합니다.
본문
WITHOUT SIGMAP, YOUR AI IS GUESSING. Without structured context, AI often reads the wrong file and fills the gaps with guesses. Run one command. Force every answer to come from real code. npx sigmap # 10 seconds. zero config. your AI never reads the wrong file again. What you get in ~10 seconds - A compact signature map of your codebase - The right file in context far more often (84.4% hit@5 vs 13.6% random) - Fewer retries (1.59 vs 2.84 prompts per task) - Far smaller context (~2K–4K tokens instead of ~80K) Latest: v4.1.0 — Smart Budget. Token budget now auto-scales to your repo size, targeting 80% source-file coverage by default. No config change needed — it just works. Full benchmark breakdown → | Without SigMap | With SigMap | | |---|---|---| | Task success | 10% | 59% | | Prompts per task | 2.84 | 1.59 | | Tokens per session | ~80,000 | ~2,000 | | Right file found | 13.6% | 84.4% | | Hallucination risk | 92% | 0% | Measured on 90 coding tasks across 18 real public repos. Full methodology and raw benchmark pages are linked below. | What it does | Token reduction table, pipeline overview | | Quick start | Install (binary or npm), generate in 60 seconds | | Standalone binaries | macOS, Linux, Windows — no Node required | | VS Code extension | Status bar, stale alerts, commands | | JetBrains plugin | IntelliJ IDEA, WebStorm, PyCharm support | | Languages supported | 25 languages | | Context strategies | full / per-module / hot-cold | | MCP server | 8 on-demand tools | | CLI reference | All flags | | Configuration | Config file + .contextignore | | Observability | Health score, reports, CI | | Programmatic API | Use as a Node.js library | | Testing | Run the test suite | | Project structure | File-by-file map | | Principles | Design decisions | 📖 New to SigMap? Read the Complete Getting Started Guide — token savings walkthrough, every command, VS Code plugin, and CI setup. SigMap scans your source files and extracts only the function and class signatures — no bodies, no imports, no comments — then writes a compact context file that Copilot, Claude, Cursor, and Windsurf read automatically. Every session starts with full codebase awareness at a fraction of the token cost. Your codebase │ ▼ sigmap ─────────► extracts signatures from 25 languages │ ▼ .github/copilot-instructions.md ◄── auto-read by Copilot / Claude / Cursor │ ▼ AI agent session starts with full context Dogfooding: SigMap runs on itself — 40 JS files, 8,600 lines of code. View the generated context: .github/copilot-instructions.md | Stage | Tokens | Reduction | |---|---|---| | Raw source files | ~80,000 | — | | Repomix compressed | ~8,000 | 90% | | SigMap signatures | ~4,000 | 95% | SigMap + MCP (hot-cold ) | ~200 | 99.75% | 97% fewer tokens. The same codebase understanding. Reproduced with node scripts/run-benchmark.mjs on public repos: | Repo | Language | Raw tokens | After SigMap | Reduction | |---|---|---|---|---| | express | JavaScript | 70.6K | 911 | 98.7% | | flask | Python | 147.9K | 6.7K | 95.4% | | gin | Go | 216.4K | 6.0K | 97.2% | | spring-petclinic | Java | 97.9K | 3.4K | 96.5% | | rails | Ruby | 1.5M | 7.1K | 99.5% | | axios | TypeScript | 105.7K | 6.1K | 94.3% | | rust-analyzer | Rust | 3.5M | 6.3K | 99.8% | | abseil-cpp | C++ | 2.3M | 6.3K | 99.7% | | serilog | C# | 195.5K | 6.9K | 96.4% | | riverpod | Dart | 747.2K | 6.5K | 99.1% | | okhttp | Kotlin | 31.3K | 1.4K | 95.5% | | laravel | PHP | 1.7M | 7.2K | 99.6% | | akka | Scala | 790.5K | 7.1K | 99.1% | | vapor | Swift | 171.4K | 6.4K | 96.2% | | vue-core | Vue | 414.4K | 8.6K | 97.9% | | svelte | Svelte | 438.2K | 8.0K | 98.2% | | fastify | JavaScript | 54.4K | 2.6K | 95.3% | | fastapi | Python | 178.4K | 5.2K | 97.1% | Average: 97.6% reduction across 18 repos (16 languages). See benchmarks/reports/token-reduction.md or reproduce with node scripts/run-benchmark.mjs . Pick the method that fits your workflow — all produce the same output. npx — try without installing npx sigmap Runs the latest version without any permanent install. Great for a quick try. npm global — install once, run anywhere npm install -g sigmap sigmap Available from any directory on your machine. Standalone binaries — no Node.js, no npm Download from the latest release: Available assets: sigmap-darwin-arm64 (macOS Apple Silicon)sigmap-linux-x64 (Linux x64)sigmap-win32-x64.exe (Windows x64)sigmap-checksums.txt (SHA-256 checksums) macOS / Linux Run directly: chmod +x ./sigmap-darwin-arm64 # or ./sigmap-linux-x64 ./sigmap-darwin-arm64 --help ./sigmap-darwin-arm64 Make it globally available in Bash/Zsh (no ./ needed): # 1) Pick a user bin dir and move/rename the binary mkdir -p "$HOME/.local/bin" mv ./sigmap-darwin-arm64 "$HOME/.local/bin/sigmap" # or sigmap-linux-x64 chmod +x "$HOME/.local/bin/sigmap" # 2) Add to PATH in your shell profile echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$HOME/.zshrc" # zsh # echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$HOME/.bashrc" # bash # 3) Reload shell and verify source "$HOME/.zshrc" # or: source "$HOME/.bashrc" sigmap --version Windows (PowerShell) Run directly: .\sigmap-win32-x64.exe --help .\sigmap-win32-x64.exe Make it globally available: # 1) Create a user bin directory and rename the binary New-Item -ItemType Directory -Force "$HOME\bin" | Out-Null Move-Item .\sigmap-win32-x64.exe "$HOME\bin\sigmap.exe" # 2) Add user bin to PATH (current user) [Environment]::SetEnvironmentVariable( "Path", $env:Path + ";$HOME\bin", "User" ) # 3) Restart PowerShell and verify sigmap --version Optional checksum verification: shasum -a 256 sigmap-darwin-arm64 # Compare with sigmap-checksums.txt Full guide: docs/readmes/binaries.md npm local — per-project, version-pinned npm install --save-dev sigmap Add to package.json scripts for team consistency: { "scripts": { "context": "sigmap", "context:watch": "sigmap --watch" } } Run with npm run context . Version is pinned per project. Volta — team-friendly, auto-pinned version volta install sigmap sigmap Volta pins the exact version in package.json — every team member runs the same version automatically without configuration. Single-file download — no npm, any machine curl -O https://raw.githubusercontent.com/manojmallick/sigmap/main/gen-context.js node gen-context.js No npm, no node_modules . Drop gen-context.js into any project and run it directly. Requires only Node.js 18+. Ideal for CI, locked-down environments, or one-off use. Generate context for any AI assistant from a single run: sigmap --adapter copilot # → .github/copilot-instructions.md sigmap --adapter claude # → CLAUDE.md (appended below marker) sigmap --adapter cursor # → .cursorrules sigmap --adapter windsurf # → .windsurfrules sigmap --adapter openai # → .github/openai-context.md sigmap --adapter gemini # → .github/gemini-context.md (appended below marker) sigmap --adapter codex # → AGENTS.md (appended below marker) | Adapter | Output file | AI assistant | |---|---|---| copilot | .github/copilot-instructions.md (append) | GitHub Copilot | claude | CLAUDE.md (append) | Claude / Claude Code | cursor | .cursorrules | Cursor | windsurf | .windsurfrules | Windsurf | openai | .github/openai-context.md | Any OpenAI model | gemini | .github/gemini-context.md (append) | Google Gemini | codex | AGENTS.md (append) | OpenAI Codex | Configure multiple adapters at once in gen-context.config.json : { "outputs": ["copilot", "claude", "cursor"] } Use SigMap as a Node.js library without spawning a subprocess. See the full API reference below. Find the most relevant files for any task without reading the whole codebase: sigmap --query "authentication middleware" # ranked file list sigmap --query "auth" --json # machine-readable output sigmap --query "auth" --top 5 # top 5 results only sigmap --analyze # per-file: sigs, tokens, extractor, coverage sigmap --analyze --slow # include extraction timing sigmap --diagnose-extractors # self-test all 21 extractors against fixtures sigmap --benchmark # hit@5 and MRR retrieval quality sigmap --benchmark --json # machine-readable benchmark results Standalone binary — no Node.js or npm required: | Platform | Download | |---|---| | macOS Apple Silicon | sigmap-darwin-arm64 | | macOS Intel | sigmap-darwin-x64 | | Linux x64 | sigmap-linux-x64 | | Windows x64 | sigmap-win32-x64.exe | # macOS / Linux chmod +x ./sigmap-darwin-arm64 ./sigmap-darwin-arm64 See docs/readmes/binaries.md for Gatekeeper / SmartScreen notes and checksum verification. npm (requires Node.js 18+): npx sigmap # run once without installing npm install -g sigmap # install globally Once installed, run from your project root: sigmap # generate once and exit sigmap --watch # regenerate on every file save sigmap --setup # generate + install git hook + start watcher sigmap --diff # context for git-changed files only (PR mode) sigmap --diff --staged # staged files only (pre-commit check) sigmap --health # show context health score (grade A–D) sigmap --mcp # start MCP server on stdio SigMap and Repomix are complementary, not competing: | Tool | When to use | |---|---| | SigMap | Always-on, git hooks, daily signature index (~4K tokens) | | Repomix | On-demand deep sessions, full file content, broader language support | sigmap --setup # always-on context npx repomix --compress # deep dive sessions "SigMap for daily always-on context; Repomix for deep one-off sessions — use both." The official SigMap VS Code extension keeps your context fresh without any manual commands. Install it once and it runs silently in the background. | Feature | Detail | |---|---| | Status bar item | Shows health grade (A /B /C /D ) + time since last regen; refreshes every 60 s | | Stale notification | Warns when copilot-instructions.md is > 24 h old; one-click regeneration | | Regenerate command | SigMap: Regenerate Context — runs sigmap in the integrated terminal | | Open context command | SigMap: Open Context File — opens .github/copilot-instructions.md | | Script path setting | sigmap.scriptPath — override the path to the sigmap binary or gen-context.js | Activates on startup (onStartupFinished ) — loads within 3 s, never blocks editor startup. Install: VS Code Marketplace | Open VSX Registry The official SigMap JetBrains plugin brings the same features to IntelliJ-based IDEs. Install it from the JetBrains Marketplace and it works identically to the VS Code extension. | Feature | Detail | |---|---| | Status bar widget | Shows health grade (A -F ) + time since last regen; updates every 60 s | | Regenerate action | Tools → SigMap → Regenerate Context or Ctrl+Alt+G — runs sigmap | | Open context action | Tools → SigMap → Open Context File — opens .github/copilot-instructions.md | | View roadmap action | Tools → SigMap → View Roadmap — opens roadmap in browser | | One-click regen | Click status bar widget to regenerate context instantly | Compatible with IntelliJ IDEA 2024.1+ (Community & Ultimate), WebStorm, PyCharm, GoLand, RubyMine, PhpStorm, and all other IntelliJ-based IDEs. Install: JetBrains Marketplace | Manual setup guide 25 languages. All implemented with zero external dependencies — pure regex + Node built-ins. Also includes lightweight config/doc extraction for .toml ,.properties ,.xml , and.md to improve real-repo coverage beyond source-code files. Show all 25 languages | Language | Extensions | Extracts | |---|---|---| | TypeScript | .ts .tsx | interfaces, classes, functions, types, enums | | JavaScript | .js .jsx .mjs .cjs | classes, functions, exports | | Python | .py .pyw | classes, methods, functions | | Java | .java | classes, interfaces, methods | | Kotlin | .kt .kts | classes, data classes, functions | | Go | .go | structs, interfaces, functions | | Rust | .rs | structs, impls, traits, functions | | C# | .cs | classes, interfaces, methods | | C/C++ | .cpp .c .h .hpp .cc | classes, functions, templates | | Ruby | .rb .rake | classes, modules, methods | | PHP | .php | classes, interfaces, functions | | Swift | .swift | classes, structs, protocols, functions | | Dart | .dart | classes, mixins, functions | | Scala | .scala .sc | objects, classes, traits, functions | | Vue | .vue | functions and components | | Svelte | .svelte | functions and exports | | HTML | .html .htm | custom elements and script functions | | CSS/SCSS | .css .scss .sass .less | custom properties and keyframes | | YAML | .yml .yaml | top-level keys and pipeline jobs | | Shell | .sh .bash .zsh .fish | function declarations | | SQL | .sql | tables, views, indexes, functions, procedures | | GraphQL | .graphql .gql | types, interfaces, enums, operations, fragments | | Terraform | .tf .tfvars | resources, modules, variables, outputs | | Protobuf | .proto | messages, services, rpc, enums | | Dockerfile | Dockerfile Dockerfile.* | stages and key instructions | Reduce always-injected tokens by 70–90%. Set "strategy" in gen-context.config.json : | Strategy | Always-injected | Context lost? | Needs MCP? | Best for | |---|---|---|---|---| full | ~4,000 tokens | No | No | Starting out, cross-module work | per-module | ~100–300 tokens | No | No | Large codebases, module-focused sessions | hot-cold | ~200–800 tokens | Cold files only | Yes | Claude Code / Cursor with MCP enabled | { "strategy": "full" } One file, all signatures, always injected on every question. { "strategy": "per-module" } One .github/context-.md per top-level source directory, plus a tiny overview table. Load the relevant module file for focused sessions. No MCP required. .github/copilot-instructions.md ← overview table, ~117 tokens (always-on) .github/context-server.md ← server/ signatures, ~2,140 tokens .github/context-web.md ← web/ signatures, ~335 tokens .github/context-desktop.md ← desktop/ signatures, ~1,583 tokens { "strategy": "hot-cold", "hotCommits": 10 } Recently committed files are hot (auto-injected). Everything else is cold (on-demand via MCP). Best reduction available — ~200 tokens always-on. 📖 Full guide: docs/readmes/CONTEXT_STRATEGIES.md — decision tree, scenario comparisons, migration steps. Start the MCP server on stdio: sigmap --mcp | Tool | Input | Output | |---|---|---| read_context | { module?: string } | Signatures for one module or entire codebase | search_signatures | { query: string } | Matching signatures with file paths | get_map | { type: "imports"|"classes"|"routes" } | Structural section from PROJECT_MAP.md | explain_file | { path: string } | Signatures + imports + reverse callers for one file | list_modules | — | Token-count table of all top-level module directories | create_checkpoint | { summary: string } | Write a session checkpoint to .context/ | get_routing | — | Full model routing table | query_context | { query: string, topK?: number } | Files ranked by relevance to the query | Reads files on every call — no stale state, no restart needed. 📖 Setup guide: docs/readmes/MCP_SETUP.md See CHANGELOG.md for the full history. All flags are the same regardless of how you invoke SigMap — swap the prefix to match your install: sigmap ·npx sigmap ·gen-context
Genesis Park 편집팀이 AI를 활용하여 작성한 분석입니다. 원문은 출처 링크를 통해 확인할 수 있습니다.
공유