38 Commits

Author SHA1 Message Date
joyasushi
69fc7bba64 Add DolOffer sponsor section 2026-06-01 15:31:43 +08:00
Xu Kang
bfb9f9c2aa Revise README for v2.7.8 features and changes
Updated README to reflect new features in v2.7.8.
2026-04-01 08:59:40 +08:00
小海
0716b602ac feat: v2.7.8 - 新增三大防截断机制
- 上下文压力膨胀(context_pressure):虚增 input_tokens 让客户端提前触发自动压缩
- 自适应历史预算(tools.adaptive_budget):工具数量越多,自动预留越多输出空间
- 工具结果智能截断(tools.smart_truncation):按工具类型差异化截断(Read/Bash/Search)
- 三个功能均默认关闭,支持 config.yaml 和环境变量控制
- 更新 config.yaml.example、docker-compose.yml、README 更新日志
2026-03-27 11:48:37 +08:00
小海
55a679fb2c docs: 添加赞助感谢板块 2026-03-27 10:28:54 +08:00
小海
2933df2697 fix: improve truncation recovery and diagnostics for v2.7.7
- mark degraded requests in logs and viewer when execution quality drops
- record Anthropic toolCallsDetected correctly in summaries
- continue semantically incomplete long Write/Edit tool payloads
- restore truncated OpenAI stream long Write tool_calls
- update release docs, sample config, docker notes, and README guidance
2026-03-23 11:39:00 +08:00
huangzhenting
a84dfd6d03 feat: 实现 db_enabled/db_path 热重载支持,修复文档格式
- logger-db.ts: 新增 closeDb(),修复 initDb() 支持安全重复调用
- logger.ts: 注册 onConfigReload 回调,db_enabled/db_path 变更后无需重启
- config.yaml.example: 删除「需重启」警告注释,补充热重载说明
- README.md: 修复环境变量表格被 blockquote 截断的格式问题,更新热重载说明
- vue-ui/README.md: 删除「需重启服务」错误说明
- ConfigDrawer.vue: 删除「需重启」提示
2026-03-23 08:45:21 +08:00
huangzhenting
1bc91cac24 feat: 新增 SQLite 持久化支持 + Vue UI 后端过滤与分页优化
- 新增 src/logger-db.ts:SQLite 封装层(WAL 模式,支持写入/分页/状态计数/按需 payload 查询)
- logger.ts:双写 SQLite+JSONL,启动时 db_enabled 模式跳过 JSONL 读取避免 OOM,新增游标分页和后端过滤函数
- config.ts/config-api.ts:新增 db_enabled/db_path 配置字段及 LOG_DB_ENABLED/LOG_DB_PATH 环境变量
- log-viewer.ts/index.ts:新增 /api/requests/more 支持 status/keyword/since 后端过滤
- Vue UI:搜索框 400ms 防抖,状态/时间筛选立即触发后端查询,statusCounts 不受状态筛选影响,SSE 实时推送时增量更新计数
- 新增迁移工具 test/migrate-jsonl-to-sqlite.mjs 和单元测试 test/unit-logger-db.mjs
- 完善 README.md、config.yaml.example、docker-compose.yml、vue-ui/README.md 文档
2026-03-22 21:10:26 +08:00
huangzhenting
c4b81f33d1 fix: improve token budget accuracy and add TokenDiff logging
- converter: replace rough overhead formula (tools*70+350) with actual
  estimateTokens on built few-shot messages + Cursor hidden overhead
  (1300 base + perTool by schema_mode); remove 16000 output reservation
- cursor-client: sendCursorRequestFull now returns {text, usage?} to
  capture real Cursor inputTokens/outputTokens from messageMetadata
- handler: add estimateCursorReqTokens() and [TokenDiff] log to compare
  tiktoken estimate vs actual Cursor usage; fix non-stream retry paths
  to update usage from retry result; skip auto-continue when response < 200 chars
- openai-handler: update 4 call sites for new sendCursorRequestFull return type
- config: raise default maxHistoryTokens from 130000 to 150000
- docs/config: remove incorrect 'tiktoken underestimates 10~20%' claim;
  update overhead description and reference range to 130000~170000
