1 cline 提示词工程指南-架构篇
cline 提示词工程指南-架构篇
本篇是 cline 提示词工程指南的学习和扩展,可以参阅:
https://docs.cline.bot/improving-your-prompting-skills/prompting
前言
cline 是 vscode 的插件,用来在 vscode 里实现 ai 编程。
它使得你可以接入不同的 llm,然后使用其中某个 llm 完成 ai 编程的任务。在编程过程中 cline 可以借助 mcp 服务器,进行各种资源的操作,从而可以做一些 real stuff,而不是仅仅在聊天窗口中输出一些文本。
cline 的神奇之处在于,它本身不是通过函数调用实现的紧耦合 ai 利用,相反,它本身使用了大量提示词工程技巧,释放了 ai 的潜力,使 ai 能够完成编程的任务。
ai 编程的挑战
大模型的巨量参数和其本身具有的广泛的知识基础,使之成为可以进行编程的工具之一,挑战在于:
- 程序设计需求是复杂的,如何让 ai 充分了解需求
- 算法是复杂的,如何让 ai 实现算法并具有良好的架构
- 程序设计出错不可避免,如何让 ai 自动 debug
显然,上述问题的克服,不可能通过简单提示词交互来完成,即,程序设计的对话,和一般的问答式对话不同,它具有一些特殊的要求了流程。
理解 cline 提示词工程的基本框架和部分细节,对我们提高自身使用 cline 的效率非常重要。
自定义指令
在 cline 的设置模块,你可以看到:

