claude-code-best
7be08f53bd
feat: 实现 Tool Search 基础设施层(CORE_TOOLS 白名单 + TF-IDF 索引 + ExecuteTool + 搜索增强)
...
- 新增 CORE_TOOLS 白名单常量(31 个核心工具),重构 isDeferredTool 为白名单制判定
- 新建 TF-IDF 工具索引模块(toolIndex.ts),复用 localSearch.ts 算法函数
- 新建 ExecuteTool 跨 API provider 统一工具执行入口
- 增强 ToolSearchTool:TF-IDF 搜索路径、discover: 模式、并行搜索合并、文本模式回退
- 新增 27 个单元测试,precheck 零错误通过(4108 tests pass)
Co-Authored-By: glm-5.1[1m] <zai-org@claude-code-best.win >
v6-start
2026-05-08 22:29:15 +08:00
Bill
c7cb3d8f93
feat: /login支持codex订阅登录
2026-05-08 20:35:34 +08:00
claude-code-best
02dd796706
Merge pull request #435 from bonerush/fix/conditional-hooks-ctrlo-error
...
fix: 修复条件式 hook 调用导致的 "Rendered fewer hooks than expected" 错误
2026-05-08 19:21:30 +08:00
Bonerush
8ba51edec1
fix: 修复条件式 hook 调用导致的 "Rendered fewer hooks than expected" 错误
...
修复在 dev 模式下按下 Ctrl+O 切换 transcript 视图时 React 抛出
"Rendered fewer hooks than expected" 崩溃的问题。
## 根因分析
项目中有大量 hook(useState / useMemo / useRef / useSyncExternalStore 等)
被包裹在 `feature()` 三元表达式中条件调用,例如:
const value = feature('X') ? useHook() : defaultValue;
在 build 模式下 `feature()` 是编译时常量,死代码消除会移除未使用的分支,
hooks 数量在编译后是确定的。但在 dev 模式下(scripts/dev.ts 注入
--feature 启用全部 31 个 feature),`feature()` 是运行时调用,
但始终返回 true,因此所有 hooks 都会被调用,原本不会出问题。
真正的触发器是 REPL.tsx 第 5381 行的提前返回:
if (screen === 'transcript') { return transcriptReturn; }
当用户按下 Ctrl+O 进入 transcript 模式时,该提前返回之后的所有 hooks
(如 displayedAgentMessages 的 useMemo)都不会被调用,导致 React 在
下一次渲染时检测到 hooks 数量与上次不一致而崩溃。
此外,其他文件中也存在相同的条件式 hook 模式——虽然 dev 模式下
feature() 返回 true,所以这些路径实际上不会被触发,但它们是
潜在的隐患:若将来有人通过环境变量关闭某个 feature,
同样的崩溃会立即出现。
## 修复策略
采用统一模式:**始终无条件调用 hook,将 feature() gate 应用到值上**。
// Before (unsafe — hook count varies by feature flag)
const value = feature('X') ? useHook() : defaultValue;
// After (safe — hook always called, gate on the value)
const rawValue = useHook();
const value = feature('X') ? rawValue : defaultValue;
## 修改清单
### 核心修复(REPL.tsx)
- 将 `displayedAgentMessages` useMemo 及依赖变量(viewedTask /
viewedTeammateTask / viewedAgentTask / usesSyncMessages /
rawAgentMessages / displayedMessages)从 transcript 提前返回
之后移至之前,确保两模式下 hooks 调用顺序一致
- 修复 `disableMessageActions` / `useAssistantHistory` /
`voiceIntegration` 的条件式 hook 调用
### 条件式 hook 修复(11 个文件)
- src/hooks/useGlobalKeybindings.tsx — isBriefOnly / toggleBrief
keybinding 改为 isActive 门控
- src/hooks/useReplBridge.tsx — 5 个 BRIDGE_MODE 选值改为无条件调用
- src/hooks/useVoiceIntegration.tsx — 4 个 VOICE_MODE 选值修复
- src/components/PromptInput/Notifications.tsx — 4 个 feature 选值修复
- src/components/PromptInput/PromptInput.tsx — briefOwnsGap /
companionSpeaking 修复
- src/components/PromptInput/PromptInputFooterLeftSide.tsx — 4 个
VOICE_MODE 选值修复
- src/components/PromptInput/PromptInputQueuedCommands.tsx — isBriefOnly
- src/components/Spinner.tsx — briefEnvEnabled 修复
- src/components/TextInput.tsx — voiceState / audioLevels /
animationFrame 修复
- src/components/messages/AttachmentMessage.tsx — isDemoEnv 修复
- src/components/messages/UserPromptMessage.tsx — isBriefOnly /
viewingAgentTaskId / briefEnvEnabled 修复
- src/components/messages/UserToolResultMessage/UserToolSuccessMessage.tsx
— isBriefOnly 修复
### 其他修复
- src/components/FeedbackSurvey/useFrustrationDetection.ts — 将 3 个
提前返回合并为 shouldSkip 变量,handleTranscriptSelect 提前 return
- src/hooks/useIssueFlagBanner.ts — useRef 移到 USER_TYPE 检查之前
- src/hooks/useUpdateNotification.ts — useState 改为 useRef,
避免版本号变化触发不必要重渲染
### 构建/开发配置
- build.ts — 添加 `sourcemap: 'linked'`
- scripts/dev.ts — NODE_ENV 从 'production' 改为 'development'
Closes #434
2026-05-08 13:17:25 +08:00
claude-code-best
73e54d4bbc
chore: 2.2.1
v2.2.1
2026-05-07 23:50:09 +08:00
claude-code-best
2fdfb844cb
Merge pull request #428 from xiaoFjun-eng/main
...
修复type
2026-05-07 22:31:12 +08:00
claude-code-best
4230f0fff1
chore: remove learn directory study notes
...
Co-Authored-By: glm-5-turbo <zai-org@claude-code-best.win >
2026-05-07 14:34:39 +08:00
claude-code-best
7fe448d9e9
feat: 改为使用 ccb 的邮箱
2026-05-07 12:06:40 +08:00
claude-code-best
aa06cea904
fix: 修正 GLM 模型 GitHub 署名邮箱为 zai-org
...
Co-Authored-By: glm-5.1[1m] <zai-org@users.noreply.github.com >
2026-05-07 11:35:40 +08:00
claude-code-best
c43efecbab
feat: 署名邮箱改为 GitHub noreply 格式并新增模型映射
...
Co-Authored-By: glm-5.1[1m] <zhipuai@users.noreply.github.com >
2026-05-07 11:32:48 +08:00
claude-code-best
cb4a6e76cf
feat: 添加自动邮箱映射功能并完善署名系统
...
- 新增 attributionEmail.ts 实现模型名到邮箱的自动映射
- 重构署名逻辑,统一使用 getRealModelName() 和 getAttributionEmail()
- 将产品名从 Claude Code 更新为 Claude Code Best
- 更新 PRODUCT_URL 指向 claude-code-best fork 仓库
Co-Authored-By: glm-4.7 <noreply@zhipuai.cn >
2026-05-07 11:12:40 +08:00
claude-code-best
f7f69b759c
fix: 修复模型别名未解析导致署名显示 "haiku" 而非真实模型名
...
去掉 getUserSpecifiedModelSetting() 分支,统一走 getMainLoopModel()(解析别名)
+ resolveProviderModel()(解析 provider 映射)的完整链路。
Co-Authored-By: opus[1m] <noreply@anthropic.com >
2026-05-07 11:10:01 +08:00
claude-code-best
771e3dbcf0
fix: 修复非 Anthropic provider 署名模型名获取错误
...
getRealModelName() 现在会检查 provider 特定环境变量(OPENAI_MODEL、GEMINI_MODEL、GROK_MODEL),
确保通过这些变量设置模型时署名显示真实名称而非 Anthropic 默认模型名。
Co-Authored-By: opus[1m] <noreply@anthropic.com >
2026-05-07 10:57:14 +08:00
claude-code-best
e3c0699f5b
feat: 添加 prompt 缓存命中率检测与警告功能
...
每次 API 请求后自动计算缓存命中率,低于阈值(默认 80%)时在对话流中显示黄色警告消息。
同时更新 /context 命令输出中显示缓存命中率。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-07 10:49:06 +08:00
claude-code-best
e8759f3402
fix: 禁用 opus[1m] 自动迁移,尊重用户手动删除 [1m] 后缀的选择
...
迁移逻辑过于激进,用户手动删除 [1m]] 后会被自动加回。
现在将 migrateOpusToOpus1m 改为 no-op,保留用户的手动模型选择。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-07 09:33:56 +08:00
claude-code-best
958ac3a0d5
feat: 开启部分被关闭的 feature
2026-05-07 09:14:58 +08:00
claude-code-best
5895362178
chore: 2.2.0
v2.2.0
2026-05-07 08:29:07 +08:00
claude-code-best
8cfe9b6dc3
feat: 启用 COORDINATOR_MODE feature flag
...
AgentSummary 30s fork 循环的内存泄露已在 commit 52b61c2c 修复(闭包
引用丢弃 + 上下文重建 + 消息/字符上限),重新启用该 feature。
用户可通过 /coordinator 命令或 CLAUDE_CODE_COORDINATOR_MODE=1 环境变量
激活多 worker 编排模式。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-07 08:28:28 +08:00
claude-code-best
12f5aedf99
fix: 恢复消息流中 diff 高亮渲染功能
...
还原 commit 51b8ad46 删除的 diff highlight 显示:FileEdit/FileWrite 工具
执行成功后重新展示 StructuredDiffList,拒绝时重新展示高亮代码预览或
带上下文的 diff 视图。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-07 08:28:28 +08:00
claude-code-best
c7efac6b8d
Merge pull request #423 from znygugeyx-ctrl/feat/statusline-refresh-interval
...
feat: 状态栏支持 refreshInterval 定时刷新
2026-05-06 23:53:36 +08:00
zny
2f150d3ecd
feat: 状态栏支持 refreshInterval 定时刷新
...
- Zod schema 补齐 refreshInterval 字段
- 通过 scheduleUpdate 复用 300ms debounce,event/settings/time 三路触发单飞
- 新增 docs/features/status-line.mdx 调研文档
2026-05-06 22:50:11 +08:00
claude-code-best
68c7ebb242
Merge pull request #419 from suger-m/codex/sub-agents-docs
...
docs: expand sub-agent architecture guide
2026-05-06 20:30:42 +08:00
claude-code-best
9e299a7208
Merge pull request #420 from claude-code-best/fix/third-party-api-user-id
...
fix: third-party API user_id validation error (DeepSeek, etc.)
2026-05-06 20:30:12 +08:00
Simple6K
941bcbd240
fix: third-party API user_id validation error (DeepSeek, etc.)
...
When ANTHROPIC_BASE_URL points to a non-Anthropic endpoint (e.g.
DeepSeek), the JSON-formatted user_id containing {, ", : characters
fails validation against ^[a-zA-Z0-9_-]+$. Send only the hex device_id
for third-party providers.
2026-05-06 17:47:31 +08:00
suger-m
fd66ddc45f
docs: expand sub-agent architecture guide
2026-05-06 17:26:49 +08:00
znygugeyx-ctrl
5c107e5f8c
Merge pull request #416 from znygugeyx-ctrl/feat/subagent-fork-render
...
feat: 参考 claude code 官方实现,改进 sub agent 以及 fork agent 的渲染方式
2026-05-06 09:57:52 +08:00
claude-code-best
c4e9efb7a8
Merge pull request #417 from shaleloop/sync/mcp-transform-2.1.128
...
fix: align mcp transform pipeline with Anthropic Claude Code 2.1.128
2026-05-06 09:51:37 +08:00
shaleloop
26ddbda849
fix: align mcp transform pipeline with Anthropic Claude Code 2.1.128
...
Add ImageLimits type and plumb optional limits through the chain:
callMCPTool/callMCPToolWithUrlElicitationRetry -> processMCPResult ->
transformMCPResult -> transformResultContent -> maybeResizeAndDownsampleImageBuffer.
When provided, limits override the module-level defaults
(IMAGE_TARGET_RAW_SIZE, IMAGE_MAX_WIDTH, IMAGE_MAX_HEIGHT,
API_IMAGE_MAX_BASE64_SIZE) inside maybeResizeAndDownsampleImageBuffer.
When undefined, behavior is unchanged for current callers.
Add _meta preservation in the text-block case of transformResultContent
(only when the caller opts in via includeMeta=true). transformMCPResult
passes includeMeta=true on the tool-result path; the prompt-handler call
site keeps the default false, preserving prior behavior.
Add skipLargeOutput early-return in processMCPResult after the IDE check:
when the caller passes skipLargeOutput=true and the content has no images,
the function returns content directly without large-output handling.
Add unwrap-to-text in processMCPResult for the persisted-content path:
when the large-string format gate is enabled
(MCP_TRUNCATION_PROMPT_OVERRIDE env var, or
tengu_mcp_subagent_prompt Statsig gate), and the content is a single
bare text block (no annotations, no _meta), unwrap to raw text and
switch the format description to 'Plain text'. Default-off; gate-off
behavior is unchanged.
Verified structurally against the 2.1.128 binary: function signatures,
the IDE check, gate logic, _meta-unwrap pattern, and imageLimits
plumbing match this implementation.
2026-05-05 14:53:57 -07:00
claude-code-best
872ee280e3
chore: 2.1.0
v2.1.0
memory-leak-fixed
2026-05-05 21:22:20 +08:00
claude-code-best
f5c9880d7d
Merge pull request #413 from claude-code-best/performance/20260505/memory-leak-fix
...
feat: 继续进行内存泄露修复及垃圾代码清理
2026-05-05 21:21:22 +08:00
claude-code-best
3f1c8468bf
fix: 调小 snapshots 的范围
2026-05-05 21:09:02 +08:00
claude-code-best
100e9d2da0
chore: 2.0.5
v2.0.5
2026-05-05 20:16:44 +08:00
claude-code-best
0ad6349434
chore: 清理 18 处未使用导入、变量和函数
...
移除未使用的导入(getSubscriptionType、isEnvDefinedFalsy、
getClaudeConfigHomeDir 等)、未使用的常量(ACCENT_COLOR、
NAME_MATCH_BONUS、CLIPBOARD_THRESHOLD)和死函数
(getOpus41Option、pasteViaClipboard),
为未使用参数添加 _ 前缀。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-05 20:15:51 +08:00
claude-code-best
1ac18aec0d
chore: 清理 4 处遗漏的未使用导入和参数
...
移除 autonomyStatus/betas/claudemd/executorCrossPlatform 中
未使用的导入和参数。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-05 20:05:50 +08:00
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
a1108870e3
Merge pull request #412 from claude-code-best/feature/20260504/improve
...
feat: 内存碎片及死代码清理
2026-05-05 19:48:12 +08:00
claude-code-best
87b96199f9
feat: ai 的随机修复
2026-05-05 19:36:38 +08:00
claude-code-best
18d6656a6a
feat: 尝试改进 Error 处理以提升内存管理效率
2026-05-05 18:18:13 +08:00
claude-code-best
d0915fc880
chore: 清理 src 下 33 项死代码和类型断言
...
删除未使用的文件/目录(mcp/adapter、cli/update.ts 等)、
未使用的重导出文件(design-system/color.ts 等 12 个)、
7 个零引用的导出函数、修复 5 处 as any 为精确类型。
净减少 ~1194 行代码,precheck 4077 测试全部通过。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-05 16:07:30 +08:00
claude-code-best
cf2bf29dcd
feat: 尝试深度拷贝数据以分离引用
2026-05-05 12:41:01 +08:00
claude-code-best
75952bde9c
fix: 尝试请求参数克隆以解除闭包引用
2026-05-05 09:29:09 +08:00
claude-code-best
e7220c530f
fix: eliminate memory leak in promptCacheBreakDetection by replacing closures with pre-computed strings
...
The buildDiffableContent and buildPrevDiffableContent fields were closures
capturing full system prompt and tool schema arrays (~300KB each). With 10
map entries × 2 closures, this held ~6MB of GC-unreachable memory.
Since recordPromptState already serializes the same data for hashing,
pre-computing the diffable content string has negligible marginal cost.
2026-05-05 08:54:04 +08:00
claude-code-best
6ff839d625
fix: 优化压缩错误消息和自动压缩提示的可理解性
...
- "Not enough messages" 添加 "Send a few more messages first" 引导
- "Conversation too long" 提示从模糊的 "Press esc twice" 改为建议 /compact 或 /clear
- 自动压缩标题从 "Compact summary" 改为 "Conversation summarized to free up context"
- 快捷键提示从 "expand" 改为 "view summary"
- 新增 7 个测试覆盖压缩相关消息
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-05 07:19:19 +08:00
claude-code-best
88057b10d4
fix: 优化 ModelPicker 副标题和 resume 错误提示的可操作性
...
- ModelPicker 副标题从技术说明改为操作提示(effort 调整、1M 切换)
- /resume 错误提示添加 "Run /resume to browse" 操作引导
- 新增 6 个测试覆盖模型选择器、会话恢复和 cost 消息文案
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-05 02:14:07 +08:00
claude-code-best
4d0048a60a
fix: 优化权限提示用词和 Help 页面新手引导
...
- Help General 页添加 3 步 Getting started 引导,替代单段描述
- 权限对话框底部 "Esc to cancel" → "Esc to reject","Tab to amend" → "Tab to add feedback"
- .claude/ 文件夹权限选项标签从 60 字符缩至 49 字符,避免窄终端截断
- 新增 10 个测试覆盖权限提示文案和帮助页引导内容
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-05 00:09:27 +08:00
claude-code-best
8a5ef8c9cb
fix: 优化用户交互文案,为错误消息添加可操作提示
...
- 为 budget/turns/structured-output 三种错误消息添加 Tip 提示,指导用户如何继续
- Onboarding 安全步骤标题从 "Security notes" 改为更友好的 "Before you start, keep in mind"
- Trust Dialog 精简为两句核心信息,降低认知负荷
- 新增 7 个测试验证消息内容包含关键引导信息
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-05 00:05:35 +08:00
claude-code-best
f8a289b868
fix: 尝试修复 OTEL 的问题
2026-05-04 23:53:28 +08:00
claude-code-best
45c892fc18
revert: 恢复 HISTORY_SNIP
2026-05-04 23:51:36 +08:00
claude-code-best
5b333e2246
refactor: 从 package.json 动态读取版本号,避免版本漂移
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-04 23:44:47 +08:00
claude-code-best
5e215bb061
chore: v2.0.4
v2.0.4
memory-leak-fix
2026-05-04 23:25:20 +08:00