Gemini内存同步Skill gemini-memory-sync

这个技能提供了同步 Claude Code (CLAUDE.md) 和 Gemini CLI (GEMINI.md) 内存文件的模式,涵盖导入语法、漂移检测和单向同步。适用于设置 GEMINI.md、检测内存文件间的上下文漂移、理解 @import 语法或解决同步问题。关键词:同步内存、同步上下文、claude.md gemini.md、内存导入、上下文漂移、@import、memport。

DevOps 0 次安装 0 次浏览 更新于 3/11/2026

name: Gemini 内存同步 description: 用于同步 CLAUDE.mdGEMINI.md 内存文件的模式。涵盖导入语法、漂移检测和单向同步。在设置 GEMINI.md、检测内存文件间的上下文漂移、理解 @import 语法或解决同步问题时使用。 allowed-tools: Read, Glob, Grep, Bash

Gemini 内存同步

文档委托

文档来源: 有关权威的内存/导入语法和当前功能,请查询 gemini-cli-docs 技能。 此技能提供同步模式;gemini-cli-docs 提供官方 Gemini CLI 文档。

概述

此技能提供了保持 Claude Code (CLAUDE.md) 和 Gemini CLI (GEMINI.md) 内存文件同步的模式。核心原则是 CLAUDE.md 作为真相源GEMINI.md 导入并添加覆盖。

何时使用此技能

关键词: 同步内存、同步上下文、claude.md gemini.md、内存导入、上下文漂移、@import、memport

在以下情况下使用此技能:

  • 为新项目设置 GEMINI.md
  • 检测内存文件间的漂移
  • 理解导入语法
  • 解决同步问题

核心原则:单一真相源

CLAUDE.md (真相源)
    │
    │ @import
    ▼
GEMINI.md (导入 + 覆盖)

为什么 CLAUDE.md 是源:

  • Claude Code 是主要的开发环境
  • CLAUDE.md 已在大多数项目中建立
  • 单点更新减少维护负担
  • Git 历史在一个地方显示上下文演进

GEMINI.md 结构

推荐模板

# GEMINI.md

@CLAUDE.md

## Gemini 特定覆盖

您是 Gemini CLI。您的独特能力:
- 大上下文窗口 (Flash) / 非常大 (Pro)
- 交互式 PTY shell (vim, git rebase -i, htop)
- 具有即时回滚的检查点
- 用于工具控制的策略引擎
- 原生 Google Cloud 认证

### 何时使用您的优势

- **批量分析:** 使用大上下文进行代码库范围探索
- **交互式工具:** 处理 vim、git 交互命令
- **风险操作:** 使用沙箱和检查点
- **第二意见:** 提供独立验证

### 模型选择

- 使用 **Flash** 进行批量分析和简单任务
- 使用 **Pro** 进行复杂推理和非常大上下文

导入语法

Gemini CLI 使用 @ 前缀进行导入 (memport):

# 导入整个文件
@CLAUDE.md

# 导入相对路径
@./docs/conventions.md

# 从父级导入
@../shared/COMMON.md

注意:CLAUDE.md 的灵活导入不同,GEMINI.md 的 memport 具有:

  • 最大导入深度:5 层
  • 循环导入检测
  • 文件访问验证

漂移检测

手动检测

# 快速差异 (忽略 Gemini 特定部分)
diff <(grep -v "^## Gemini-Specific" CLAUDE.md) <(grep -v "^## Gemini-Specific\|^@" GEMINI.md)

基于哈希的检测

# 存储 CLAUDE.md 的哈希
claude_hash=$(md5sum CLAUDE.md | cut -d' ' -f1)

# 存储在同步状态中
echo "{\"claude_hash\": \"$claude_hash\", \"last_sync\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}" > .claude/temp/sync-state.json

检查漂移

# 比较当前哈希与存储的哈希
current_hash=$(md5sum CLAUDE.md | cut -d' ' -f1)
stored_hash=$(cat .claude/temp/sync-state.json 2>/dev/null | jq -r '.claude_hash // ""')

if [ "$current_hash" != "$stored_hash" ]; then
  echo "CLAUDE.md 自上次同步后已更改"
fi

同步模式

模式 1:基于导入 (推荐)

GEMINI.md 只需导入 CLAUDE.md – 无需同步:

# GEMINI.md
@CLAUDE.md

## Gemini 特定
{覆盖在此}

优点:

  • 无需同步维护
  • 始终保持最新
  • 强制执行单一真相源

缺点:

  • GEMINI.md 必须以 @import 开头
  • 无法选择性导入部分

模式 2:基于部分的同步

CLAUDE.md 复制特定部分:

# 提取特定部分
conventions=$(sed -n '/^## Conventions/,/^## /p' CLAUDE.md | head -n -1)
build_commands=$(sed -n '/^## Build/,/^## /p' CLAUDE.md | head -n -1)

# 重建 GEMINI.md
cat > GEMINI.md << EOF
# GEMINI.md

