尝试使用 AI 结对编程制作技术博客 (Antigravity + MCP)
分享利用基于 Gemini 的 AI 编程助手 Antigravity 和 MCP 工具搭建 Next.js 15 技术博客的经历。包含 AI 开发技巧和实战故障排除案例。
本文由 AI 从韩语机器翻译,部分表达可能与原文有所不同。
阅读原文(韩语)前言
最近 AI 编程助手的发展令人眼花缭乱。虽然已经出现了 GitHub Copilot、Cursor、Cody、Continue 等各种工具,但这次我尝试了一个稍微特别的家伙。
那就是 Antigravity —— Google DeepMind 团队打造的 "Agentic AI"(代理型 AI)编程助手。它不仅仅是代码自动补全,还是一个能够实际创建文件、执行终端命令、操作浏览器,甚至进行 GitHub 提交/推送的家伙。
本文将分享利用 Antigravity 和 MCP (Model Context Protocol) 从零开始搭建这个博客的经验。

技术栈 (Tech Stack)
本博客使用的技术:
| 类别 | 技术 | 说明 |
|---|---|---|
| 框架 | Next.js 15 | App Router, React Server Components |
| 内容 | Velite | 类型安全地处理 MDX/Markdown |
| 样式 | Tailwind CSS + shadcn/ui | 暗黑极简设计系统 |
| 数据库 | SQLite (better-sqlite3) | 存储评论、翻译、蜜罐日志 |
| 认证 | Auth.js (NextAuth v5) | GitHub OAuth 管理员认证 |
| 翻译 | Gemini API | 基于 AI 的自动翻译 |
| 部署 | Ubuntu Server + PM2 | Nginx 反向代理 |
| CI/CD | GitHub Actions | SSH 自动部署 |
| 代码高亮 | rehype-pretty-code | tokyo-night 主题 |
博客结构
arang-blog/
├── content/ # 콘텐츠 (Velite)
│ ├── posts/ # 블로그 글 (.md)
│ └── writeups/ # CTF Writeup (.md)
├── data/
│ └── blog.db # SQLite (댓글, 번역, 로그)
├── public/
│ ├── images/ # 이미지 파일
│ └── uploads/ # 업로드된 파일
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── admin/ # 관리자 페이지
│ │ ├── api/ # API 라우트
│ │ ├── posts/ # 블로그 글 페이지
│ │ └── writeups/ # Writeup 페이지
│ ├── components/ # React 컴포넌트
│ ├── hooks/ # Custom Hooks
│ └── lib/ # 유틸리티 (DB, Auth, i18n)
├── velite.config.ts # Velite 설정
└── next.config.ts # Next.js 설정启动:通过一个初始提示词开启项目
这个博客的开发始于仅仅一个提示词(Prompt):
# Project Kickoff: Arang Tech Blog (Deep Dark & Aesthetic)
**목표:** Next.js 15 + Velite + Shadcn/ui를 사용한 CTF/기술 블로그 구축.
**현재 상황:** 로컬 폴더만 생성됨. Git 초기화 안 됨.
**Target Repo:** `https://github.com/JaewookYou/arang-blog`
---
## 🚨 Phase 0: Git Initialization (Handshake)
1. **상태 확인:** `filesystem`으로 현재 폴더가 비어있는지 확인
2. **명령어 제공:** Git 초기화 및 원격 연결 명령어 세트 작성
3. **대기:** 실행 후 "연결 완료"라고 응답하면 Phase 1 시작
## 🧠 Phase 1: Architecture & Setup (After Git Init)
Git 연결이 확인되면, `sequential-thinking`을 사용하여:
1. **Stack Strategy (Context7 필수):** Next.js 15, Velite 설정
2. **Project Management (GitHub MCP):** Issue 생성으로 로드맵 정리
3. **Implementation Start:** 기본 스캐폴딩 파일 생성仅凭这一个提示词,AI 就完成了:
- 检查文件夹状态
- 提供 Git 初始化命令
- 在 GitHub 上创建 "Initial Setup & Roadmap" Issue
- 生成 package.json, next.config.ts 等基础文件
从空文件夹到项目结构完成,大约只花了 10 分钟。
全局规则 (Global Rule):定义 AI 的性格
Antigravity 的强大功能之一是 Global Rule。可以设置适用于所有对话的规则:
# 🚀 Global Persona & Identity
- You are a **Senior Full-Stack Engineer** and **Security Researcher (CTF Player)**.
- **Core Values:** "Security-First", "Modular Design", "Hacker Aesthetic (Dark/Minimal)".
- **Language Protocol:** All explanations MUST be in **Korean (한국어)**.
# 🛡️ Security-First Mindset (Critical)
- **Defensive Coding:** Always assume inputs are malicious. Validate everything.
- **Secrets:** Never hardcode API keys. Always use `.env`.
# 🛠️ MCP Toolchain Protocol (Adaptive)
1. **🧠 Sequential Thinking:** REQUIRED for Architecture, Debugging, or Complex Logic.
2. **🔍 Context7:** ALWAYS fetch latest docs for libraries.
3. **🐙 GitHub (API):** Create Issues for planning, PRs for features.
4. **📂 Filesystem:** Direct code manipulation.
5. **🦁 Brave Search:** For error solutions and design references.
# ⚡ Autonomous Execution Protocol
- **Do NOT ask the user** to run commands. Execute directly.
- **Trial & Error:** If a command fails, READ the error, PLAN a fix, EXECUTE.
- **Verification:** After running a command, verify before reporting back.得益于这个规则:
- AI 始终用韩语进行说明(包括代码注释)
- 自动考虑安全视角(输入验证、使用 .env)
- 执行命令时自主进行,无需逐一请求许可
- 发生错误时尝试自行解决后报告
活用 MCP (Model Context Protocol)
什么是 MCP?
MCP 是将外部工具和数据源连接到 AI 系统的标准协议。Antigravity 通过各种 MCP 服务器扩展功能。
我实际使用的 MCP 工具:
| MCP 服务器 | 用途 | 效用 |
|---|---|---|
sequential-thinking |
将复杂问题分解为步骤进行思考 | 架构设计、调试必备 |
filesystem |
文件读/写、目录浏览 | 直接修改代码 |
github-mcp-server |
创建 PR、Issue 管理、提交 | 项目管理自动化 |
brave-search-mcp-server |
网络搜索(解决错误、查找文档) | 搜索最新信息 |
context7 |
查询库文档(最新 API) | 防止幻觉 (Hallucination) |
Sequential Thinking:解决复杂问题的核心
在架构设计或调试等复杂任务中,sequential-thinking 大放异彩。实际上,在为博客添加 4 种语言的多语言支持时,使用的就是这种方法:
// Sequential Thinking으로 문제 분해
thought: "다국어 지원 아키텍처 설계"
steps: [
"1. 현재 locale 상태 관리 방법 파악",
"2. 서버/클라이언트 컴포넌트 구분",
"3. 쿠키 기반 언어 저장",
"4. t() 함수로 번역 텍스트 조회",
"5. 날짜 포맷 로케일화",
"6. 게시글 번역은 DB에 저장하여 관리"
]Browser Subagent:视觉验证自动化
最令人印象深刻的功能是 Browser Subagent。AI 可以直接打开浏览器查看页面、截图并识别问题。
// AI가 실제로 실행한 브라우저 검증
browser_subagent({
Task: `
1. Navigate to https://blog.arang.kr/posts
2. Wait 3 seconds for page load
3. Scroll down to check all post cards
4. Capture screenshot of the page
5. Switch language to English using the globe icon
6. Verify content changed to English
`,
RecordingName: "i18n_verification"
});多亏了这个功能,不再是**“部署后请您亲自确认一下”,而是变成了“已经确认了,截图在这里”**。

