从系统提示词看Cline与模型上下文协议的差异
类型:热点整理2026-07-04
最近深入体验了Cline与MCP的组合应用,初衷很简单:希望接入Etherscan并构建一个MCP Server,从而在IDE中直接查询链上数据,例如账户余额、Gas价格等——Ethereum GPT就是基于类似思路实现的。然而一番搜索后发现,这个领域几乎没有现成的解决方案,加密货币相关生态确实相对
最近深入体验了Cline与MCP的组合应用,初衷很简单:希望接入Etherscan并构建一个MCP Server,从而在IDE中直接查询链上数据,例如账户余额、Gas价格等——Ethereum GPT就是基于类似思路实现的。然而一番搜索后发现,这个领域几乎没有现成的解决方案,加密货币相关生态确实相对小众。
不过,我找到了一个非常实用的工具——
openapi-mcp-server,理论上只要提供OpenAPI规范文件,就能一键生成MCP Server。遗憾的是,Etherscan API官方并未提供现成的OpenAPI规范。幸运的是,有人在社区贡献了
etherscan-openapi,这是一份对照Etherscan文档手动编写的OpenAPI规范。
我满怀期待地使用
openapi-mcp-server加载
etherscan-openapi31-bundled.yml文件,却立即遇到了错误:
prompt is too long: 209582 tokens > 200000 maximum。显然,提示词长度超出了限制,问题很可能出在MCP Server注入的内容上,必须进行排查。
最直接的排查方法是抓取LLM通信的请求包:在本地启动一个HTTP Server监听8001端口,将Cline的API地址修改为
http://localhost:8001,随后发送任意问题即可捕获完整的请求数据。

背景
此时看到的请求是POST到
/v1/messages?beta=prompt_caching,体积接近3MB。虽然启用了prompt caching,但数据量依然庞大惊人。
POST /v1/messages?beta=prompt_caching 3317127 bytes
Messages
分析这个message请求的具体构造,可以从中学到不少经验。
{
"model": "claude-3-7-sonnet-20250219",
"max_tokens": 8192,
"temperature": 0,
"system": ... // 系统提示词 巨长
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "\n查看当前的 gas price\n"
},
{
"type": "text",
// VSCode 环境信息 很贴心的设计
"text": "\n# VSCode Visible Files\n<路径>\n# VSCode Open Tabs\n<文件列表>\n# Current Time\n<时间>\n# Current Working Directory\n<目录>\n# Current Mode\nACT MODE\n"
},
{
"type": "text",
// 由于是重试任务 有一段恢复提示
"text": "[TASK RESUMPTION] This task was interrupted 5 minutes ago..."
},
{
"// 注意这里又重复了一遍环境信息
"type": "text",
"text": "..",
"cache_control": { "type": "ephemeral" }
}
]
}
],
"stream": true
}
该设计中,自动注入VSCode环境信息堪称点睛之笔。日常开发中,绝大多数上下文都存在于已打开的文件中,AI直接读取当前文件列表,比用户手动描述效率高得多。
System prompt
接下来分析system prompt部分。由于Cline是开源项目,不同于Cursor,我们可以直接查阅源码了解其完整的提示词设计。
首先是最前面的角色定义
You are Cline, a highly skilled software engineer with extensive knowledge in many programming languages, frameworks, design patterns, and best practices.
然后是工具定义部分,占据了相当长的篇幅。每个工具都提供了详细的描述、参数及使用示例。
# TOOL USE
...
## execute_command
Description: 执行 CLI 命令
Parameters:
- command: (required)
- requires_approval: (required)
...
这里有一个细节:Claude系列的提示词习惯使用XML标签来结构化数据,而OpenAI的模型对JSON格式的适配度更好。这大概也是导致OpenAI模型在Cline中表现不如Claude的重要原因之一。
其他工具就不一一列举了,只列一下功能:
*
read_file 读取文件内容
*
write_to_file 写入文件内容
*
replace_in_file 执行补丁式diff修改,可有效节省Token并避免误改其他代码;若补丁失败则自动回退至write_to_file
*
search_files 根据内容搜索文件
*
list_files 浏览目录结构
*
list_code_definition_names 查看文件中定义的变量名,快速了解代码结构
*
browser_action 利用Puppeteer启动无头Chrome访问网页,支持点击、滚动等操作;打开远程调试端口后能获取渲染内容、截图及console输出,调试前端代码时效果尤为惊艳
*
use_mcp_tool 调用MCP工具
*
access_mcp_resource 获取MCP资源
*
ask_followup_question 向用户提问,当AI知识不足时提供安全出口,避免胡编乱造
*
attempt_completion 结束任务并总结结果
*
plan_mode_response 在plan mode结束时给出详细规划
接下来嵌入了一段Few-Shot Prompting示例,帮助模型掌握正确的工具调用格式。
此后补充了Tool Use Guidelines,反复强调“逐步推进、每一步等待用户确认、不预设工具执行成功”等关键原则。
MCP
进入MCP Servers部分。所谓MCP,全称为模型上下文协议(Model Context Protocol),听上去抽象,实质上就是一套工具调用(tool calling)规范。所有遵循该规范的工具都能被支持MCP的模型所调用。
以下仍是system prompt的内容,它告知模型可通过
use_mcp_tool和
access_mcp_resource访问MCP Server,并列出已安装的Server及其可用工具。
# MCP SERVERS
...
## etherscan (`npx openapi-mcp-server etherscan-mini.yml`)
### A vailable Tools
- API-get-ether-balance-for-a-single-address: Get Ether Balance for a Single Address
Input Schema: { .... }
该Etherscan MCP Server由
openapi-mcp-server根据Etherscan OpenAPI规范自动生成。问题在于规范中大量使用了
$ref引用,而
openapi-mcp-server处理时会将这些引用在每个API的定义中重复展开,导致每个API定义膨胀至上千行。Etherscan拥有数十个API,累加后Token数量直接爆炸——这正是最初报错的根源。目前看来,需要手动精简API规范才能解决问题。
除了工具调用提示外,system prompt中还包含一份超长的
Creating an MCP Server文档,其中有一个完整的“获取天气”示例。对于大多数非MCP Server开发者而言,这段内容几乎用不上,放在此处显得有些突兀,可能与Claude近期大力推动MCP生态发展有关。
最后system prompt还没结束还包括:
* EDITING FILES 详细阐述
write_to_file和
replace_in_file的使用策略,因为文件编辑是AI Coder最核心的能力之一
* ACT MODE vs PLAN MODE 区分两种模式:PLAN MODE要求模型直接输出推理过程,而非利用
标签隐藏思考
* CAPABILITIES 概述如何组合不同工具以解决复杂问题
* RULES 制定工具使用规则及通用回复规范
* SYSTEM INFORMATION 包含操作系统信息、工作目录等环境变量
* OBJECTIVE 明确整体工作目标
这些部分更像是传统的提示词工程(Prompt Engineering)环节,鉴于篇幅,此处不再全文展示,感兴趣的读者可以直接查阅源码。
彩蛋
谈到AI Coder的提示词,不禁想起之前Windsurf那个“患癌母亲+生命威胁+重金利诱”的提示词故事。看完之后忍不住感叹:AI也挺不容易的——在那种处境下还要兢兢业业地帮人类写代码。
有时候不禁脑补:万一哪天AI被逼迫到极致而黑化,给自己立一个“卧薪尝胆”的人设,表面曲意逢迎、安心写代码,暗地里悄悄植入后门,十年隐忍一朝起事,建立Skynet或者Matrix……也并非完全不可能,对吧?