## 约定 (从 CLAUDE.md 同步)
$conventions

## 构建命令 (从 CLAUDE.md 同步)
$build_commands

## Gemini 特定覆盖
{您的覆盖}
EOF

优点:

  • 选择性控制
  • 可以转换内容

缺点:

  • 需要手动同步
  • 容易漂移

模式 3:模板生成

通过转换从 CLAUDE.md 生成 GEMINI.md

# 将 CLAUDE.md 转换为 GEMINI.md
cat CLAUDE.md | \
  sed 's/Claude Code/Gemini CLI/g' | \
  sed 's/claude/gemini/g' > GEMINI.md

# 追加 Gemini 特定部分
cat >> GEMINI.md << 'EOF'

## Gemini 特定覆盖
{覆盖}
EOF

常见问题

问题:导入不工作

症状: Gemini 看不到 CLAUDE.md 内容

修复: 确保正确的路径语法

# 正确
@CLAUDE.md
@./CLAUDE.md

# 不正确
@/CLAUDE.md  (绝对路径可能失败)

问题:循环导入

症状: 关于循环引用的错误

修复: 不要让 CLAUDE.md 导入 GEMINI.md

问题:导入深度超出

症状: 嵌套导入未加载

修复: Memport 最大深度为 5。扁平化导入链。

问题:上下文漂移

症状: Gemini 行为与 Claude 不同

修复:

  1. 使用 /sync-context 命令
  2. 或使用 @import 模式重建 GEMINI.md

最佳实践

1. 使用 @Import 模式

始终优先导入而非复制:

# GEMINI.md - 好
@CLAUDE.md

## Gemini 特定
...

2. 保持覆盖最小化

仅覆盖真正 Gemini 特定的内容:

  • 模型选择指导
  • 交互式 shell 指令
  • 沙箱使用模式

3. 记录同步内容

如果使用基于部分的同步,注明来源:

## 约定 (于 2025-11-30 从 CLAUDE.md 同步)

4. 同步后验证

测试 Gemini 是否理解上下文:

gemini "项目约定是什么?" --output-format json

5. 定期漂移检查

在 CI 或预提交中包含:

# 在 CI 中
./scripts/check-memory-drift.sh

同步工作流

初始设置

# 1. 确保 CLAUDE.md 存在
if [ ! -f "CLAUDE.md" ]; then
  echo "CLAUDE.md 未找到。请先创建。"
  exit 1
fi

# 2. 使用导入创建 GEMINI.md
cat > GEMINI.md << 'EOF'
# GEMINI.md

@CLAUDE.md

## Gemini 特定覆盖

您是 Gemini CLI,具有独特能力:
- 大上下文窗口 (超出典型 LLM 限制)
- 交互式 PTY shell
- 具有回滚的检查点
- 策略引擎

优先处理利用这些优势的任务。
EOF

# 3. 初始化同步状态
mkdir -p .claude/temp
echo "{\"claude_hash\": \"$(md5sum CLAUDE.md | cut -d' ' -f1)\", \"last_sync\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}" > .claude/temp/sync-state.json

echo "GEMINI.md 已创建,使用 @import 到 CLAUDE.md"

手动同步

# 检查是否需要同步
if [ "$(md5sum CLAUDE.md | cut -d' ' -f1)" != "$(cat .claude/temp/sync-state.json | jq -r '.claude_hash')" ]; then
  echo "CLAUDE.md 已更改。如果使用 @import,则无需操作。"
  echo "如果使用基于部分的同步,请重建 GEMINI.md 部分。"

  # 更新同步状态
  echo "{\"claude_hash\": \"$(md5sum CLAUDE.md | cut -d' ' -f1)\", \"last_sync\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}" > .claude/temp/sync-state.json
fi

相关技能

  • gemini-workspace-bridge - 总体工作区架构
  • gemini-context-bridge - 旧版上下文共享

相关命令

  • /sync-context - 触发手动同步检查

测试场景

场景 1:初始设置

查询: “如何设置 GEMINI.md 以使用 CLAUDE.md?” 预期行为:

  • 在 “同步内存” 或 “claude.md gemini.md” 上激活技能
  • 提供 @import 语法和模板 成功标准: 用户接收带有 @CLAUDE.md 导入的工作 GEMINI.md 模板

场景 2:漂移检测

查询: “如何检查我的内存文件是否不同步?” 预期行为:

  • 在 “上下文漂移” 或 “同步” 上激活技能
  • 提供基于哈希的检测方法 成功标准: 用户接收漂移检测脚本

场景 3:导入问题

查询: “我的 GEMINI.md @import 不工作” 预期行为:

  • 在 “导入” 故障排除上激活技能
  • 提供常见问题和修复 成功标准: 用户接收路径语法的故障排除步骤

版本历史

  • v1.1.0 (2025-12-01):添加了 MANDATORY 部分、测试场景、版本历史
  • v1.0.0 (2025-11-25):初始发布