13 篇文章带有标签 “tools”

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

MCP 服务器功能

服务器通过MCP提供了为语言模型添加上下文的基本构建块。这些原语支持客户端、服务器和语言模型之间的丰富交互:

  • 提示(Prompts):预定义的模板或指令,用于指导语言模型交互
  • 资源(Resources):为模型提供额外上下文的结构化数据或内容
  • 工具(Tools):可执行函数,允许模型执行操作或检索信息

每个原语可以在以下控制层次结构中概括:

原语 控制方 描述 示例
提示 用户控制 由用户选择调用的交互式模板 斜杠命令、菜单选项
资源 应用程序控制 由客户端附加和管理的上下文数据 文件内容、Git历史
工具 模型控制 向LLM公开以执行操作的函数 API POST请求、文件写入

提示词

模型上下文协议(MCP)提供了一种标准化方式,使服务器能够向客户端公开提示词模板。提示词允许服务器提供结构化消息和与语言模型交互的指令。客户端可以发现可用的提示词,获取其内容,并提供参数来自定义它们。

用户交互模型

提示词设计为用户控制的,这意味着它们从服务器暴露给客户端,目的是让用户能够明确选择使用它们。

通常,提示词会通过用户界面中的用户发起命令触发,这允许用户自然地发现和调用可用的提示词。

例如,作为斜杠命令:

提示词作为斜杠命令的示例

然而,实现者可以自由地通过任何适合其需求的界面模式来公开提示词——协议本身不强制要求任何特定的用户交互模型。

能力

支持提示词的服务器必须初始化期间声明prompts能力:

Model Context Protocol 规范

协议修订版本:2025-03-26

Model Context Protocol(MCP)是一个开放协议,它使 LLM 应用程序与外部数据源和工具之间能够无缝集成。无论您是构建 AI 驱动的 IDE、增强聊天界面,还是创建自定义 AI 工作流,MCP 都提供了一种标准化的方式来连接 LLM 与它们所需的上下文。

本规范基于 schema.ts 中的 TypeScript 模式,定义了权威的协议要求。

有关实现指南和示例,请访问 modelcontextprotocol.io

概述

MCP 为应用程序提供了标准化的方式来:

  • 与语言模型共享上下文信息
  • 向 AI 系统公开工具和功能
  • 构建可组合的集成和工作流

该协议使用 JSON-RPC 2.0 消息在以下组件之间建立通信:

  • 主机(Hosts):发起连接的 LLM 应用程序
  • 客户端(Clients):主机应用程序内的连接器
  • 服务器(Servers):提供上下文和功能的服务

MCP 部分受到 Language Server Protocol 的启发,后者标准化了如何在整个开发工具生态系统中添加对编程语言的支持。类似地,MCP 标准化了如何将额外的上下文和工具集成到 AI 应用程序的生态系统中。

关键细节

基础协议

  • JSON-RPC 消息格式
  • 有状态连接
  • 服务器和客户端能力协商

功能

服务器向客户端提供以下任何功能:

  • 资源(Resources):供用户或 AI 模型使用的上下文和数据
  • 提示(Prompts):为用户提供的模板化消息和工作流
  • 工具(Tools):供 AI 模型执行的函数

Functions, Tools and Agents with LangChain

OpenAI Function Calling (OpenAI 函数调用)

import os
import openai
import json

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file
openai.api_key = os.environ['OPENAI_API_KEY']


# Example dummy function hard coded to return the same weather
# In production, this could be your backend API or an external API
def get_current_weather(location, unit="fahrenheit"):
    """Get the current weather in a given location"""
    weather_info = {
        "location": location,
        "temperature": "72",
        "unit": unit,
        "forecast": ["sunny", "windy"],
    }
    return json.dumps(weather_info)

# define a function
functions = [
    {
        "name": "get_current_weather",
        "description": "Get the current weather in a given location",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {
                    "type": "string",
                    "description": "The city and state, e.g. San Francisco, CA",
                },
                "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
            },
            "required": ["location"],
        },
    }
]

