enable-chrome-gemini-skill
在 macOS 上开启 Google Chrome 的 Gemini (Glic) 功能。提供"一行命令启动"和"永久激活"两种方案,支持环境自检与备份恢复。
Source facts
- Repository
- macrochen/enable-chrome-gemini-skill
- Last source activity
- May 5, 2026 at 01:40
- Detected SKILL.md language
- Chinese
- Stars
- 1
- Forks
- 0
Install options
The review-first prompt is selected by default. You can switch to a direct command or download a local copy.
Review the source files
Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.
Showing SKILL.md
SKILL.md
Source instructions · Read-only preview- name
- enable-chrome-gemini-skill
- description
- 在 macOS 上开启 Google Chrome 的 Gemini (Glic) 功能。提供"一行命令启动"和"永久激活"两种方案,支持环境自检与备份恢复。
# Enable Chrome Gemini Skill
## 关键发现(2026-05 验证)
仅修改 `browser.variations_country` 不够。Glic (Gemini in Chrome) 激活需要同时修改 Local State 中的多个字段:
- `glic.launcher_enabled` → True(最关键的开关)
- `glic.multi_instance_enabled_by_tier` → True
- `browser.variations_country` → us
- `variations_country` → us(与 browser.variations_country 是两个独立字段)
- `variations_safe_seed_permanent_consistency_country` → us
- `variations_safe_seed_session_consistency_country` → us
- `variations_permanent_consistency_country` → `['版本号', 'us']`(数组格式)
Chrome 每次启动会重置 `variations_safe_seed_*` 和 `variations_country` 字段为 `cn`,"永久激活"并不可靠。用 wrapper 脚本在启动前自动修改配置是最稳方案。
## 方案取舍建议
1. **临时/首选方案** (Launch Temp):不修改任何文件,通过命令行参数启动。适合初次测试或不想动系统文件的用户。
2. **永久激活方案** (Permanent):修改 `Local State` 配置文件。适合希望每次正常打开 Chrome 都能看到 Gemini 的用户。
3. **推荐方案** (Wrapper):Chrome 每次启动都会重置 safe seed 字段,"永久激活"并不可靠。用 wrapper 脚本在启动前自动修改配置是最稳方案。可包装为 Alfred 工作流(关键词 `cg`)。
## 工作流
### 第一步:环境与状态检查
检查 Chrome 版本、当前进程和 Local State 配置:
```bash
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version
ps aux | grep -i "Google Chrome" | grep -v grep | head -5
python3 -c "import json; d=json.load(open('$HOME/Library/Application Support/Google/Chrome/Local State')); print('glic:', d.get('glic',{})); print('country:', d.get('browser',{}).get('variations_country','N/A'))"
```
### 第二步:临时启动(推荐先试)
关闭所有 Chrome 窗口后执行:
```bash
open -n -a "Google Chrome" --args --variations-override-country=us --enable-features=Glic
```
### 第三步:永久激活
如果临时方案生效且需要永久生效,修改 Local State:
```bash
# 路径
LOCAL_STATE="$HOME/Library/Application Support/Google/Chrome/Local State"
# 备份
cp "$LOCAL_STATE" "$LOCAL_STATE.backup.$(date +%Y%m%d_%H%M%S)"
```
用 Python 修改(必须关闭 Chrome 后执行):
```python
import json, os
path = os.path.expanduser("~/Library/Application Support/Google/Chrome/Local State")
with open(path, 'r') as f:
data = json.load(f)
# 关键字段修改
if 'glic' not in data:
data['glic'] = {}
data['glic']['launcher_enabled'] = True
data['glic']['multi_instance_enabled_by_tier'] = True
data['browser']['variations_country'] = 'us'
data['variations_country'] = 'us'
data['variations_safe_seed_permanent_consistency_country'] = 'us'
data['variations_safe_seed_session_consistency_country'] = 'us'
if 'variations_permanent_consistency_country' in data:
data['variations_permanent_consistency_country'] = [data.get('variations_safe_seed_milestone', ''), 'us']
with open(path, 'w') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
```
重新打开 Chrome 即可。
### 第四步:Wrapper 脚本(推荐)
Chrome 每次启动重置 safe seed 字段,创建 wrapper 脚本 `~/bin/chrome-gemini`:
```bash
#!/usr/bin/env bash
set -euo pipefail
LOCAL_STATE="$HOME/Library/Application Support/Google/Chrome/Local State"
if [ "${1:-}" = "check" ]; then
python3 -c "
import json
d = json.load(open('$LOCAL_STATE'))
glic = d.get('glic', {})
ok = glic.get('launcher_enabled') and d.get('browser',{}).get('variations_country') == 'us'
print('✅ Gemini 已激活' if ok else '❌ Gemini 未激活')
"
exit 0
fi
# 关闭 Chrome
if pgrep -x "Google Chrome" > /dev/null 2>&1; then
osascript -e 'quit app "Google Chrome"'
sleep 2
pgrep -x "Google Chrome" > /dev/null 2>&1 && killall "Google Chrome" 2>/dev/null || true
fi
# 修改配置
python3 -c "
import json
path = '$LOCAL_STATE'
with open(path, 'r') as f:
data = json.load(f)
if 'glic' not in data:
data['glic'] = {}
data['glic']['launcher_enabled'] = True
data['glic']['multi_instance_enabled_by_tier'] = True
data['browser']['variations_country'] = 'us'
data['variations_country'] = 'us'
data['variations_safe_seed_permanent_consistency_country'] = 'us'
data['variations_safe_seed_session_consistency_country'] = 'us'
if 'variations_permanent_consistency_country' in data:
data['variations_permanent_consistency_country'] = [data.get('variations_safe_seed_milestone', ''), 'us']
with open(path, 'w') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
"
open -a "Google Chrome"
```
`chmod +x ~/bin/chrome-gemini`,确保 `~/bin` 在 PATH 中。
### 第五步:Alfred 工作流(可选,推荐)
Alfred 工作流是最佳方案,每次启动前自动修改配置。
1. 创建 `run.sh`(内容同 wrapper 脚本)
2. **用 Python plistlib 生成 `info.plist`**(避免 XML 转义问题)
3. 关键词设为 `cg`,用 `cg check` 检查状态
4. 打包:`zip -r Chrome-Gemini.alfredworkflow info.plist`
5. 双击 `.alfredworkflow` 文件安装
**关键:必须用 `plistlib` 生成 plist,不能手写 XML。**
```python
import plistlib
with open('run.sh', 'r') as f:
script_content = f.read()
plist = {
'bundleid': 'com.macrochen.chrome-gemini',
'name': 'Chrome Gemini',
'objects': [
{
'config': {'argumenttype': 1, 'keyword': 'cg', 'text': 'Chrome Gemini', 'withspace': True},
'type': 'alfred.workflow.input.keyword',
'uid': 'DEADBEEF-0001-0001-0001-000000000001',
'version': 1
},
{
'config': {
'script': script_content, # 脚本内嵌
'scriptfile': '', # 留空
'scriptargtype': 1,
'type': 0, # bash
'concurrently': False,
'escaping': 0
},
'type': 'alfred.workflow.action.script',
'uid': 'DEADBEEF-0001-0001-0001-000000000002',
'version': 2
}
],
'connections': {
'DEADBEEF-0001-0001-0001-000000000001': [
{'destinationuid': 'DEADBEEF-0001-0001-0001-000000000002', 'modifiers': 0, 'modifiersubtext': '', 'vitoclose': False}
],
'DEADBEEF-0001-0001-0001-000000000002': []
},
'uidata': {
'DEADBEEF-0001-0001-0001-000000000001': {'xpos': 100, 'ypos': 200},
'DEADBEEF-0001-0001-0001-000000000002': {'xpos': 350, 'ypos': 200}
},
'userconfigurationconfig': [],
'variables': {},
'version': '1.0.0',
'description': 'Chrome Gemini 启动器',
'readme': '用法: cg → 启动, cg check → 检查状态',
'disabled': False,
'webaddress': '',
'category': 'Tools',
'createdby': 'macrochen'
}
with open('info.plist', 'wb') as f:
plistlib.dump(plist, f, sort_keys=True)
```
然后打包:`zip -r Chrome-Gemini.alfredworkflow info.plist`(不需要 run.sh)。
### 第六步:故障恢复
从备份恢复:
```bash
ls "$LOCAL_STATE".backup.* # 找到备份
cp "$LOCAL_STATE".backup.YYYYMMDD_HHMMSS "$LOCAL_STATE"
```
## Alfred 工作流集成
Chrome 每次启动会重置 `variations_safe_seed_*` 字段,需要启动前修改。Alfred 工作流是最佳方案。
### plist 生成方式(Alfred 5)
**必须用 Python `plistlib` 生成 plist**,不能手写 XML。
常见错误:
- 手写 XML plist:`>`, `&`, `"` 等字符需要手动转义,极易出错
- `scriptfile` 外部脚本:Alfred 安装 `.alfredworkflow` 时不打包外部文件,脚本会变成默认模板
正确方案:用 `plistlib.dump()` 生成 plist,脚本内嵌到 `config.script` 字段,`scriptfile` 留空。
### 关键字段
- keyword trigger 类型: `alfred.workflow.input.keyword`
- script action 类型: `alfred.workflow.action.script`
- bash 脚本 `type`: 0,AppleScript `type`: 6
- `scriptargtype`: 1 = argv,2 = {query}
- connections 中用 `vitoclose`(不是 `vitowards`)
- 必须有 `userconfigurationconfig` 空数组
- 必须有 `variables` 空 dict
### 打包
```bash
cd workflow_dir
zip -r ~/Desktop/Chrome-Gemini.alfredworkflow info.plist
```
## 常见陷阱
- 必须完全退出 Chrome(⌘Q),不能只是关闭窗口
- VPN 不影响 Local State 修改,但影响 Gemini 功能的实际可用性
- Chrome 更新后可能重置 `glic.launcher_enabled`,需要重新修改
- Chrome 启动时会重置 `variations_safe_seed_*` 和 `variations_country` 字段,用 Alfred 工作流在启动前修改可解决
- `browser.variations_country` 和 `variations_country` 是两个独立字段,都需要改
- `variations_permanent_consistency_country` 是数组格式 `['版本号', 'us']`
View on GitHub