2026-03-22 02:35:04 +08:00
huangzhenting
b542d554c6 feat: add max_history_tokens to trim context by token budget
Introduce js-tiktoken (cl100k_base) based token estimation to replace
the naive chars/3 approach. Add max_history_tokens config option that
trims oldest messages when the estimated token budget is exceeded.

- src/tokenizer.ts: new module wrapping js-tiktoken getEncoding
- src/config.ts/config-api.ts: YAML parse, env var, hot-reload, default 130000
- src/converter.ts: token budget trimming after max_history_messages pass
- src/handler.ts: replace estimateInputTokens with tiktoken-based version
- config.yaml.example/docker-compose.yml/README.md: docs and examples
- vue-ui: ConfigDrawer field, HotConfig type, README table row
2026-03-21 18:41:45 +08:00
majorcheng
310fd8672d fix: complete OpenAI logs and default persisted logs to summary 2026-03-20 14:06:46 +08:00
小海
d293d272ad release: v2.7.6 - tool passthrough/disabled modes, identity leak fix, tool_choice guidance
New features:
- tools.passthrough: bypass few-shot injection, embed raw tool defs (for Roo Code/Cline)
- tools.disabled: skip all tool injection for max context savings
- Enhanced Cursor identity leak sanitization (new regex patterns)
- Improved tool_choice=any guidance with collaborative tone
- TOOLS_PASSTHROUGH / TOOLS_DISABLED env var support
- Startup & request logs show tool mode (disabled/passthrough/standard)
2026-03-20 09:28:49 +08:00
小海
14aa65349c feat: v2.7.5 — 常量集中管理 + 自定义拒绝规则 + 响应清洗开关
🏗️ 常量集中管理
- 新增 constants.ts,提取 REFUSAL_PATTERNS、IDENTITY_PROBE_PATTERNS、
  TOOL_CAPABILITY_PATTERNS、CLAUDE_IDENTITY_RESPONSE、CLAUDE_TOOLS_RESPONSE
- isRefusal() 统一导出,内置 + 自定义规则合并检测

🔧 自定义拒绝检测规则 (config.yaml: refusal_patterns)
- 用户可添加自定义正则匹配规则,追加到内置列表
- 无效正则自动退化为字面量匹配
- 缓存编译 + 热重载支持

🔀 响应内容清洗开关 (config.yaml: sanitize_response)
- 控制 sanitizeResponse() 是否替换 Cursor 身份引用为 Claude
- 默认关闭,关闭时零开销
- 支持环境变量 SANITIZE_RESPONSE 覆盖
2026-03-19 09:44:21 +08:00
小海
8a5117bbb1 v2.7.4: 截断安全 + 代理续写禁用 + 日志提示词对比视图
- 截断时跳过工具解析,防止损坏的工具调用(写入半截文件)
- maxAutoContinue 默认 0,交由 Claude Code 原生续写
- 系统提示词身份声明清除(防 prompt injection 拒绝)
- 流式热身窗口 96→300 chars(拒绝检测前不释放文本)
- 日志查看器「提示词对比」视图:原始 vs Cursor 转换后
- 转换摘要面板:工具数/消息数/上下文大小一目了然
- 标题提取增强:通用 XML 标签清除 + 更多引导语过滤
2026-03-18 11:56:26 +08:00
小海
447dad8c03 fix: thinking 未配置时不再自动注入,跟随客户端请求
Made-with: Cursor
2026-03-17 14:42:33 +08:00
小海
fd9d17a49e release: v2.7.3 — 统一 thinking 剥离 + 拒绝检测增强 + Docker 部署优化
Made-with: Cursor
2026-03-17 14:28:31 +08:00
小海
73651d1bc9 release: v2.7.2 — 日志查看器升级 + 工程化改进
- 日/夜主题切换、标题提取修复、前端静态文件分离
- 移除 WELL_KNOWN_TOOLS、config.yaml 模板化、Thinking 默认关闭
- README 新增日志查看器说明、配置表格、环境变量参考
2026-03-17 09:46:39 +08:00
小海
f40bfaee64 refactor: 移除 WELL_KNOWN_TOOLS 工具白名单
所有工具现在统一保留描述(截取前50字符),不再对特定工具名跳过描述。
2026-03-17 09:40:10 +08:00
小海
222485ca93 chore: 移除 config.yaml 跟踪 + 更新 README 使用说明
- config.yaml 加入 .gitignore(含敏感 token,不再上传)
- 新增 config.yaml.example 作为配置模板
- README 新增:日志查看器功能介绍、配置表格、环境变量参考
- README 更新:项目结构增加 public/ 目录说明
- .gitignore 清理重复条目 + 排除截图文件
2026-03-17 09:37:34 +08:00
小海
d366125a56 feat(v2.7.1): 智能压缩算法 + 可配置压缩系统 + 日志鉴权 + Thinking 修复
🗜️ 智能历史压缩算法:
- 修复 JSON Action 块截断: 工具调用消息摘要化, 不再切断代码块
- 工具结果 60% 头 + 40% 尾保留, 错误信息不丢失
- 修复非工具模式 few-shot 偏移量 Bug
- 普通文本在自然边界(换行符)处截断

