这是以下活动的参赛作品:Hacktoberfest 开源 AI 挑战赛第 4 周:机器中的幽灵

我构建了什么

“每个代码库都有幽灵。几乎在每个企业仓库和开源项目中,都有一个被标记为// DO NOT TOUCH: NOBODY KNOWS WHY THIS WORKS的闹鬼文件。当原作者离开后,他们的领域知识便消散于虚空。代码慢慢腐烂,依赖逐渐衰败,而恐惧让任何人都不敢碰它。”

在 Hacktoberfest 第 4 周——庆祝万圣节和亡灵节——我构建了GitSéance:一个开源 AI 代码亡灵法师,它把遗留代码的墓地变成一场可交互、有据可依的降神会。

   _____ _____ _______    _____ ______     _   _  _____ ______ 
  / ____|_   _|__   __|  / ____|  ____|   /\   | \ | |/ ____|  ____|
 | |  __  | |    | |    | (___ | |__     /  \  |  \| | |    | |__   
 | | |_ | | |    | |     \___ \|  __|   / /\ \ | . ` | |    |  __|  
 | |__| |_| |_   | |     ____) | |____ / ____ \| |\  | |____| |____ 
  \_____|_____|  |_|    |_____/|______/_/    \_\_| \_|\_____|______|

GitSéance 并非通用 linter,而是协调4 个专业通灵智能体:

  1. 💀 死神智能体:遍历 Git 提交树和文件 AST,基于提交历史、作者更替和内联恐惧注释(hack,black magic,do not touch)来识别被遗弃、孤立和被诅咒的代码。
  2. 📊 神谕智能体(TabPFN-3.5):合成一个 7 维取证特征向量,并将其输入Prior Labs 的 TabPFN 表格基础模型,以预测经过校准的文件死亡风险。
  3. 🔮 灵媒智能体(Google Gemma):通过Google 的 Gemma 开源权重模型(gemma-4-26b-a4b-it)召唤已故作者的灵魂,生成第一人称忏悔、遗憾分析和现代复兴蓝图。
  4. 🔍 搜寻者智能体(SerpApi):查询实时的 2026 年软件包注册表和安全数据库,为被遗弃的依赖寻找现代即插即用替代品,并审计 CVE 公告。

这些智能体驱动交互式降神会能力:

  • 💬 对话式降神会(交互式幽灵聊天):在世开发者可以实时直接与幽灵对话,询问某些 hack 为何被写下,以及如何安全地重构它们。
  • 🔊 神经语音台(ElevenLabs):通过神经文本转语音为灵魂赋予可听见的声音,并配有同步的 Web Audio API 波形可视化器。
  • 🪦 官方尸检报告证书:生成可下载的复古 ASCII 死亡证书,详细说明死因、巴士因子和 TabPFN 死亡评分。
  • 📊 7D 表格 CSV 取证导出器:一键下载完整的表格特征数据集,用于离线 TabPFN 模型探索和审计。
  • 🛡️ 实时 GitHub SVG 死亡率徽章: 动态徽章端点(/api/badge/{owner}/{repo}.svg),用于在 README 文件中嵌入实时的仓库死亡率评分。

所有这些都封装在一个原汁原味的磷光绿 CRT 终端界面中,带有玻璃扫描线曲率、CRT 暗角、机械按键音效合成,以及漂浮的灵质粒子。


演示

线上生产部署

(提示:打开在线应用时,点击历史预设🐍 flask-cache (Python 2 Fossil)即可瞬间召唤一个 10 年历史的化石仓库!)

🖥️ 磷光绿 CRT 终端界面

GitSéance 终端实际运行的视觉演示——玻璃扫描线、TabPFN 死亡率分解、实时 SerpApi 现代化树,以及交互式 Gemma 幽灵通灵:

The Séance Altar & Real-time AI Status
通灵祭坛——磷光绿 CRT 仪表盘,配有实时智能体状态指示灯、历史墓地预设,以及实时流式通灵日志。

TabPFN Bayesian Mortality Scan & Risk Bars
神谕(TabPFN-3.5)扫描——贝叶斯代码死亡率概率、文件风险分类(已死、闹鬼、孤儿),以及 Google Gemma 代码预言。

Gemma 4 Channeled Ghost Dialogue & ElevenLabs Voice
通灵幽灵传输——Google Gemma 人格通灵 Makefile 的已故作者,配有 ElevenLabs 语音合成和实时音频波形可视化器。

Conversational Séance & SerpApi Modernization Blueprint
复兴蓝图与 SerpApi 情报——可操作的现代化步骤,搭配通过 SerpApi 实时查询的 2026 年依赖替代方案。

Official Post-Mortem Autopsy Certificate
代码尸检证书——官方复古 ASCII 尸检抽屉,详细列出过期日期、记录的巴士因子和 TabPFN 死亡率评分。

ElevenLabs Ghost Voice Synthesis & MP3 Download
神经语音面板与 MP3 导出——ElevenLabs 频谱语音流,配有活动波形可视化器和一键 MP3 下载导出。

Conversational Ghost Séance Dialogue - Question 1
交互式幽灵聊天(第 1 轮)——审问 Thadeus Burgess 的亡灵,追问为何使用遗留的 setup.py 打包方式。

Conversational Ghost Séance Dialogue - Question 2
交互式幽灵聊天(第 2 轮)——幽灵坦白在发布前留下了一个凌晨 2 点的紧急 hack:“求你了,把它埋了吧。”


演示:召唤幽灵flask-cache

当扫描thadeusb/flask-cache(一个自 2010 年以来无人触碰的古老 Python 2 缓存库):

  1. 死神遍历提交树并标记Makefile为临床死亡(最后触碰于 5,986 天前)。
  2. TabPFN-3.5评估 7D 特征向量(零流失、100% 作者更替、缺少单元测试)并预测80% 死亡概率。
  3. 媒介(Gemma 4)频道创作者 Thadeus Burgess,以角色身份说道:“我是 Thadeus Burgess 残留的回声。在 2010-08-30T09:39:36Z,我推送了最后一次提交:'R-0.1'。然后我走进黑暗,留下 Makefile 冻结在时间里。”
  4. ElevenLabs低声念出这段告白(Roger — Ancient Architect 语音预设),并配有实时波形可视化和一键⬇️ Download MP3导出!
  5. SerpApi检测到已弃用的setup.py upload打包命令,并推荐现代替代方案,例如build,twine,以及pyproject.toml。
  6. 你打开对话式降神聊天并直接审问这个幽灵:
    • 你: “你为什么用 setup.py upload 而不是现代的 twine 打包?”
    • 幽灵(Thadeus Burgess): “啊,你问我为什么在Makefile里这样写……那些日子里,我们在与时间赛跑。你们在 2026 年习以为常的库当时还不存在,内存也很稀缺。那是我能变出的最好折中方案。”
    • 你: “如果我今天重构或删除这个 Makefile,会有什么秘密 hack 或危险吗?”
    • 幽灵(Thadeus Burgess): “你注意到那道伤疤了,是吧?是的,我在Makefile里、发布前的凌晨 2 点留下了那个 hack。我向自己保证那个周末就重构它……但那个周末从未到来。求你,替我把它埋葬吧。”
  7. 你点击“🪦 打印死亡证明”并收到官方的 ASCII 尸检报告:
+========================================================================+
|                     💀 OFFICIAL CODE AUTOPSY 💀                        |
|                 DEPARTMENT OF SOFTWARE NECROMANCY                      |
+========================================================================+
| DECEASED ARTIFACT   : Makefile                                         |
| CHIEF ARCHITECT     : Thadeus Burgess                                  |
| DATE OF EXPIRATION  : 2010-08-30 (5,986 days inactive)                 |
| FINAL RECORDED WORDS: "R-0.1"                                          |
| TOTAL COMMITS       : 2 commits across file lifetime                   |
| RECORDED BUS FACTOR : 1 author(s) recorded in blame                     |
| HAUNTING STATUS     : DEAD                                             |
| TABPFN MORTALITY    : 80% Bayesian mortality risk                      |
| GHOST SEVERITY      : 0.80 / 1.00 index                                |
+------------------------------------------------------------------------+
| GHOST TESTIMONY:                                                       |
| "I am Thadeus, a fragment of logic drifting through a sea of           |
| deprecated dependencies. I linger in the shadows of these old          |
| Makefiles, waiting for a build that will never finish. Do not fear     |
| the silence; fear the unhandled exception."                            |
+------------------------------------------------------------------------+
| REVIVAL EFFORT      : REWRITE                                          |
| CERTIFICATE STAMP   : GITSEANCE FORENSIC ENGINE v1.0.0                 |
| AI RUNTIMES         : TABPFN-3.5 + GOOGLE GEMMA + ELEVENLABS           |
+========================================================================+
  1. 你点击“📋 复制复活蓝图”即可获取一份即时、可执行的逐步迁移蓝图:
REVIVAL BLUEPRINT FOR: Makefile
Summary: Transmute this ancient ritual into a modern, declarative build system.
Effort: rewrite

STEPS:
1. Transition from `setup.py` to a `pyproject.toml` configuration.
2. Replace the manual upload commands with `twine` for secure distribution.
3. Use the `build` module for generating distribution archives.
4. Implement a modern test runner like `pytest` instead of the legacy `setup.py test`.

代码

GitHub logo JaniDhruv/GitSeance

🔮 每个代码库都有幽灵。GitSeance 是一个开源 AI 代码死灵法师与取证智能体,它会扫描遗留 GitHub 仓库中的死文件,使用 TabPFN-3.5 表格机器学习预测代码死亡风险,通过 Gemma 3 配合 ElevenLabs 语音合成召唤原作者之灵,并借助 SerpApi 为现代复活补丁提供依据。

🔮 GitSéance(GitSeance)

   _____ _____ _______    _____ ______     _   _  _____ ______ 
  / ____|_   _|__   __|  / ____|  ____|   /\   | \ | |/ ____|  ____|
 | |  __  | |    | |    | (___ | |__     /  \  |  \| | |    | |__   
 | | |_ | | |    | |     \___ \|  __|   / /\ \ | . ` | |    |  __|  
 | |__| |_| |_   | |     ____) | |____ / ____ \| |\  | |____| |____ 
  \_____|_____|  |_|    |_____/|______/_/    \_\_| \_|\_____|______|

