Skip to content

Releases: BB20260410/xikelab

Xike Lab v2.1.0 (unsigned)

Choose a tag to compare

@BB20260410 BB20260410 released this 28 May 04:20

[2.1.0] - 2026-05-28

承接 origin 上的 v2.0.0(2026-05-21,SQLite 数据底座 + 向量搜索 + 多 workspace + Pino 日志),本版本是其后 126 commit 的累积增量。完成了 Paperclip 本地治理能力吸收、Crow5 技术精髓吸收、知识库与证据全链路、a11y 闭环;同时通过深度 QA / 构建验证揪出并修复了 12 个真实 bug(含 3 个发布阻断)。按 SemVer 属 minor 升(新增功能 + 向后兼容)。

Added

  • 知识库(Knowledge Center):跨 Agent Run / 工具结果 / 审计的本地 FTS 证据检索。新增 /api/knowledge/evidence/{search,stats,reindex}(owner-token,3 段子路径避开既有 /api/knowledge/:name),顶栏「📚 知识」入口,状态框/查询/重建/命中卡/精准跳转 Agent Run。(3ac3647, 74a1c7f, a6eaac4, ea9ff00)
  • A3 run 归档自动增量索引:AgentRunStore.archiveHookEvidenceKnowledgeStore.indexRunTimeline,run 归档时把消息/工具结果增量入索引,失败不阻断归档。(a8b3c5b)
  • C2 治理队列源对象状态联动:ApprovalStore.decisionHook / BudgetPolicyStore.incidentResolveHookGovernanceQueueStore.setStateBySource,审批决议/预算解决自动推进队列项;setStateBySource 非法 state/不存在 source 边界单测覆盖。(c1eb761, 8db9850 自检修正, c8bb417 边界单测)
  • D3 Schema 迁移框架:SqliteStore.SCHEMA_MIGRATIONS + schema_version kv + runMigrations,升级既有库前自动备份 panel.db.bak;首条迁移 idx_agent_runs_status_updated。(2ab339d)
  • D1 Codebase Center 证据 summary:coverage.referenceKindCounts(callback-registration/object-property-flow 等)+ weak-evidence 徽标 + citation paths。(262a867)
  • D2 Parser registry 优先级可配:createParserAdapter({ priority }),为将来更强 adapter 覆盖既有铺路(wasm Tree-sitter 实接因当前无消费者+异步 init 与 sync 接口冲突,延后)。(38e444f)
  • B1 托管 e2e:scripts/e2e-with-server.mjs + npm run test:e2e:managed,随机端口 + 隔离 HOME 起服务 → 跑 walkthrough → finally 必杀 server + 确认端口无监听 → 透传退出码。(f58cef3)
  • F1 精准跳转:evidence_index_meta.run_id + search LEFT JOIN 返回 runId,agent 证据命中直接开对应 Agent Run。(74a1c7f)
  • C3 Codebase Index 上限集中:FTS/vector/snapshot/code-context 上限并入 src/agents/codebaseLimits.js,支持 ~/.claude-panel/codebase-limits.json 覆盖。(e6d2a40, 462e172)
  • a11y 闭环:全 18 个 modal 补 role="dialog" + aria-modal="true" + aria-labelledby(init 富化覆盖所有现有及未来 modal);新增 modal focus-trap(Tab/Shift+Tab 焦点不逸出最上层 modal,playwright 12 次 Tab 验证)。(3e54cf4, e106725, 111a102)
  • 发布打包流水线:scripts/release-build.mjs + npm run build:app,在 electron-builder 后强制 @electron/rebuild 修 silent failure + 拷 .app + 回 Node ABI,验证 sha256 ABI 分离。可重复出可运行的 .app。(fba504d)