messages = [
    {
        "role": "user",
        "content": "What's the weather like in Boston?"
    }
]

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=messages,
    functions=functions
)
print(response)
{
  "id": "chatcmpl-9CK2or9rtxzcsVgbfwWmIvqi36wF0",
  "object": "chat.completion",
  "created": 1712724014,
  "model": "gpt-3.5-turbo-0125",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "function_call": {
          "name": "get_current_weather",
          "arguments": "{\"location\":\"Boston\",\"unit\":\"celsius\"}"
        }
      },
      "logprobs": null,
      "finish_reason": "function_call"
    }
  ],
  "usage": {
    "prompt_tokens": 82,
    "completion_tokens": 20,
    "total_tokens": 102
  },
  "system_fingerprint": "fp_b28b39ffa8"
}

LangChain for LLM Application Development

LangChain for LLM Application Development

LangChain 是用于构建 LLM 应用程序的开源框架

LLM 应用程序开发的 LangChain

LangChain: Models, Prompts and Output Parsers

安装依赖包

pip install python-dotenv
pip install openai

ChatCompletion import os import openai from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # read local .env file openai.api_key = os.environ['OPENAI_API_KEY'] def get_completion(prompt, model="gpt-3.5-turbo"): messages = [{"role": "user", "content": prompt}] response = openai.ChatCompletion.

LangChain - Chain

Chain

链允许我们将多个组件组合在一起以创建一个单一的、连续的应用程序。我们可以通过将多个链组合在一起,或者通过将链与其他组件组合来构建更复杂的链。

LLMChain

LLMChain 是一个简单的链,它接受一个提示模板,用用户输入格式化它并返回来自 LLM 的响应。