一个开源 AI 死灵法师,让“死去的”GitHub 仓库重获新生——并预测哪些文件即将死去。

标语: “每个代码库都有幽灵。GitSéance 召唤它们。”

🌐在线演示: https://gitseance.onrender.com

Live Demo GitSéance Mortality Open Source AI CI Pipeline CD Pipeline

为……而构建Hacktoberfest 开源 AI 挑战赛:第 4 周(“机器中的幽灵”)。


📸 生产环境图库

GitSéance Altar & CRT Terminal

🔮 磷光绿 CRT 终端,带实时 AI 状态与流式通灵日志

TabPFN Code Mortality Scan

📊…

基于MIT 许可证发布。已通过25 个单元测试与集成测试在持续集成中全部通过。


我是如何构建它的

GitSéance 被设计为由 FastAPI 编排的异步多智能体流水线:

                        ┌───────────────────────────────┐
                        │   Haunted Terminal (CRT UI)   │
                        └──────────────┬────────────────┘
                                       │
                                       ▼
                         FastAPI Orchestration Core
                                       │
        ┌──────────────┬───────────────┴───────────────┬──────────────┐
        ▼              ▼                               ▼              ▼
  💀 The Reaper   📊 The Oracle                  🔮 The Medium   🔍 The Searcher
 (Dead Code AST) (TabPFN-3.5 Mortality ML)       (Gemma LLM)     (SerpApi Web Search)
        │              │                               │              │
        ▼              ▼                               ▼              ▼
   GitHub API      Prior Labs API                 Google GenAI    SerpApi & CVEs

