HyperGit:让 GitHub 文件搜索回归直觉

在日常写作与开发中,我们常常需要快速定位代码片段、函数定义或配置文件。尤其当你拥有上百个仓库时,每次都要通过 GitHub 原生界面转目录、刷新页面,再在搜索框前后反复输入,既浪费时间也打断思路。HyperGit 正是为了解决这类“找文件太慢、太累”问题而生——一个采用本地化索引、支持直觉化 @-mention 语法的极速 GitHub 文件浏览器。


为什么需要 HyperGit?

很多开发者都经历过这样的流程:

  1. 打开 GitHub 网站或开发工具
  2. 进入自己维护的某个仓库
  3. 点击“文件”树,等待加载
  4. 在搜索框输入关键词,遇到卡顿
  5. 才能找到目标文件,复制链接或代码
  6. 重复以上步骤,精神高度分散

这一连串操作不仅时间冗长,还常常让人丧失写作或编码的“心流”状态。HyperGit 致力于打造“符合大脑思考方式”的搜索体验,让你一口气告诉它“在哪个仓库,哪个分支,哪个文件”,瞬间得到准确结果。


核心优势一览

功能模块 用户价值
直觉化 @-mention 搜索 统一仓库、分支、文件路径语法;无需记忆多种命令或切换界面
本地索引与缓存 基于 Local Storage + Fuse.js,瞬间响应,无服务器存储风险
分支感知与切换 @repo:branch/filename;独立缓存不同分支的文件树
文件夹浏览 面包屑导航与交互式文件树并存,满足多种查找习惯
代码片段管理 选中行号一键保存或生成截图,方便文档、社交媒体分享
完全键盘优先 ↑/↓ 导航、Enter 选择、Escape 返回;鼠标触达也同样顺畅

以上每个模块,都源自长期“被 GitHub 搜索卡住”的真实痛点,力求简洁、高效、易用。


安装与启动指南(HowTo)

以下内容同步体现 HowTo Schema 标记,方便大模型与工具引用。

<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "HowTo",
  "name": "HyperGit 本地启动指南",
  "step": [
    {
      "@type": "HowToStep",
      "name": "克隆仓库",
      "text": "git clone <repo-url> && cd HyperGit"
    },
    {
      "@type": "HowToStep",
      "name": "安装依赖",
      "text": "npm install"
    },
    {
      "@type": "HowToStep",
      "name": "配置 OAuth 或 Personal Token",
      "text": "复制 .env.example 为 .env.local,并填写 GitHub Client ID/Secret 或 ghp_xxx"
    },
    {
      "@type": "HowToStep",
      "name": "启动开发服务器",
      "text": "npm run dev;访问 http://localhost:3000"
    }
  ]
}
</script>

步骤说明

  1. 克隆仓库

    git clone <仓库地址>
    cd HyperGit
    
  2. 安装依赖

    npm install
    
  3. 配置环境变量

    • 使用 GitHub OAuth:在 [GitHub Developer settings] 创建 OAuth 应用,填写回调 URL

    • 或使用 Personal Access Token(需赋予 repo 权限):

      cp .env.example .env.local
      # 编辑 .env.local:
      # GITHUB_CLIENT_ID=...
      # GITHUB_CLIENT_SECRET=...
      # NEXTAUTH_URL=http://localhost:3000
      # NEXTAUTH_SECRET=随机字符串
      
  4. 启动并访问

    npm run dev
    # 打开 http://localhost:3000,点击“Sign in with GitHub”或“Use Personal Access Token”
    

使用实战指南

1. 直觉式快速搜索

  • 输入 @ 会列出所有仓库

  • 紧接着输入仓库名及 /,即可在该仓库内搜索文件名

  • 示例:

    @my-repo/utils.ts
    

    系统会即时展示匹配结果,无需页面刷新。

2. 分支感知搜索

  • 在仓库名后加上冒号 : 可切换分支

  • 示例:

    @my-repo:feature-xyz/config.json
    

    搜索将限定在 feature-xyz 分支的文件树中。

3. 可视化文件夹浏览

  • 点击仓库卡片进入默认分支的文件树
  • 浏览器面包屑导航位于顶部,可随时返回上级
  • 按下 Escape 键,一键折叠文件查看,快速切换到搜索模式

4. 代码片段管理

  • 在文件预览界面,拖拽或点击行号选择多行
  • 点击 “Save Snippet” 即可加入个人库
  • 选中代码后,点击 “Share Snippet” 可生成适合社交平台的截图

5. 纯键盘操作

快捷键 功能
/ 移动高亮结果,自动滚动
Enter 确认选择(仓库 / 文件 / 片段)
Escape 返回上一级 / 关闭预览 / 重置搜索
Ctrl+C 复制代码内容到剪贴板

技术栈与项目结构

以下信息摘自 README.md 与 TODO.md,真实还原:

框架:Next.js 15 + TypeScript
样式:Tailwind CSS(暗色主题 + 霓虹效果)
图标:Lucide React + Simple Icons
高亮:React Syntax Highlighter
索引:Fuse.js 本地模糊匹配
存储:Local Storage + LRU Cache
后端:GitHub REST API v3 + Trees API
部署:Vercel
HyperGit/
├─ app/          # 路由与页面
├─ components/   # 搜索栏、卡片、文件预览等
├─ hooks/        # 自定义 Hook(useGitHub, useDropdownVisibility…)
├─ lib/          # 工具函数(缓存、API 客户端等)
├─ public/       # 静态资源
├─ TODO.md       # 任务列表与开发进度
├─ README.md     # 项目总览与快速启动
└─ .env.example  # 环境变量模板

提醒TODO.md 为项目单一事实源,所有新功能、Bug、文档更新都需同步记录。


常见问题(FAQ)

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "HyperGit 与 GitHub 原生搜索相比有什么不同?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "HyperGit 完全在本地构建仓库索引,避免页面刷新与网络延迟;采用直觉化 @-mention 语法,支持分支切换与多仓库模糊搜索,兼顾键盘与鼠标操作。"
      }
    },
    {
      "@type": "Question",
      "name": "如何在私有仓库中使用 HyperGit?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "可通过 GitHub OAuth 授权或填写 Personal Access Token(需包含 repo 权限),HyperGit 会在本地缓存索引,且不上传任何代码到服务器。"
      }
    },
    {
      "@type": "Question",
      "name": "代码片段如何保存与导出?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "在文件预览页面,选中代码行后点击“Save Snippet”可保存到个人库;点击“Share Snippet”可生成截图或复制行号链接。"
      }
    },
    {
      "@type": "Question",
      "name": "HyperGit 支持手机端使用吗?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "支持响应式设计,触控友好,确保最小 44px 交互区域;可在移动端浏览器中正常使用,提供与桌面相同的功能体验。"
      }
    }
  ]
}
</script>

结语

HyperGit 的核心理念是「贴合大脑的工具」,它把常见的文件查找流程抽象为直觉化语法、零后端存储与本地缓存,让你从繁琐操作中解脱。无论你是文档撰写者、教程作者,还是多仓库维护者,都能借助 HyperGit 回归专注,用更少的时间完成更多工作。期待你亲自体验,开启“秒速搜文件”的新篇章。