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 发起请求时,请求本身的提示词之前,会注入系统提示词和自定义指令,即:

提示词 = 系统提示词注入 + 自定义指令 + 用户请求提示词 提示词=系统提示词注入+自定义指令+用户请求提示词 提示词=系统提示词注入+自定义指令+用户请求提示词

细节

  1. 注入 system.ts 中的提示词
  2. 注入 cline 设置中的 custom instructions
  3. 注入 .clinerules
    • 注入 项目根目录 .clinerules 文件里面的指令
    • 或 注入 项目根目录 .clinerules 文件夹里面所有 md 文件里面的指令
  4. 注入用户输入的提示词

这是一个简化的模型,为构建上下文以使用户要求的任务精准完成,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)”

最佳实践
  • 维护项目完整性:“在结构和依赖变更前,检查项目文件”
  • 批判性思维:“你确信这是最好的实现这个的方法么?”
  • 代码风格:“简单的” “优雅的”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法---子序列[动态规划解决](最长递增子序列)

最长递增子序列 子序列包含子数组&#xff01; 说白了&#xff0c;要用到双层循环&#xff01; 用双层循环中的dp[i]和dp[j]把所有子序列情况考虑到位 class Solution { public:int lengthOfLIS(vector<int>& nums) {vector<int> dp(nums.size(),1);for(int i …

kubectl命令补全以及oc命令补全

kubectl命令补全 1.安装bash-completion 如果你用的是Bash(默认情况下是)&#xff0c;先安装补全功能支持包 sudo apt update sudo apt install bash-completion -y2.为kubectl 启用补全功能 会话中临时&#xff1a; source <(kubectl completion bash)持久化配置&#x…

48、Spring Boot 详细讲义(五)

3、集成MyBatis 3.1 MyBatis 概述 3.1.1 核心功能和优势 MyBatis 是一个 Java 持久层框架,它通过 XML 或注解配置 SQL 语句,将 Java 方法与 SQL 语句映射起来,消除了大量的 JDBC 代码,简化了数据库操作。MyBatis 的核心功能和优势包括: ORM(对象关系映射):通过 XML …

BERT - Bert模型框架复现

本节将实现一个基于Transformer架构的BERT模型。 1. MultiHeadAttention 类 这个类实现了多头自注意力机制&#xff08;Multi-Head Self-Attention&#xff09;&#xff0c;是Transformer架构的核心部分。 在前几篇文章中均有讲解&#xff0c;直接上代码 class MultiHeadAtt…

解决 Spring Boot 启动报错:数据源配置引发的启动失败

启动项目时&#xff0c;控制台输出了如下错误信息&#xff1a; Error starting ApplicationContext. To display the condition evaluation report re-run your application with debug enabled. 2025-04-14 21:13:33.005 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporte…

履带小车+六轴机械臂(2)

本次介绍原理图部分 开发板部分&#xff0c;电源供电部分&#xff0c;六路舵机&#xff0c;PS2手柄接收器&#xff0c;HC-05蓝牙模块&#xff0c;蜂鸣器&#xff0c;串口&#xff0c;TB6612电机驱动模块&#xff0c;LDO线性稳压电路&#xff0c;按键部分 1、开发板部分 需要注…

【开发记录】服务外包大赛记录

参加服务外包大赛的A07赛道中&#xff0c;最近因为频繁的DEBUG&#xff0c;心态爆炸 记录错误 以防止再次出现错误浪费时间。。。 2025.4.13 项目在上传图片之后 会自动刷新 没有等待后端返回 Network中的fetch /upload显示canceled. 然而这是使用了VS的live Server插件才这样&…

基于FreeRTOS和LVGL的多功能低功耗智能手表(硬件篇)

目录 一、简介 二、板子构成 三、核心板 3.1 MCU最小系统板电路 3.2 电源电路 3.3 LCD电路 3.4 EEPROM电路 3.5 硬件看门狗电路 四、背板 4.1 传感器电路 4.2 充电盘 4.3 蓝牙模块电路 五、总结 一、简介 本篇开始介绍这个项目的硬件部分&#xff0c;从最小电路设…

为 Kubernetes 提供智能的 LLM 推理路由:Gateway API Inference Extension 深度解析

现代生成式 AI 和大语言模型&#xff08;LLM&#xff09;服务给 Kubernetes 带来了独特的流量路由挑战。与典型的短时、无状态 Web 请求不同&#xff0c;LLM 推理会话通常是长时运行、资源密集且部分有状态的。例如&#xff0c;一个基于 GPU 的模型服务器可能同时维护多个活跃的…