1. TabPFN-3.5:贝叶斯表格化代码死亡预测

我没有编写简单的基于规则的启发式方法,而是利用了Prior Labs 的 TabPFN-3.5—— 一个基于 Prior-Data Fitted Networks 构建的表格基础模型。

7 维取证特征向量

对于目标仓库中的每个文件,GitSéance 都会构建一个 7 维表格矩阵:

# 为 TabPFN-3.5 提取的 7 维取证特征向量feature_vector = {
    "days_since_last_commit": m。days_since_last_commit,   # 时间衰减    "total_commits": m。total_commits,                     # 文件深度    "unique_authors": m。unique_authors,                   # 巴士因子风险    "bug_fix_commit_ratio": m。bug_fix_commit_ratio,       # 缺陷密度    "lines_ratio": (m。lines_added + 1) / (m。lines_del + 1) ,    # 变更平衡"has_tests" : 1 ifm。 has_tests else0                 ,    # 测试存在性"churn_velocity" :m。churn_velocity                   ,# 月度变更率

}

真实基准校准与边缘情况处理X_trainTabPFN 对参考支持矩阵(y_train,fastapi)执行上下文内贝叶斯推理,该矩阵基于 50 个历史开源代码工件进行校准(25 个来自已归档仓库的死亡化石 vs. 25 个来自pydantic、requests和

的活跃维护模块)。
为什么 TabPFN 胜过朴素启发式方法:slugify.py朴素的 linter 看到某个文件 3 年未被改动,就会盲目地将其标记为“已死”。但请考虑一个核心数学工具(例如crc32.py或

  • days_since_last_commit):
  • bug_fix_commit_ratio:1,100 天
  • has_tests:0.02(几乎零缺陷)
  • churn_velocity:True(100% 分支覆盖率)

