在此之前,我们在 6 月 26 日分享过《Gemini-CLI 开源发布》。应该有很多小伙伴都用起来了,我在 X 上甚至看到有人 8 个命令行一起跑。不过今天,我们并不是要分享如何使用,而是探究一下 Gemini-cli 的 Prompt 是如何设计的。都已经开源了,必须学习打卡!
Gemini-Cli 采用 JS 编写,不知道可否让 Gemini-Cli 自己重写自己为 Python?这样我就能看懂了,哈哈哈。言归正传,gemini-cli 的 Prompt 主要有两个:系统核心提示词和对话压缩提示词。
这个提示词为了处理绝大部分任务,也是非常的长,初步预估系统提示词就得有 4300Tokens,不过 Gemini-2.5-Pro 可是有百万上下文窗口,倒也无惧。整个提示词分为 6 个部分,如下所示:
GEMINI_SYSTEM_MD
覆盖默认提示词,也支持用户持久化存储用户偏好。这个提示词还是头一次见,正应了这段时间新名词Context Learning
。它的核心功能是为历史记录压缩流程提供系统提示。当对话历史过长时,将内容压缩为结构化 XML,包含:
压缩算法设计,相当于提取终极目标,当前目标,已经完成和待完成的任务等,然后剔除掉一些社交对话。
<压缩逻辑>
<输入> 长对话历史 </输入>
<处理>
1. 提取关键实体(文件/命令/错误)
2. 标记未完成任务
3. 移除社交性语句
</处理>
<输出格式>
<compressed_chat_history>
<overall_goal>用户最终目标</overall_goal>
<key_knowledge>项目特定事实</key_knowledge>
<!-- 其他必填字段 -->
</compressed_chat_history>
</输出格式>
</压缩逻辑>
Prompt 地址:
https://github.com/google-gemini/gemini-cli/blob/main/packages/core/src/core/prompts.ts