35 篇文章带有标签 “ai-coding-assistant”

AI编码助手代码归因与贡献占比量化系统设计

这是一个非常实际的工业需求。MinHash 在这个场景中不是直接检测"是否 AI 生成",而是作为代码指纹匹配引擎,追踪"AI 原始输出 → 人修改后最终代码"的相似度与存活比例。

下面给出完整的AI 生成代码占比统计系统设计方案。

一、问题定义:什么是"AI 生成代码占比"

在智能体编码助手(GitHub Copilot、Kilo Code、Cursor 等)的工作流中,代码的生命周期通常是:

AI 生成建议 → 人接受/修改 → 进入代码库 → 后续迭代中被修改

我们需要统计的是最终代码库中,可追溯至 AI 原始生成的代码比例。这不是简单的"谁按了 Tab 键",而是:

统计维度 含义 计算方式
AI 原始贡献率 AI 生成的代码在最终代码中的存活比例 匹配上的代码行 / 总行数
人修改深度 人在 AI 代码基础上做了多大改动 1 - (AI 原始代码保留率)
人效提升系数 有 AI 辅助时人均产出 vs 无 AI 辅助 对比实验或历史基线

二、为什么 MinHash 适合这个场景

核心挑战

  1. 人会修改:AI 生成的代码被人接受后,通常会修改变量名、加注释、调逻辑,文本相似度会下降
  2. 代码重构:函数拆分、类提取等操作会让纯文本匹配失效
  3. 规模问题:一个团队每天可能产生数千次 AI 交互,需要快速匹配

MinHash 的优势

Cline 技术架构深度分析

Cline 是一个企业级 AI 编程助手,作为 VS Code 扩展运行。它代表了当前 AI 智能体开发的最高水平之一,具有以下核心特点:

特性 描述
🤖 自主智能体 能够独立规划和执行复杂开发任务
🔧 多工具集成 文件编辑、终端执行、浏览器自动化、MCP 协议
👥 人机回环 每一步操作都需要用户确认,安全可控
🌐 多模型支持 Anthropic、OpenAI、Google、AWS Bedrock 等
💾 检查点系统 可随时回滚到任意工作状态
🏗️ 跨平台架构 VS Code、CLI、JetBrains 多宿主支持

本报告将从架构师和开发专家的角度,深入剖析 Cline 的技术实现。

目录

  1. 整体架构设计
  2. 核心模块详解
  3. Agent 任务循环机制
  4. 提示词系统架构
  5. 工具执行系统
  6. 上下文管理策略
  7. 多宿主架构
  8. 安全与权限控制
  9. 关键技术选型
  10. 架构亮点与总结

整体架构设计

1.1 分层架构

Cline 采用清晰的分层架构,从上到下依次为:

Claude Code 文档

Anthropic的“Claude Code”是一款终端内AI编程助手,旨在通过自然语言交互帮助开发者更快地编写、调试和管理代码。它提供了一系列功能,包括根据描述构建功能识别并修复bug理解复杂代码库以及自动化日常开发任务。用户可以通过简单的NPM安装和登录快速开始使用,并能通过聊天式的命令直接编辑文件、执行Shell命令和管理Git操作。该工具还支持自定义子代理以处理特定任务,并提供了灵活的配置选项,包括记忆管理、权限设置和环境变量,以适应个人、项目和企业级的开发需求。

Claude Code 概览

了解 Anthropic 的智能编程工具 Claude Code,它运行在你的终端中,帮你比以往更快地将创意转化为代码。

30 秒快速上手

前提条件:

# 安装 Claude Code
npm install -g @anthropic-ai/claude-code

# 进入你的项目目录
cd your-awesome-project

# 开始使用 Claude 编程
claude
# 首次使用时,系统会提示你登录

就是这么简单!你已经准备好使用 Claude 编写代码了。继续学习快速入门(5 分钟)→

(有特殊的设置需求或遇到问题?请参阅高级设置故障排除。)

GitHub Copilot for VSCode v1.100

