1 cline 提示词工程指南-架构篇

news2025/7/6 18:25:49

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 Records

Create ADRs in /docs/adr for:

-   Major dependency changes
-   Architectural pattern changes
-   New integration patterns
-   Database schema changes
    Follow 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.coloradmin.cn/o/2337287.html

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

相关文章

代理模式简述

目录 一、主要角色 二、类型划分 三、静态代理 示例 缺点 四、动态代理 JDK动态代理 示例 缺点 CGLib动态代理 导入依赖 示例 五、Spring AOP 代理模式是一种结构型设计模式,通过代理对象控制对目标对象的访问,可在不改变目标对象情况下增强…

【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 设计有着独特的需求和期望&#xff0…

【Netty篇】Handler Pipeline 详解

目录 一、 Handler & Pipeline——流水线上的“特种部队”与“生产线”1、 ChannelHandler —— 流水线上的“特种兵”👮‍♂️2、 ChannelPipeline —— 生产线上的“接力赛跑”🏃‍♀️🏃‍♂️ 二、 代码实例1、 服务端代码示例2、 客…

16-算法打卡-哈希表-两个数组的交集-leetcode(349)-第十六天

1 题目地址 349. 两个数组的交集 - 力扣(LeetCode)349. 两个数组的交集 - 给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1:输入:nu…

java + spring boot + mybatis 通过时间段进行查询

前端传来的只有日期内容&#xff0c;如&#xff1a;2025-04-17 需要在日期内容的基础上补充时间部分&#xff0c;代码示例&#xff1a; /*** 日志查询&#xff08;分页查询&#xff09;* param recordLogQueryDTO 查询参数对象* return 日志列表*/Overridepublic PageBean<…

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 入门

大家好&#xff01;我是心海 流处理技术在大数据时代正变得越来越重要&#xff0c;而 Apache Flink 作为领先的流处理引擎&#xff0c;凭借其高性能、低延迟和丰富的 API 受到了广泛关注。本文将以 Scala 语言为例&#xff0c;详细讲解 Flink DataStream API 的基本编程模型&am…

HTML5好看的水果蔬菜在线商城网站源码系列模板5

文章目录 1.设计来源1.1 主界面1.2 关于我们1.3 商品服务1.4 果蔬展示1.5 联系我们1.6 商品具体信息1.7 登录注册 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#…

宜搭与金蝶互通——连接器建立

一、 进入连接器工厂 图1 连接器入口 二、 新建连接器 图2 新建连接器第一步 1、 连接器显示名,如图2中①所示; 2、 图2中②域名,是金蝶系统API接口里面的“完整服务地址”com之前的信息,不含“https”,如图3中①所示; 3、 Base Url通常为“/”,如图2…

SP7733:HPYNOS - Happy Numbers I(参考我之前的文章,哈希)

题目大意 我们定义“破坏”整数的过程是对其每一位上的数字的平方求和成为一个新数&#xff0c;如果一个数在经过若干次“破坏”以后变成了 1&#xff0c;那么这个数就是一个高兴的数字&#xff0c;输出变化次数&#xff0c;否则如果永远不会变成 1&#xff0c;输出 −1。 例如…

【JavaWeb】详细讲解 HTTP 协议

文章目录 一、HTTP简介1.1 概念1.2 特点 二、协议2.1 HTTP-请求协议&#xff08;1&#xff09;GET方式&#xff08;2&#xff09;POST方式&#xff08;3&#xff09;GET和POST的区别&#xff1a; 2.2 HTTP-响应协议&#xff08;1&#xff09;格式&#xff08;2&#xff09;响应…

“星睿O6” AI PC开发套件评测 - Windows on Arm 安装指南和性能测评

引言 Radxa联合此芯科技和安谋科技推出全新的"星睿O6"迷你 ITX 主板。该系统搭载了 CIX P1&#xff08;CD8180&#xff09;12 核 Armv9 处理器&#xff0c;拥有高达30T算力的NPU和高性能的GPU&#xff0c;最高配备64GB LPDDR内存&#xff0c;并提供了如 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)# 推理&#xff08;可以传文件路径…

数据通信学习笔记之OSPF路由汇总

区域间路由汇总 路由汇总又被称为路由聚合&#xff0c;即是将一组前缀相同的路由汇聚成一条路由&#xff0c;从而达到减小路由表规模以及优化设备资源利用率的目的&#xff0c;我们把汇聚之前的这组路由称为精细路由或明细路由&#xff0c;把汇聚之后的这条路由称为汇总路由或…

ASP.NET Core Web API 配置系统集成

文章目录 前言一、配置源与默认设置二、使用步骤1&#xff09;创建项目并添加配置2&#xff09;配置文件3&#xff09;强类型配置类4&#xff09;配置Program.cs5&#xff09;控制器中使用配置6&#xff09;配置优先级测试7&#xff09;动态重载配置测试8&#xff09;运行结果示…

如何判断单片机性能极限?

目录 1、CPU 负载 2、内存使用情况 3、实时性能 4、外设带宽 5、功耗与温度 在嵌入式系统设计中&#xff0c;当系统变得复杂、功能增加时&#xff0c;单片机可能会逐渐逼近其性能极限。及时识别这些极限点对于保证产品质量、稳定性和用户体验至关重要。 当你的嵌入式系统…

AI在多Agent协同领域的核心概念、技术方法、应用场景及挑战 的详细解析

以下是 AI在多Agent协同领域的核心概念、技术方法、应用场景及挑战 的详细解析&#xff1a; 1. 多Agent协同的定义与核心目标 多Agent系统&#xff08;MAS, Multi-Agent System&#xff09;&#xff1a; 由多个独立或协作的智能体&#xff08;Agent&#xff09;组成&#xff…

1.凸包、极点、极边基础概念

目录 1.凸包 2.调色问题 3.极性(Extrem) 4.凸组合(Convex Combination) 5.问题转化(Strategy)​编辑 6.In-Triangle test 7.To-Left-test 8.极边&#xff08;Extream Edges&#xff09; 1.凸包 凸包就是上面蓝色皮筋围出来的范围 这些钉子可以转换到坐标轴中&#xff0…