claude-code-best
1217c453c4
feat: 同步 pkmn Dex 全部 1025 只精灵,新增 SpeciesPicker 搜索选择器
...
- SpeciesId 从 10 项联合类型改为 string,动态从 @pkmn/sim Dex 加载 1025 只精灵
- getSpecies() 改用 Dex.species.get() 直接查找(gen wrapper 仅覆盖 733/1025)
- SUPPLEMENT/DEX_TO_SPECIES 动态生成,未收录 species 使用默认值兜底
- names/fallback 改为 partial records,缺失时回退到 Dex 英文名/通用 sprite
- 新增 SpeciesPicker 组件(基于 FuzzyPicker),支持中英文/编号搜索选择精灵
- BattleFlow configSelect 阶段替换为 SpeciesPicker,删除旧的上下翻页逻辑
- evolution 移除 ALL_SPECIES_IDS 限制,所有 Dex 物种均可进化
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 15:15:19 +08:00
claude-code-best
77e8d15482
feat: 解决显示问题
2026-04-22 14:24:41 +08:00
claude-code-best
72cfb83de3
feat: 一大坨优化
2026-04-22 13:33:02 +08:00
claude-code-best
8bf645364f
fix: 处理精灵倒下后的强制换人和战斗结束判定
...
executeTurn 在精灵倒下时未处理 @pkmn/sim 的强制换人要求,
导致 "Not all choices done" 错误。现在:
- 检测 active Pokémon 是否倒下,自动切换到下一只
- 无可用精灵时使用 pass,让引擎正常判定胜负
- AI 侧同样处理强制换人
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 09:03:39 +08:00
claude-code-best
bd70971632
fix: Battle 快捷键通过 inputRef 转发至主 Ink 上下文
...
BattleFlow 不再直接调用 useInput(外部包的 Ink 上下文可能不同),
改为暴露 handleInput 方法,由 BuddyPanel 中的 BattleTab 通过
useInput + ref 转发键盘事件,确保在正确的 StdinContext 中工作。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 08:44:33 +08:00
claude-code-best
bfd14206a9
fix: 修复 BattleView 渲染 @pkmn/sim 原始 move 对象导致的 React 报错
...
projectPokemon 中 moveSlots 的 name 字段可能为 undefined,
导致整个对象被当作 React child 渲染。现在优先从 Dex 查询招式名称。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 08:37:03 +08:00
claude-code-best
f22caf0e97
feat: 集成 Battle tab 到 BuddyPanel,重命名 data/ 为 dex/ 规避 gitignore
...
- BuddyPanel 新增 Battle tab,BattleFlow 加 isActive 控制
- BattleFlow configSelect 阶段支持 ↑↓ 选择物种
- packages/pokemon/src/data/ → dex/,解决根 .gitignore 匹配问题
- 全量 Tab→2空格 缩进转换
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 08:35:19 +08:00
claude-code-best
25067e78af
fix: 修正 MoveLearnPanel 提示文本匹配实际键盘绑定
...
[S] 跳过, [1-4] 替换对应招式 — 与 BattleFlow 输入处理一致
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 07:03:22 +08:00
claude-code-best
70d8c0038c
refactor: 进化链动态生成替代硬编码
...
- PokedexView.tsx: groupByChain() 改用 ALL_SPECIES_IDS + getNextEvolution 动态构建
- SpeciesDetail.tsx: EvolutionChain 用相同方式找链头
- 删除未使用的 isInChain 函数
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 06:32:36 +08:00
claude-code-best
3c64113d77
feat: 添加 BattleFlow 完整键盘输入处理
...
所有 phase 现在都支持键盘交互:
- config: Enter/1=随机战斗, 2=指定对手, ESC=取消
- configSelect: Enter=确认, ESC=返回
- battle: 1-4=选招, S=换人, I=道具
- switch: 1-6=选队友, ESC=取消
- item: 1-9=选道具, ESC=取消
- result: Enter=继续
- learnMoves: 1-4=替换招式, S=跳过
- evolution: Enter=确认进化
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 06:07:01 +08:00
claude-code-best
0777e1a1f9
refactor: 删除未使用的 pkmn.ts 辅助函数
...
- 删除 getMove、getAbility、getType、getPrimaryAbility(无生产代码引用)
- 同步删除对应的 pkmn.test.ts 测试
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 06:04:12 +08:00
claude-code-best
080bd93efc
test: 补充 hatchEgg 和 species 补充字段测试(227→237)
...
- egg.test.ts: 新增 hatchEgg 5 个测试
- 创建 creature 并移除 egg
- 放入 party 空位
- totalEggsObtained 计数
- 新 species dex entry 创建
- 已有 species caughtCount 递增
- species.test.ts: 新增 ensureSpeciesData、baseHappiness、captureRate、names、shinyChance 测试
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 05:04:16 +08:00
claude-code-best
363ba39cad
refactor: 消除 engine.ts 重复 break 和 evolution.test.ts 的 as any
...
- engine.ts: 移除 switch case 中多余的 break 语句
- evolution.test.ts: 用完整 Creature 对象替代 as any 类型转换
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 04:40:59 +08:00
claude-code-best
4b23bcd3eb
test: 增强测试覆盖(188→226 tests)
...
- battle.test.ts: 新增 createBattle/executeTurn/settleBattle 边界测试
- EV total cap、非参与者不变、空 participantIds 回退
- applyMoveLearn PP 验证、applyEvolution friendship cap
- 多次进化计数器、battlesWon/battlesLost 互斥
- 修复 makeTestCreature friendship 覆盖
- creature.test.ts: 新增 recalculateLevel、getActiveCreature、nature 效果测试
- experience.test.ts: 新增 xpToNextLevel、awardXP 0值、累积验证
- storage.test.ts: 新增 Bag/Box/Release 操作边界测试
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 04:39:41 +08:00
claude-code-best
4116ac9b5c
test: 增强 creature.test.ts 覆盖(recalculateLevel/getActiveCreature/性格效果)
...
新增 8 个测试用例:
- recalculateLevel: 等级不变/随经验更新
- getActiveCreature: 空 party/party[0]/legacy activeCreatureId/优先级/ID 不存在
- 性格效果: adamant 加攻减特攻、timid 加速减攻
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 04:35:51 +08:00
claude-code-best
39299f6e17
refactor: 清理未使用 import 和添加 spriteCache 错误日志
...
- SpeciesDetail.tsx: 移除未使用的 SPECIES_PERSONALITY import
- CompanionCard.tsx: 移除未使用的 SPECIES_I18N import
- spriteCache.ts: 空 catch 块添加错误日志输出
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 04:18:51 +08:00
claude-code-best
1bba087942
refactor: 代码优化(常量复用、清理未使用 import、错误日志)
...
- settlement.ts: 复用 MAX_EV_PER_STAT/MAX_EV_TOTAL 常量替代硬编码
- settlement.ts: 删除未使用的 Creature/addItemToBag/removeItemFromBag/xpForLevel import
- effort.ts: 复用 EV_COOLDOWN_MS 常量替代硬编码 30000
- storage.ts: 空 catch 块添加错误日志输出
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 04:16:42 +08:00
claude-code-best
7c64199fc5
fix: 修复战斗系统 bug(switch 映射、async learnableMoves、类型安全)
...
- engine.ts: switch 动作改为映射 creatureId 到 party slot index
- settlement.ts: 改用 for-of 循环支持 async learnableMoves 检测
- types.ts: miss 事件增加 side 字段,消除 as any
- BattleFlow.tsx: handleAction 改为 async 支持 await settleBattle
- battle.test.ts: 补充缺失的 async 标记
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 04:12:13 +08:00
claude-code-best
98284a5908
refactor: 提取共享 getStatColor、移除 deprecated EVOLUTION_CHAINS
...
- 新增 ui/shared.ts 统一 getStatColor 函数
- CompanionCard/SpeciesDetail 改用共享函数,消除重复
- 移除 data/evolution.ts 中已废弃的 EVOLUTION_CHAINS 常量
- 清理 index.ts 导出
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 01:58:33 +08:00
claude-code-best
fae96c3e7f
test: 补全 spriteCache/renderer/battle 测试用例
...
- 新增 spriteCache.test.ts: getSpeciesDisplay 格式化测试
- 扩展 renderer.test.ts: 覆盖所有 AnimMode + getIdleAnimMode + getPetOverlay
- 扩展 battle.test.ts: AI 边界情况 + settlement XP/EV 奖励 + 失败路径
188 tests / 0 fail (was 164)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 01:54:28 +08:00
claude-code-best
661cc764fe
refactor: 清理 SwitchPanel 未使用变量和导入
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 00:51:51 +08:00
claude-code-best
391e0c233a
chore: 移除 SwitchPanel 未使用的 calculateStats 导入
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 00:50:27 +08:00
claude-code-best
74682b2a82
refactor: 代码优化 — 扩展类型覆盖、修复变量遮蔽、移除未使用导入
...
- engine.ts: 扩展 getSpeciesMoves 覆盖全部 18 种属性
- settlement.ts: 重命名 species → oppSpecies 避免遮蔽外层变量
- storage.ts: addItemToBag/removeItemFromBag 深拷贝 bag items 避免修改原对象
- BattleFlow.tsx: 移除未使用导入和条件 useInput 调用(React hooks 规则)
- BattleView.tsx: 移除未使用的 BattlePokemon/MoveOption/Dex 导入
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 00:49:48 +08:00
claude-code-best
100b1589f2
fix: 修复 BattleFlow 进化阶段输入处理 + 清理无用文件
...
- BattleFlow.tsx: useInput hook 提升到顶层避免 React hooks 规则违规
- 删除未使用的 battle/adapter.ts 和 battle/handler.ts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 00:47:05 +08:00
claude-code-best
fa8e45e933
test: 新增数据层测试 + 引擎修复
...
- 新增 pkmn.test.ts: stat 映射测试
- 新增 species.test.ts: 物种数据测试
- 新增 xpTable.test.ts: XP 公式测试
- 新增 evMapping.test.ts: EV 映射测试
- 新增 names.test.ts: 多语言名称测试
- 新增 fallback.test.ts: 精灵 fallback 测试
- 修复 engine.ts 类型
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 00:45:57 +08:00
claude-code-best
96e6d33414
test: 新增 storage.test.ts
...
- 验证 BuddyData v2 结构正确性
- 验证 creature 包含 v2 字段
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 00:44:12 +08:00
claude-code-best
1dd36f3f6f
test: 添加 battle/nature/learnsets/storage 测试,修复 nature 映射
...
- battle.test.ts: 10 个测试覆盖 createBattle/executeTurn/settleBattle/applyMoveLearn/applyEvolution/AI
- nature.test.ts: 测试 getAllNatureNames/randomNature/getNatureEffect
- learnsets.test.ts: 测试 getDefaultMoveset/getDefaultAbility/getNewLearnableMoves
- storage.test.ts: 测试 depositToBox/withdrawFromBox/findCreatureLocation/releaseCreature
- 修复 getNatureEffect 返回 Dex 格式(atk/spa/spe)未映射为我们的格式(attack/spAtk/speed)
- 删除遗留的 battle/adapter.ts 和 battle/handler.ts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 00:43:19 +08:00
claude-code-best
e3570f8cdb
feat: 添加 BattleFlow 战斗状态机组件 (Phase 3)
...
实现完整的战斗 UI 流程:配置 → 战斗 → 换人/道具 → 结果 → 学招 → 进化 → 完成
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 00:38:17 +08:00
claude-code-best
f5a97011e8
feat: Phase 3 — 战斗 UI 终端交互组件
...
- BattleConfigPanel: 战斗前配置(队伍展示 + 对手选择)
- BattleView: 战斗主界面(双方 HP + 招式选择 + 事件日志)
- SwitchPanel: 换人选择面板
- ItemPanel: 道具使用面板
- BattleResultPanel: 战斗结算展示
- MoveLearnPanel: 新招式学习面板
- HP 条颜色分级(绿/黄/红)
- 事件日志中文格式化
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 00:37:26 +08:00
claude-code-best
a3fc348421
feat: Phase 2 — 战斗引擎 @pkmn 薄适配层
...
- 安装 @pkmn/protocol @pkmn/client @pkmn/view
- 新建 battle/types.ts: BattleState, BattlePokemon, BattleEvent, PlayerAction 等
- 新建 battle/adapter.ts: Creature→PokemonSet 转换, 野生对手生成
- 新建 battle/engine.ts: createBattle() + executeTurn() 薄封装 @pkmn/sim
- 新建 battle/handler.ts: @pkmn/protocol Handler→BattleEvent 转换
- 新建 battle/ai.ts: 随机合法招式 AI 决策
- 新建 battle/settlement.ts: 战后结算 XP/EV/升级/进化/招式学习
- 新建 battle/index.ts: 统一导出
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 00:31:42 +08:00
claude-code-best
12cbb7c4c7
feat: Phase 1 — 数据模型升级 Creature v2 + PCBox/Bag
...
- 新增 MoveSlot, PCBox, Bag, ItemId 类型
- Creature 扩展 nature/moves/ability/heldItem/pokeball 字段
- BuddyData 升级 v2: 新增 boxes, bag, battlesWon/battlesLost
- 新建 data/learnsets.ts: getDefaultMoveset/getDefaultAbility/getNewLearnableMoves
- storage.ts v1→v2 迁移: 回填 nature/moves/ability,新增 PCBox/Bag
- 新增 PCBox 操作: deposit/withdraw/move/rename/findLocation/release
- 新增 Bag 操作: add/remove/getCount
- generateCreature/loadBuddyData/hatchEgg 改为 async (Dex.learnsets.get 异步)
- 修复 PokedexView: activeCreatureId → party[0]
- 更新测试文件: async/await + v2 BuddyData fixtures
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 00:20:08 +08:00
claude-code-best
96f3e1b309
refactor: Phase 0 — 清除重复,委托 @pkmn 生态
...
- 删除硬编码 NATURES 常量,nature.ts 委托 Dex.natures
- 删除硬编码 EVOLUTION_CHAINS,evolution.ts 委托 Dex.species.evos
- calculateStats() 手写公式替换为 gen.stats.calc()
- 统一 TO_DEX_STAT/FROM_DEX_STAT 映射到 pkmn.ts
- 简化 species.ts buildEvolutionChain() 复用 getNextEvolution()
- 添加 NatureName/NatureEffect 类型定义
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-22 00:05:05 +08:00
claude-code-best
970fcd627f
feat: 又是更新了一大堆
2026-04-21 21:38:13 +08:00
claude-code-best
f74492617b
feat: 一大堆优化
2026-04-21 20:31:10 +08:00
claude-code-best
722aa6c97a
feat: 扩展精灵动画系统并新增 SpriteAnimator 组件
...
- 新增动画模式: breathe, bounce, walkLeft, walkRight, flip
- 新增 SpriteAnimator 组件,内置 tick 循环和居中渲染
- BuddyPanel 使用 SpriteAnimator 替代手动渲染
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-21 19:23:24 +08:00
claude-code-best
88ddba6c23
feat: 第一版可用 pokemon
2026-04-21 19:03:31 +08:00
claude-code-best
300faa18d0
Merge branch 'feature/unknown-llm-feature-test'
2026-04-21 12:06:19 +08:00
claude-code-best
ed4bdb9338
feat: 增强 auto mode 的易用性 ( #312 )
...
* feat: poor 模式降级 yolo 审阅模型
* feat: 为多模块添加 Langfuse tracing 支持
在 web search、agent creation、away summary、token estimation、
skill improvement 等模块中集成 Langfuse trace,并透传至
compact/apiQueryHook/execPromptHook 等调用链。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: 让 auto mode 记录回主 trace
* fix: reopen auto mode prompt when classifier is unavailable
* fix: 修复 auto mode 情况下, llm 报错导致弹窗也不打开的问题
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-20 21:13:09 +08:00
claude-code-best
e4ce08fe39
Fixture/langfuse record auto mode data error ( #308 )
...
* fix: 修复状态栏 context 计数器在 loading 时闪现为 0 的问题
第三方 API(如智谱)在 message_start 中可能不返回完整 usage 数据,
导致 getCurrentUsage 返回全零 usage 对象,使 ctx 显示为 0%。
双重保护:
- getCurrentUsage: 跳过全零 usage,继续往前找有真实数据的 message
- calculateContextPercentages: totalInputTokens 为 0 时返回 null
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: 外部化 ESM 包使用 createRequire 替代裸 require
color-diff-napi、image-processor-napi、audio-capture-napi 声明
"type": "module" 但使用裸 require(),Node.js ESM 中 require
不可用。改用 createRequire(import.meta.url) 或顶层 import。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: getDefaultSonnetModel 优先使用用户配置的模型,修复第三方 provider 模型不存在错误
当用户通过 ANTHROPIC_MODEL 或 settings 配置了自定义 provider 支持的模型时,
getDefaultSonnetModel/Haiku/Opus 现在会优先使用该配置,而非硬编码 Anthropic 官方模型 ID。
同时改进 Langfuse 可观测性:sideQuery 失败时记录错误信息到 span,
optional 模式下标记 WARNING 而非 ERROR。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: 将 auto_mode classifier 的 side-query span 绑定到父 trace
classifyYoloAction 及 classifyYoloActionXml 接收 parentSpan 参数,
透传给 sideQuery 调用,使 auto_mode 的 side-query span 嵌套在主 agent trace 下。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: 穷鬼模式下跳过 memdir_relevance side-query
Poor mode 启用时不执行 findRelevantMemories 的预取调用,
避免额外的 API token 消耗。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* chore: 添加 test:all 脚本用于完成任务后的全量检查
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: Vite 构建补齐缺失的 feature flags,修复 auto mode 不可见
Vite 构建插件的 DEFAULT_BUILD_FEATURES 缺少 BUDDY、TRANSCRIPT_CLASSIFIER、
BRIDGE_MODE、ACP、BG_SESSIONS、TEMPLATES,导致 feature('TRANSCRIPT_CLASSIFIER')
被替换为 false,auto mode 从 Shift+Tab 循环中消失。与 build.ts 对齐。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: 统一 feature flags 到 defines.ts,修复 Vite 构建缺失 auto mode
将 DEFAULT_BUILD_FEATURES 列表从 build.ts、dev.ts、vite-plugin-feature-flags.ts
三处内联定义统一到 scripts/defines.ts 单一导出。之前的 Vite 插件缺少
TRANSCRIPT_CLASSIFIER 等 feature flag,导致 auto mode 在 Vite 构建中不可见。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-20 13:30:05 +08:00
claude-code-best
494eab7204
feat: 接入内建 weixin channel(同 #301 重构版本) ( #303 )
...
* feat: 接入 weixin 服务层与命令入口
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
* feat: 注册内建 weixin channel 插件
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
* fix: 修正 channel permission relay 路由与能力判定
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
* fix: 修复 builtin channel 的 ChannelsNotice 误报
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
* docs: 补充内建 weixin channel 使用说明
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
* docs: 更新微信 channel 接入计划状态
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
* fix: 延迟加载 weixin 登录二维码依赖
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
* fix: 改用 qrcode 生成 weixin 登录二维码
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
* fix: 修正 vite 构建的 Windows 路径解析
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
* chore: 删除临时规划文档 wx_channel.md 并还原 package.json 排序
wx_channel.md 内容已整合到 docs/features/channels.md,不再需要。
package.json 中 @ant/model-provider 位置从原始位置被无意移动,还原。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* refactor: 将 weixin 模块从 src/ 迁移至 packages/weixin 工作区包
将 src/services/weixin/ 中的纯业务逻辑迁入 @claude-code-best/weixin
workspace 包,降低 src/ 耦合度。仅保留 server.ts 作为薄适配层。
- 迁移 7 个无修改的纯模块 (types/api/accounts/login/pairing/media/send)
- monitor.ts 内联 PERMISSION_REPLY_RE 正则,解除对 src/ 的依赖
- permissions.ts 本地定义 ChannelPermissionRequestParams 接口
- cli.ts 拆分:serve 子命令通过回调注入,login/access 保留在包内
- server.ts 重写为从 @claude-code-best/weixin 导入
- 新增 cli-serve.ts 作为 serve 入口薄壳
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: 修正 weixin barrel export 中 interface 的导出方式
ChannelPermissionRequestParams 是纯类型,必须用 export type 导出,
否则 Bun 运行时会报 "export not found" 错误。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* refactor: 将 server.ts 迁入 packages/weixin,彻底移除 src/services/weixin/
通过依赖注入(WeixinServerDeps)解耦 src/ 依赖(analytics、config、
MCP channel schema),server.ts 完全移入包内。cli.tsx 入口处一次性
注入所有依赖。
src/services/weixin/ 目录已完全删除。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: 修复 markdownToPlainText 中代码块正则的 ReDoS 风险
用非正则的线性扫描替代 \`\`\`[\s\S]*?\n([\s\S]*?)\`\`\` 匹配,
避免在含有大量重复 \`\`\` 序列的输入上触发多项式回溯。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
---------
Co-authored-by: 1111 <11111@asd.c>
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-19 21:33:27 +08:00
claude-code-best
66d2671c98
feat: acp manager ( #304 )
...
* feat: acp 控制器第一版
* feat: acp-link 命令二合一
2026-04-19 21:18:18 +08:00
claude-code-best
c7bc8c8636
feat: remote control 支持 auto bind 功能 ( #300 )
...
* feat: acp-link 支持 --group 参数指定 channel group
- 添加 --group CLI flag,校验格式 [a-zA-Z0-9_-]+
- 支持 ACP_RCS_GROUP 环境变量 fallback
- 传递 channelGroupId 到 RcsUpstreamClient
- 更新 README 文档说明 --group 和相关环境变量
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: RCS 后端 session 复用与 group 绑定
- storeFindEnvironmentByMachineName 匹配 offline 状态,防止重连创建重复 session
- registerEnvironment 复用已有 session 而非每次新建
- EnvironmentResponse 返回 channel_group_id 字段
- 注册时将 session 绑定到 group ID,支持 web UI 按 group 查询
- apiKeyAuth 不再设置 uuid,由 uuidAuth 统一处理
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* feat: Web UI Token Manager — 多 token 切换与 session 隔离
- 新增 useTokens hook 管理 localStorage token CRUD
- 新增 TokenManagerDialog 弹窗组件(添加/编辑/删除/切换 token)
- api client 支持Bearer token 认证,UUID 跟随 token 变化
- Navbar 添加 token 切换按钮
- 切换 token 时自动 reload,实现 session 数据隔离
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: 修复 useTokens useState 初始化函数签名错误
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-19 13:04:09 +08:00
claude-code-best
f9d011164a
fix: 替换 web 端 crypto.randomUUID 为 uuid 库以支持 HTTP 环境
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-19 10:33:15 +08:00
claude-code-best
a0dc4540ca
fix: 修复服务器两个 / 的问题
2026-04-19 08:55:55 +08:00
claude-code-best
2e9aaf4993
feat: ACP 协议版本 remote control ( #293 )
...
* fix: 添加 usage 字段缺失时的防御性防护
第三方 API(如智谱 GLM)在某些流式响应中不返回 usage 字段,
导致 usage.input_tokens 访问 undefined 崩溃并连锁影响后续所有请求。
- claude.ts: content_block_stop 创建消息时 fallback 到 EMPTY_USAGE
- LocalAgentTask.tsx: usage 为 undefined 时提前返回
- tokens.ts: getTokenCountFromUsage 加 null guard 和 ?? 0
- cost-tracker.ts: input_tokens/output_tokens 加 ?? 0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* feat: ACP Plan 展示 — 支持 session/update plan 类型的可视化
补全 PlanUpdate 类型定义(PlanEntry/Priority/Status),新建 PlanView 组件
渲染进度条、状态图标和优先级标签,在 ChatInterface 中处理 plan 更新逻辑。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* feat: 穷鬼模式下跳过 verification agent 以节省 token
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* test: 补充 RCS 后端 + 前端测试覆盖 (+116 tests)
后端新增 3 个测试文件 (70 tests):
- automationState: normalize/snapshot/equals 纯函数
- client-payload: toClientPayload 协议转换
- transport-normalize: normalizePayload + extractContent
前端新增 2 个测试文件 (46 tests):
- utils: formatTime/statusClass/truncate/extractEventText 等
- api-client: getUuid/setUuid/api GET/POST 错误处理
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* feat: RCS ACP 页面添加权限模式选择器 + 权限响应修复
- 新增权限模式选择器 UI(6种模式:默认/自动接受编辑/跳过权限/规划/不询问/自动判断)
- 权限模式通过 ACP _meta 从 web → acp-link → agent 全链路传递
- 修复 PermissionPanel 点击"允许"发送 cancelled 而非 selected 的 bug
- 权限模式和模型选择持久化到 localStorage
- acp-link 直接连接路径同步支持 permissionMode 透传
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* feat: RCS Web UI 重构 + QR 修复 + ACP 扫描自动跳转
- RCS Web UI 组件全面重构: Dialog 迁移 Radix UI, lazy loading,
主题系统改进, 组件样式优化
- IdentityPanel QR 码显示修复: requestAnimationFrame 延迟绘制
解决 Radix Dialog Portal 挂载时序问题
- ACP QR 扫描自动跳转: IdentityPanel 扫描 ACP 格式 { url, token }
后存储 sessionStorage 并跳转 /code/?acp=1
- 新增 ACPDirectView 组件: ACP 直连视图, 用 ACPClient 连接并
渲染 ACPMain 聊天界面
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* feat: ACP 权限管道改进 — 模式同步 + bypass 检测 + 统一权限流水线
- agent.ts: applySessionMode 同步 appState.toolPermissionContext.mode
- agent.ts: bypassPermissions 可用性检测 (非 root 或 sandbox 环境)
- permissions.ts: createAcpCanUseTool 接入 hasPermissionsToUseTool
统一权限流水线, 替代原来分散的处理逻辑
- permissions.ts: 支持 onModeChange 回调, 模式变更时实时同步
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: acp-link 支持 permissionMode 默认值传递给 agent
客户端 (Zed/VS Code 等) 的 new_session 不一定携带 permissionMode,
导致 agent 收到 _meta: undefined, permission 回退到 default。
修复: handleNewSession 使用 fallback 链:
客户端传值 > config.permissionMode > ACP_PERMISSION_MODE 环境变量
使用: ACP_PERMISSION_MODE=auto acp-link claude
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* docs: 更新文档及说明
* fix: 修复类型错误
* chore: 提交脚本
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-18 21:54:22 +08:00
claude-code-best
34154ee3f5
feat: 支持 acp-link 包进行 acp 通用的 remote-control ( #292 )
...
* fix: 修复超时问题
* feat: 添加 acp-link 代码
* refactor: 样式重构完成
* feat: RCS 添加 ACP 后端支持
- 新增 ACP WebSocket handler (agent 注册、EventBus 订阅)
- 新增 relay handler (前端 WS → acp-link 透传 + EventBus inbound 转发)
- 新增 SSE event stream 供外部消费者订阅 channel group 事件
- ACP REST 接口无鉴权 (agents、channel-groups)
- WebSocket 端点保留 token 鉴权
- SPA 路由 /acp/ 指向 acp.html
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* feat: 添加 ACP 专属前端界面
- 新增 /acp/ SPA 页面 (agent 列表 + 实时交互)
- Agent 列表按 channel group 分组,显示在线状态
- 通过 RCS WebSocket relay 与 agent 通信
- Vite multi-page 构建 (index.html + acp.html)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* feat: acp-link 支持 RCS relay 双向通信
- rcs-upstream 新增 messageHandler 转发非控制消息
- server.ts 新增虚拟 WS + relay client state 处理 relay ACP 消息
- newSession/loadSession 补充 mcpServers 参数
- 连接成功后显示 ACP Dashboard URL
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* refactor: 移除 FileExplorer 及文件操作相关代码
- 删除 FileExplorer 组件
- ACPMain 移除 Files tab,仅保留 Chat 和 History
- client.ts 移除 listDir/readFile/onFileChanges 等方法
- types.ts 移除 FileItem/FileContent/FileChange 等类型
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: 修复类型问题
* feat: RCS 后端统一 ACP/Bridge 注册逻辑
- store: EnvironmentRecord 增加 capabilities 字段、storeFindEnvironmentByMachineName 复用逻辑
- store: 新增 storeGetSessionOwners,支持未绑定 session 自动 claim
- environment: registerEnvironment 支持 ACP 复用已有记录,返回 session_id
- session: resolveOwnedWebSessionId 支持无 owner session 自动绑定
- acp-ws-handler: 新增 handleIdentify 支持 REST+WS 两步注册
- acp routes: /acp/relay 和 /acp/agents 支持 UUID 认证
- event-bus: 增加 error 类型 payload 日志
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* feat: acp-link 改 REST 注册 + WS identify 两步流程
- rcs-upstream: 新增 registerViaRest() 通过 POST /v1/environments/bridge 注册
- rcs-upstream: WS 连接后发送 identify 替代 register,携带 agentId
- rcs-upstream: 入口链接改为 /code/?sid=${sessionId} 实现用户绑定
- server: 修复心跳跳过 relay 虚拟连接的 bug
- server: maxSessions 配置传入 RCS upstream
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* feat: 前端统一 Chat 组件 + ACP 聊天界面重构
- 新增 chat/ 组件: ChatView, ChatInput, MessageBubble, ToolCallGroup, PermissionPanel, SessionSidebar, CommandMenu
- ACPMain: 重构支持完整 ACP 协议交互(session/prompt/permission)
- rcs-chat-adapter: 统一 bridge session SSE 适配器
- ACPClient: 增强 session 管理、permission 流程、streaming 支持
- index.css: 新增 chat 相关样式、动画、布局
- useCommands: 新增快捷命令 hook
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* refactor: 删除 /acp/ 独立页面,ACP 聊天统一到 /code/:sessionId
- 删除 acp.html、acp-main.tsx 入口文件和 pages/acp/ 目录
- SessionDetail: ACP session 在同一页面渲染 ACPSessionDetail 组件
- App.tsx: ?sid= 参数自动调用 apiBind 绑定用户 UUID
- Dashboard: 统一 session 列表导航,ACP 显示紫色标签
- relay-client: 改用 UUID 认证替代 API token
- EnvironmentList: 显示 workerType 标签(ACP Agent / Claude Code)
- index.ts: 移除 /acp/ SPA 路由,vite.config 移除 acp 入口
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* build: 更新构建及测试修复
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-18 17:59:29 +08:00
Cheng Zi Feng
72a2093cd6
feat(remote-control): 优化 Web 展示、状态同步与桥接控制流程 ( #288 )
...
Co-authored-by: chengzifeng <chengzifeng@meituan.com >
2026-04-17 16:21:27 +08:00
claude-code-best
ac42ce2d67
fix: 解决 node 下 loading 按钮计算错误问题
2026-04-17 10:42:40 +08:00
claude-code-best
a14b7f352b
test: 修正 mock 的滥用情况
2026-04-17 10:13:09 +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