Releases: BB20260410/xikelab
Release list
Xike Lab v2.1.0 (unsigned)
[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.archiveHook→EvidenceKnowledgeStore.indexRunTimeline,run 归档时把消息/工具结果增量入索引,失败不阻断归档。(a8b3c5b) - C2 治理队列源对象状态联动:
ApprovalStore.decisionHook/BudgetPolicyStore.incidentResolveHook→GovernanceQueueStore.setStateBySource,审批决议/预算解决自动推进队列项;setStateBySource非法 state/不存在 source 边界单测覆盖。(c1eb761,8db9850自检修正,c8bb417边界单测) - D3 Schema 迁移框架:
SqliteStore.SCHEMA_MIGRATIONS+schema_versionkv +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/send500sanitized。(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-builderfiles配置中,打包后 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 mismatch。scripts/release-build.mjs在主打包后强制@electron/rebuild --force+ 拷 .app + 回 Node ABI + 验 sha256 分离。(fba504d) - 归档→治理队列死代码(自检修正):
agentRunStore.setArchiveHook内setStateBySource('agent_run', id, 'done')永远匹配不到(治理队列由buildGovernanceSummary派生,kind 仅 approval/budget/delegation/autopilot_job,无 agent_run);且 run 归档时其 approval/budget 阻塞已由各自 hook 推进,归档无需重复联动。移除。(8db9850) - C3 双源不一致(自检发现):
CodeContextEvidence的MAX_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) readArtifactrealpath 加固(修 C1 残留 #1):在 lexicalstartsWith之外,额外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.indexItems先redactSecrets(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
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=100POST /api/storage/events— 写入事件GET /api/storage/kv/:keyPUT /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/:refIdGET /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
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 年 Pronode 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)
支付流程:
- 用户在 LS/Polar 下单 → LS 调 webhook → panel 验签
- 解析 email + 产品(panel-pro / panel-team)
- 自动
signLicense()签发 license - 返 license string 给 LS(LS 把 license 通过 fulfillment email 发给买家)
- 买家收邮件 → 打开 panel → 设置 → License → 粘贴激活
🔧 改进
POST /api/rooms增加 squad/arena tier guardPOST /api/mcp/servers增加 free tier 3 个上限PUT /api/room-adapters增加 free tier 3 个 adapter 上限- 受限端点统一返 402 + 引导 URL(不是 403 也不是 500)
express.jsonmiddleware 加 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 --onelinev1.0.0 — Commercialization Foundation
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(推荐)
- 从 GitHub Release 下载
Claude Panel.app.zip - 解压 → 拖到 Applications
- 首次启动右键选「打开」绕过 Gatekeeper(未签名)
- 自动触发 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