diff --git a/CHANGELOG.md b/CHANGELOG.md index cc1ca18..2c89f9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## v2.5.3 (2026-03-11) + +### 🗜️ Schema 压缩 — 根治截断问题 + +- **根本原因定位**:90 个工具的完整 JSON Schema 占用 ~135,000 chars,导致 Cursor API 输出预算仅 ~3,000 chars,Write/Edit 工具的 content 参数被严重截断 +- **compactSchema() 压缩**:将完整 JSON Schema 转为紧凑类型签名(如 `{file_path!: string, encoding?: utf-8|base64}`),输入体积降至 ~15,000 chars +- **工具描述截断**:每个工具描述最多 200 chars,避免个别工具(如 Agent)的超长描述浪费 token +- **效果**:输出预算从 ~3k 提升到 ~8k+ chars,Write 工具可一次写入完整文件 + +### 🔧 JSON-String-Aware 解析器 + +- **修复致命 Bug**:旧的 lazy regex `/```json[\s\S]*?```/g` 会在 JSON 字符串值内部的 ``` 处提前闭合,导致 Write/Edit 工具的 content 参数(如含 markdown 代码块的文档)被截断为仅前几行 +- **新实现**:手动扫描器跟踪 JSON 字符串状态(`"` 配对 + `\` 转义),只在字符串外部匹配闭合 ``` +- **截断恢复**:无闭合 ``` 的代码块也能通过 tolerantParse 恢复工具调用 + +### ⚠️ 续写机制重写 + +- **修复空响应问题**:旧实现只追加 assistant 消息,Cursor API 看到最后是 assistant 的消息后返回空响应 +- **新实现**:每次续写添加 user 引导消息 + 最后 300 chars 上下文锚点 +- **防膨胀**:每次基于原始消息快照重建,而非累积消息 +- **MAX_AUTO_CONTINUE** 从 4 提升至 6 + +--- ## v2.5.2 (2026-03-11) ### 🗜️ 移除上下文智能压缩 (Reverted) diff --git a/README.md b/README.md index f06ea15..36c98e1 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,8 @@ - **多层拒绝拦截** - 自动检测和抑制 Cursor 文档助手的拒绝行为(工具和非工具模式均生效) - **三层身份保护** - 身份探针拦截 + 拒绝重试 + 响应清洗,确保输出永远呈现 Claude 身份 - **🆕 截断无缝续写** - Proxy 底层自动拼接被截断的工具响应(代码块/XML未闭合),防止工具调用在长输出中退化为纯文本,彻底代替粗暴的上下文压缩解决失忆问题。 +- **🆕 Schema 压缩** - 工具定义从完整 JSON Schema (~135k chars) 压缩为紧凑类型签名 (~15k chars),大幅提升 Cursor API 输出预算 +- **🆕 JSON 感知解析器** - 正确处理 Write/Edit 工具 content 中的嵌入式代码块,避免工具参数被 markdown ``` 标记截断 - **连续同角色消息自动合并** - 满足 Anthropic API 交替要求,解决 Cursor IDE 发送格式兼容问题 - **上下文清洗** - 自动清理历史对话中的权限拒绝和错误记忆 - **Chrome TLS 指纹** - 模拟真实浏览器请求头 @@ -154,6 +156,20 @@ AI 按此格式输出 → 我们解析并转换为标准的 Anthropic `tool_use` ## 更新日志 +### v2.5.3 (2026-03-11) — Schema 压缩 + JSON 感知解析器 + 续写重写 + +**Schema 压缩 — 根治截断问题** +- 定位根因:90 个工具完整 JSON Schema 占用 ~135k chars,Cursor API 输出预算仅 ~3k chars +- `compactSchema()` 压缩为紧凑类型签名,输入降至 ~15k,输出预算提升至 ~8k+ chars + +**JSON-String-Aware 解析器** +- 修复 lazy regex 在 JSON 字符串内部的 ``` 处提前闭合的致命 bug +- 手动扫描器正确跟踪 `"` 配对和 `\` 转义状态 + +**续写机制重写** +- 续写请求增加 user 引导消息 + 300 chars 上下文锚点 +- 基于原始消息快照重建(防膨胀),空响应时立即停止 + ### v2.5.2 (2026-03-11) — 移除上下文压缩 + 内部截断续写 **🗜️ 移除上下文智能压缩 (Reverted)** diff --git a/package.json b/package.json index 671ee5c..89c008a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cursor2api", - "version": "2.5.2", + "version": "2.5.3", "description": "Proxy Cursor docs AI to Anthropic Messages API for Claude Code", "type": "module", "scripts": {