Skip to content

About

Enhanced Cursor plugin for CLIProxyAPI with reasoning content streaming, system constraint injection, and official brand logo (AI-assisted development)

Resources

Stars

16 stars

Watchers

0 watching

Forks

Repository files navigation

AI-Assisted Development License: MIT Go Version LINUX DO

🤖 AI-Assisted Development · 本项目的自研补丁开发、测试验证与文档编写由 AI 辅助完成

Cursor for CPA/CLIProxyAPI (Enhanced)

基于 yobo2u/omsub cursor 分支 0.6.1 的增强版本

这是一个独立的 CLIProxyAPI 原生动态库插件,把用户本人授权的 Cursor 订阅接入 OpenAI 兼容的 /v1/chat/completions 接口。相比上游版本,增加了思考透传、纯文本约束注入和官方图标支持三项自研功能。

Important

本项目是非官方社区插件,与 Cursor、Anysphere、CLIProxyAPI、CPA Manager Plus 无隶属或授权关系。使用前请完整阅读免责声明。

与上游的主要差异

本仓库在 0.6.1 基础上增加了以下增强:

1. 思考透传(Reasoning Content Streaming)

上游版本会丢弃 Cursor 的 thinking_delta 事件,客户端无法看到模型的思考过程。本版本:

  • 流式响应中通过标准 delta.reasoning_content 字段实时透传思考内容
  • 非流式响应中在 message.reasoning_content 中返回完整思考文本
  • 与正文内容完全解耦,客户端可单独渲染思考块

代码位置:

  • internal/openai/response.go — StreamReasoning() / AddReasoning() / ReasoningContent 字段
  • internal/plugin/executor.go — 流式与非流式思考事件路由

2. 纯文本约束注入(System Constraint Injection)

当请求未声明任何工具时(len(tools) == 0),上游会触发 Cursor Composer 2.5 的默认工具链(如 web_search_request_query),但由于 CPA 没有工具回传能力,导致空转等待 90 秒超时,客户端只能收到碎片字符。

本版本在用户 prompt 前注入 <system_constraint> 约束指令,明确声明当前处于纯文本对话模式,避免模型尝试发起工具或搜索调用:

<system_constraint>
NOTE: This is a direct conversational session with no tool execution environment.
Please answer directly in text using your knowledge without attempting to invoke tools or web search.
</system_constraint>

代码位置:internal/cursorproto/request.go — buildAction()

3. 官方图标(Official Brand Logo)

上游版本 metadata.Logo 字段为空,CPAMP 面板显示默认占位符。本版本:

  • 使用 Cursor 官方品牌资源 brand-logo-5.svg
  • 插件注册信息和账户元数据均携带图标 URL
  • 面板正确显示 Cursor 官方立方体标志

代码位置:internal/plugin/handler.go — pluginLogoURL 常量与 metadata.Logo 字段

功能特性

  • ✅ OpenAI Chat Completions 兼容接口
  • ✅ SSE 流式响应(含思考流)
  • ✅ 标准 function tools 与 tool_choice
  • ✅ 多轮工具调用与结果续轮
  • ✅ 会话检查点复用(追加式历史优化)
  • ✅ 图片与文本附件
  • ✅ Cursor 管理页(模型禁用、用量估算)
  • ✅ OAuth 动态模型发现

安装

方式一:install.sh 一键安装(推荐)

下载并解压完整包,运行自带的安装脚本:

curl -LO https://github.com/kilolonion/cursor-cpa-plugin/releases/download/v0.6.1-enhanced/cursor-plugin-0.6.1-enhanced-linux-amd64.tar.gz
tar -xzf cursor-plugin-0.6.1-enhanced-linux-amd64.tar.gz
cd cursor-plugin-0.6.1-enhanced-linux-amd64

sudo ./install.sh --plugins-dir /opt/cpa-manager-plus/cliproxyapi/plugins

脚本会:

  • 按当前系统架构自动选择 bin/<os>/<arch>/cursor.so
  • 把已有插件备份到 .cursor-backups/
  • 原子写入目标文件,避免写入中断留下半成品

