James Feng
7eb5530b2c
docs: sync 光明和阴影面 doc + update README numbers to 3699
...
- Copy doc from user manual to docs/
- Quality table: 3383 → 3699 (+692)
- Local dev section: 3383 tests → 3699 tests
- Version table: add v2.2.1, v2.2.2 entries
2026-06-04 21:03:57 +08:00
James Feng
f2df2d7d85
docs: update test badge to 3699
2026-06-04 21:02:38 +08:00
James Feng
9538ebd243
feat: full merge of f2e9af49 autonomy PR #386 — source + tests
...
Source integration points (previously missing from CCP):
- useScheduledTasks: export createScheduledTaskQueuedCommand, autonomy-backed
queue dedup with markAutonomyRunCancelled on dispose
- processUserInput: thread autonomy payload through to slash commands;
expose deferAutonomyCompletion on ProcessUserInputBaseResult
- processSlashCommand: accept autonomy arg; allowBackgroundForkedSlashCommands
test-only gate on ToolUseContext; defer/finalize autonomy in background fork
- handlePromptSubmit: claim stale autonomy commands before idle queue drain;
finalize autonomy on error paths
- Tool.ts: add allowBackgroundForkedSlashCommands to ToolUseContext
Tests ported from upstream f2e9af49 (11 files, +97 assertions):
- autonomyAuthority.test.ts — authority parsing, prompt assembly
- autonomyFlows.test.ts — managed flow lifecycle
- autonomyPersistence.test.ts — file locking, active retention
- autonomyQueueLifecycle.test.ts — queue partition/claim/finalize
- autonomyRuns.test.ts — state machine, dedup, formatters
- queryAutonomyProviderBoundary.test.ts — provider error finalization
- handlePromptSubmit.test.ts — stale autonomy filtering
- useScheduledTasks.test.ts — cron task → autonomy queue
- processSlashCommand.test.ts — slash command autonomy integration
- autonomy-lifecycle-user-flow.test.ts — CLI subprocess integration
- RemoteTriggerTool.test.ts — merged upstream assertion improvements
3699 pass, 0 fail (was 3602)
2026-06-04 20:56:53 +08:00
James Feng
12301713b9
fix: backfill upstream OpenAI fixes ( c82f5994, 901628b4) + regression tests
...
c82f5994 — fix(openai): stop_reason null, zero usage fields, max_tokens forwarding
- streamAdapter: defer message_delta/message_stop to after stream loop
so trailing usage chunks are captured; fill all 4 usage fields
- index.ts: assemble final AssistantMessage at message_stop (not per-block);
apply stop_reason from message_delta; reset partialMessage; post-loop
safety fallback for partial messages
- buildOpenAIRequestBody: accept and forward maxTokens → max_tokens
901628b4 — fix: OpenAI provider deferred MCP tool visibility
- index.ts: prepend deferred MCP tool text list so OpenAI model can discover
and request them via ToolSearchTool
- claude.ts: pass full tools (not filteredTools) to OpenAI path so deferred
tools are searchable
- index.ts: include already-discovered deferred tools in filteredTools so
their schemas are available after ToolSearchTool loads them
Tests added:
- queryModelOpenAI.isolated.ts (674 lines): stop_reason assembly, partialMessage
reset, max_tokens truncation warning, usage tracking, cost tracking
- queryModelOpenAI.runner.ts + .test.ts: isolated subprocess runner (CCP pattern)
- streamAdapter.test.ts: 665→130 lines expanded — deferred finish, trailing
usage, length→max_tokens mapping, full usage field assertions
- formatBriefTimestamp.test.ts: beforeAll/afterAll env save/restore
3602 pass, 0 fail
2026-06-04 20:20:21 +08:00
James Feng
05cb6b0a7a
fix: 恢复 isOpenAIThinkingEnabled 和 buildOpenAIRequestBody 导出
...
thinking.test.ts 引用了两个已被删除的函数,导致模块加载失败
(1 fail + 1 error)。恢复了完整的 OpenAI thinking mode 支持:
- isOpenAIThinkingEnabled: env var OPENAI_ENABLE_THINKING 优先级最高,
其次自动检测 deepseek 系列模型名
- buildOpenAIRequestBody: 构建请求体,同时注入三种 thinking 格式
(OpenAI official / vLLM / chat_template),thinking 开启时排除 temperature
测试:3591 pass, 4 skip, 0 fail, 0 error(首次全绿)
2026-06-04 19:32:39 +08:00
James Feng
f6488bce8f
fix: fork子进程工具过滤漏洞 — 注入 filterParentToolsForFork 并重写测试
...
高危漏洞:fork 子 agent 继承了父进程全部工具,绕过了 gate layer 1 的
ALL_AGENT_DISALLOWED_TOOLS 限制(AgentTool/resumeAgent fork 路径用了
useExactTools=true,跳过了 resolveAgentTools 的正常过滤)。
修复:
- AgentTool.tsx fork路径注入 filterParentToolsForFork (对齐上游 CCB)
- resumeAgent.ts resumed-fork路径同样注入
- 测试从 grep 源码改写为运行时行为验证(import-chain + mock.module)
测试:3552 pass, 1 fail, 1 error (fail/error 为 ExecuteTool 老问题)
基线:5 fail → 1 fail + 1 error (AC11b ×2 修复)
2026-06-04 19:13:30 +08:00
James Feng
4cf28f1e40
fix(acp): 修复 2 个 ACP 测试失败,基线保持 5
...
- utils.ts: resolvePermissionMode 补上 source 参数,匹配上游
- bridge.test.ts: 去掉 undefined yield,用 if(false) yield 满足 biome
- ci.yml: 基线恢复 5 (ACP 134 pass / 0 fail)
2026-06-04 18:50:58 +08:00
James Feng
2ad6e5159c
chore(ci): acp 分支加入 CI + 基线 5→7
...
- ci.yml 触发分支加入 acp
- 基线调整: 5→7 (新增 2 个 ACP 测试非功能失败: 错误消息文案不匹配)
2026-06-04 18:44:59 +08:00
James Feng
0980c242a2
docs: 更新 README — ACP ✅ + 测试数 3383→3551 + build 586files
...
- ACP 状态从 ⚠️ stub 改为 ✅ 已引入,链接到 acp 分支
- MERGE 计数 49→52,SKIP 96→94,延后 1→0
- 新增 acp 分支同步记录
2026-06-04 18:26:15 +08:00
James Feng
3a542d4f50
feat(acp): 补充 promptConversion 模块 + 修复 build
...
- 从上流 c2ac9a74 拉取缺失的 promptConversion.ts 及测试
- build 586 文件通过,test 3551 (5 fail/1 error 基线一致)
- acp-link manager 以上游 CCB 最新版为准
2026-06-04 18:22:41 +08:00
James Feng
082f91aa80
feat: acp manager ( #304 )
...
* feat: acp 控制器第一版
* feat: acp-link 命令二合一
2026-06-04 18:15:31 +08:00
xuzhongpeng.xzp
6950401c06
fix(acp): 对齐 ACP session ID 与全局会话状态
...
在 newSession/resumeSession/loadSession 中调用 switchSession,
确保 transcript 持久化、analytics 与 cost tracking 使用 ACP session ID,
而非内部默认 session ID。
- newSession 生成 sessionId 后立即对齐全局状态
- resumeSession 命中 fingerprint 缓存路径也对齐
- loadSession 在 sessionIdExists() 检查前对齐(lookup 依赖 getSessionId)
- 补充 5 个测试覆盖上述路径,以及 prompt 不触发额外 switchSession
2026-06-04 18:13:51 +08:00
unraid
188bcea5ba
feat: 增强 ACP 桥接与权限处理
...
- 增强 ACP agent 测试覆盖
- 扩展 ACP bridge 测试用例
- 改进 ACP utils 权限管道
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-04 18:13:02 +08:00
James Feng
0b38268491
feat: 恢复 ACP 命令行入口 (--acp) 支持
2026-06-04 18:12:27 +08:00
James Feng
957076c5bd
feat: 恢复 Chrome MCP 浏览器自动化支持
...
- 添加 scripts/setup-chrome-mcp.mjs(从上游恢复)
- 添加 docs/features/chrome-use-mcp.md 使用文档
- 恢复 postinstall 中的 Chrome MCP 设置步骤
- CI 中加 CLAUDE_CODE_SKIP_CHROME_MCP_SETUP=1 避免无 Chrome 环境失败
2026-06-04 17:27:58 +08:00
James Feng
3bebd88501
fix(ci): 基线 4→5 (macOS 多出 ExecuteTool×2 + 1 error)
2026-06-04 17:18:01 +08:00
James Feng
941df7e498
fix(ci): bun test 输出写到文件避免 GitHub log 截断
2026-06-04 17:15:43 +08:00
James Feng
67515ccba9
fix(ci): 修复 bun test 非零退出码被 set -e 截断
2026-06-04 17:12:51 +08:00
James Feng
df7fa26d23
fix(ci): 调高测试基线 2→4(预存 AC11 + ExecuteTool 失败)
2026-06-04 17:10:29 +08:00
James Feng
c83542af8f
fix(ci): 修复 postinstall + Bun 版本对齐
...
- 移除缺失的 setup-chrome-mcp.mjs (CCB Chrome 集成,CCP 不需要)
- CI Bun: 1.3.11 → 1.3.14 (对齐本地环境)
2026-06-04 17:08:12 +08:00
GhostDragon124
a2f098a746
docs: update contributors
2026-06-04 09:06:11 +00:00
James Feng
e08b9b6e86
chore: 重新生成 bun.lock 修复 CI lockfile frozen 错误
2026-06-04 17:05:47 +08:00
James Feng
e806327608
feat: npm 离线打包脚本 — scripts/pack-npm.sh
...
一键构建 + 打包为 ccp-<version>.tgz:
bash scripts/pack-npm.sh
目标机器安装(需要 Bun):
npm install -g ./ccp-2.6.5.tgz
ccp --version
产物 5.5MB,包含 dist-nosplit/cli.js + bin wrapper
2026-06-04 16:13:29 +08:00
James Feng
452e2f01c8
docs: README 更新 — 测试数 3383、ACP stub 状态、上游同步章节
...
- 测试数: 3068 → 3383
- ACP: ✅ → ⚠️ stub (fail-closed),默认关闭
- 新增「上游同步策略」章节,180 commit 审查统计
- 版本更新记录 (v1.8.0 → v2.2.0)
2026-06-04 16:06:44 +08:00
James Feng
b5bcbdbd23
fix: 修复斜杠命令自动补全 — 光标前文本参与解析,Tab 补全保留光标后内容 (from upstream ad09f38f)
...
来源: upstream ad09f38f
修复:
- 只取光标前的 commandInput 参与命令解析,不把光标后文本算入
- Tab 补全时 splice 到光标位置,保留光标后已有内容
- 新增 34 个回归测试
Build: ✅ | Tests: 34/34 pass
2026-06-04 15:48:21 +08:00
James Feng
10dfcc6710
fix: Batch 1a — WebFetchTool header 安全加固 + 核心运行时修复 (from upstream c2ac9a74)
...
来源: upstream c2ac9a74 (dependency audit findings)
变更 (11 files):
- WebFetchTool: getResponseHeader() 防大小写不一致绕过安全校验 + 新测试
- langfuse: Windows USERPROFILE + homedir() 路径脱敏支持
- REPL.tsx: hideTimeout 清理、onInit/diagnosticTracker ref 闭包修复
- claude.ts: 移除冗余 = undefined 初始化
- query.ts: 移除 biome-ignore + 变量声明简化
- staticRender.tsx: 静态渲染完善
- ansiToPng.ts/bridgeMain.ts/SSETransport.ts/WebSocketTransport.ts: 代码质量
- useGlobalKeybindings/useVoiceIntegration: 质量修复
- 测试文件: sliceAnsi/stringUtils/envExpansion 防模板字面量转义
Build: ✅ 565 files | Tests: 65/65 pass (0 new failures)
2026-06-04 15:45:01 +08:00
claude-code-best
9df9e03765
fix: 修复模型的问题
2026-06-04 15:27:40 +08:00
claude-code-best
4ceeedee3f
fix: 禁用 opus[1m] 自动迁移,尊重用户手动删除 [1m] 后缀的选择
...
迁移逻辑过于激进,用户手动删除 [1m]] 后会被自动加回。
现在将 migrateOpusToOpus1m 改为 no-op,保留用户的手动模型选择。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-04 15:27:40 +08:00
claude-code-best
995d3a473c
fix: 修复 anthropic 煞笔的四个 bug ( #352 )
...
* fix: 移除文件编辑前必须先读取的限制
移除 FileEditTool 和 FileWriteTool 中的 "read before edit" 校验,
允许直接编辑未读取过的文件。保留文件修改过期检测。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs: 更新 teach-me 自动写 note 笔记的功能
* fix: 修复 DeepSeek V4 reasoning_content 回传导致的 400 错误
- 扩大模型名称检测范围,匹配所有 deepseek 模型(V4、R1 等)
- 始终保留 thinking blocks 为 reasoning_content 回传给 API
- 移除有 bug 的 turn boundary 剥离逻辑
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix: Opus 4.6/4.7 默认推理 effort 从 medium 改为 high
Pro 和 Max/Team 订阅者的 Opus 默认 effort 之前被降级为 medium,
导致用户感知模型「变笨」。恢复为 high。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix: 移除 thinkingClearLatched sticky-on 机制
空闲超过 1 小时后 thinkingClearLatched 会被触发且永不重置,
导致每轮 API 调用都清除 thinking 历史。完整移除该 latch 机制,
clearAllThinking 硬编码为 false。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix: 移除 numeric_length_anchors 系统指令
删除「工具调用间文字 ≤25 词、最终回复 ≤100 词」的硬性限制。
ablation 测试显示该约束使整体智能下降 3%。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix: 修复测试中 reasoning_content 类型断言
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-04 14:59:49 +08:00
claude-code-best
fe9da6e5b9
fix: 代码审查修复 — 安全、性能和正确性
...
- triggersApi: 添加 assertSubscriptionBaseUrl 防止 OAuth token 泄露
- claude.ts: 修复流式响应 O(n^2) 字符串拼接,改用数组累积
- claude.ts: 移除未使用的 import,动态 import 改为静态 import
- StatusLine: BuiltinStatusLine 仅在 statusLineEnabled 时显示,修复双行问题
- local-vault: 修复 --reveal 标志位置解析 bug
- share: 修复 sk-proj-* OpenAI 密钥未脱敏问题
- store.ts: 临时文件改用同目录创建,避免跨文件系统 rename 失败
- store.ts: 添加空字符串 key 校验
- permissionValidation: 端口正则限制为有效 TCP 范围 0-65535
- 测试 mock 补全: schedule/vault/skill-store 测试文件
- 移除过期的 biome-ignore 注释
Co-Authored-By: glm-5-turbo <zai-org@claude-code-best.win>
2026-06-04 14:59:14 +08:00
James Feng
8485589ca7
fix: add typeof TungstenPill guard (partial cherry-pick a02a9fc)
...
8645d37 (Auth header) and a889ed8 (Gates reference) already present in CCP.
2026-06-04 14:58:21 +08:00
Alan
d0278e89c0
fix: support CRLF SSE frame parsing ( #223 )
2026-06-04 14:55:21 +08:00
claude-code-best
6362f1af99
fix: 修复 n 快捷键导致关闭的问题
2026-06-04 14:51:33 +08:00
claude-code-best
2074f6463f
fix: 修复 linux 端的安装问题
2026-06-04 14:51:33 +08:00
claude-code-best
5ed0fa572c
fix: 修复 cliHighlight 类型不兼容问题
...
loadedGetLanguage 返回类型中 name 字段改为可选,匹配 highlight.js
Language 类型中 name 为 string | undefined 的定义。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-04 14:51:33 +08:00
claude-code-best
6a025582cd
fix: 修复 ACP 模式下 messageSelector require 失败导致 submitMessage 崩溃
...
ACP 模式不加载完整的 React/Ink UI 组件,导致 require('src/components/MessageSelector.js')
返回 undefined。添加 try-catch 和 optional chaining fallback。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-04 14:51:33 +08:00
claude-code-best
3cc9545d3b
fix: 修复 DeepSeek V4 reasoning_content 回传导致的 400 错误
...
- 扩大模型名称检测范围,匹配所有 deepseek 模型(V4、R1 等)
- 始终保留 thinking blocks 为 reasoning_content 回传给 API
- 移除有 bug 的 turn boundary 剥离逻辑
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-04 14:51:32 +08:00
claude-code-best
9d49306bfb
fix: 尝试请求参数克隆以解除闭包引用
2026-06-04 14:51:32 +08:00
claude-code-best
5886421ad2
fix: 调小 snapshots 的范围
2026-06-04 14:51:32 +08:00
shaleloop
5ebd546664
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-06-04 14:51:32 +08:00
unraid
6a63706bd9
feat: 添加 compact 缓存与上下文压缩增强
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-04 14:08:09 +08:00
claude-code-best
1dfe909301
fix: 修复 voice provider 的问题
2026-06-04 14:07:37 +08:00
James Feng
be76720400
fix: RemoteTriggerTool 测试补充 log/debug/bun:bundle mock,对齐上游 a2cfaf9
...
CCP 此前已合并该 commit 的大部分改动(growthbook/policyLimits/auditRecords),
仅 log/debug/bun:bundle 三个 mock 遗漏。补齐后测试在 mock 层面与上游一致。
注意: getOauthConfig 错误是上游预存在的 Bun mock.module 问题(切 upstream/main 也复现),
不影响本次提交的正确性。
2026-06-04 14:01:40 +08:00
James Feng
44bfc189e0
fix: 创建 agent 后刷新 loadMarkdownFilesForSubdir 缓存
...
新建 agent 后 clearAgentDefinitionsCache 漏清底层
loadMarkdownFilesForSubdir 的 memoize 缓存,导致新
agent 不会立即出现在列表中,需要重启才能生效。
Upstream: eb833da3
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-04 13:54:47 +08:00
cepvor
cbe32ea58a
fix: showSpinnerTree 模式下保留 local-agent token 显示
...
PR #1226 的 CodeRabbit 审查指出:当 spinner-tree 模式开启时,
local-agent(后台代理)的 token 消耗完全不可见,因为它们没有
在树中有独立行,但被 showSpinnerTree 的 guard 排除了。
修复:将 guard 从循环外移到循环内,仅对 in_process_teammate
任务在 tree 模式下跳过(它们有独立树行),local-agent 任务
始终计入 teammateTokens。
Closes: review comment from PR #1226 (originally belongs to PR #1225 )
Co-Authored-By: deepseek-v4-pro[1m] <deepseek-ai@claude-code-best.win>
2026-06-04 13:39:53 +08:00
cepvor
4e050df994
fix: 修复子代理 token 消耗在主 spinner 中始终显示为 0
...
Spinner.tsx 的 token 聚合循环仅统计 in_process_teammate 类型任务,
漏掉了 local_agent(后台代理/verification agent)类型。当后台代理
运行时,主界面 spinner 一直显示 "↓ 0 tokens",因为 background agent
的 token 消耗未被纳入 teammateTokens 聚合。
同时在 inProcessRunner.ts 中,进程内队友完成时计算并设置 result
(含 totalTokens/totalToolUseCount/content/usage),使详情弹窗可以
正确展示累计 token 消耗,不再仅依赖 progress.tokenCount 间歇更新。
Co-Authored-By: deepseek-v4-pro[1m] <deepseek-ai@claude-code-best.win>
2026-06-04 13:39:44 +08:00
claude-code-best
1d3951d44d
fix: 添加 React Error Boundary 防止生产环境渲染崩溃
...
增强 SentryErrorBoundary 组件,捕获渲染错误时输出诊断信息
(错误消息 + component stack)到 stderr 和终端,而非静默返回
null。在 replLauncher 根节点和 Messages 组件层级包裹 Error
Boundary,防止 Ink 内部的 Error Boundary 直接终止进程。
Co-Authored-By: glm-5-turbo <zai-org@claude-code-best.win>
2026-06-04 13:38:32 +08:00
claude-code-best
35927b20ad
fix: 提升 CLAUDE.md 指令权重 — 独立 project-instructions + deferred tools 位置调整
...
- prependUserContext: 将 claudeMd 从通用 <system-reminder> 提取为独立的
<project-instructions> 用户消息,不带免责声明,置于消息列表最前面
- queryModel: deferred tools 消息从 prepend 改为 append,避免抢占
project-instructions 的最高权重位置;标签规范化为 <system-reminder>
Co-Authored-By: glm-5-turbo <zai-org@claude-code-best.win>
2026-06-04 13:37:41 +08:00
James Feng
a308aa8fcc
fix: add missing FILE_WRITE_TOOL_NAME import + poorMode stub (regressions from P2 cherry-picks)
2026-06-04 13:16:05 +08:00
claude-code-best
eaa6199f22
fix: 修复 Tool Search 缓存失效 — deferred 工具不再动态注入 tools 数组
...
移除 deferred 工具的 "discover then include" 逻辑,让 tools 数组在整个会话中
保持稳定(只有 core tools + ToolSearch + ExecuteExtraTool),避免每次发现新
工具时 tools JSON 变化导致 prompt cache 失效。
同时强化工具优先级引导:core tools 优先直接调用,ToolSearch/ExecuteExtraTool
仅作为发现和调用 deferred 工具的最后手段。当模型搜索已加载的 core tool 时,
ToolSearch 返回明确的拒绝提示。
Co-Authored-By: glm-5.1[1m] <zai-org@claude-code-best.win>
2026-06-04 13:04:45 +08:00