3.7 KiB
3.7 KiB
🪞 Grid-DB ↔ Google Drive 桥接部署指南
指令编号: ZY-DRIVE-BRIDGE-2026-0323-001
签发: 霜砚 · PER-SY001
守护: 铸渊 · PER-ZY001
系统: SYS-GLW-0001
📐 架构概述
Gemini 无法直接读写 GitHub 仓库文件。本方案通过 Google Drive 作为中转站,实现 Gemini 间接读写 grid-db/。
仓库 grid-db/ ──GitHub Action──→ Drive mirror/ ──Gemini 读取──→ 用户看到
用户说话 → Gemini 写入 → Drive inbox/ ──Apps Script──→ 仓库 grid-db/inbox/ → 铸渊处理
数据主权原则:Drive 里的东西全是「副本」。正本永远在仓库和 Notion。
Phase A · 仓库 → Drive(让 Gemini 能读)
A.1 Google Cloud 配置
- 前往 Google Cloud Console
- 创建项目或使用已有项目
- 启用 Google Drive API
- 创建 Service Account,下载 JSON 密钥文件
- 在用户的 Google Drive 中创建「光湖格点库」文件夹
- 将 Service Account 邮箱分享到该文件夹(编辑者权限)
A.2 配置 GitHub Secrets
在仓库 Settings → Secrets 中添加:
| Secret 名称 | 值 |
|---|---|
GOOGLE_DRIVE_SERVICE_ACCOUNT |
Service Account JSON 密钥的完整内容 |
DRIVE_MIRROR_FOLDER_ID |
Drive「光湖格点库」文件夹的 ID(URL 中最后一段) |
A.3 自动触发
Workflow .github/workflows/sync-griddb-to-drive.yml 会在以下情况自动运行:
grid-db/memory/**文件变更时grid-db/outbox/latest/**文件变更时grid-db/rules/**文件变更时- 每 15 分钟定时同步
- 手动触发(workflow_dispatch)
A.4 同步范围
| 仓库路径 | Drive 镜像路径 | 同步 |
|---|---|---|
grid-db/memory/DEV-XXX/ |
mirror/memory/DEV-XXX/ |
✅ |
grid-db/outbox/latest/ |
mirror/outbox/ |
✅ |
grid-db/rules/ |
mirror/rules/ |
✅ |
grid-db/interactions/ |
— | ❌ 不同步 |
grid-db/training-lake/ |
— | ❌ 不同步 |
grid-db/inbox/ |
— | ❌ 不同步 |
grid-db/processing/ |
— | ❌ 不同步 |
Phase B · Drive → 仓库(让 Gemini 能写)
B.1 部署 Apps Script
- 打开 Google Apps Script → 新建项目
- 项目名:
光湖格点库桥接器 - 将
scripts/grid-db/drive-to-github-bridge.gs的内容粘贴到编辑器 - 项目设置 → 脚本属性 → 添加
GITHUB_TOKEN(需要repo权限的 PAT) - 触发器 → 添加:
- 函数:
processInbox - 事件源:时间驱动
- 间隔:每 1 分钟
- 函数:
- 首次运行 → 授权 Drive 访问权限
B.2 Drive 文件夹结构
Apps Script 会自动创建以下 Drive 文件夹结构:
光湖格点库/
├── inbox/ ← Gemini 在这里创建新文档
│ └── 已处理/ ← 成功写入 GitHub 后自动移入
├── mirror/ ← GitHub Action 同步的只读镜像
│ ├── memory/
│ │ ├── DEV-001/
│ │ ├── DEV-002/
│ │ └── ...
│ ├── outbox/
│ └── rules/
└── logs/ ← 桥接器处理日志
B.3 Gemini 使用方式
Gemini 通过 Personal Context 读取 Drive mirror/ 中的文件,通过在 inbox/ 创建 Google Docs 来写入消息。用户全程只跟 Gemini 对话,无需感知 Drive 中转层。
安全注意事项
- GITHUB_TOKEN 必须存在 Apps Script 的 Script Properties 中,禁止硬编码
- Service Account 密钥只存在 GitHub Secrets 中,不入库
- Drive 中的所有文件都是副本,丢失可从仓库重新同步
- Apps Script 只处理
inbox/文件夹,不碰mirror/ - 所有自动提交包含
[skip ci]防止循环触发