卸载:

sudo ./uninstall.sh --plugins-dir /opt/cpa-manager-plus/cliproxyapi/plugins

卸载不会删除二进制,而是移到 .cursor-uninstalled/,方便回退。

方式二:手动复制

只需插件二进制时,可下载商店格式的 ZIP:

curl -LO https://github.com/kilolonion/cursor-cpa-plugin/releases/download/v0.6.1-enhanced/cursor_0.6.1-enhanced_linux_amd64.zip
unzip cursor_0.6.1-enhanced_linux_amd64.zip -d cursor-plugin

sudo mkdir -p /opt/cpa-manager-plus/cliproxyapi/plugins/linux/amd64
sudo cp cursor-plugin/cursor.so /opt/cpa-manager-plus/cliproxyapi/plugins/linux/amd64/

校验下载文件

sha256sum -c checksums.txt

启用插件

在 config.yaml 中启用:

plugins:
  enabled: true
  dir: "plugins"
  configs:
    cursor:
      enabled: true
      priority: 1

重启 CLIProxyAPI:

docker restart cli-proxy-api

平台支持

当前 Release 只提供 Linux amd64 构建。其他平台需要自行编译。

从源码构建

需要 Go 1.24+ 和 CGO 工具链:

git clone https://github.com/kilolonion/cursor-cpa-plugin.git
cd cursor-cpa-plugin

CGO_ENABLED=1 go build -buildmode=c-shared -trimpath -ldflags="-s -w" -o cursor.so .

调用示例

流式请求(含思考过程)

curl https://your-cpa.example/v1/chat/completions \
  -H "Authorization: Bearer $CPA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cursor/composer-2-5",
    "messages": [{"role": "user", "content": "推导快排平均复杂度"}],
    "stream": true
  }'

响应中的思考内容:

{"id":"chatcmpl-xxx","choices":[{"index":0,"delta":{"reasoning_content":"正在推导快排..."}}]}

非流式请求

curl https://your-cpa.example/v1/chat/completions \
  -H "Authorization: Bearer $CPA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cursor/cursor-grok-4-6-high",
    "messages": [{"role": "user", "content": "hello"}],
    "stream": false
  }'

响应中的思考字段:

{
  "choices": [{
    "message": {
      "content": "Hello! How can I help?",
      "reasoning_content": "用户发送了简单问候..."
    }
  }]
}

开发

运行测试

go test ./...

代码检查

gofmt -l .
go vet ./...

许可证

MIT License — 详见 LICENSE

版权声明:

  • 原始代码:Copyright (c) 2026 Cursor for CPA/CLIProxyAPI contributors
  • 自研补丁:Copyright (c) 2026 kilolonion

致谢与来源

详见 THIRD_PARTY_NOTICES.md

AI 辅助开发说明

本项目的自研补丁(思考透传、约束注入、图标集成)由 AI 辅助完成,包括:

  • 需求分析与实现方案设计
  • 代码编写与测试用例更新
  • 端到端行为验证(与上游二进制对比)
  • 文档撰写

人工审查与最终决策由 kilolonion 完成。

贡献

本仓库欢迎 PR 和 Issue。与上游相比,本仓库承诺:

  • 及时响应:48 小时内回复 Issue 和 PR
  • 明确反馈:拒绝时会说明理由,接受时会指明合并计划
  • 维护活跃:持续跟进 Cursor 协议变化与 CLIProxyAPI 更新

详见 CONTRIBUTING.md(如未创建,请先提 Issue 讨论)

免责声明

本项目仅提供技术研究和互操作实现。使用者必须:

  • 仅连接本人所有或已获得明确授权的 Cursor 账号、订阅和运行环境
  • 自行确认使用方式符合所在地法律法规、Cursor 服务条款、可接受使用政策
  • 不得利用本项目共享或转售账号访问、规避额度或速率限制

详见 DISCLAIMER.md

About

Enhanced Cursor plugin for CLIProxyAPI with reasoning content streaming, system constraint injection, and official brand logo (AI-assisted development)

Resources

Stars

16 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages