Repo 维护很无聊,所以我把它变成了一个 RPG,使用 GitHub Copilot CLI。

发布: (2026年2月12日 GMT+8 00:33)
10 分钟阅读
原文: Dev.to

Source: Dev.to

这是对GitHub Copilot CLI Challenge的提交

我构建的

git‑quest (@maplekuo/git-quest) 是一个 MCP(Model Context Protocol)服务器,直接集成到 GitHub Copilot CLI 工具系统中。

关键特性

  • 🎮 5 MCP 工具scan_quests, accept_quest, verify_quest, player_stats, quest_log
  • 📜 3 个扫描器missing‑docs (★☆☆), todo‑hunter (★★☆), missing‑tests (★★★)
  • 🐉 Boss 任务 – 需要全面清理的多 issue 文件
  • ⚔️ 6 个等级 – Novice → Apprentice → Journeyman → Expert → Master → Legend
  • 🏅 6 个徽章 – First Blood, Scribe, Exterminator, Guardian, Dragon Slayer, Perfectionist
  • 💾 持久进度 通过仓库中的 .git‑quest.json 实现
  • 🔧 单命令设置npx @maplekuo/git-quest setup

技术栈: TypeScript, Node.js, @modelcontextprotocol/sdk(stdio 传输)。除 MCP SDK 外零外部依赖。

演示

以下是对一个刻意混乱的演示仓库(缺少 JSDoc、散落的 TODO、临时变通方案以及未测试的工具函数)进行 git‑quest 操作的完整演练。

步骤 1:扫描任务

MCP 连接和任务板扫描显示发现 16 条任务

一条命令。Copilot CLI 连接到 git‑quest MCP 服务器并扫描仓库。发现 16 条任务——每条都有名称、难度评级、类型和位置。任务板看起来像地下城地图:

  • “未记录的 AuthManager”(★☆☆)
  • “被诅咒的变通方案”(★★☆)
  • “净化 utils.ts”(★★★★ Boss)

步骤 2:接受任务

接受 “未记录的 AuthManager” 任务

accept_quest 1 – 你已锁定任务。目标:为 src/auth.ts 中的 AuthManager 类添加 JSDoc 文档。难度:★☆☆。奖励:10 XP

步骤 3:让 Copilot CLI 完成任务

Copilot CLI 思考并完成任务,获得 +10 XP

Copilot CLI 验证任务完成,获得 +10 XP

我说“完成此任务”,Copilot CLI 接管了。它:

  1. 读取源文件。
  2. 分析类结构。
  3. 为每个方法编写完整的 JSDoc。
  4. 编辑文件。
  5. 调用 verify_quest 检查结果。

✅ 任务完成。+10 XP – 无需复制粘贴,无需切换标签页。

步骤 4:更难的任务 — 修复 HACK

接受 “被诅咒的变通方案” HACK 任务

任务 7:“被诅咒的变通方案”——在第 32 行的认证模块中埋了一个 HACK 注释。这不仅仅是添加文档;它需要理解 为什么 会出现该变通方案,并用合适的实现替代它。

步骤 5:Copilot 的深度推理 🔥

Copilot CLI 对会话管理架构进行深度推理

在被要求修复 HACK 时,Copilot CLI:

  • 对会话管理架构进行推理。
  • 考虑了多种方案(基于 HMAC 的令牌、会话映射、令牌过期策略)。
  • 在写下任何代码之前就做出了架构决策。

它的表现更像是一名资深工程师,而不是单纯的代码补全工具。

步骤 6:升级! 🎉

任务完成,获得 +15 XP 并升级为 Apprentice

完成 Boss 任务后,我获得 15 XP,并从 Novice 升级到 Apprentice。进度保存在 .git‑quest.json 中,下次运行 scan_quests 时会看到新的挑战在等待。

亲自尝试

# 安装并设置
npx @maplekuo/git-quest setup

# 扫描当前仓库的任务
npx @maplekuo/git-quest scan_quests

# 接受任务(将 <id> 替换为任务编号)
npx @maplekuo/git-quest accept_quest <id>

# 让 Copilot CLI 完成任务
npx @maplekuo/git-quest complete_quest

# 验证进度
npx @maplekuo/git-quest player_stats

祝你冒险愉快! 🚀

任务进度

HACK 任务完成 – src/auth.ts 已更新为正确的会话管理

HACK 任务已完成。src/auth.ts 新增了 46 行正确的会话管理代码,取代了原来的 2 行 hack 代码。+15 XP。升级为 Apprentice(学徒)。 多巴胺的刺激是真实的。

第 7 步:玩家属性