⚙️ 可配置压缩系统 (config.yaml):
- compression.enabled: 开关
- compression.level: 1(轻度) / 2(中等) / 3(激进)
- compression.keep_recent / early_msg_max_chars: 高级覆盖
- 支持 COMPRESSION_ENABLED / COMPRESSION_LEVEL 环境变量

🔐 日志查看器鉴权:
- 配置 auth_tokens 后 /logs 及 API 端点需验证
- 精美登录页, token 缓存到 localStorage
- 支持 query/header/x-api-key 三种传入方式

🧠 Thinking 修复:
- 拒绝检测先剥离 <thinking> 标签, 防止误判
- OpenAI 格式默认启用 thinking
2026-03-16 17:11:01 +08:00
小海
f0ab29056f docs: 添加版本说明 — v2.7.0 基于 v2.5.6 回滚优化,v2.6.x 见 Tags 2026-03-16 09:52:53 +08:00
小海
85147d2fef fix: 远程URL图片下载转base64 — 修复OpenClaw/Telegram/ccagents等客户端的URL图片处理
- preprocessImages() 中检测 source.type='url' 的图片块
- 自动下载远程图片并转为 base64 格式
- 使用 vision proxy 下载(支持代理环境)
- 下载失败优雅降级为错误提示文本
- 同时更新 README(用户删除旧版更新日志)
2026-03-16 09:51:34 +08:00
小海
db41b741a5 docs: 更新 README 至 v2.7.0 — 新增功能说明 + 项目结构 + 配置项 + 更新日志 2026-03-16 09:48:12 +08:00
小海
cb0bf5c632 feat: v2.5.6 — 渐进式历史压缩 + 续写智能去重 + 非流式续写对齐 + Token估算优化 + JSON解析器加固 2026-03-12 10:48:54 +08:00
小海
2bea3ce4d8 chore(release): v2.5.3 - Schema压缩+JSON感知解析器+续写重写 2026-03-11 10:24:41 +08:00
小海
74f1a632a9 chore(release): v2.5.2 - Remove context compression and implement internal auto-continue 2026-03-11 09:54:10 +08:00
小海
d9c423027d docs: 更新 README 至 v2.5.1,新增压缩和截断检测特性说明 2026-03-10 17:32:07 +08:00
小海
f12ca30893 feat(v2.5.0): Cursor IDE 完整适配 + 工具参数自动修复 + 增量流式优化
🖥️ Cursor IDE 适配:
- 新增 /v1/responses 端点(Responses API → Chat Completions 自动转换)
- 兼容 Cursor 扁平工具格式 { name, input_schema }
- 扩展 /v1/models 模型列表(claude-sonnet-4-5/4/3.5)
- 连续同角色消息自动合并(mergeConsecutiveRoles)
- content 数组中 tool_use/tool_result 块直接透传

🔧 工具参数自动修复 (tool-fixer.ts):
- normalizeToolArguments: file_path → path 字段名映射
- replaceSmartQuotes: 中文/法文智能引号替换
- repairExactMatchToolArguments: 模糊匹配修复
- extractToolResultNatural: 自然语言 tool_result 转换

