Claude Code Haha v0.2.6 更新解读H5 安全访问恢复、会话批量管理与桌面体验打磨【免费下载链接】cc-hahaLocal-first cross-platform desktop workspace for Claude Code / agents: multi-agent, Git worktrees, code diffs, skill marketplace, multi-model, Computer Use, task-aware desktop pets, with WeChat, Feishu, DingTalk, Telegram, WhatsApp and H5 access.项目地址: https://gitcode.com/gh_mirrors/cl/cc-hahaClaude Code Haha v0.2.6 是一次围绕H5 手机访问安全恢复、桌面会话管理、文件提及搜索一致性以及桌面体验细节的版本。相比 v0.2.5 的临时放行本版本重新把 H5/LAN 访问收回到显式开启 token 配对的安全模型里同时把入口迁移到独立设置页方便手机扫码使用桌面侧则补齐了批量删除会话、纯白主题、 文件搜索对齐 CLI以及一批聊天输入和展示问题的修复。阅读本文后你将掌握 v0.2.6 的完整变更清单、H5 安全访问的底层策略与配置参数以及如何在自己的环境中验证这些能力。H5/LAN 访问从临时放行到显式开启 Token 配对版本背景为什么 v0.2.6 要收回 H5 访问v0.2.5 曾对 H5/LAN 访问做临时放行以快速验证手机端能力。但临时放行意味着远程 API、proxy 和 WebSocket 缺少显式授权边界任何能触达该端口的人都可能访问桌面服务。v0.2.6 的目标正是把访问权重新收回本地H5/LAN 访问重新要求本地显式开启默认关闭开启后通过QR 链接携带一次性展示的 token完成手机配对远程 API、proxy 和 WebSocket 不再裸露——未开启时远程能力接口默认失败开启后远程能力接口必须携带 H5 token。从源码看H5 访问的状态持久化在settings.json的h5Access字段中默认值为enabled: false见 src/server/services/h5AccessService.tstoken 以 SHA-256 哈希形式存储明文 token 仅在本地可信请求下才会被回传服务端代码注释明确说明该设计来自 issue #767token 曾只展示一次重启后丢失导致每次都要重新生成并使所有已配对手机失效。三层请求分类local-trusted / internal-sdk / h5-browserH5 访问策略的核心是按请求来源分类而不是一刀切。核心实现在 src/server/h5AccessPolicy.tslocal-trusted本地可信请求来自桌面 shell 进程、CLI 子进程、OAuth 回调页、loopback 地址的请求且不携带代理追踪头forwarded、x-forwarded-for、via等internal-sdk内部 SDK 请求路径以/sdk/开头且满足本地可信或持有内部 SDK 授权h5-browser远程浏览器请求其余所有来自浏览器的请求包括远程手机浏览器。分类后的行为差异非常明确场景H5 关闭时H5 开启时本地可信请求正常工作正常工作远程浏览器请求/api/、/proxy/、/ws/默认失败必须携带 H5 token对应实现是shouldBlockDisabledH5Access与shouldRequireH5Token两个函数见 src/server/h5AccessPolicy.ts当 H5 关闭时h5-browser类请求访问受保护路径/api/、/local-file/、/preview-fs/、/proxy/、/ws/、/sdk/会被直接拒绝当 H5 开启时h5-browser类请求访问能力路径/api/、文件能力路径、/proxy/、/ws/则必须先通过 token 校验。控制面专属本地远程浏览器不能改配置一个容易被忽略但至关重要的设计是H5 控制面保持本地桌面专属。/api/h5-access路径除verify外是仅本地访问凭据路径requiresLocalAccessCredential见 src/server/h5AccessPolicy.ts远程浏览器即使拿到 token 也无法自己开启、关闭或修改 H5 访问配置。同时像/api/settings/session-cleanup这类单请求即可不可逆删除用户数据的端点也被列入LOCAL_CREDENTIAL_ONLY_PATHS防止被窃取的 H5 token 直接清空历史。健康检查校验避免 Vite SPA fallback 误判浏览器启动时会校验/health响应的形状而非仅看 HTTP 200避免把 Vite SPA fallback 页面误当成后端可用。这一细节保证手机扫码打开的是真实可用的后端入口而不是一个 404 后兜底返回的 HTML 页面。H5 Access 设置页入口、操作与完整参数说明独立设置页与 API 形态v0.2.6 将 H5 Access 从 Settings 的 General 中独立出来补齐了token 生成、QR 码、复制访问 URL、错误提示和 public URL 配置。桌面端对应的 API 客户端封装在 desktop/src/api/h5Access.tsAPI方法说明GET /api/h5-access查询返回{ settings, diagnostics }POST /api/h5-access/enable开启返回{ settings, token }token 仅在开启时返回POST /api/h5-access/disable关闭返回{ settings }POST /api/h5-access/regenerate轮换 token返回{ settings, token }会立即使旧 token 失效POST /api/h5-access/verify校验携带Authorization: Bearer token无效返回 401PUT /api/h5-access更新支持allowedOrigins、publicBaseUrl、fixedPort、disconnectGraceSeconds路由实现在 src/server/api/h5-access.ts。注意enable与regenerate的区别重新开启会保留已有 token保证已配对手机继续可用regenerate 才真正轮换 token见 src/server/services/h5AccessService.ts而disable也会保留 token只是在校验阶段一律拒绝方便日后重新开启时恢复旧配对。H5AccessSettings 字段与取值约束桌面端与服务端共享同一份设置类型桌面端定义见 desktop/src/types/settings.ts服务端定义及校验见 src/server/services/h5AccessService.ts字段类型说明与约束enabledboolean是否开启远程访问tokenstring | null完整 token明文仅在本地可信请求下回传tokenPreviewstring | null形如h5_abc123...wxyz的预览前 7 位 ... 后 4 位allowedOriginsstring[]允许的浏览器 Origin 白名单禁止通配符*仅接受http:/https:拒绝带用户名/密码的 URLpublicBaseUrlstring | null手机可访问的公开地址可留空由系统自动推断 LAN 地址fixedPortnumber | null固定服务端口1024–65535且必须是浏览器安全端口由桌面 launcher 在下次启动时应用disconnectGraceSecondsnumber | null断连空闲宽限期5–86400 秒null表示内置默认 30 秒token 的格式约束为^[\x21-\x7e]{16,512}$16–512 位可见 ASCII需能安全通过 URL query 与 Authorization header生成的 token 形如h5_32字节 base64url见 src/server/services/h5AccessService.ts。disconnectGraceSeconds手机锁屏后任务继续跑disconnectGraceSeconds是本版本一个值得展开的细节设计来自 issue #764当最后一个客户端断连后空闲会话的 CLI 子进程会在宽限期后停止。关键是正在运行的 turn 绝不会被打断——计时器只在会话空闲且无客户端附着时启动。因此手机在任务执行中锁屏任务仍会在后台跑完重新连接后即可看到结果。内置默认值为 30 秒DEFAULT_DISCONNECT_GRACE_MS 30_000WebSocket 断连清理逻辑通过getDisconnectGraceMs()读取该值。publicBaseUrl 的自动推断与失效回退publicBaseUrl的解析逻辑resolveEffectiveH5PublicBaseUrl见 src/server/services/h5AccessService.ts遵循以下优先级H5 未开启时返回存储值显式配置的环境变量CLAUDE_H5_PUBLIC_BASE_URL优先设置了CLAUDE_H5_AUTO_PUBLIC_URL1时自动发现 LAN 地址findPrivateLanAddress会优先物理网卡的192.168.x地址并给wsl/docker/vpn等虚拟接口大幅降权见 src/server/services/h5AccessService.ts若存储的地址是纯 LAN 地址但已不属于本机任何网卡例如切换了 Wi-Fi则临时回退到自动发现的地址且不覆盖存储值——切回原网络后自动恢复。classifyH5PublicBaseUrl区分两类 publicBaseUrlplain-lan裸http://私网IPv4:端口无路径和proxyhttps、带自定义路径或主机名视为用户自管的反向代理不做可达性检查。会话批量管理全选、分组、Shift 范围选择与删除桌面侧边栏新增批量管理模式支持全选、分组选择、Shift 范围选择并提供明确的删除已选路径。与之对应的服务端能力是批量删除接口POST /api/sessions/batch-delete桌面端封装见 desktop/src/api/sessions.ts入参为{ sessionIds: string[] }。v0.2.6 同时移除了按天数快捷清理的入口——因为按天数容易被误解为删除最近几天的会话而非清理多少天以前的会话容易造成误删。批量删除现在只保留语义明确的勾选 → 删除已选并改善了连续选中行的视觉区分。 文件提及搜索git-first 对齐 CLI桌面文件提及搜索在本版本改为git-first 搜索与 CLI 行为对齐在 git 仓库内使用git ls-files的tracked files与git ls-files --others --exclude-standard的untracked files遵守项目 ignore 规则从而减少node_modules、构建产物等噪声在非 git 目录下回退到ripgrep 搜索且同样尊重 ignore 文件对应测试见 src/server/tests/filesystem.test.ts目录候选也由这些结果推导保证目录提示与实际文件来源一致。具体命令实现在 src/server/api/filesystem.tstracked 文件使用git -c core.quotepathfalse ls-files --recurse-submodulesuntracked 文件在 git 仓库内附加--others --exclude-standard。此外文件提及菜单的路径显示与插入行为进一步对齐 CLI减少只显示文件名造成的歧义。桌面体验打磨与问题修复视觉与主题新增纯白主题覆盖更多桌面表面避免 warm classic 颜色残留到中性白色工作区品牌图标刷新桌面与文档资源统一更新为新 logo并修复 app icon 在桌面中出现双层背景的问题。本轮修复的问题清单长 URL 或长 Markdown 链接把用户消息气泡撑出聊天列 → 已修复多个会话 tab 之间未发送草稿和附件状态互相泄漏串台→ 已修复OpenAI-compatible Responses API 缺失或返回不同 usage 字段时 usage 转换不够兼容 → 已修复补充 fallbackH5 远程来源、CORS、SDK 路由与本地 loopback 调用之间边界不清导致的访问误判 → 已修复H5 启动失败时后续 API 报 JSON parse 之类不直观错误 → 已修复。验证体系回归测试与检查命令v0.2.6 围绕本版本全部功能点补充了回归测试H5 侧h5 access policy、auth、CORS、Settings、desktop runtime 相关测试服务端测试见 src/server/tests/h5-access-policy.test.ts、src/server/tests/h5-access-auth.test.ts、src/server/tests/h5-access-api.test.ts、src/server/tests/h5-access-service.test.ts桌面侧session batch delete、sidebar batch mode、ChatInput、UserMessage、FileSearchMenu、filesystem API、OpenAI-compatible usage fallback 相关测试。相关提交分别跑过以下检查对应仓库内脚本bun run check:server bun run check:desktop bun run check:coverage bun run verify以及桌面 build、docs build和针对 H5、批量管理、草稿隔离、图标显示的浏览器 smoke 测试。安全提示与安装使用边界H5 是给个人或可信团队使用的浏览器访问入口不是公开多租户登录系统。请只在可信网络和可信来源下开启并妥善保存生成的 tokentoken 以哈希存储但明文会展示给开启者泄露后请立即在设置页 regenerate。由于控制面仅限本地桌面操作远程浏览器无法自行开启或修改 H5 配置这一边界也请勿通过手工改配置绕过。macOS 安装首次打开如果提示已损坏或无法验证开发者请执行xattr -cr /Applications/Claude\ Code\ Haha.app总结v0.2.6 的核心价值在于把 v0.2.5 临时放行的远程访问权安全地收回显式开启 token 配对 本地专属控制面 三层请求分类构成了一套面向个人/可信团队的可审阅安全模型同时以会话批量管理、git-first 文件搜索和纯白主题为代表的桌面体验改进让日常会话管理更高效、更一致。如果你正在使用或评估 Claude Code Haha 的手机访问能力建议从本版本的安全边界与参数约束入手在可信 LAN 环境下开启并完成一次手机扫码配对验证。【免费下载链接】cc-hahaLocal-first cross-platform desktop workspace for Claude Code / agents: multi-agent, Git worktrees, code diffs, skill marketplace, multi-model, Computer Use, task-aware desktop pets, with WeChat, Feishu, DingTalk, Telegram, WhatsApp and H5 access.项目地址: https://gitcode.com/gh_mirrors/cl/cc-haha创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考