MacOs下解决远程终端内容复制并到本地粘贴板

常常需要在服务器上捣鼓东西&#xff0c;同时需要将内容复制到本地的需求。 1-内容是在远程终端用vim打开&#xff0c;如何用vim的类似指令达到快速复制到本地呢&#xff1f; 假设待复制的内容&#xff1a; #include <iostream> #include <cstring> using names…

STM32 vs ESP32:如何选择最适合你的单片机?

引言 在嵌入式开发中&#xff0c;STM32 和 ESP32 是两种最热门的微控制器方案。但许多开发者面对项目选型时仍会感到困惑&#xff1a;到底是选择功能强大的 STM32&#xff0c;还是集成无线的 ESP32&#xff1f; 本文将通过 硬件资源、开发场景、成本分析 等多维度对比&#xf…

【blender小技巧】Blender导出带贴图的FBX模型,并在unity中提取材质模型使用

前言 这其实是我之前做过的操作&#xff0c;我只是单独提取出来了而已。感兴趣可以去看看&#xff1a;【blender小技巧】使用Blender将VRM或者其他模型转化为FBX模型&#xff0c;并在unity使用&#xff0c;导出带贴图的FBX模型&#xff0c;贴图材质问题修复 一、导出带贴图的…

如何保证本地缓存和redis的一致性

1. Cache Aside Pattern&#xff08;旁路缓存模式&#xff09;​​ ​核心思想​&#xff1a;应用代码直接管理缓存与数据的同步&#xff0c;分为读写两个流程&#xff1a; ​读取数据​&#xff1a; 先查本地缓存&#xff08;如 Guava Cache&#xff09;。若本地未命中&…

k8s通过service标签实现蓝绿发布

k8s通过service标签实现蓝绿发布 通过k8s service label标签实现蓝绿发布方法1:使用kubelet完成蓝绿切换1. 创建绿色版本1.1 创建绿色版本 Deployment1.2 创建绿色版本 Service 2. 创建蓝色版本2.1 创建蓝色版本 Deployment2.2 创建蓝色版本 Service 3. 创建蓝绿切换SVC (用于外…

智慧酒店企业站官网-前端静态网站模板【前端练习项目】

最近又写了一个静态网站&#xff0c;智慧酒店宣传官网。 使用的技术 html css js 。 特别适合编程学习者进行网页制作和前端开发的实践。 项目包含七个核心模块&#xff1a;首页、整体解决方案、优势、全国案例、行业观点、合作加盟、关于我们。 通过该项目&#xff0c;小伙伴们…

Epplus 8+ 许可证设置

Epplus 8 之后非商业许可证的设置变了如果还用普通的方法会报错 Unhandled exception. OfficeOpenXml.LicenseContextPropertyObsoleteException: Please use the static ‘ExcelPackage.License’ property to set the required license information from EPPlus 8 and later …

CST1016.基于Spring Boot+Vue高校竞赛管理系统

计算机/JAVA毕业设计 【CST1016.基于Spring BootVue高校竞赛管理系统】 【项目介绍】 高校竞赛管理系统&#xff0c;基于 DeepSeek Spring AI Spring Boot Vue 实现&#xff0c;功能丰富、界面精美 【业务模块】 系统共有两类用户&#xff0c;分别是学生用户和管理员用户&a…

2025年第十六届蓝桥杯省赛C++ 研究生组真题

2025年第十六届蓝桥杯省赛C 研究生组真题 1.说明2.题目A&#xff1a;数位倍数&#xff08;5分&#xff09;3.题目B&#xff1a;IPv6&#xff08;5分&#xff09;4.题目C&#xff1a;变换数组&#xff08;10分&#xff09;5.题目D&#xff1a;最大数字&#xff08;10分&#xff…

空调开机启动后发出噼里啪啦的异响分析与解决

背景 当空调使用时由于制冷或制热运转时&#xff08;关机后可能也会出现&#xff09;&#xff0c;塑料件热胀冷缩引起&#xff0c;可能会出现“咔咔”的声音&#xff1b;空调冷媒在空调内管路流动时会出现轻微的“沙沙”的声音&#xff1b;也有可能是新装的空调摆风轴出现响声…

BERT、T5、ViT 和 GPT-3 架构概述及代表性应用

BERT、T5、ViT 和 GPT-3 架构概述 1. BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09; 架构特点 基于 Transformer 编码器&#xff1a;BERT 使用多层双向 Transformer 编码器&#xff0c;能够同时捕捉输入序列中每个词的左右上下文信息…