Changed

  • Electron 42 → 37.10.3:better-sqlite3 12.10(最新)无法对 Electron 42 新 V8 编译(v8::External::New 需 3 参,旧源用 2 参)。降至 better-sqlite3 12.10 prebuilt 上限 electron-v136 = Electron 37。勿升过 37(memory 备案,直到 better-sqlite3 适配)。(7ca4a07)
  • 桌面打包 asar: false:原 asar 内 server.js 无法被 child_process spawn(ENOTDIR)。同时 files 配置加 docs/plugin-manifest.schema.json(原打包遗漏致 PluginRegistry schema 校验降级)。(fba504d)
  • 重操作 e2e 等待 5s → 15s:governance summary body / .agent-code-context / .agent-codebase-map / .agent-symbol-graph 在连跑/大数据下偶现 timeout,提余量后连续 3 跑稳定 144/144。(5f40465)
  • README 开发者章节增补:test:e2e:managed、证据知识库、Schema 迁移框架、codebase-limits.json 调参指引、SECURITY_AUDIT.md 指向。(d0613cd)
  • 任务交接.md 持续更新本轮进展(下个窗口接力):本轮完成项、剩余项、铁律、命令、关键 sha。(1e60168, 78af148, e507375)
  • E2 兜底:知识库无 runId 的命中(如 activity)按 sessionId 跳会话审计上下文,而非 q=refId(消息/工具 id 不在 activity 事件里,搜不到)。(c169d48)

Fixed

  • 9 个 CSS 变量全 app 未定义:--color-accent-primary/--color-accent-secondary 等被 40+ 处引用于 focus/active 强调态(input:focus 边框、房间/插件 active 高亮、搜索命中、squad 卡片、共识框等),拆 CSS 时漏定义致 var() / color-mix() 静默失效。在 :root 补别名指向 --accent-blue 等基础 token,主题感知自动跟随。(7577b73)
  • cxbtn 主/次按钮全 app 丢填充色:v0.82 拆 CSS 时 public/css/form.css(后加载覆盖 style.css)用错 var 名(--btn-pri-bg/--btn-pri-fg/--btn-sec-bg/--btn-sec-fg 全未定义)→ background/color 失效致按钮透明,仅 hover/active 才显深色(表现为「黑框无字」)。改为 token 实名 --btn-pri/--btn-pri-text/--btn-sec/--btn-sec-text,light/dark 双主题验证。影响 3 个 Center modal / 对话框 / onboarding 等所有 cxbtn-primary/secondary。(79577db)
  • Electron 42 桌面打包失败:better-sqlite3 12.10 C++ 源对新 V8 不兼容 → 降级 Electron 37 修(见 Changed)。(7ca4a07)
  • server.js 缺 undici 显式依赖:import { setGlobalDispatcher, EnvHttpProxyAgent } from 'undici' 原靠 Electron 42 幽影传递,降级后 ERR_MODULE_NOT_FOUND undici。补 undici ^6.26.0。(7ca4a07)
  • PluginRegistry 缺 ajv 显式依赖:require('ajv') 用 v6 API(schemaId:'auto' + lib/refs/json-schema-draft-07.json)但未声明,靠传递依赖在;MCP sdk/electron-builder 带的是 ajv 8 会破 v6 API。补 ajv ^6.15.0 锁 v6。(54a8efb)
  • e2e 负载 flaky:重操作等待 5s 在系统负载/真实数据下偶现 timeout 致 67/68(非产品缺陷)。见 Changed 的 5s→15s。(5f40465)
  • 2 个 route 文件 handler 缺 try/catch:sessions-readonly.js(2 handler)、roomAdapters.js(3 handler)同步 throw 落到 Express 默认处理,非 PANEL_DEBUG=1 下 理论可泄漏 stack。包 try/catch 走 e.message / send500 sanitized。(4804b1f)
  • tmp 依赖路径遍历漏洞:tmp < 0.2.6(GHSA-ph9p-34f9-6g65)经 electron-builder → @malept/flatpak-bundler → tmp-promise 传递。overrides 强制 tmp ^0.2.6,npm audit 归零(prod+dev)。(0434d6f)
  • 知识库 UI 4 处缺陷:① 状态框只占左半留空 → 满宽 ② 命中卡显费解的负 bm25「score -7.48」→ 改友好的「#相关度排名」 ③ 已搜 0 命中却显示初始提示「输入关键词」→ 区分检索中/0 命中/空库/未搜四态 ④ 选 kind 来源后还要再点检索 → 即时重搜。(a6eaac4, ea9ff00)
  • 桌面打包 spawn ENOTDIR(Step 1 揪出,pre-existing 发布阻断):server.js 在 app.asar 内,child_process.spawn 无法从 asar 虚拟路径运行。改 asar: false。(fba504d)
  • PluginRegistry schema 加载失败(Step 1 揪出):docs/plugin-manifest.schema.json 未在 electron-builder files 配置中,打包后 ENOENT,plugin schema 校验静默降级。补 files 配置。(fba504d)
  • @electron/rebuild silent failure(Step 1 揪出,最隐蔽的发布阻断):build 日志显示「preparing better-sqlite3 → finished」但未真正为 Electron 重编,致 .app 内 better_sqlite3.node 仍是 Node ABI 127,运行时 KC/治理等 DB 操作报 NODE_MODULE_VERSION 127 vs 136 mismatchscripts/release-build.mjs 在主打包后强制 @electron/rebuild --force + 拷 .app + 回 Node ABI + 验 sha256 分离。(fba504d)
  • 归档→治理队列死代码(自检修正):agentRunStore.setArchiveHooksetStateBySource('agent_run', id, 'done') 永远匹配不到(治理队列由 buildGovernanceSummary 派生,kind 仅 approval/budget/delegation/autopilot_job,无 agent_run);且 run 归档时其 approval/budget 阻塞已由各自 hook 推进,归档无需重复联动。移除。(8db9850)
  • C3 双源不一致(自检发现):CodeContextEvidenceMAX_FILE_BYTES/MAX_EVIDENCE_FILES 硬编码与 codebaseLimits 同值重复 → 并入,override 统一生效。(462e172)