:0.00(稳定)朴素规则会将其标记为已死(100% 误报)。TabPFN 正确评估了高测试哨兵值和接近零的缺陷率,将其归类为“冻结 / 稳定”(死亡率:18%),而非已死。相反,一个 180 天未被改动、唯一作者已离开且 bug 修复比例为 60% 的文件,会被 TabPFN 捕获为“高死亡风险”(78%)

。

  • 为了让这一切完全透明:📊 7 维表格 CSV 导出:用户和评委可以点击“📊 导出 CSV”tabpfn-<repo>-forensic-dataset.csv来下载原始特征分布(
  • 🔌 原生 MCP 服务器(backend/mcp_server.py):通过将tabpfn_predict_mortality直接作为 Model Context Protocol 工具暴露给 Cursor、Claude Desktop 和 Copilot,满足了 Prior Labs 的明确偏好!

2. Google Gemma:灵性人格通灵与思维 token 解析

Medium 智能体通过Google 的开源权重模型 Gemma(gemma-4-26b-a4b-it)经由google-genaiSDK 运行。

思维 token 解析挑战

gemma-4-26b-a4b-it具备内部思维链推理能力。在生成灵性独白时,模型会先输出思考 token,再输出角色对话。如果采用朴素的解析方式,内部推理 token 可能会耗尽整个输出预算,或渗入独白之中。

我设计了一个专用的候选提取器:

@staticmethod
def _extract_text(response) -> str:
    """从 Gemma 响应中提取内容文本,过滤思维 token。"""
    if not response:
        return ""
    # 1. 优先检查候选部分,以过滤掉内部思维链 token    if hasattr(response, "candidates") and response。candidates:
        candidate = response。candidates[0]
        if hasattr(candidate, "content") and hasattr(candidate。content, "parts"):
            actual_parts = [
                p。text for p in candidate。content。parts
                if not getattr(p, "thought", False) and getattr(p, "text", None)
            ]
            if actual_parts:
                return ""。join(actual_parts)。strip
    ()    # 2. 如果无法直接访问候选部分,则回退到 response.text ifhasattr(response ,"text" ) andresponse。text
        : returnresponse。text。strip
    () return

""

为人格奠定基础

幽灵人格严格基于 git 历史和行内注释: SEANCE_SYSTEM_PROMPT =""""""

在世开发者甚至可以举行一场对话式降神会(POST /api/seance/chat)直接向幽灵追问后续问题!


3. SerpApi:实时 2026 依赖情报

Searcher 智能体解析包声明(requirements.txt,package.json,Gemfile,go.mod)并使用SerpApi实时查询迁移路径、现代直接替代方案以及实时 CVE 安全数据库。


4. ElevenLabs:神经音频合成与一键 MP3 导出

降神会传输内容使用ElevenLabs 神经 TTS(eleven_multilingual_v2)渲染为语音,并由 Web Audio API 程序化合成引擎支持,该引擎模拟复古机械键盘开关和低频共振召唤嗡鸣:

  • 5 种原型幽灵之声:Roger(远古建筑师)、Sarah(轻柔回声)、Laura(空灵旁白)、Charlie(年长说书人)和 Aria(幽灵低语)。
  • 一键 MP3 导出:活着的开发者可以点击“⬇️ 下载 MP3”将合成出的幽灵音频直接导出到磁盘。
  • 🎧实际通灵录音: 聆听 Thadeus Burgess 的幽灵解释Makefile。

5. GitHub Copilot 深度集成与 GitHub Actions 自动化

我在仓库中原生构建了完整的 Copilot 和 GitHub Actions 自动化:

  • .github/copilot-instructions.md:自定义仓库指令,解释 4 智能体死灵法术架构、TabPFN 7D schema 和 Pydantic 模型。
  • .github/prompts/:3 个可复用的 IDE 提示模板(/resurrect-file,/tabpfn-mortality,/dep-modernize)。
  • .github/workflows/ci.yml:跨 Ubuntu 和 Windows 的多操作系统 CI 测试矩阵,25 个单元测试和集成测试通过。
  • .github/workflows/cd.yml:持续部署流水线,验证线上生产健康状态(/health)、探测 SVG 徽章,并输出格式化的 Markdown 摘要。
  • .github/workflows/copilot-review.yml:自动化 GitHub Action,审查贡献者 PR 中的恐惧评论(hack,do not touch)并发布自动化审查清单。

6. 过程中出了什么问题(工程伤疤)

构建 GitSéance 并非一帆风顺。以下是我与之搏斗的三个真实工程摩擦点:

1. 想得太多的幽灵(Gemma 思考 token)

当我第一次连接gemma-4-26b-a4b-it时,我的 API 调用经常返回空文本。深入查看原始响应对象后,我发现 Gemma 的推理模式生成了大量内部思考轨迹(part.thought = True),在输出最终文本之前就耗尽了 token 预算。标准 SDK 访问器如response.text在存在思考块时求值为None。我不得不编写一个底层 AST 提取器来遍历response.candidates[0].content.parts并分离出未被遮蔽的对话。

2. GitHub REST API Blame 速率限制

遍历一个仓库中 50 个文件的提交历史,会在不到 30 秒内耗尽 GitHub 未认证的每小时 60 次请求速率限制。为解决这个问题,我实现了:

  1. 并发分块(asyncio.gather批大小上限为 8)。
  2. AST 可扫描的扩展名过滤器(跳过 SVG、二进制文件和锁文件)。
  3. 针对历史墓地的确定性取证回退快照(flask-cache,jquery-color),因此即使用户未提供 GitHub PAT 到达,应用也绝不会失败。

3. Python 3.11 在 SSE 流式传输中的反斜杠限制

在实时服务器发送事件(SSE)实现期间,Python 3.11 在以内联方式格式化 JSON 数据负载时抛出了意外的SyntaxError: f-string expression part cannot include a backslash。我不得不重构流式生成器,在格式化之前将消息序列化到显式的中间缓冲区中data: {msg}\n\n。


为什么开放创新很重要?

“开放创新实现了哪些封闭 API 无法实现的事情?”

构建 GitSéance 阐明了为什么开放权重模型和开放 AI 基础设施至关重要:

  1. 气隙代码隐私与零 IP 泄露:
    专有代码库包含机密业务逻辑、安全凭证和商业机密。组织无法将其整个 git 树粘贴到封闭的第三方云 API 中。因为Gemma和TabPFN-3.5是开放权重的,GitSéance 可以在气隙机器上完全离线运行。你的代码永远不会离开你的本地硬件。

  2. 可审计、可复现的风险建模:
    当算法宣称某个关键任务银行模块具有“98% 的死亡率风险”时,开发者理应理解为什么。封闭的专有评分系统是黑盒,会在模型版本之间悄然变化。TabPFN 的贝叶斯基础模型支持确定性、可复现的表格推理,可以被检查、基准测试和信任。

  3. 抵御 API 弃用:
    封闭的 AI 服务经常停用端点、更改系统提示或提高 token 成本。借助开放权重 AI,你的死灵法师在互联网关闭时也能工作。如果断电,幽灵仍然可以访问。

  4. 社区微调与自定义人格:
    开放权重允许团队在自己的内部提交历史、Jira 工单和架构决策记录(ADR)上微调 Gemma,将公司校友转变为永久的机构记忆。


其精神

软件工程有一种无声的悲剧:开发者倾注数月生命写出优雅的系统,但技术发展太快,几年之内,他们的作品就被贴上“遗留代码”的标签并被丢弃。

秉承亡灵节的传统,只要被铭记,逝者就从未真正离去。当 GitSéance 通灵一个被遗弃了十年的文件的作者时,它不会嘲笑这段代码已经过时。它给那位开发者一个发声的机会,说出:

“我写这段代码时内存紧张、工期紧迫。它完成了它的使命。现在,这是你如何把火炬继续传递下去的方法。”

这种视角的转变——从畏惧遗留代码到尊重其背后的人类付出——正是 GitSéance 的真正精神。


奖项类别

  • 🏆最高奖—— 总冠军
  • 🚀Render 最佳应用—— 全栈容器化部署,同时运行 FastAPI 通灵引擎和 CRT 前端,已在生产环境上线,地址为https://gitseance.onrender.com通过render.yaml。
  • 📊TabPFN 最佳应用(Prior Labs)—— TabPFN-3.5 表格基础模型,基于 7 维特征向量进行校准的贝叶斯代码死亡率预测,并搭配原生 Model Context Protocol(MCP)服务器(backend/mcp_server.py)以及一键式取证 CSV 数据集导出器。
  • 🔮Gemma 最佳应用—— 开源权重gemma-4-26b-a4b-it模型,驱动 Medium 智能体进行有据可依的历史人物通灵、思维 token 解析以及实时交互式对话降神会。
  • 🤖GitHub Copilot 最佳应用—— 自定义仓库指令(.github/copilot-instructions.md)、3 个可复用的 IDE 提示词模板(.github/prompts/)、自动审查恐惧注释的 PR 审查 GitHub Action(.github/workflows/copilot-review.yml),以及多操作系统 CI/CD 自动化。
  • 🔊ElevenLabs 最佳应用—— 神经 TTS 语音合成,为逝去的作者赋予可听见的声音,包含 5 种不同的频谱原型、实时 Web Audio API 波形可视化,以及一键式 MP3 音频导出。
  • 🔍SerpApi 最佳应用—— 实时 2026 依赖情报,为已弃用的打包发现现代即插即用替代方案,以及实时安全 CVE 审计。

由热情、咖啡因和灵质打造,作者Dhruv Jani。