🚀 流式增量优化:
- input_json_delta / tool_calls 按 128 字节分块
- 拒绝重试扩展到工具模式
- 极短响应自动重试

🧪 新增 44 个单元测试 (tool-fixer + openai-compat)
2026-03-10 16:27:19 +08:00
小海
24da706ffe chore: 同步 index.ts 版本号 + README changelog 至 v2.4.0 2026-03-10 15:15:38 +08:00
小海
59d350b032 fix: 修复 README changelog 中的 emoji 乱码 2026-03-06 14:45:20 +08:00
小海
41db85cb6f feat(v2.3.2): 视觉预处理统一化 + OpenAI防御强化 + 认知重构
📸 视觉预处理统一化 (修复 #8)
- 新增 preprocessImages() 在 convertToCursorRequest 入口统一处理图片
- 修复 Claude CLI 图片不进 vision 预处理的 bug
- extractMessageText 新增 case 'image' 兜底处理
- Express body 限制 10MB → 50MB 支持大图

🛡️ OpenAI 端全面防御层对齐
- 拒绝检测 + 自动重试 (与 Anthropic 端一致)
- 响应清洗 sanitizeResponse
- 身份探针拦截 isIdentityProbe
- 流式统一缓冲模式

🧠 非工具场景认知重构
- 无工具请求注入认知重构前缀,防止暴露 Cursor 文档助手身份
- 助手历史消息中 read_file/read_dir 拒绝痕迹清洗
- 工具能力询问返回 Claude 能力描述而非硬拦截
- 扩展中文 sanitizeResponse 规则
2026-03-06 14:44:35 +08:00
小海
ad006060dc fix(proxy): 结合 referer 伪装,从 IDE 场景融合策略回退至写作文档认知重构策略以绕过强文档助手工具限制 2026-03-06 11:11:56 +08:00
小海
2a7c23416f feat(vision): add zero-config local OCR and external vision api fallback for image payloads 2026-03-06 11:00:50 +08:00
小海
72719ac797 docs+cleanup: update README for v2.2.0, remove jscode/ directory
- Updated README: removed jscode setup steps, script_url config,
  x-is-human Token section; updated project structure; added v2.2.0
  changelog with identity protection and code cleanup details
- Deleted jscode/ directory (env.js, main.js, README.md) - no longer
  needed since token generation was removed
- Updated defense layer table (L3: 50+ patterns, L4: sanitizeResponse)
2026-03-05 17:23:54 +08:00
小海
89e4f5eb99 v2.1.0: Prompt strategy overhaul - Cursor IDE scene-fusion, remove tool whitelist, multi-layer refusal defense, context sanitization 2026-03-05 15:30:14 +08:00
小海
2d7dafedb7 feat: 新增 OpenAI Chat Completions API 兼容接口
- 新增 POST /v1/chat/completions 端点,支持流式和非流式
- 完整支持 OpenAI 格式的工具调用 (function calling)
- 支持 system/user/assistant/tool 四种角色消息
- 自动将 OpenAI 请求转换为 Anthropic 格式,复用现有 Cursor 管道
- 流式响应遵循 OpenAI SSE 规范 (data: [DONE] 结束标志)
- 新增 openai-types.ts 和 openai-handler.ts
- 更新启动信息展示两种 API 端点
- 更新 README 文档说明 OpenAI 兼容用法
2026-03-04 17:46:04 +08:00
小海
561017e7b1 docs: 新增 MIT 开源协议并完善免责声明 (Disclaimer)
- 补充了标准的 MIT 开源许可证文件 (LICENSE)。
- 在 README 中增加了极其明确的风险警告与免责声明,明确逆向和代理调用可能导致账号封锁,作者不为此背锅。
2026-03-04 17:20:38 +08:00
小海
5fdaeb934b feat: cursor2api v2 - TypeScript 重构
- Node.js/TypeScript 全新架构
- Anthropic Messages API 完整兼容(流式/非流式)
- 提示词注入实现工具调用能力(XML 格式)
- Chrome TLS 指纹模拟 + x-is-human token
- 支持 Claude Code 直接对接
2026-03-04 15:05:00 +08:00
小海
26f9275f9b init: 空项目起点 (v2 重构) 2026-03-04 14:57:42 +08:00