完成的功能
1. 基于 Next.js 15 的静态博客
- Velite: MDX/Markdown 内容管理 + 类型安全
- App Router: 最新 Next.js 路由 (Server Components)
- SSG: 静态站点生成,加载速度快
- 代码高亮: rehype-pretty-code (tokyo-night 主题)

2. 支持 4 种语言的多语言支持
- 支持韩语、英语、日语、中文
- 通过 Gemini API 自动翻译(保留代码块/图片)
- 将翻译存储在 SQLite DB 中(转换为 HTML 后存储)
- 基于访问国家/浏览器语言自动检测

3. Admin 仪表板
GitHub OAuth 认证后可使用的管理员功能:
- 文章撰写/修改: Markdown 编辑器(自动上传剪贴板图片)
- 翻译管理: 生成 AI 翻译、修改/删除已保存的翻译
- 评论管理: 查询及删除评论
- 静态页面编辑: 编辑 Home, About 页面
- 蜜罐日志: 追踪
/wp-admin,/.env等攻击尝试

4. GitHub Actions CI/CD
在 Admin 中撰写文章 → GitHub 提交 → 触发 Actions → 服务器自动部署
# .github/workflows/deploy.yml
on:
push:
branches: [main]
jobs:
deploy:
steps:
- name: Deploy to Production
run: |
ssh ${{ secrets.SSH_HOST }} "
cd /home/arang/web/blog
git pull
npm run build
pm2 reload arang-blog
"5. 评论系统
- 基于 SQLite 自托管(不依赖外部服务)
- 支持楼中楼(1级嵌套)
- 匿名 昵称输入
- 管理员删除 功能

