链载Ai

标题: Google刚刚开源的这个东西,让Claude慌了 | Gemini-CLI 提示词详细拆解 [打印本页]

作者: 链载Ai    时间: 昨天 21:22
标题: Google刚刚开源的这个东西,让Claude慌了 | Gemini-CLI 提示词详细拆解

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;margin: 0px 0px 10px;letter-spacing: 0.1em;white-space: pre-line;color: rgb(63, 63, 63);font-size: 13px;">

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;margin: 0px 0px 10px;letter-spacing: 0.1em;white-space: pre-line;color: rgb(63, 63, 63);font-size: 13px;">朋友们,大家好呀!

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;margin: 10px 0px;letter-spacing: 0.1em;white-space: pre-line;color: rgb(63, 63, 63);font-size: 13px;">Google 昨晚发布并且开源了自己的终端代码运行助手,GEMINI-CLI,完全是照着 Claude Code 来对标。如果你已经非常习惯使用 Claude Code 了,相信也可以无缝切换到 Gemini-Cli 来尝试使用。

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;margin: 10px 0px;letter-spacing: 0.1em;white-space: pre-line;color: rgb(63, 63, 63);font-size: 13px;">既然说到了开源,它们也同样放出了它们的系统提示词文件。链接在下方👇:

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;color: rgb(119, 119, 119);">

https://github.com/google-gemini/gemini-cli/blob/4b5ca6bc777180b2ea11f391e6f612da5072cc3e/packages/core/src/core/prompts.ts#L40

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;margin: 10px 0px;letter-spacing: 0.1em;white-space: pre-line;color: rgb(63, 63, 63);font-size: 13px;">那我们废话少说,开始看看构造这样一个代码 Agent,需要如何写提示词吧!

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 18px;font-weight: bold;margin: 40px auto 40px 0px;width: fit-content;text-align: left;color: rgb(63, 63, 63);">提示词文件的整体结构

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;margin: 10px 0px;letter-spacing: 0.1em;white-space: pre-line;color: rgb(63, 63, 63);font-size: 13px;">Gemini-CLI 的提示词文件prompt.ts使用的是 TypeScript 编写,其核心是导出一个函数getCoreSystemPrompt(),用于生成系统提示词内容字符串。这段提示词会作为系统级的消息发送给 Gemini 模型,在每次对话交互中始终生效,相当于给 Agent 人物设定和行为上的规范。

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;margin: 10px 0px;letter-spacing: 0.1em;white-space: pre-line;color: rgb(63, 63, 63);font-size: 13px;">从文件结构上来看,getCoreSystemPrompt()做了如下几件事:


下面我们来详细看下提示词的各个组成部分及其作用。

提示词各组成部分及其作用

Gemini-CLI 提示词文件涵盖了不同层次的提示内容。

为了便于理解,我将其分为了几类:系统提示词、建议式提示、后备提示等。其中,系统提示词是一个大类,它包括了建议式提示和后备提示。

下面分别说明这些类别的含义和功能:

系统提示词

系统提示词是整个提示体系的核心模块,定义了 Agent 在与用户对话中的身份、人设以及行为准则。

建议式提示(Suggested Prompt)

建议式提示指的式 Gemini-CLI 主动向用户提出建议或后续行动的提示。它不是直接存在于 prompt.ts 代码的某个独立的变量中,而是通过系统提示词的设计与示例体现出来。

简单来说,Gemini-CLI 会在某些场景下反过来询问用户下一步怎么做,或提议一个可能的后续操作,以引导交互流程。

这类建议在提示词中主要通过两种方式实现:

  1. 操作流程中的用户确认步骤:这个其实在之前已经提到了,在软件工程任务流程和新应用任务流程中,都明确要求在执行关键步骤前征求用户许可或意见。

  2. 内置例子中的建议对话:在系统提示的示例对话里,我们能看到 AI 在完成一个任务后主动提出后续步骤建议的场景。例如:以下片段来自提示词示例:




  3. (Afterverification passes) Allchecks passed.Thisis a stable checkpoint. ${(function() { if(isGitRepository(process.cwd())) { return`Would you like me to write a commit message and commit these changes?`; } return''; })()} </example>

    在这个例子中,AI顺利完成了代码修改并通过测试后,如果检测到当前是Git仓库,就会问用户:“要我帮你写提交信息并提交这些更改吗?” 。这就是一个典型的建议式提示:模型根据上下文推断出下一合理动作(提交代码),并礼貌地询问用户是否需要它来处理。这样的提示可以提高效率(用户也许正打算提交),同时依然尊重用户选择,不擅自主导。由于实现上通过代码判断isGitRepository来动态插入,这保证了该提示只在相关场景出现,不相关时则不打扰用户。

由此可见,“建议式提示”并非单独存储在prompts.ts中,而是融入系统提示词的策略之中。当 AI 遵循这些内置规范和示例进行对话时,自然就会在需要时给出合适的建议。对于用户来说,这些建议式的提问和提示让 Gemini-CLI 显得更加贴智能:它不会傻等指令,而是会根据情况提示下一步要不要做,从而形成类似双向互动的体验。对于完全不懂技术的新手用户而言,这种引导尤为有帮助,因为AI会告诉你它还能做什么。

后备提示(Fallback Prompt)

后备提示指的是当 AI 无法正常处理用户请求或遇到特殊情况时,所采取的备用应对。可以理解为一个兜底策略,确保对话不会陷入僵局或者产生不恰当的输出。同样,prompt.ts中没有一个显示的定义,但是多个提示词规则共同塑造了 Gemini-CLI 的后备行为:

🤏一点点感想

阅读 Gemini-CLI 的系统提示词后,你会发现它的语言风格非常有特点:专业权威、直截了当,考虑周全。这些特点可以从以下几方面看出:






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5