Files
cursor2api/config.yaml.example
小海 4a026b6b98 feat: add tools.disabled mode to skip all tool injection for max context savings
- tools.disabled: true completely skips tool definitions + few-shot injection
- Response-side parseToolCalls still works if model outputs action blocks
- Env var: TOOLS_DISABLED=true|false
- Updated config.yaml.example and docker-compose.yml
2026-03-20 09:23:15 +08:00

180 lines
8.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Cursor2API v2 配置文件
# 复制此文件为 config.yaml 并根据需要修改
# 服务端口
port: 3010
# 请求超时(秒)
timeout: 120
# ==================== API 鉴权(推荐公网部署时开启) ====================
# 配置后所有 POST 请求必须携带 Bearer token 才能访问
# 客户端使用方式Authorization: Bearer <token> 或 x-api-key: <token>
# 支持多个 token数组格式不配置则全部放行
# 环境变量: AUTH_TOKEN=token1,token2 (逗号分隔)
# auth_tokens:
# - "sk-your-secret-token-1"
# - "sk-your-secret-token-2"
# ==================== 代理设置 ====================
# 全局代理(可选)
# ⚠️ Node.js fetch 不读取 HTTP_PROXY / HTTPS_PROXY 环境变量,
# 必须在此处或通过 PROXY 环境变量显式配置代理。
# 支持 http 代理,含认证格式: http://用户名:密码@代理地址:端口
# 💡 国内可直连 Cursor API通常不需要配置全局代理
# proxy: "http://127.0.0.1:7890"
# Cursor 使用的模型
cursor_model: "anthropic/claude-sonnet-4.6"
# ==================== 自动续写配置 ====================
# 当模型输出被截断时,自动发起续写请求的最大次数
# 默认 0禁用由客户端如 Claude Code自行处理续写体验更好
# 设为 1~3 可启用 proxy 内部续写(拼接更完整,但延迟更高)
# 环境变量: MAX_AUTO_CONTINUE=0
max_auto_continue: 0
# ==================== 历史消息条数硬限制 ====================
# 输入消息条数上限,超出时删除最早的消息(保留工具 few-shot 示例)
# 防止超长对话800+ 条)导致请求体积过大、响应变慢
# 设为 -1 不限制消息条数
# 环境变量: MAX_HISTORY_MESSAGES=100
max_history_messages: -1
# ==================== Thinking 开关(最高优先级) ====================
# 控制是否向 Cursor 发送 thinking 请求,优先级高于客户端传入的 thinking 参数
# 设为 true: 强制启用 thinking即使客户端没请求也注入
# 设为 false: 强制关闭 thinking即使客户端请求了 thinking 也不启用)
# 不配置此项时: 跟随客户端请求Anthropic API 看 thinking 参数OpenAI API 看模型名/reasoning_effort
# 环境变量: THINKING_ENABLED=true|false
thinking:
enabled: false
# ==================== 历史消息压缩配置 ====================
# 对话过长时自动压缩早期消息,释放输出空间,防止 Cursor 上下文溢出
# 压缩算法会智能识别消息类型,不会破坏工具调用的 JSON 结构
compression:
# 是否启用压缩true/false关闭后所有消息原样保留
# 环境变量: COMPRESSION_ENABLED=true|false
enabled: false
# 压缩级别: 1=轻度(默认), 2=中等, 3=激进
# 环境变量: COMPRESSION_LEVEL=1|2|3
# 级别说明:
# 1轻度: 保留最近 10 条消息,早期消息保留 4000 字符,适合日常使用(默认)
# 2中等: 保留最近 6 条消息,早期消息保留 2000 字符,适合中长对话
# 3激进: 保留最近 4 条消息,早期消息保留 1000 字符,适合超长对话/大工具集
level: 1
# 以下为高级选项,设置后会覆盖 level 的预设值
# 保留最近 N 条消息不压缩(数字越大保留越多上下文)
# keep_recent: 10
# 早期消息最大字符数(超过此长度的消息会被智能压缩)
# early_msg_max_chars: 4000
# ==================== 工具处理配置 ====================
# 控制工具定义如何传递给模型,影响上下文体积和工具调用准确性
tools:
# Schema 呈现模式
# 'compact': TypeScript 风格的紧凑签名,体积最小(~15K chars/90工具
# 示例: {file_path!: string, encoding?: utf-8|base64}
# 'full': [默认] 完整 JSON Schema工具调用最精确
# 适合工具少(<20个或需要最高准确率的场景
# 'names_only': 只输出工具名和描述不输出参数Schema
# 极致省 token适合模型已经"学过"这些工具的场景(如 Claude Code 内置工具)
schema_mode: 'full'
# 工具描述截断长度
# 0: [默认] 不截断,保留完整描述,工具理解最准确
# 50: 截断到 50 个字符,节省上下文(适合工具多的场景)
# 200: 中等截断,保留大部分有用信息
description_max_length: 0
# 工具白名单 — 只保留指定名称的工具(不配则保留所有工具)
# 💡 适合只用核心工具、排除大量不需要的 MCP 工具等场景
# include_only:
# - "Read"
# - "Write"
# - "Bash"
# - "Glob"
# - "Grep"
# - "Edit"
# 工具黑名单 — 排除指定名称的工具
# 💡 比白名单更灵活,可以只去掉几个不常用的工具
# exclude:
# - "some_mcp_tool"
# ★ 透传模式(推荐 Roo Code / Cline 等非 Claude Code 客户端开启)
# true: 跳过 few-shot 注入和工具格式改写,直接将工具定义以原始 JSON 嵌入系统提示词
# 减少与 Cursor 内建身份的提示词冲突,解决「只有 read_file/read_dir」的错误
# 工具调用仍使用 ```json action``` 格式,响应解析不受影响
# false: [默认] 使用标准模式buildToolInstructions + 多类别 few-shot 注入)
# Claude Code 推荐此模式,兼容性和工具调用覆盖率更好
# 环境变量: TOOLS_PASSTHROUGH=true|false
# passthrough: true
# ★ 禁用模式(极致省上下文)
# true: 完全不注入工具定义和 few-shot 示例,节省大量上下文空间
# 模型凭自身训练记忆处理工具调用(适合已内化工具格式的场景)
# 响应中的 ```json action``` 块仍会被正常解析
# false: [默认] 正常注入工具定义
# 环境变量: TOOLS_DISABLED=true|false
# disabled: true
# ==================== 响应内容清洗(可选,默认关闭) ====================
# 开启后,会将响应中 Cursor 相关的身份引用替换为 Claude
# 例如 "I am Cursor's support assistant" → "I am Claude, an AI assistant by Anthropic"
# 同时清洗工具可用性声明、提示注入指控等敏感内容
# 💡 如果你不需要伪装身份,建议保持关闭以获得最佳性能
# 💡 开启后,所有响应都会经过正则替换处理,有轻微性能开销
# sanitize_response: true
# ==================== 自定义拒绝检测规则(可选) ====================
# 追加到内置拒绝检测列表之后(不替换内置规则),匹配到则触发重试逻辑
# 每条规则作为正则表达式解析(不区分大小写),无效正则会自动退化为字面量匹配
# 💡 适用场景:特定语言的拒绝措辞、项目特有的拒绝响应、新的 Cursor 拒绝模式
# 支持热重载:修改后下一次请求即生效
# refusal_patterns:
# - "我无法协助"
# - "this violates our"
# - "I must decline"
# - "无法为您提供"
# - "this request is outside"
# 浏览器指纹配置
fingerprint:
user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36"
# ==================== 视觉处理降级配置(可选) ====================
# 如果开启,可以拦截您发给大模型的图片进行降级处理(因为目前免费 Cursor 不支持视觉)。
vision:
enabled: true
# mode 选项: 'ocr' 或 'api'
# 'ocr': [默认模式] 彻底免 Key零配置完全依赖本机的 CPU 识图,提取文本、报错日志、代码段后发给大模型。
# 'api': 需要配置下方的 baseUrl 和 apiKey把图发给外部视觉模型如 Gemini、OpenRouter能"看到"画面内容和色彩。
mode: 'ocr'
# ---------- 以下选项仅在 mode: 'api' 时才生效 ----------
# base_url: "https://openrouter.ai/api/v1/chat/completions"
# api_key: "sk-or-v1-..."
# model: "meta-llama/llama-3.2-11b-vision-instruct:free"
# Vision 独立代理(可选)
# 💡 Cursor API 国内可直连无需代理,但图片分析 APIOpenAI/OpenRouter可能需要
# 配置此项后只有图片 API 走代理,不影响主请求的响应速度
# 如果不配,会回退到上面的全局 proxy如果有的话
# proxy: "http://127.0.0.1:7890"
# ==================== 日志持久化配置(可选) ====================
# 开启后日志会写入文件,重启后自动加载历史记录
# 环境变量: LOG_FILE_ENABLED=true|false, LOG_DIR=./logs
logging:
# 是否启用日志文件持久化(默认关闭)
file_enabled: false
# 日志文件存储目录
dir: "./logs"
# 日志保留天数(超过天数的日志文件会自动清理)
max_days: 7