最终玩家属性显示 Level Apprentice, 25 XP, 2 quests, First Blood badge

  • 等级: Apprentice(学徒)
  • XP: 25
  • 已完成任务数: 2
  • 获得徽章: First Blood 🩸

属性卡让人想继续前进——还有 14 个任务未完成,需再爬升 5 个等级。

第 8 步:Boss 任务 🐉

Boss 任务 – 用多步骤计划净化 utils.ts

Boss 任务: “🐉 净化 utils.ts” (★★★★) — 一个存在多项问题的文件,需要全部修复:

  • 缺少 JSDoc
  • 解析逻辑损坏
  • 分散的 TODO
  • 没有测试

Copilot CLI 计划了一个多步骤攻击:

  1. 添加文档
  2. 修复解析器
  3. 删除 TODO
  4. 创建测试文件

它读取 utils.ts,编辑了它(+48 行,‑9 行),从零创建了 utils.test.ts+30 行),并调用 verify_quest。Boss 并不轻易倒下——验证阶段捕获了剩余问题,Copilot 诚实地反馈:

“告诉我需要针对的具体检查项,或者我可以重新扫描并迭代。”

这就是验证系统的魅力。它不是一个橡皮图章;Boss 战真的需要多轮

Source:

我的 GitHub Copilot CLI 使用体验

构建 git‑quest:一次性故事

我几乎在一次 Copilot CLI 会话中完成了 git‑quest 的构建。只写了一个完整的提示——本质上是一个覆盖全部项目结构、5 个 MCP 工具、3 个扫描器、游戏系统、setup CLI 和示例仓库的 PRD——Copilot CLI 一次性生成了全部代码:

  • 10 个 TypeScript 源文件
  • 零 TypeScript 错误的干净构建
  • 包含所有工具处理器的 363 行 index.ts
  • 已连通的 setup CLI、示例仓库以及 package.json

它并非 完全 免手动。过程中我遇到了一些小障碍:

  • MCP 配置路径 – Copilot CLI 在 ~/.config/github-copilot/mcp.json 生成了配置,但正确路径应为 ~/.copilot/mcp-config.json。这点文档不够明确,我通过反复尝试才发现。
  • 构建输出不匹配 – 配置指向 dist/index.js,而 TypeScript 实际编译到 dist/src/index.js。一个小路径错误,却导致 MCP 服务器静默加载失败。
  • “为什么不工作?”阶段 – 我第一次扫描时失败,因为 Copilot CLI 读取了 README,而不是调用 MCP 工具。原来 MCP 服务器根本没有连接。调试 MCP 服务器加载仍然很粗糙——失败时没有明确的错误信息。
  • 验证边缘情况 – 最初的 JSDoc 验证搜索窗口太窄(函数前后 ±5 行)。出现了几次误报后,我把搜索窗口扩大到 ±10/±15 行,问题得以解决。

核心开发过程是真实的:一次提示、一次会话、一个可运行的 MCP 服务器。迭代全部体现在细节上——配置路径、验证逻辑、npm 发布的怪癖。

让我惊讶的地方

最大的惊喜是看到 Copilot CLI 自主 使用 git‑quest 的工具。我原本以为需要手动编排每一步(scan → accept → edit → verify),结果 Copilot CLI 自己理清了工作流。它调用 accept_quest,读取相应文件,进行编辑,调用 verify_quest,当验证失败时再次编辑并重试——全程无需我显式指示。

这正是 MCP 协议的体现。通过公开结构化工具并提供清晰描述,Copilot CLI 能准确判断何时调用它们以及预期的工作流是什么。git‑quest 不仅是一个 使用 Copilot CLI 构建的项目——它还是一个让 Copilot CLI 更好完成任务 的项目。

Copilot CLI 的双重角色

该项目具有一种我觉得很有意思的元质量:

角色描述
Copilot CLI 作为开发者工具用来构建 git‑quest 本身。
Copilot CLI 作为任务求解器用户使用它来完成 git‑quest 生成的任务。
Copilot CLI 作为 MCP 客户端调用 git‑quest 的工具进行扫描、接受和验证。

它始终是 Copilot CLI 在发挥作用。我用来构建项目的工具,就是运行项目的同一个工具。

Try It Yourself

# Install and set up (auto‑configures MCP for Copilot CLI)
npx @maplekuo/git-quest setup

# Start Copilot CLI
copilot

# Scan your repo for quests
# > use the git-quest scan_quests tool to scan this repo

# Accept and complete a quest
# > accept quest 1
# > complete this quest

# Check your progress
# > show my player stats

适用于任何仓库。代码库越混乱,找到的任务就越多。 🎮

仓库维护很枯燥,但升级打怪永远不会腻。

⚔️ 去完成任务吧。

0 浏览
Back to Blog

相关文章

阅读更多 »