claude-code-best
fcbc882232
chore: 清理 src 下 113 项未使用导入和死代码
...
删除未使用的文件(BuiltinStatusLine.tsx、4 个重复的 .ts stub)、
移除约 55 个文件中未使用的 React 导入、
清理约 50 处未使用的导入/变量/参数。
净减少 ~296 行代码,precheck 4077 测试全部通过。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-05 20:05:15 +08:00
claude-code-best
6182015005
style: 完成所有文件的lint
2026-05-01 21:39:30 +08:00
claude-code-best
c80e593212
feature: langfuse thinking 及 文本edit的问题修复( #371 ); 省略 diff 以减少内存峰值 ( #376 )
...
* feat: langfuse tracing 增加 thinking 参数记录
在 recordLLMObservation 中添加 thinking 配置(type/budgetTokens),
所有 provider(claude/gemini/openai)及 tokenEstimation、sideQuery
调用处同步传递 thinking 信息,便于 Langfuse 面板观察 thinking 使用情况。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
* fix: langfuse tracing 兼容 budget_tokens snake_case 格式
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
* fix: 统一传递完整 thinking 配置而非仅 thinkingType
Langfuse 追踪直接传递整个 thinking 对象(含 type 和 budget_tokens),
Analytics 日志同步补充 thinkingBudgetTokens 字段,logAPIQuery 改为
接收 ThinkingConfig 类型参数。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
* feat: 省略旧消息的代码 diff 展示,仅保留最新消息的完整 diff
* fix: Edit 工具增加 Tab/空格规范化匹配,修复中文和缩进文件编辑失败
Read 工具输出将 Tab 渲染为空格,用户复制后 Edit 工具无法匹配。
在 findActualString 中增加 Tab→空格规范化回退匹配,并精确映射回原始文件位置。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
* docs: README 添加安装/更新失败的解决方案提示
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-27 17:06:33 +08:00
WANG HONGXIANG
901628b4d9
fix: 修复 OpenAI provider (gpt-5.4/gpt-5.3-codex等模型)下 内建mcp__plugin_weixin_weixin__reply 微信工具不可见的问题 ( #359 )
...
* fix: 修复 OpenAI provider 下 MCP 工具不可见
* docs: 补充 OpenAI MCP 工具列表注释
* fix: 修正 OpenAI Langfuse 输入记录
* refactor: 使用类型守卫收窄 Langfuse role
* fix: 保留 Langfuse OpenAI 数组消息角色
* fix: 合并 Langfuse OpenAI tool_calls
* fix: 修复 OpenAI Langfuse 类型检查
2026-04-26 09:17:09 +08:00
claude-code-best
6536757428
feat: 对其他 provider 提供 langfuse 监控
2026-04-19 09:09:27 +08:00
claude-code-best
bddd146f25
feat: 重构供应商层次 ( #286 )
...
* refactor: 创建 @anthropic-ai/model-provider 包骨架与类型定义
- 新建 workspace 包 packages/@anthropic-ai/model-provider
- 定义 ModelProviderHooks 接口(依赖注入:分析、成本、日志等)
- 定义 ClientFactories 接口(Anthropic/OpenAI/Gemini/Grok 客户端工厂)
- 搬入核心类型:Message 体系、NonNullableUsage、EMPTY_USAGE、SystemPrompt、错误常量
- 主项目 src/types/message.ts 等改为 re-export,保持向后兼容
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* refactor: 提升 OpenAI 转换器和模型映射到 model-provider 包
- 搬入 OpenAI 消息转换(convertMessages)、工具转换(convertTools)、流适配(streamAdapter)
- 搬入 OpenAI 和 Grok 模型映射(resolveOpenAIModel、resolveGrokModel)
- 主项目文件改为 thin re-export proxy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* refactor: 搬入 Gemini 兼容层到 model-provider 包
- 搬入 Gemini 类型定义、消息转换、工具转换、流适配、模型映射
- 主项目 gemini/ 目录下文件改为 thin re-export proxy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* refactor: 搬入 errorUtils 并迁移消费者导入到 model-provider
- 搬入 formatAPIError、extractConnectionErrorDetails 等 errorUtils
- 迁移 10 个消费者文件直接从 @anthropic-ai/model-provider 导入
- 更新 emptyUsage、sdkUtilityTypes、systemPromptType 为 re-export proxy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* feat: compact 模型降级为 -1 模式(Opus→Sonnet, Sonnet→Haiku)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* docs: 添加 agent-loop 绘图
* Revert "feat: compact 模型降级为 -1 模式(Opus→Sonnet, Sonnet→Haiku)"
This reverts commit e458d6391d .
* docs: 添加简化版 agent loop
* fix: 修复 n 快捷键导致关闭的问题
* fix: 修复 node 下 ws 没打包问题
* docs: 修复链接
* test: 添加测试支持
* fix: 修复类型问题(#267 ) (#271 )
* fix: 修复 Bun 的 polyfill 问题
* fix: 类型修复完成
* feat: 统一所有包的类型文件
* fix: 修复构建问题
* test: 修复类型校验 (#279 )
* fix: 修复 Bun 的 polyfill 问题
* fix: 类型修复完成
* feat: 统一所有包的类型文件
* fix: 修复构建问题
* fix(remote-control): harden self-hosted session flows (#278 )
Co-authored-by: chengzifeng <chengzifeng@meituan.com >
* docs: update contributors
* build: 新增 vite 构建流程
* feat: 添加环境变量支持以覆盖 max_tokens 设置
* feat(langfuse): LLM generation 记录工具定义
将 Anthropic 格式的工具定义转换为 Langfuse 兼容的 OpenAI 格式,
并在 generation 的 input 中以 { messages, tools } 结构传入,
以便在 Langfuse UI 中查看完整的工具定义信息。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* feat: 添加对 ACP 协议的支持 (#284 )
* feat: 适配 zed acp 协议
* docs: 完善 acp 文档
* chore: 1.4.0
* conflict: 解决冲突
* feat: 添加测试覆盖率上报
* style: 改名加移动文件夹位置
* refactor: 移动测试用例及实现
* test: 修复测试用例完成
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: Cheng Zi Feng <1154238323@qq.com >
Co-authored-by: chengzifeng <chengzifeng@meituan.com >
Co-authored-by: claude-code-best <272536312+claude-code-best@users.noreply.github.com >
2026-04-17 09:33:14 +08:00
claude-code-best
90027279e6
feat: 添加环境变量支持以覆盖 max_tokens 设置
2026-04-16 13:01:07 +08:00
claude-code-best
2fb1c9dcd8
feat: 工具层及 mcp 大重构 ( #252 )
...
* feat: 第一版大重构
* fix: 修复类型问题
* chore: 更新版本到 1.3.2
* Add brave as alternative WebSearchTool
* fix: 修正顺序
* fix: 修复对穷鬼模式的 auto dream 和 session memory 越过
* feat: 穷鬼模式去除 session-summary
* feat: 创建 builtin-tools 包,搬运所有工具实现
将 src/tools/ 下的全部 60 个工具目录迁移至 packages/builtin-tools/src/tools/,
内部导入路径已更新为 src/ alias 模式。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* refactor: 更新 src/ 中所有工具引用至 builtin-tools 包,删除 src/tools/
- src/tools.ts 及 178 个 src/ 文件的 import 路径从 ./tools/ 改为 builtin-tools/tools/
- 删除 src/tools/ 整个目录(已迁移至 packages/builtin-tools/)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* chore: 添加 builtin-tools 路径别名至 tsconfig,更新 bun.lock
- tsconfig.json 新增 builtin-tools/* 和 builtin-tools 路径映射
- 新增 packages/builtin-tools/src 至 include
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* refactor: 为 builtin-tools、mcp-client、agent-tools 添加 @claude-code-best 作用域前缀
所有包名及 import 路径统一添加 @claude-code-best/ 前缀:
- builtin-tools → @claude-code-best/builtin-tools
- mcp-client → @claude-code-best/mcp-client
- agent-tools → @claude-code-best/agent-tools
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: 修复 node 环境没有 bun 的问题
---------
Co-authored-by: Eric-Guo <eric.guocz@gmail.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-13 09:52:05 +08:00
claude-code-best
6a70056910
feat: 全部类型问题解决
2026-04-11 10:24:00 +08:00
claude-code-best
7088fe3c8b
Merge remote-tracking branch 'guunergooner/fix/openai-stop-reason-usage'
2026-04-10 22:27:16 +08:00
claude-code-best
ff03fe7fcb
fix: 修复类型问题
2026-04-10 17:34:01 +08:00
guunergooner
c82f59943c
fix(openai): fix stop_reason null, zero usage fields and max_tokens forwarding
...
- Fix stop_reason always null in assembled AssistantMessage by applying
the value captured from message_delta event
- Reset partialMessage to null after message_stop to prevent duplicate
AssistantMessage emission causing doubled content in next API request
- Forward computed maxTokens into buildOpenAIRequestBody as max_tokens
so OpenAI-compatible endpoints receive the intended output cap
- Extract assembleFinalAssistantOutputs helper to deduplicate message
assembly logic between message_stop handler and post-loop fallback
- Fix test helper to use events parameter instead of hidden global
- Add regression test for max_tokens request forwarding
Signed-off-by: guunergooner <tongchao0923@gmail.com >
2026-04-10 12:17:52 +08:00
claude-code-best
34bbc1d403
fix(types): replace all as any with proper type assertions
...
Eliminate unsafe `as any` casts across 21 non-test source files,
replacing them with specific type annotations:
- Bridge transport: use StdoutMessage type for write/writeBatch calls
- print.ts: type msg.request as Record<string, unknown> for unknown
SDK control subtypes; use StdoutMessage for output.enqueue()
- API providers (openai/grok/gemini): import ChatCompletion types,
type streams as AsyncIterable<ChatCompletionChunk>, type request
bodies as ChatCompletionCreateParamsStreaming
- Computer use executor: use Partial<ResolvePrepareCaptureResult>
for cross-platform screenshot result
- Components: replace Ink color string casts with proper typing
- Win32 bridge: type stdin as Writable after null check
All 2453 tests pass with 0 failures.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-09 23:51:33 +08:00
guunergooner
a3505aeec4
feat: Add DeepSeek thinking mode support for OpenAI compatibility layer ( #206 )
...
* feat: Add DeepSeek thinking mode support for OpenAI compatibility layer
- Add DeepSeek reasoning models support (deepseek-reasoner and DeepSeek-V3.2)
- Automatic thinking mode detection based on model name
- Inject thinking parameters in request body (both official API and vLLM formats)
- Preserve reasoning_content in message conversion for tool call iterations
- Extract buildOpenAIRequestBody() for testability
- Treat multimodal inputs (e.g. images) as new turn boundaries
- Fix env var cleanup in tests to prevent state leak
Signed-off-by: guunergooner <tongchao0923@gmail.com >
* docs: update contributors
---------
Signed-off-by: guunergooner <tongchao0923@gmail.com >
Co-authored-by: guunergooner <18660867+guunergooner@users.noreply.github.com >
2026-04-08 21:33:26 +08:00
bonerush
bdea5a2632
fix: Fix deferred tools handling in OpenAI compatibility layer ( #193 )
...
* fix: reorder tool and user messages for OpenAI API compatibility (#168 )
Fixes #168
OpenAI requires that an assistant message with tool_calls be immediately
followed by tool messages. Previously, convertInternalUserMessage
output user content before tool results, causing 400 errors.
Now tool messages are pushed first.
* fix: 修复OpenAI兼容层中deferred tools处理问题
提交描述:
修复了在使用OpenAI兼容API时TaskCreate工具调用失败的问题。
问题:
- 当使用OpenAI兼容API模型时,调用TaskCreate工具出现"InputValidationError: The required
parameter `subject` is missing"错误
- OpenAI兼容层没有正确处理deferred tools的过滤逻辑,导致工具schema没有被正确发送给模型
修复:
1. 在OpenAI兼容层中添加了与Anthropic API路径一致的deferred tools处理逻辑
2. 导入必要的工具搜索相关函数: isToolSearchEnabled, extractDiscoveredToolNames,
isDeferredTool等
3. 实现工具过滤逻辑:
- 检查工具搜索是否启用
- 构建deferred tools集合
- 过滤工具列表: 只包含非deferred工具或已发现的deferred工具
- 为deferred tools设置deferLoading标志
4. 修正了extractDiscoveredToolNames函数的导入路径错误
影响:
- 解决了TaskCreate工具调用时的参数验证错误
- 确保OpenAI兼容层与Anthropic API路径在处理deferred tools时行为一致
- 支持工具搜索功能在OpenAI兼容模式下正常工作
修改的文件:
- src/services/api/openai/index.ts - 主要修复文件
测试建议:
1. 使用OpenAI兼容API模型时,TaskCreate工具应该可以正常调用
2. 如果工具搜索功能启用,可能需要先使用ToolSearchTool来发现TaskCreate工具
3. 验证工具调用时不再出现"InputValidationError"错误
这个修复确保了当使用OpenAI兼容API(如Ollama、DeepSeek、vLLM等)时,deferred
tools(如TaskCreate)能够被正确处理,解决了工具调用失败的问题。
2026-04-08 12:56:10 +08:00
claude-code-best
462fe69d80
fix: 修复 openai 的 cost 计算问题
2026-04-04 16:37:50 +08:00
claude-code-best
00b044e8b2
支持 OpenAI Chat 兼容协议 ( #99 )
...
* feat: 完成 openai 接口兼容
* feat: 完成 openai 协议兼容
* fix: 修复测试用例
2026-04-03 23:33:17 +08:00