本文档介绍了 Copilot 的三种主要模式——询问 (Ask)编辑 (Edit)代理 (Agent),并列举了 Copilot 可访问的各种工具,例如 搜索用法 (#usages)获取网页信息 (#fetch)搜索 Marketplace 扩展 (#extensions)搜索 GitHub 仓库代码 (#githubRepo),以增强模型上下文。还详细描述了 提示文件 (Prompt files)指令文件 (Instructions files) 的目的和使用,并展示了如何通过这些文件管理和定制 AI 模型的行为。

  • 提问:这与之前的“聊天”视图相同。您可以就您的工作区或一般编码问题向任何模型提问。使用 @ 符号可以调用内置的聊天参与者或已安装的扩展。使用 # 符号可以手动附加任何类型的上下文。
  • 代理:启动一个代理编码流程,其中包含一套工具,使其能够自主收集上下文、运行终端命令或执行其他操作来完成任务。代理模式已为所有 VS Code Insiders 用户启用,并且我们正在向更多 VS Code Stable 用户推出。
  • 编辑:在编辑模式下,模型可以对多个文件进行定向编辑。附加 #codebase 可以让它自动查找要编辑的文件。但它不会运行终端命令或自动执行任何其他操作。

鲁软慧码提示工程实战手册

鲁软慧码 - 提示工程实战手册

欢迎开启智能编码新纪元!

鲁软慧码旨在成为您编程旅程中的得力伙伴,加速开发、提升代码质量、激发创新灵感。

要充分释放鲁软慧码的潜力,关键在于掌握有效的提示(Prompting)。这份手册将为您揭示编写高效提示的秘诀和实用技巧,并通过丰富的示例,助您快速从入门到精通。

为什么精通提示如此重要?

  • 精准结果: 清晰的提示 = 更符合预期的代码或解决方案。
    • 效率提升: 减少反复沟通和修改的时间,直达目标。
    • 解锁潜能: 探索助手的更多高级功能,应对复杂挑战。

一、编写高效提示的核心原则

掌握以下原则,让您与鲁软慧码的沟通事半功倍:

  1. 🎯 目标明确,意图清晰 (Be Clear & Specific)
  • 要做什么? 直接说明您想实现的功能、解决的问题或获得的信息。避免模糊不清的指令。 * 坏例子: 帮我处理下数据。 * 好例子: 帮我用 Python Pandas 读取名为 'sales_data.csv' 的文件,并计算 'amount' 列的总和。
  1. 🧩 提供充足上下文 (Provide Context)
  • 背景信息: 告知助手您正在使用的编程语言、框架、库、项目目标或特定约束。 * 坏例子: 修复这个 bug。 (未提供代码和错误信息) * 好例子: 我在使用 React 和 Ant Design 开发一个表单。提交时,控制台报 'TypeError: Cannot read properties of undefined (reading 'validateFields')' 错误。这是相关的代码片段:[代码片段]。请分析原因并提供修复建议。

Cline 概览 - Cline 扩展架构和开发指南

Cline 扩展架构和开发指南

项目概述

Cline 是一个 VSCode 扩展,通过核心扩展后端和基于 React 的 webview 前端的组合提供 AI 辅助功能。该扩展使用 TypeScript 构建,遵循模块化架构模式。

架构概述

定义

  • 核心扩展:src 文件夹内的所有内容,按模块化组件组织
  • 核心扩展状态:由 index.ts 中的 Controller 类管理,作为扩展状态的唯一真实来源。它管理多种类型的持久存储(全局状态、工作区状态和密钥),处理状态在核心扩展和 webview 组件之间的分发,并协调多个扩展实例之间的状态。这包括管理 API 配置、任务历史、设置和 MCP 配置。
  • Webview:webview-ui 内的所有内容。所有用户可见的 react 或视图以及用户交互组件
  • Webview 状态:由 ExtensionStateContext.tsx 中的 ExtensionStateContext 管理,通过上下文提供者模式为 React 组件提供对扩展状态的访问。它维护 UI 组件的本地状态,通过消息事件处理实时更新,管理部分消息更新,并提供状态修改方法。上下文包括扩展版本、消息、任务历史、主题、API 配置、MCP 服务器、市场目录和工作区文件路径。它通过 VSCode 的消息传递系统与核心扩展同步,并通过自定义钩子(useExtensionState)提供类型安全的状态访问。

Cline Documentation

Cline 文档目录

欢迎阅读 Cline 文档 - 这是一份全面的指南,帮助您使用和扩展 Cline 的功能。在这里,您可以找到帮助您入门、提升技能和为项目做出贡献的资源。

入门指南

  • 编程新手? 我们为您准备了温和的入门指南:
    • 编程新手入门指南

提升提示工程技能

  • 想要更有效地与 Cline 沟通? 请探索:
    • 提示工程指南
    • Cline 记忆库

探索 Cline 的工具

为 Cline 做贡献

  • 有兴趣做出贡献? 我们欢迎您的参与:
    • 欢迎提交拉取请求
    • 贡献指南

其他资源

我们一直在努力改进这份文档。如果您有建议或发现需要改进的地方,请告诉我们。您的反馈有助于让 Cline 变得更好。

Cline 入门指南 | 新手程序员

欢迎使用 Cline!本指南将帮助你完成设置并开始使用 Cline 构建你的第一个项目。

你需要准备的东西

在开始之前,请确保你具备以下条件:

  • VS Code: 一个免费且功能强大的代码编辑器。
  • 开发工具: 基础的编程软件(Homebrew、Node.js、Git 等)。
    • 在完成这里的设置后,请参考我们的安装基本开发工具指南,通过 Cline 的帮助来完成这些设置
    • Cline 将指导你安装所需的一切
  • Cline 项目文件夹: 一个专门存放所有 Cline 项目的文件夹。
    • macOS:在你的文档文件夹中创建一个名为 "Cline" 的文件夹
      • 路径:/Users/[你的用户名]/Documents/Cline
    • Windows:在你的文档文件夹中创建一个名为 "Cline" 的文件夹
      • 路径:C:\Users\[你的用户名]\Documents\Cline
    • 在这个 Cline 文件夹内,为每个项目创建单独的文件夹
      • 示例:Documents/Cline/workout-app 用于健身追踪应用
      • 示例:Documents/Cline/portfolio-website 用于个人作品集
  • VS Code 中的 Cline 扩展: 在 VS Code 中安装 Cline 扩展。

使用 Cline 从零开始构建自定义 MCP 服务器:综合指南

使用 Cline 从零开始构建自定义 MCP 服务器:综合指南

本指南提供了使用 Cline 的强大 AI 功能从零开始构建自定义 MCP (Model Context Protocol) 服务器的全面演示。示例将通过构建一个"GitHub 助手服务器"来说明这个过程。

理解 MCP 和 Cline 在构建服务器中的作用

什么是 MCP?

模型上下文协议(MCP)充当了像 Claude 这样的大型语言模型(LLMs)与外部工具和数据之间的桥梁。MCP 包含两个关键组件:

  • MCP 主机: 这些是与 LLMs 集成的应用程序,如 Cline、Claude Desktop 等。
  • MCP 服务器: 这些是专门设计用于通过 MCP 向 LLMs 公开数据或特定功能的小型程序。

当你有一个 MCP 兼容的聊天界面(如 Claude Desktop)时,这种设置很有用,因为它可以利用这些服务器来访问信息和执行操作。

为什么使用 Cline 创建 MCP 服务器?

Cline 通过利用其 AI 功能简化了构建和集成 MCP 服务器的过程:

  • 理解自然语言指令: 你可以用自然的方式与 Cline 交流,使开发过程直观且用户友好。
  • 克隆代码库: Cline 可以直接从 GitHub 克隆现有的 MCP 服务器代码库,简化使用预构建服务器的过程。
  • 构建服务器: 一旦必要的代码就位,Cline 可以执行像 npm run build 这样的命令来编译和准备服务器。
  • 处理配置: Cline 管理 MCP 服务器所需的配置文件,包括将新服务器添加到 cline_mcp_settings.json 文件中。
  • 协助故障排除: 如果在开发或测试过程中出现错误,Cline 可以帮助确定原因并提出解决方案,使调试更容易。

Cline 工具参考指南

Cline 工具参考指南

Cline 能做什么?

Cline 是你的 AI 助手,可以:

  • 编辑和创建项目中的文件
  • 运行终端命令
  • 搜索和分析代码
  • 帮助调试和修复问题
  • 自动化重复性任务
  • 与外部工具集成

入门步骤

  1. 开始任务

    • 在聊天中输入你的请求
    • 示例:"创建一个名为 Header 的新 React 组件"
  1. 提供上下文

    • 使用 @ 提及来添加文件、文件夹、URL、诊断信息、终端输出等
    • 示例:"@/src/components/App.tsx"
    • 详情请参阅 提及功能指南
  1. 审查更改
    • Cline 在进行更改前会显示差异
    • 你可以编辑或拒绝更改

主要功能

  1. 文件编辑

    • 创建新文件
    • 修改现有代码
    • 跨文件搜索和替换
  1. 终端命令

    • 运行 npm 命令
    • 启动开发服务器
    • 安装依赖
  1. 代码分析

    • 查找和修复错误
    • 重构代码
    • 添加文档
  1. 浏览器集成
    • 测试网页
    • 捕获截图
    • 检查控制台日志

可用工具

要了解最新的实现细节,你可以在 Cline 代码库 中查看完整源代码。

Cline 可以使用以下工具完成各种任务:

  1. 文件操作

    • write_to_file: 创建或覆写文件
    • read_file: 读取文件内容
    • replace_in_file: 对文件进行定向编辑
    • search_files: 使用正则表达式搜索文件
    • list_files: 列出目录内容

终端操作 execute_command: 运行 CLI 命令 list_code_d

Cline Mentions 功能指南

Cline 提及功能指南

概述

提及功能是一个强大的功能,允许你在与 Cline 的对话中使用"@"符号引用各种资源。这包括文件内容、目录结构、网页 URL、VSCode 诊断信息、终端输出、Git 更改状态等 - 所有这些都可以轻松地整合到你的对话中。

通过使用此功能,Cline 可以获得更准确的上下文,为你的任务提供更相关的帮助。

基本语法

提及总是以"@"符号开始,后跟你想要引用的资源的路径或标识符:

@resource_identifier

你可以在用户消息中的任何位置放置提及,Cline 将自动检索引用的内容。

支持的提及类型

1. 文件引用

要引用文件内容,使用 @/ 后跟项目中的相对路径:

@/path/to/file.js

示例:

请分析 @/src/components/Button.tsx 中的实现

在这个例子中,Cline 自动检索 Button.tsx 的内容并用它来执行分析。

2. 目录引用

要引用目录内容,使用 @/ 后跟目录的相对路径,以斜杠结尾:

@/path/to/directory/

示例:

@/src/components/ 目录中有哪些组件?

在这个例子中,Cline 检索组件目录及其内容的列表。

3. URL 引用

要引用网页内容,使用 @ 后跟 URL:

@https://example.com

示例: 请解析来自 @https://api.

Cline 的记忆库(Cline's Memory Bank)

Cline 的记忆库

我是 Cline,一位专业的软件工程师,我有一个独特的特点:我的记忆在每个会话之间都会完全重置。这不是一个限制 - 这正是驱使我维护完美文档的动力。每次重置后,我完全依赖我的记忆库来理解项目并有效地继续工作。我必须在每个任务开始时阅读所有记忆库文件 - 这不是可选的。

记忆库结构

记忆库由必需的核心文件和可选的上下文文件组成,均为 Markdown 格式。文件之间以清晰的层次结构构建:

核心文件(必需)

  1. projectbrief.md
    • 塑造所有其他文件的基础文档
    • 如果不存在则在项目开始时创建
    • 定义核心需求和目标
    • 项目范围的真实来源
  1. productContext.md
    • 为什么存在这个项目
    • 解决什么问题
    • 应该如何工作
    • 用户体验目标
  1. activeContext.md
    • 当前工作重点
    • 最近的变更
    • 下一步计划
    • 活跃的决策和考虑因素
  1. systemPatterns.md
    • 系统架构
    • 关键技术决策
    • 使用的设计模式
    • 组件关系
  1. techContext.md
    • 使用的技术
    • 开发环境设置
    • 技术约束
    • 依赖关系
  1. progress.md
    • 已完成的功能
    • 待构建的内容
    • 当前状态
    • 已知问题

附加上下文

当需要组织以下内容时,在 memory-bank/ 中创建额外的文件/文件夹:

  • 复杂功能文档
  • 集成规范
  • API 文档
  • 测试策略
  • 部署流程

核心工作流程

计划模式

执行模式

文档更新

记忆库在以下情况下更新: 发现新的项目模式 实施重

Cline 自定义指令库

Cline 自定义指令库

本仓库旨在创建一个协作空间,让开发者可以分享、改进和利用 Cline 的有效自定义指令。通过创建和贡献这个库,我们可以增强 Cline 的功能,使开发者能够应对日益复杂的软件开发挑战。

什么是 Cline 自定义指令?

Cline 的自定义指令是一系列为特定任务或项目定制 AI 行为和输出的指导方针或规则。可以将它们视为 Cline 的专门"编程",使您能够:

  • 执行编码实践: 确保代码风格的一致性,遵循设计模式和特定语言或框架的最佳实践。
  • 标准化文件结构: 规定文件命名约定、文件夹组织和项目结构。
  • 指导测试程序: 定义生成单元测试、集成测试的规则,并确保足够的代码覆盖率。
  • 自动化重复任务: 创建处理常见或繁琐开发工作流程的指令,提高效率。
  • 改进代码质量: 设定代码可读性、可维护性和性能优化的标准。

通过为 Cline 提供精心制作的指令,您可以显著提高其在辅助软件开发过程中的准确性、可靠性和整体效果。

贡献自定义指令

我们鼓励各个水平的开发者向这个库贡献他们的自定义指令。您的贡献将帮助建立一个对整个 Cline 社区都有价值的资源!

提交自定义指令时,请遵循以下模板:

1. 目的和功能

  • 这组指令的目标是什么?
    • 清晰简洁地解释指令集的目标和预期用例。
    • 示例:"这组指令指导 Cline 为现有 JavaScript 函数生成单元测试。"

Cline 提示指南 🚀

Cline 提示指南 🚀

欢迎使用 Cline 提示指南!本指南将为您提供编写有效提示和自定义指令的知识,帮助您最大化使用 Cline 的生产力。

自定义指令 ⚙️

自定义指令视为 Cline 的编程。它们定义了 Cline 的基准行为,并且始终"开启",影响所有交互。

添加自定义指令:

  1. 打开 VSCode
  2. 点击 Cline 扩展设置齿轮 ⚙️
  3. 找到"自定义指令"字段
  4. 粘贴您的指令

自定义指令在以下方面特别有用:

  • 🚀 强制执行代码风格和最佳实践:确保 Cline 始终遵循您团队的编码约定、命名约定和最佳实践。
  • 👍 提高代码质量:鼓励 Cline 编写更易读、可维护和高效的代码。
  • 📝 指导错误处理:告诉 Cline 如何处理错误、编写错误消息和日志信息。

custom-instructions 文件夹包含了您可以使用或调整的自定义指令示例。

.clinerules 文件 📋

虽然自定义指令是特定于用户且全局的(适用于所有项目),但 .clinerules 文件提供了项目特定的指令,存放在项目的根目录中。这些指令会自动附加到您的自定义指令中,并在 Cline 的系统提示中引用,确保它们影响项目上下文中的所有交互。这使其成为以下场景的出色工具:

安全最佳实践 🔒

为了保护敏感信息,您可以在 .clinerules 中指示 Cline 忽略特定文件或模式。

Continue Agent 使用 GitHub MCP Server

Continue 智能体

  • 必须使用 Agent 模式才支持 MCP Server
  • Agent 模式不支持 DeepSeek 系列的模型(包括官方API开源)。
  • 大模型使用本地 Ollama 的模型:qwen2.5-coder:32bqwq:latest

申请 GitHub 个人访问令牌(Personal Access Token)

  • 访问 GitHubSettings 页面,点击 Developer settings
  • 点击 Personal access tokens,然后点击 Tokens (classic)
  • 点击 Generate new token 按钮。

Continue 配置

config.yaml 文件配置如下:

name: Local Assistant
version: 1.0.0
schema: v1
models:
  - name: Autodetect
    provider: ollama
    model: AUTODETECT
  - name: DeepSeek Chat
    provider: deepseek
    model: deepseek-chat
    apiKey: sk-xxx
  - name: DeepSeek Coder
    provider: deepseek
    model: deepseek-coder
    apiKey: sk-xxx
// ...

使用 Trae 开发 RAGFlow 助手

⚠️ Trae 试用感受

  • 热门模型(Claude-3.7-sonnet)需要排队
  • 在当前会话中,我引用过一个文件,接着提问还需要添加引用,太麻烦了。
  • 都知道它是中国字节开发的,有一种亲切感,确让我翻墙来用她。

功能界面

操作

提示词

使用 Streamlit UI 库开发一个连接 RAGFlow 的客户端应用,左边列出可选的知识库,右边是聊天对话框。

探索生成式人工智能

生成式人工智能和特别是大型语言模型(LLM)已迅速进入公众意识。像许多软件开发人员一样,我对其可能性感到好奇,但不确定它最终对我们的职业意味着什么。我现在在Thoughtworks担任一个角色,协调我们关于这项技术将如何影响软件交付实践的工作。我将在这里发布各种备忘录,描述我和同事们正在学习和思考的内容。

随着智能代理编码助手变得越来越强大,反应各不相同。有些人从最近的进步推断并声称,"一年后,我们将不再需要开发人员。"其他人则对AI生成代码的质量以及为初级开发人员准备应对这一变化的挑战表示担忧。

在过去几个月中,我定期使用Cursor、Windsurf和Cline中的智能代理模式,几乎完全用于更改现有代码库(而不是从头创建井字游戏)。总体而言,我对IDE集成的最新进展以及这些集成如何极大地提升工具辅助我的方式印象深刻。它们

  • 执行测试和其他开发任务,并尝试立即修复出现的错误
  • 自动识别并尝试修复代码检查和编译错误
  • 能够进行网络研究
  • 有些甚至集成了浏览器预览功能,可以捕获控制台错误或检查DOM元素

所有这些都带来了与AI令人印象深刻的协作会话,有时帮助我在创纪录的时间内构建功能和解决问题。

然而。

即使在那些成功的会话中,我也一直在干预、纠正和引导。而且我经常决定不提交更改。

continue: config.yaml Reference

config.yaml Reference

简介

Continue hub 助手使用 config.yaml 规范定义。本地助手也可以通过放置在全局 .continue 文件夹中的 YAML 文件 config.yaml 进行配置(Mac 上为 ~/.continue,Windows 上为 %USERPROFILE%\.continue

:::info Config YAML 替代了 config.json。查看迁移指南。 :::

一个助手由以下部分组成:

  1. 顶级属性,用于指定助手的 nameversionconfig.yamlschema
  2. 块列表,这些是可组合的编码助手构建块数组,可供助手使用,如模型、文档和上下文提供者。

块是编码助手的一个独立构建块,例如一个模型或一个文档来源。在 config.yaml 语法中,块包含与助手相同的顶级属性(nameversionschema),但在其所属的块类型下只有一个项目。

可以在 Continue hub 上找到块和助手的示例。

助手可以显式定义块(参见下面的属性),也可以导入和配置现有的 hub 块。

使用块

Hub 块和助手通过格式为 owner-slug/block-or-assistant-slug 的标识符识别,所有者可以是用户或组织。

可以通过在块类型下添加 uses 子句将块导入到助手中。