UI 上的解释已经非常清楚明确了:
These instructions are added to the end of the system prompt,
sent with every request.
即,在每一个请求中,都会在系统提示词后,嵌入自定义指令。
将自定义指令看作是对cline的编程。
- 标准化 cline 输出
- 生成特定格式的文件
- 遵循某些架构原则
- 强制编码风格和最佳实践
- 孤立 cline 写高质量代码
- 指导错误处理:例如错误的处理、反馈和提示
📌 NOTE
修改自定义指令字段会更新 Cline 的提示缓存,丢弃累积的上下文。
因此在完成 Task 后,下一个 Task 开始前更新较好。
.clinerules
自定义提示是设置到 cline 工具的基本设置中的,这意味着,打开哪个项目,自定义指令中的要求都自动被启用。
那么,如果我有一些要求,仅仅针对当前项目呢?
这就需要一种针对某个特定项目的,项目级别的,提示词嵌入机制。
这个机制也很简单:
在项目根目录,建立 .clinerules 文件,这个文件中的指令,会自动嵌入到自定义指令中,即:
自定义指令 = cline设置中的自定义指令+项目根目录的 .clinerules指令
.clinerules 文件可以用于:
- 定义项目的特定行为
- 维护项目团队成员的项目标准
- 项目的特定开发实践
- 项目的文档管理要求
- 分析框架
.clinerules
# Project Guidelines## Documentation Requirements- Update relevant documentation in /docs when modifying features
- Keep README.md in sync with new capabilities
- Maintain changelog entries in CHANGELOG.md## Architecture Decision RecordsCreate ADRs in /docs/adr for:- Major dependency changes
- Architectural pattern changes
- New integration patterns
- Database schema changesFollow template in /docs/adr/template.md## Code Style & Patterns- Generate API clients using OpenAPI Generator
- Use TypeScript axios template
- Place generated code in /src/generated
- Prefer composition over inheritance
- Use repository pattern for data access
- Follow error handling pattern in /src/utils/errors.ts## Testing Standards- Unit tests required for business logic
- Integration tests for API endpoints
- E2E tests for critical user flows
如上面这个要求,它让 ai:
- 更新 docs 目录下的文件,当新功能实现同步readme,维护日志
- 创建架构说明到 docs/adr (架构和数据库需求)下面的文件
- 代码上对api生成、模板、代码偏好、策略偏好进行了要求
- 测试方面要求对业务逻辑、api和关键用户流程进行测试
.clinerules 文件夹系统
your-project/
├── .clinerules/ # Folder containing active rules
│ ├── 01-coding.md # Core coding standards
│ ├── 02-documentation.md # Documentation requirements
│ └── current-sprint.md # Rules specific to current work
├── src/
└── ...
如上图所示,在项目根目录的 .clinerules 文件,也可以用一个文件夹代替。
因为简单的文件一个 .clinerules 文件就行了,但是对于复杂的规则,可能就需要多个文件,此时,可以将这些文件放到 .clinerules 文件夹。
cline 会将这个文件夹下面的所有 md 文件,合并为一个整体,然后嵌入到用户指令中。
这里面,合并时,哪个文件内容在前,哪个在后呢?
注意看上面,,md 文件主名有数字前缀,cline 会参考这个前缀,按顺序合并相关 md 文件。
规则库(Rules Bank)
下面考虑一个特定场景:
一个大型工程,需要通过若干个项目达成,比如有客户端、架构设计、api和前端等多个项目。
我们可以把每个项目的规则(clinerules)整理成一个文件夹,这样,一个项目一个文件夹,就得到了多个文件夹,这个文件夹的集合,显然也是一个文件夹,就是规则库。
your-project/
├── .clinerules/ # Active rules - automatically applied
│ ├── 01-coding.md
│ └── client-a.md
│
├── clinerules-bank/ # Repository of available but inactive rules
│ ├── clients/ # Client-specific rule sets
│ │ ├── client-a.md
│ │ └── client-b.md
│ ├── frameworks/ # Framework-specific rules
│ │ ├── react.md
│ │ └── vue.md
│ └── project-types/ # Project type standards
│ ├── api-service.md
│ └── frontend-app.md
└── ...
如上图所示,
规则库放着所有可用的不同项目的规则。
然后,对于某个具体项目,只要从 clinerules-bank 中,复制一个特定的子目录内容到 .clinerules 就行了。
如前所介,复制过去的规则(.clinerules 文件夹下)就会生效。
而 clinerules-bank 里面的所有规则都不参与用户指令注入。
自定义指令的写作技巧
自定义指令指在 cline 设置 custom prompt 文本框 和 项目根目录的 .clinerules 文件中记录的提示词。
其一般写作技巧为:
- 简洁明确
- 描述期望结果,而不是步骤
- 测试和迭代,直到符合你的工作流
cline 系统提示
cline也有系统提示,也叫“内核提示”,它是 cline 系统的一部分,不可以编辑,被硬编码到了一个 ts 文件中:
https://github.com/cline/cline/blob/main/src/core/prompts/system.ts
提示词的最佳实践,可以参阅:
https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview
不同 ai 厂商的提示词最佳实践会有一定差异,上面这个链接是 anthrop 的最佳实践,对于有效使用 cline,显然非常有价值,但本篇集中在 cline 提示词工程的架构,上述最佳实践文献内容从略。
cline 提示词架构总结
当用户向 cline 发起请求时,请求本身的提示词之前,会注入系统提示词和自定义指令,即:
提示词 = 系统提示词注入 + 自定义指令 + 用户请求提示词 提示词=系统提示词注入+自定义指令+用户请求提示词 提示词=系统提示词注入+自定义指令+用户请求提示词
细节
- 注入 system.ts 中的提示词
- 注入 cline 设置中的 custom instructions
- 注入 .clinerules
- 注入 项目根目录 .clinerules 文件里面的指令
- 或 注入 项目根目录 .clinerules 文件夹里面所有 md 文件里面的指令
- 注入用户输入的提示词
这是一个简化的模型,为构建上下文以使用户要求的任务精准完成,cline 的上下文管理会维护多轮对话历史,但基本地,系统提示和自定义指令将始终存在于每一轮对话(每一个任务)中。
.clineignore
文件 .clineignore 是一个放置在项目根目录的文件,用于告诉 .cline 哪些文件或目录在分析项目代码时可以忽略。
- 减少噪音
- 提高性能
- 集中注意力
- 保护敏感数据
clineignore
# Dependencies
node_modules/
**/node_modules/
.pnp
.pnp.js# Build outputs
/build/
/dist/
/.next/
/out/# Testing
/coverage/# Environment variables
.env
.env.local
.env.development.local
.env.test.local
.env.production.local# Large data files
*.csv
*.xlsx
cline 提示词
指和 cline 对话完成特定任务的提示词。
上下文管理
- 开始新任务
“Cline,让我们开始一个新任务。创建 user-authentication.js 。我们需要实现用户登录和 JWT 令牌。以下是要求……” - 总结之前的工作
“Cline,总结我们在上一个用户仪表板任务中做了什么。我想捕捉主要功能和未解决的问题。将此保存到 cline_docs/user-dashboard-summary.md 。” - 分析错误
“Cline,我遇到了这个错误:[错误信息]。它似乎来自于[代码部分]。请分析这个错误并建议一个修复方案。” - 识别根本原因
“Cline,当我在[操作]时应用程序崩溃。问题可能出在[问题区域]。请帮我找到根本原因并提出解决方案。” - 优化代码结构
“Cline,这个函数太长且复杂。将其重构为更小的函数。” - 简化逻辑
“Cline,这段代码难以理解。简化逻辑,使其更易于阅读。” - 灵感激发新功能
“Cline,我想添加一个让用户[功能]的功能。集思广益一些想法,并考虑实施挑战。” - 生成代码
“Cline,创建一个显示用户资料的组件。列表应可排序和可筛选。为这个组件生成代码。”
高级提示词技巧
- 约束填充
为了减轻代码截断,请在提示中包含显式约束。例如,“确保代码完整”或“始终提供完整的函数定义。” - 置信度检查
请 Cline 对其置信度进行评分(例如,“在 1-10 的范围内,你对这个解决方案有多自信?”) - 挑战 Cline 的假设
提出“愚蠢”的问题以促进深入思考并防止错误假设。
社区精选
- “如果你完全理解了我的提示,每次你即将使用一个工具时,请用“好嘞!”回应,而不使用任何工具。”
- “在使用任何工具之前和之后,给我一个信心等级(0-10),表示该工具的使用将如何帮助项目。”
- “鼓励批判性思维,使决策过程透明。”
代码质量提示
- “不要懒惰,不要省略代码”
- “确保代码完整”
- “请遵循自定义指令”
代码重构
- “[文件名]太大了,分析这个文件的工作原理,给出安全的文件拆分建议”
- “确保文档与代码保持同步”
分析与规划
结构化开发
"Before writing code:
1. Analyze all code files thoroughly
2. Get full context
3. Write .MD implementation plan
4. Then implement code"
透彻分析
要防止过早编码,鼓励全面理解。
“开始分析整个流程,总是给出 1 到 10 的置信度。”
假设检查
在编码的早期发现潜在问题
“列出所有完成本任务的假设和不确定的地方”
深思熟虑的开发
- 暂停反思:“冷静,仔细考虑”
- 完整分析:“不要过早结束分析,即便你觉得已经找到了解决方案,也应当继续深入探讨。”
- 持续置信度检查
“在 保持文件前、保存文件后、被拒绝后、任务完成前给出置信度(1-10)”
最佳实践
- 维护项目完整性:“在结构和依赖变更前,检查项目文件”
- 批判性思维:“你确信这是最好的实现这个的方法么?”
- 代码风格:“简单的” “优雅的”
相关文章:
1 cline 提示词工程指南-架构篇
cline 提示词工程指南-架构篇 本篇是 cline 提示词工程指南的学习和扩展,可以参阅: https://docs.cline.bot/improving-your-prompting-skills/prompting 前言 cline 是 vscode 的插件,用来在 vscode 里实现 ai 编程。 它使得你可以接入…...
代理模式简述
目录 一、主要角色 二、类型划分 三、静态代理 示例 缺点 四、动态代理 JDK动态代理 示例 缺点 CGLib动态代理 导入依赖 示例 五、Spring AOP 代理模式是一种结构型设计模式,通过代理对象控制对目标对象的访问,可在不改变目标对象情况下增强…...
Operator 开发入门系列(一):Hello World
背景 我们公司最近计划将产品迁移到 Kubernetes 环境。 为了更好地管理和自动化我们的应用程序,我们决定使用 Kubernetes Operator。 本系列博客将记录我们学习和开发 Operator 的过程,希望能帮助更多的人入门 Operator 开发。 目标读者 对 Kubernete…...
【Docker】运行错误提示 unknown shorthand flag: ‘d‘ in -d ----详细解决方法
使用docker拉取Dify的时候遇到错误 错误提示 unknown shorthand flag: d in -dUsage: docker [OPTIONS] COMMAND [ARG...]错误原因解析 出现 unknown shorthand flag: d in -d 的根本原因是 Docker 命令格式与当前版本不兼容,具体分为以下两种情况: 新…...
【AI插件开发】Notepad++ AI插件开发实践:实现对话窗口功能
引言 之前的文章已经介绍实现了AI对话窗口,但只有个空壳,没有实现功能。本次将集中完成对话窗口的功能,主要内容为: 模型动态切换:支持运行时加载配置的AI模型列表交互式输入处理:实现多行文本输入与Ctrl…...
在激烈竞争下B端HMI设计怎样打造独特用户体验?
在当今数字化高度发展的时代,B 端市场竞争愈发激烈。对于 B 端 HMI(人机界面)设计而言,打造独特的用户体验已成为在竞争中脱颖而出的关键因素。B 端用户在复杂的工作场景中,对 HMI 设计有着独特的需求和期望࿰…...
【Netty篇】Handler Pipeline 详解
目录 一、 Handler & Pipeline——流水线上的“特种部队”与“生产线”1、 ChannelHandler —— 流水线上的“特种兵”👮♂️2、 ChannelPipeline —— 生产线上的“接力赛跑”🏃♀️🏃♂️ 二、 代码实例1、 服务端代码示例2、 客…...
计算机网络 - UDP协议
通过一些问题来讨论 UDP 协议 什么是 UDP?举几个应用了 UDP 协议的例子UDP 与 TCP 有啥区别?(PS:介绍三四个就可以了,不用说太多)具体 UDP 是不可靠的,那你觉得如何实现一个可靠的 UDP &#x…...
16-算法打卡-哈希表-两个数组的交集-leetcode(349)-第十六天
1 题目地址 349. 两个数组的交集 - 力扣(LeetCode)349. 两个数组的交集 - 给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1:输入:nu…...
java + spring boot + mybatis 通过时间段进行查询
前端传来的只有日期内容,如:2025-04-17 需要在日期内容的基础上补充时间部分,代码示例: /*** 日志查询(分页查询)* param recordLogQueryDTO 查询参数对象* return 日志列表*/Overridepublic PageBean<…...
AI与物联网的深度融合:开启智能生活新时代
在当今数字化时代,人工智能(AI)和物联网(IoT)作为两大前沿技术,正在加速融合,为我们的生活和工作带来前所未有的变革。这种融合不仅提升了设备的智能化水平,还为各行各业带来了新的机…...
浔川AI翻译v7.0更新预告
亲爱的浔川AI翻译用户: 感谢您一直以来的支持!浔川AI翻译自推出以来,已迭代6个版本,其中**v2.0和v4.0因技术问题(翻译结果显示异常、注册失败、密码找回功能失效等)**被迫下架。我们深知这些问题影响了您…...
helm账号密码加密
1、安装工具 sudo apt update sudo apt install gnupg -y wget https://github.com/getsops/sops/releases/download/v3.10.2/sops-v3.10.2.linux.amd64 mv sops-v3.10.2.linux.amd64 /usr/local/bin/sops chmod x /usr/local/bin/sops2、生成加密文件 gpg --full-generate-…...
Flink 编程基础:Scala 版 DataStream API 入门
大家好!我是心海 流处理技术在大数据时代正变得越来越重要,而 Apache Flink 作为领先的流处理引擎,凭借其高性能、低延迟和丰富的 API 受到了广泛关注。本文将以 Scala 语言为例,详细讲解 Flink DataStream API 的基本编程模型&am…...
实战|使用环信Flutter SDK构建鸿蒙HarmonyOS应用及推送配置
本文为大家介绍如何在 Flutter 环境创建 Harmony 项目并集成环信即时通讯IM以及环信 Flutter Harmony 推送配置。 已经基于环信的 Flutter 项目也可以参考本文适配鸿蒙端。 一、开发环境要求 前置条件 1.安装DevEco-Studio 2.安装模拟器 DevEco-Studio 下载与操作指导&…...
HTML5好看的水果蔬菜在线商城网站源码系列模板5
文章目录 1.设计来源1.1 主界面1.2 关于我们1.3 商品服务1.4 果蔬展示1.5 联系我们1.6 商品具体信息1.7 登录注册 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xcLeigh 文章地址&#…...
宜搭与金蝶互通——连接器建立
一、 进入连接器工厂 图1 连接器入口 二、 新建连接器 图2 新建连接器第一步 1、 连接器显示名,如图2中①所示; 2、 图2中②域名,是金蝶系统API接口里面的“完整服务地址”com之前的信息,不含“https”,如图3中①所示; 3、 Base Url通常为“/”,如图2…...
SP7733:HPYNOS - Happy Numbers I(参考我之前的文章,哈希)
题目大意 我们定义“破坏”整数的过程是对其每一位上的数字的平方求和成为一个新数,如果一个数在经过若干次“破坏”以后变成了 1,那么这个数就是一个高兴的数字,输出变化次数,否则如果永远不会变成 1,输出 −1。 例如…...
《Java 泛型的作用与常见用法详解》
大家好呀!👋 今天我们要聊的是Java中一个超级重要但又让很多初学者头疼的概念——泛型(Generics)。带你彻底搞懂它!💪 准备好你的小本本,我们开始啦~📝 一、为什么需要泛型?&#x…...
【JavaWeb】详细讲解 HTTP 协议
文章目录 一、HTTP简介1.1 概念1.2 特点 二、协议2.1 HTTP-请求协议(1)GET方式(2)POST方式(3)GET和POST的区别: 2.2 HTTP-响应协议(1)格式(2)响应…...
【android bluetooth 框架分析 02】【Module详解 4】【Btaa 模块介绍】
1. 背景 我们在上一篇文章中介绍 HciHal 模块时,有如下代码 // system/gd/hal/hci_hal_android_hidl.ccvoid ListDependencies(ModuleList* list) const {list->add<SnoopLogger>();if (common::init_flags::btaa_hci_is_enabled()) {list->add<ac…...
“星睿O6” AI PC开发套件评测 - Windows on Arm 安装指南和性能测评
引言 Radxa联合此芯科技和安谋科技推出全新的"星睿O6"迷你 ITX 主板。该系统搭载了 CIX P1(CD8180)12 核 Armv9 处理器,拥有高达30T算力的NPU和高性能的GPU,最高配备64GB LPDDR内存,并提供了如 5GbE、HDMI …...
Python 调用 YOLOv11 ONNX
Python 调用 YOLO ONNX 1 下载ONNX文件2 Python代码 1 下载ONNX文件 ONNX下载地址 2 Python代码 import cv2 from ultralytics import YOLOdef check(yolo:str, path:str):# 加载 YOLOv11model YOLO(yolo)# 读取图片img cv2.imread(path)# 推理(可以传文件路径…...
数据通信学习笔记之OSPF路由汇总
区域间路由汇总 路由汇总又被称为路由聚合,即是将一组前缀相同的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或…...
ASP.NET Core Web API 配置系统集成
文章目录 前言一、配置源与默认设置二、使用步骤1)创建项目并添加配置2)配置文件3)强类型配置类4)配置Program.cs5)控制器中使用配置6)配置优先级测试7)动态重载配置测试8)运行结果示…...
如何判断单片机性能极限?
目录 1、CPU 负载 2、内存使用情况 3、实时性能 4、外设带宽 5、功耗与温度 在嵌入式系统设计中,当系统变得复杂、功能增加时,单片机可能会逐渐逼近其性能极限。及时识别这些极限点对于保证产品质量、稳定性和用户体验至关重要。 当你的嵌入式系统…...
AI在多Agent协同领域的核心概念、技术方法、应用场景及挑战 的详细解析
以下是 AI在多Agent协同领域的核心概念、技术方法、应用场景及挑战 的详细解析: 1. 多Agent协同的定义与核心目标 多Agent系统(MAS, Multi-Agent System): 由多个独立或协作的智能体(Agent)组成ÿ…...
1.凸包、极点、极边基础概念
目录 1.凸包 2.调色问题 3.极性(Extrem) 4.凸组合(Convex Combination) 5.问题转化(Strategy)编辑 6.In-Triangle test 7.To-Left-test 8.极边(Extream Edges) 1.凸包 凸包就是上面蓝色皮筋围出来的范围 这些钉子可以转换到坐标轴中࿰…...
OSCP - Proving Grounds - DriftingBlues6
主要知识点 路径爆破dirtycow内核漏洞提权 具体步骤 总体来讲,这台靶机还是比较直接的,没有那么多的陷阱,非常适合用来学习 依旧是nmap开始,只开放了80端口 Nmap scan report for 192.168.192.219 Host is up (0.42s latency). Not shown: 65534 cl…...
深度理解指针之例题
文章目录 前言题目分析与讲解涉及知识点 前言 对指针有一定了解后,讲一下一道初学者的易错题 题目分析与讲解 先定义一个数组跟一个指针变量 然后把数组名赋值给指针变量————也就是把首地址传到pulPtr中 重点是分析这一句: *(pulPtr…...