Security

  • 新增 docs/SECURITY_AUDIT.md:汇总 8 项已审查机制(owner-token 全局守卫 / SSRF 防护与 IPv4-compat IPv6 / 出站 upload allowlist / artifact 下载边界含 sha256 校验 + realpath / symlink 防护 / 命令与文件改动 allowlist / 本地敏感文件 0o600 / 证据知识库密钥脱敏)+ 4 项残留限制。(ab08a75)
  • readArtifact realpath 加固(修 C1 残留 #1):在 lexical startsWith 之外,额外 realpathSync 校验真实目标仍在 allowlist root 内;allowlist root 内放置指向外部的 symlink 会被拒(单测覆盖)。与 ProjectContextBundle 对齐。(5466dd3)
  • 依赖漏洞清理(npm audit prod+dev = 0 漏洞):见 Fixed 的 tmp ^0.2.6。注:1 个 high 是 Electron 37 CVE,桌面端实际威胁面低(contextIsolation: true + 仅加载可信 localhost:51735,CVE 多需加载不受信任 web 内容才可利用),server 模式不用 Electron 完全不受影响;升级被 better-sqlite3 12.10 上限约束,等上游适配。
  • 证据脱敏先于截断(W5 单测锁定):EvidenceKnowledgeStore.indexItemsredactSecrets(sk-/ghp-/gho-/xox-/AKIA/PEM 私钥头)再 slice(0, MAX_CONTENT=4000),长内容末尾(超 4000)的密钥仍被脱敏后不入索引、不可搜。(4da3af8)
  • 路由错误处理审计:全库 143 处 handler 仅返 e.message 不含 stack;send500 仅在 PANEL_DEBUG=1 露 message。补齐 2 个无 try/catch 文件(见 Fixed)。无 stack 泄漏路径。(4804b1f)

v2.0.0 — SQLite + Vector Search + Multi-Workspace + Pino

Choose a tag to compare

@BB20260410 BB20260410 released this 21 May 06:37

Claude Panel v2.0.0 — 数据底座 + 多 workspace + 向量搜索 + 结构化日志

发布日期:2026-05-21
代号:Vector-First

🎯 这一版的主线

v1.0 商品化、v1.5 收费,v2.0 是数据基础设施重构。把散落的 jsonl 文件、文本日志、单文件 KV 全部统一到 SQLite + Pino 结构化日志,并打开向量语义搜索和多 workspace 隔离的门。

✨ 新功能

🗄 SQLite 数据底座(Task 4.1)

替代散落的 jsonl 文件:原本 mcp-calls-2026-05.jsonl / metrics-2026-05.jsonl / autopilot-log.jsonl 等 5+ 流式文件 → 统一 panel.db 单 SQLite 数据库。

数据库设计

events       -- 通用流式事件表(kind/ts/room_id/tag/payload)
kv           -- 通用键值(替 prompts.json / webhooks.json 的简单 KV 用途)
room_summary -- 房间元数据汇总(mode/topic/status/cost)
embeddings   -- 向量索引(kind/ref_id/vector BLOB)

性能优化

  • WAL 模式(journal_mode=WAL)→ 并发读写不阻塞
  • 同步级别 NORMAL → 写性能 5-10x
  • 复合索引:(kind, ts) / (room_id, kind) → 查询毫秒级

5 个 REST endpoint

  • GET /api/storage/stats — db 状态 + 各表行数
  • GET /api/storage/events?kind=mcp_call&room=r-1&limit=100
  • POST /api/storage/events — 写入事件
  • GET /api/storage/kv/:key
  • PUT /api/storage/kv/:key

迁移脚本node scripts/migrate-jsonl-to-sqlite.js

  • 自动扫描 ~/.claude-panel/ 下所有 mcp-calls-.jsonl / metrics-.jsonl / autopilot-log.jsonl / licenses-issued.jsonl
  • 一次性导入到 SQLite,原 jsonl 保留作 fallback

🔍 向量语义搜索(Task 4.2)

4 个 REST endpoint

  • POST /api/embeddings/index { kind, refId, text } — 索引
  • POST /api/embeddings/search { query, kind?, limit? } — 语义搜
  • DELETE /api/embeddings/:kind/:refId
  • GET /api/embeddings/list?kind=...

双轨 embedding provider

模式 维度 依赖 质量 用途
hash (默认) 128 0 依赖(Node 内置 crypto) 粗略 开箱即用
ollama (opt-in) 384 ollama pull nomic-embed-text 用户已装 ollama 时

性能:1000 个向量 in-memory 余弦相似度 < 100ms(Float32Array + L2 归一化)

端到端测试结果

查询: "如何用 SQLite 做日志存储"
  room-2  0.350 "sqlite 替代 jsonl 流式日志的方案" ✅
  room-5  0.112 "Tauri 比 Electron 体积小 90%"
  room-1  0.000 "electron 应用如何打包成 .app 文件"

🗂 多 Workspace 隔离(Task 4.3)

Team-tier 独占功能。每个 workspace 完全独立的数据:

  • ~/.claude-panel/workspaces/{name}/panel.db (SQLite)
  • ~/.claude-panel/workspaces/{name}/rooms.json / archive/ / etc

用例

  • workspace work — 给客户做的项目
  • workspace personal — 个人副业
  • workspace learning — 跟课实验
  • 完全隔离的 session / rooms / mcp / autopilot 配置

5 个 REST endpoint

  • GET /api/workspaces — 列出 + 当前 active + 是否能创建
  • POST /api/workspaces { name, description } — Team 才能
  • PUT /api/workspaces/active { name } — 切换
  • DELETE /api/workspaces/:name — 删(default 不可删)
  • GET /api/workspaces/current — 当前 active 的 dir/db 路径

安全:name 限 ^[a-zA-Z0-9_-]{1,32}$,禁特殊字符防路径穿越。

📊 Pino 结构化日志(Task 4.4)

取代 console.log → 结构化 JSON 日志。

输出位置~/.claude-panel/logs/panel-YYYY-MM-DD.log (0o600)

特性

  • 按日期自动分文件
  • ISO 8601 时间戳
  • pid + version 自动注入
  • 支持 child logger 串联 trace_id:
    const log = child({ provider: 'lemon', traceId: newTraceId() });
    log.info({ email }, '签发成功');
    // → {"level":"info","time":"2026-05-21T05:08:59Z","panel":"2.0.0","pid":20131,"provider":"lemon","traceId":"abc-123","email":"x@y.com","msg":"签发成功"}
  • 异步写盘 + flushSync 接口

关键模块已迁移

  • payment-webhooks.js (lemon + polar 全程 logger + traceId)
  • 其余模块(archive / mcp / autopilot 等)保留 console.log,渐进迁移

🔧 改进

  • 新增 src/storage/SqliteStore.js(330 行)
  • 新增 src/embeddings/EmbeddingProvider.js(80 行)
  • 新增 src/embeddings/VectorIndex.js(70 行)
  • 新增 src/workspace/WorkspaceManager.js(120 行)
  • 新增 src/logger/index.js(90 行)
  • 新增 4 个 route 模块(storage/embeddings/workspaces)
  • 新增迁移脚本 scripts/migrate-jsonl-to-sqlite.js

📦 新依赖

  • better-sqlite3 ^11.x — 同步 SQLite,性能优于 sqlite3 npm 包
  • pino ^9.x — 结构化日志事实标准

🧪 测试覆盖

  • vitest:65/65 ✅
  • 4 套 smoke:68/68 ✅
  • SqliteStore round-trip:events 100 行 + KV upsert/delete + room summary + stats ✅
  • VectorIndex 端到端:5 corpus + 中文 cross-sim 搜索准确命中 ✅
  • Workspace round-trip:list/create/active/delete + 边界条件 15/15 ✅
  • Logger:0o600 权限 + ISO 时间 + level + pid + child trace ✅

累计:168/168 测试 → 183/183(v2.0 新加 15 个测试场景)

🛣 后续路线(v2.5+)

  • libsql 真接入(远程 SQLite,方便 cloud 备份)
  • ollama embedding 自动 fallback + UI 配置面板
  • workspace switcher UI(顶栏 dropdown)
  • 渐进替换剩余 console.log → logger
  • v3.0:Tauri 重写(304MB → 20MB)

📦 升级

git pull
npm install              # 自动装 better-sqlite3 + pino
node scripts/migrate-jsonl-to-sqlite.js   # 一次性迁移历史 jsonl 到 SQLite(可重跑)
npm start

⚠️ Breaking changes

无破坏性变更:

  • 现有 jsonl 文件保留,不强制删
  • SQLite 与 jsonl 双轨运行,应用主路径仍读 jsonl(除新 endpoint /api/storage/* /api/embeddings/* /api/workspaces/*)
  • v2.0 → v2.5 才会真正切主路径到 SQLite
  • v1.x 用户升级 0 操作

🤝 贡献者

  • [@你的 GitHub username](主开发)
  • Anthropic Claude(结对开发)

v1.5.0 — License + Pro/Free + Payment Webhooks

Choose a tag to compare

@BB20260410 BB20260410 released this 21 May 06:37

Claude Panel v1.5.0 — 商品化收费层

发布日期:2026-05-21
代号:Pay-The-Bills

🎯 这一版的主线

v1.0 把 panel 做成可上架商品;v1.5 让它能赚钱

  • ✅ License 验签 → 防破解(Ed25519 离线,零外部依赖)
  • ✅ Pro / Free 功能分级 → 让 Free 用户感受到价值上限
  • ✅ 支付集成 → Lemon Squeezy / Polar webhook 收单自动签发 license

✨ 新功能

🔑 离线 License 系统(自实现,零依赖)

安全模型:Ed25519 公私钥

  • 私钥仅在卖家 ~/.claude-panel-keys/panel-license-private-key.pem (0o600)
  • 公钥嵌入 panel binary(任何人能验签,不能伪造
  • 防伪测试:sig 篡改 / 错私钥签 / 过期 license → 全部拒绝
  • 全程 Node crypto 内置,不需要 Keygen / Auth0 / 其他 SaaS

端点 6 个

GET  /api/license/status         → 当前 tier + 邮箱 + 到期
POST /api/license/activate       → 激活 license 字符串
POST /api/license/deactivate     → 清除 license
GET  /api/license/features       → 列当前可用 feature
GET  /api/license/check/:feature → 是否有某 feature
POST /api/license/verify         → 仅验证不激活(dry-run)

签发脚本node scripts/issue-license.js <email> [tier] [days]

  • node scripts/issue-license.js buyer@x.com pro 365 → 1 年 Pro
  • node scripts/issue-license.js team@x.com team 0 → 永久 Team
  • License 格式:base64url(payload).base64url(sig) 单字符串,邮件可复制粘贴

🎚 Pro / Free 功能分级

功能 Free Pro ($19/永久) Team ($49/永久)
单模型聊天 chat
多模型辩论 debate
AI 团队拆活 squad
多模型联网核对 arena
Autopilot 自驾
MCP server 3 个 不限 不限
Adapter (provider) 3 个 不限 不限
Webhook
Archive 归档
多 workspace
优先支持

Free 受限时的体验:被拦的 POST 返 402 Payment Required + upgradeUrl: https://panel.app/pricing,前端弹窗引导购买。

💳 Lemon Squeezy / Polar 支付 webhook

端点 5 个

GET  /api/webhooks/config        → 已配置哪些 provider
POST /api/webhooks/config        → 配置 webhook secret { provider, secret }
POST /api/webhooks/lemon         → 接收 Lemon Squeezy 支付事件
POST /api/webhooks/polar         → 接收 Polar.sh 支付事件
GET  /api/webhooks/issued        → 查询历史签发记录(最近 100 条)

安全

  • HMAC-SHA256 签名验证(X-Signature header)
  • crypto.timingSafeEqual 防 timing attack
  • raw body 保留供验签
  • secret 存 ~/.claude-panel/webhook-secrets.json (0o600)
  • 签发日志 ~/.claude-panel/licenses-issued.jsonl (0o600)

支付流程

  1. 用户在 LS/Polar 下单 → LS 调 webhook → panel 验签
  2. 解析 email + 产品(panel-pro / panel-team)
  3. 自动 signLicense() 签发 license
  4. 返 license string 给 LS(LS 把 license 通过 fulfillment email 发给买家)
  5. 买家收邮件 → 打开 panel → 设置 → License → 粘贴激活

🔧 改进

  • POST /api/rooms 增加 squad/arena tier guard
  • POST /api/mcp/servers 增加 free tier 3 个上限
  • PUT /api/room-adapters 增加 free tier 3 个 adapter 上限
  • 受限端点统一返 402 + 引导 URL(不是 403 也不是 500)
  • express.json middleware 加 raw body 保留(仅 /api/webhooks/* 路径)

🧪 测试覆盖

  • vitest 单元:65/65 ✅
  • 4 套 smoke:68/68 ✅(routes/webhook/panel/storage)
  • License 安全测试:4/4 ✅(sig 篡改 / 错私钥 / 过期 / 不存在)
  • HMAC 验签测试:4/4 ✅(正确 / 篡改 body / 错 secret / sha256= 前缀)

🛣 下一站 v2.0(即将开发)

  • libsql SQLite 替 jsonl(数据底座)
  • 向量索引(语义搜索房间内容)
  • 多 workspace 隔离(独立 db + 配置)
  • Pino 结构化日志

📦 升级

# 源码升级
git pull && npm install && npm start

# .app 升级
panel 顶栏 Help → 检查更新 → 自动下载 v1.5.0

⚠️ Breaking changes

无。v1.0 用户升级到 v1.5 是 0 操作

  • 没有 license = free tier,原有 chat/debate 房继续跑(squad/arena 房保留只读)
  • 现有 MCP/adapter 配置全保留(即使数量超过 3 也不会被强删,只是不能再加)

🤝 贡献者

  • [@你的 GitHub username](主开发)
  • Anthropic Claude(结对开发)

📝 完整 commits

git log v1.1.0-final..v1.5.0 --oneline

v1.0.0 — Commercialization Foundation

Choose a tag to compare

@BB20260410 BB20260410 released this 21 May 06:37

Claude Panel v1.0 Release Notes

2026-05-21
商品化首发版本

🎯 v1.0 核心特性

panel 是一个多 AI 工作台,让你在一个界面里:

  • 用 Claude / GPT / Gemini / MiniMax / Ollama 等 8+ AI provider
  • 4 种 AI 协作模式:单聊 / 多模型辩论 / AI 团队拆活 / 多模型联网核对
  • MCP(Model Context Protocol)一站式:filesystem / github / playwright / 自定义
  • Skills + Plugin + Autopilot 自驾 + Knowledge Base 内建
  • 本地优先,数据全部 0o600 文件权限

🆕 v1.0 新增(vs v0.56)

商品化基础设施

  • Task 1.1 Sentry 兼容错误上报(默认 disabled,用户可填 DSN 自启)
  • Task 1.2 electron-builder 打包验证(macOS .app 304MB 真启动通过)
  • Task 1.3 electron-updater 自动更新(GitHub Release 作 update server)
  • Task 1.4 i18n 中英双语(zh.json + en.json,60 行轻量实现)
  • Task 1.5 新手 walkthrough(首次访问 6 步引导,自实现 100 行)

之前 v0.7-v0.9 累计功能(共 50+ commits)

  • 4 房模式(chat/debate/squad/arena)完整 + 4 dispatcher 单测
  • 9 个 helper 全接入主流程 + 5 个 UI 入口
  • 4 个 backlog 真做(autopilot log UI / MCP resources / img cache / 划词浮层)
  • 完整 token / CSS 拆分 / 模块化进展
  • vitest 65 case + playwright e2e 35 case + 4 smoke 套件 68 case

📦 安装

macOS(推荐)

  1. 从 GitHub Release 下载 Claude Panel.app.zip
  2. 解压 → 拖到 Applications
  3. 首次启动右键选「打开」绕过 Gatekeeper(未签名)
  4. 自动触发 onboarding walkthrough

源码运行

git clone https://github.com/hxx-panel/claude-panel.git
cd claude-panel
npm install
npm start                 # 后端 server 51735
# 浏览器开 http://localhost:51735

🔐 隐私 / 安全

  • 所有数据本地存 ~/.claude-panel/(0o600 权限)
  • 错误上报默认关闭(用户主动 accept 才启用)
  • API key / token 在配置文件外不出现(不写日志、不入 telemetry)
  • MCP / Plugin 沙箱:命令白名单 / 禁危险字符
  • WS Origin 白名单防 CSRF

🌍 国际化

  • 中文(默认)
  • English

切换:PanelI18n.loadLocale('en') 或浏览器 Accept-Language 自动

📊 性能

  • LCP < 100ms(panel 主页面)
  • 8 个核心 endpoint TTFB < 10ms
  • 进程 RSS ~96MB(健康)

npm run perf-check 看实时数据

🧪 测试覆盖

  • 4 份 smoke 套件:68/68
  • vitest 单测:65/65
  • playwright e2e walkthrough:35/35
  • 沙箱 fuzz + secrets 掩码 audit 通过

🛣 路线图

  • v1.1:PostHog 自托管 + Docusaurus 文档站 + shadcn/ui 设计系统迁移
  • v1.5:License key + Pro/Free 分级 + Lemon Squeezy 收费集成
  • v2.0:Tauri 替 Electron(304MB → 20MB)+ libsql 替 jsonl + workspace 隔离

❤️ 致谢

学习来源:

  • LibreChat / LobeChat / Cherry Studio - 多 provider 抽象
  • AutoGen / CrewAI / LangGraph - 多 agent 编排
  • MCP Inspector / goose - MCP 一等公民
  • aider / Cline / plandex - CLI agent
  • Flowise / Langflow - workflow dry-run
  • AnythingLLM / R2R / Verba - hybrid RAG
  • promptfoo - output assertion