调试Python脚本时,你是否也曾被这样的问题打断思路——想弄清楚asyncio.run()与asyncio.create_task()之间的本质差异,却不得不切出终端、打开浏览器、翻找三页文档,好不容易理清的思路瞬间中断?Gemini CLI正是为解决这类碎片化操作而设计,让你在项目目录下通过一条命令完成查询,答案会带着上下文精准返回,无需离开命令行。
先看核心结论:asyncio.run()专用于顶层脚本,它会新建并管理一个完整的事件循环,不能在已有循环中被调用;而asyncio.create_task()则是将协程打包成Task提交到当前事件循环中并发执行,更适合在已运行的环境里进行任务调度。两者各司其职,使用不当极易引发bug。

安装并配置API密钥
前提是你需要拥有一个Google Cloud账号,随后在AI Studio页面生成Gemini API密钥。密钥格式类似:g-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,请务必复制保存,切勿泄露或误提交到代码仓库中。
执行export GEMINI_API_KEY="g-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",将密钥写入当前Shell会话的环境变量。这一步必不可少,否则后续所有命令都会返回Unauthorized: Invalid credentials的错误提示。
想要一劳永逸?建议将这行命令追加到~/.bashrc或~/.zshrc末尾,然后执行source ~/.zshrc(具体根据你使用的Shell而定)。
基础查询:一句话问出精准答案
直接输入gemini "Python中asyncio.run()和create_task()的核心区别是什么?",回车后等待3~5秒,答案便会直接显示在终端上。操作就是这么简单。
注意,首次运行时若提示“未找到命令”,说明CLI尚未安装。请使用curl -fsSL https://raw.githubusercontent.com/google-gemini/gemini-cli/main/install.sh | bash进行安装,该脚本会自动下载二进制文件至$HOME/bin目录下,建议顺手将该目录添加到$PATH中。
这个操作不依赖任何本地文件,非常适合快速查询语法、验证概念、询问错误含义。但需要注意,它无法理解你本地未提供的代码逻辑——此时它仅依靠模型的基础知识库来回答问题。
带上下文的深度查询
当你需要AI理解正在处理的具体代码时,必须显式地将文件或命令输出传递进去。
方法一:引用当前目录下的源码文件
gemini "这段代码为什么在高并发下会阻塞?"@ main.py
AI会读取main.py全文,结合内容分析阻塞点。如果文件过大(超过1MB),CLI会自动截断并给出提示,此时应先用head -n 200 main.py提取关键段再传递。
方法二:注入实时命令结果
gemini "解释下面的git status输出,并推荐下一步操作"@ "$(git status --porcelain)"
关键点:双引号必须包裹完整,$()执行符不能遗漏。漏掉任意一个,AI收到的将只是字面字符串$(git status...),而非真实状态。
方法三:多文件联合分析
gemini "对比Dockerfile和docker-compose.yml,指出镜像构建与服务启动之间的配置冲突"@ Dockerfile @ docker-compose.yml
这里有一个硬性规则:@符号必须紧贴文件路径,中间不能有空格。否则CLI无法识别文件参数,会将其当作普通文本处理。
构建可复用的资料查询工作流
仅掌握单条命令还不够,真正高效的是搭建一套顺手的工作流。
第一步:创建快捷别名
在~/.zshrc中添加alias g='gemini --model gemini-3-pro --max-tokens 2048',保存后执行source ~/.zshrc。此后只需输入g "你的问题"即可,省去每次指定模型的麻烦。
第二步:封装高频场景为函数
在同一配置文件中追加:
pydoc() { gemini "用中文解释Python标准库$1模块的功能、核心类和典型用法,附一个最小可运行示例" ; }
之后输入pydoc requests,就能获得结构化文档,比手动翻查文档快得多。
第三步:绑定错误日志自动分析
执行gemini "分析此错误堆栈,定位根本原因并给出修复命令"@ "$(tail -n 100 error.log)"。在CI失败后,这一招极为实用,省去手动翻查日志的功夫。
第四步:设置默认系统提示词
新建~/.gemini-prompt文件,写入:
You are a senior Python and Linux systems engineer. Respond in Chinese, use concise technical terms, and always include a working command or code snippet.
然后在别名中加上--system-prompt-file ~/.gemini-prompt。从此以后,所有提问都自带角色设定,回答质量立刻提升一个档次。
第五步:管道直连,免去中间文件
ps aux | grep nginx | gemini "从上面进程列表中提取worker进程PID,并生成kill -USR2命令"
注意:此功能要求gemini-cli版本≥v0.8.3,旧版本不支持stdin管道输入。升级后,你便又多了一项利器。