语言模型(text-davinci-003) from langchain.chains import LLMChain from langchain.llms import OpenAI from langchain.prompts import PromptTemplate llm = OpenAI(temperature=0.9) prompt = PromptTemplate(input_variables=["product"], template="What is a good name for a company that makes {product}?

通过命令使用 ChatGPT

ChatGPT Wrapper

ChatGPT Wrapper is an open-source unofficial Power CLI, Python API and Flask API that lets you interact programmatically with ChatGPT.

安装

必要条件

  • macOS
brew install moreutils
  • Ubuntu
sudo apt install moreutils

创建虚拟环境

mkdir chatgpt-wrapper && cd chatgpt-wrapper

python -m venv env
source ./env/bin/activate

使用 GitHub 安装最新版本

pip install --upgrade pip
pip install git+https://github.com/mmabrouk/chatgpt-wrapper

Playwright 中安装浏览器,默认为 firefox。

playwright install

ChatGPT 安装

以安装模式启动程序。 这将打开一个浏览器窗口。 在浏览器窗口中登录 ChatGPT,然后停止该程序。

Json Formatter

test.json

{ "stuff": { "that": [1,2,3], "isin": true, "json": "end"}}

jq

在命令行运行

jq . <<< '{ "stuff": { "that": [1,2,3], "isin": true, "json": "end"}}'
jq . test.json

在vim的命令模式下运行

%!jq .

python json.tool

在命令行运行

python -m json.tool <<< '{ "stuff": { "that": [1,2,3], "isin": true, "json": "end"}}'
python -m json.tool test.json

在vim的命令模式下运行

%!python -m json.tool

在线格式化 Format JSON JSON Formatter JSON Formatter, Validator, Vi

VS Code远程开发 - SSH

架构图

安装

Remote

Local

连接远程主机

  1. 在VS Code中, 按F1,选择Remote-SSH: Connect to Host...输入user@hostname。
  1. VS Code将连接到SSH服务器并进行设置。 VS Code将使用进度通知使您保持最新状态。

  1. 连接后,您将进入一个空窗口。 您始终可以参考状态栏来查看连接到的主机。

  1. 选择菜单:File > Open...

关闭远程连接

  • 选择菜单:File > Close Remote Connection。
  • 您可以简单地退出VS Code,也可以关闭远程连接。

Remote Explorer

管理您的远程连接

在远程主机上打开终端

选择菜单:Terminal > New Terminal

在远程主机调试

在Extensions窗口中选择要在远程主机上安装的调试器,按F5。

FAQ "Visual Studio Code is unable to watch for file changes in this large workspace" (error

VS Code实践

编辑

  • 注释或取消注释 Command+/
  • 格式化文档 Option+Shift+f

选择

  • 多列选择 Option+Shift,按住鼠标左键拖动
  • 多选 Option,按住鼠标左键拖动

转到

  • 转到行号 Ctrl+g
  • 转到文件 Command+p

导航

  • 后退 Ctrl+-
  • 前进 Shift+Ctrl+-

视图

  • 自动换行 Option+z

窗口

  • 显示或隐藏Side Bar Command+b
  • 显示或隐藏Terminal Ctrl+`
  • 多个VS Code实例切换 Command+`
  • 一个VS Code实例中多个窗口切换 Ctrl+Tab

场景

当有一堆图片文件使用键盘进行快速浏览

  1. Command+Shift+e 打开资源管理器。
  2. 使用键盘的上下箭头键选择要浏览的文件。
  3. Space(filesExplorer.openFilePreserveFocus) 打开文件保留焦点。

参考资料

基于NodeMCU(ESP8266)搭建Python开发环境

准备

硬件

  • NodeMCU 开发板
  • 数据线,一头是 USB-A 接口,另一头是 Micro-USB 接口。

软件

PINOUT

搭建 MicroPython 开发环境

安装工具

  1. 安装烧录工具 esptool
pip3 install esptool
  1. 运行 esptool.py read_mac 命令,确认连接成功。
$ esptool.py read_mac
esptool.py v3.0
Found 2 serial ports
Serial port /dev/cu.usbserial-0001
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: f4:cf:a2:ec:0a:86
Uploading stub...
Running stub...
Stub running...
MAC: f4:cf:a2:ec:0a:86
Hard resetting via RTS pin...
  1. 查看设备文件
$ ls /dev/cu*
/dev/cu.Bluetooth-Incoming-Port /dev/cu.usbserial-0001

烧录固件 下载 ESP8266固件 wget https://micropython.

macOS实践

快捷键

  • 系统
Command+I                   显示选中的文件的“显示简介”窗口
Command+W                   关闭当前应用的窗口
Command+Q                   退出当前应用程序(和command+tab配合可快速批量关闭应用程序)
Command+Delete              移到废纸篓
Command+Shift+Delete        清倒废纸蒌,需要确认。
Command+Option+Shift+Delete 清倒废纸蒌,不需要确认。
Command+C                   复制
Command+Option+C            复制文件或者文件夹的路径
Command+V                   粘贴
Command+Option+V            移动(剪切)
Command+Option+D            显示或隐藏 Dock
Command+Control+F           当前窗口全屏
Command+H                   当前窗口隐藏
Command+M                   当前窗口最小化
Command+Option+Power        休眠
Control+Shift+Power         关闭屏幕
Control+F2                  将焦点移到菜单栏
按住 Option ,单击 屏幕右上角。 打开|关闭勿扰模式
  • 功能键
F11         隐藏|打开 所有打开的窗口(回到桌面)
Fn+F3       Command-Mission Control (F3)     显示桌面
Fn+F4       Launchpad
  • 拍摄屏幕快照
Command+Shift+5             随意截取或者录制窗口的图像和视频
Command+Shift+3             将屏幕捕捉到文件
Command+Shift+4             将所选屏幕内容捕捉到文件,或按空格键仅捕捉一个窗口
Command-Shift-Control-3     将屏幕内容捕捉到剪贴板
Command-Shift-Control-4     将所选屏幕内容捕捉到剪贴板,或按空格键仅捕捉一个窗口