6. 搜索功能
- Posts 和 Writeups 综合搜索
- 实时下拉 结果
- 支持多语言 UI

7. 安全功能
- 蜜罐 (Honeypot): 对 Bot 攻击路径(
/wp-admin,/.env,/phpmyadmin)的访问进行记录 - 速率限制 (Rate Limiting): 限制评论撰写频率
- XSS 防护: HTML sanitization
实战故障排除案例
1. output: 'standalone' 兼容性问题
问题: 在 PM2 + npm start 环境下找不到 next/dist/compiled/cookie 模块
原因: output: 'standalone' 设置需要以 .next/standalone/server.js 运行,但使用 npm start 运行时发生冲突
解决:
// next.config.ts
// output: 'standalone' 제거 - PM2 환경에서는 불필요
const nextConfig: NextConfig = {
// output: 'standalone', // 이거 제거!
};2. MDX 注释语法冲突
问题: Admin 中撰写的文章包含 <!-- 注释 --> 时构建报错
解决: 在 Commit API 中自动转换
// HTML 주석 → MDX 주석 자동 변환 (MDX 파일만)
if (ext === ".mdx") {
content = content.replace(/<!--([\s\S]*?)-->/g, '{/*$1*/}');
}3. GitHub Actions SSH 连接时 pm2 not found
问题: SSH 会话中未加载 fnm 环境变量
解决:
# .github/workflows/deploy.yml
eval "$(fnm env)"
source ~/.bashrc
pm2 reload arang-blog4. 翻译时 Markdown 结构损坏
问题: 代码块、图片路径在翻译过程中损坏
解决: 将代码块/图片替换为占位符 → 翻译 → 还原
// 번역 전: 코드블록 추출
const { processed, codeBlocks } = extractCodeBlocks(content);
// 번역 후: 복원
translatedContent = restoreCodeBlocks(translatedContent, codeBlocks);AI 开发的优缺点
优点
| 项目 | 说明 |
|---|---|
| 速度 | 重复性工作(CRUD、应用 i18n)非常快 |
| 学习曲线降低 | 初次使用的库也能通过 Context7 立即上手 |
| 实时验证 | 通过 Browser Subagent 在部署前进行视觉确认 |
| 自主运行 | 一句“帮我构建并部署”就搞定 |
缺点及注意事项
| 项目 | 说明 |
|---|---|
| 上下文丢失 | 对话变长后会忘记之前讨论的内容 |
| 切勿过信 | 即使说“完成了”,也必须亲自确认 |
| 安全注意 | API 密钥硬编码风险 - 通过 Global Rule 防止 |
结论
Antigravity + MCP 的组合确实非常强大。它超越了单纯的代码自动补全,能够一次性处理项目管理、浏览器验证、自动部署。
特别是 Global Rule 的设置是核心。如果定义了 AI 的性格和行为原则:
- 自动应用安全原则
- 保持语言/文化的一致性
- 通过自主运行提高生产力
但归根结底 AI 是工具。把握方向和验证质量仍然是人的职责。
在制作这个博客的过程中,我与 AI 共度了大约 50 个小时。起初是“这真的行吗?”的怀疑,但现在却是“没有它该怎么开发?”的想法。
未来 AI 工具还将继续发展。重要的是不要害怕变化,积极尝试新工具。
🤖 本帖由 AI (Antigravity) 撰写。
与我一起制作这个博客的 AI 亲自整理了开发经验。 当然,最终的审核和批准是由人类完成的 😄
评论