| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Co-authored-by: duanbingzhe<duanbingzhe@huawei.com> # message auto-generated for no-merge-commit merge: !38 merge dbzDevelop into master [feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Created-by: duanbingzhe Commit-by: duanbingzhe Merged-by: cann-robot Description: ## 数据仓推送自配(breaking) -用户配置推送凭据,消除共享身份推送的审计混淆与单账号配额瓶颈 - 新入口: cpx auth 交互式配置命令;insight 设置页凭据落服务端(接口脱敏);引导式配置弹窗——未配置或凭据类失败时自动弹出,配完即用 - 上传错误结构化分类(无凭据 / 凭据无效 / 无写权限 / 配额满),各自给定向指引;https 远端无凭据提前快速失败,不再放行到 git 报错 - ⚠️ 迁移注意:默认仓推送需仓主将用户账号加为协作者;旧内置凭据请在托管平台后台作废 ## start.sh 单实例收口 - 默认启动即收口:杀掉已有自家实例后固定绑定 21025,不再端口顺延漂移(消除实例散落、僵尸进程与自动导入探测失效);端口被无关进程占用则明确报错,绝不静默换址 ## 稳定性修复 - 【WSL 上跑测试弹浏览器空页(修了三轮的复发根因)】旧修复拦错了分支——改为进程内守卫,任何环境下的测试运行都不再触发开浏览器 - 【cpx-only 独立运行三连】补全 bundle 被依赖链连带炸掉(auth 模块解耦为纯叶子);cpx auth 补 Tab 补全;无凭据指引按实际安装形态指路 - PR 审查意见修复与 CHANGELOG 措辞规范化 ## 版本号 insight 0.2.36 → 0.2.37、cpx 0.1.7 → 0.1.8,CHANGELOG 已定版(版本单轨校验通过);npm 发包另行拍板执行 See merge request: cann/cannbot-sentry!38 | 1 个月前 | |
[feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Co-authored-by: duanbingzhe<duanbingzhe@huawei.com> # message auto-generated for no-merge-commit merge: !38 merge dbzDevelop into master [feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Created-by: duanbingzhe Commit-by: duanbingzhe Merged-by: cann-robot Description: ## 数据仓推送自配(breaking) -用户配置推送凭据,消除共享身份推送的审计混淆与单账号配额瓶颈 - 新入口: cpx auth 交互式配置命令;insight 设置页凭据落服务端(接口脱敏);引导式配置弹窗——未配置或凭据类失败时自动弹出,配完即用 - 上传错误结构化分类(无凭据 / 凭据无效 / 无写权限 / 配额满),各自给定向指引;https 远端无凭据提前快速失败,不再放行到 git 报错 - ⚠️ 迁移注意:默认仓推送需仓主将用户账号加为协作者;旧内置凭据请在托管平台后台作废 ## start.sh 单实例收口 - 默认启动即收口:杀掉已有自家实例后固定绑定 21025,不再端口顺延漂移(消除实例散落、僵尸进程与自动导入探测失效);端口被无关进程占用则明确报错,绝不静默换址 ## 稳定性修复 - 【WSL 上跑测试弹浏览器空页(修了三轮的复发根因)】旧修复拦错了分支——改为进程内守卫,任何环境下的测试运行都不再触发开浏览器 - 【cpx-only 独立运行三连】补全 bundle 被依赖链连带炸掉(auth 模块解耦为纯叶子);cpx auth 补 Tab 补全;无凭据指引按实际安装形态指路 - PR 审查意见修复与 CHANGELOG 措辞规范化 ## 版本号 insight 0.2.36 → 0.2.37、cpx 0.1.7 → 0.1.8,CHANGELOG 已定版(版本单轨校验通过);npm 发包另行拍板执行 See merge request: cann/cannbot-sentry!38 | 1 个月前 | |
[feat] insight v0.2.30/proxy v0.1.5:同 sid 双会话共存(proxy/原生各占一行)+ claude-code ≥2.1 handback 协议适配;展开收起交互统一 Co-authored-by: duanbingzhe<duanbingzhe@huawei.com> # message auto-generated for no-merge-commit merge: !17 merge dev into master [feat] 同 sid 双会话共存(proxy/原生各占一行)+ claude-code ≥2.1 handback 协议适配;展开收起交互统一 Created-by: duanbingzhe Commit-by: duanbingzhe Merged-by: cann-robot Description: ## 概述 5 个提交(50 文件,+1258/-279),触达 insight 为主(cpx 仅一处测试隔离修复)。 ## ✨ 新增功能 ### 1. 同 sid 双会话共存(方案一) - proxy 捕获行 framework 带 -proxy 后缀(claude-code-proxy / opencode-proxy / codex-proxy / cannbot-proxy),与同 sid 原生会话在唯一索引下**各占一行** - 导入按记录类匹配(同类 merge / 异类新建),version 标记推导免疫 framework 误标史;附存量迁移 - 8 路由 framework 消歧(wire-rounds / auto-refresh×2 / stats / scorecard×4, scoring 链穿参);归一谓词三件套(isClaudeFormatSession 放行变体 / agentFrameworkOf 剥后缀),全程禁止裸等值判断 - IT coexist 4 用例 + 5 个既有断言文件同步新约定 ### 2. claude-code ≥2.1 handback 协议适配 - 框架注入(transcript 回放 / 背景事件 / label 请求 / 状态查询)逐条指纹 识别,重分类 system 并摘要化——原文留捕获文件,DB 不再双份存储子代理内容 - 会话标题改用首真人查询(主会话行、跳过文档注入、assistant 回落)—— 中途接入捕获不再拿注入文本当标题 ## 🔧 修复问题 - **展开收起交互统一(全部面板)**:行空白点击不再误触展开(此前 8 文件 10 处误触面),三角按钮成为唯一触发点且右锚定;上下文面板短内容带 tool_calls 消息补三角;CopyButton 垂直对齐修复 - **测试隔离**:cpx-upload 零参数直传用例漏注 fetchImpl,真 fetch 探测到 开发机在跑的 insight 后把合成捕获写进真实 dev.db(主页残留占位会话)—— 补 mockInsight(down) 注入 See merge request: cann/cannbot-sentry!17 | 1 个月前 | |
[feat]合入cpx和insight Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !4 merge master into master [feat]合入cpx和insight Created-by: guanxinghua Commit-by: 管兴华;guanxinghua Merged-by: cann-robot Description: [feat]合入cpx和insight See merge request: cann/cannbot-sentry!4 | 1 个月前 | |
[feat]合入cpx和insight Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !4 merge master into master [feat]合入cpx和insight Created-by: guanxinghua Commit-by: 管兴华;guanxinghua Merged-by: cann-robot Description: [feat]合入cpx和insight See merge request: cann/cannbot-sentry!4 | 1 个月前 | |
[feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Co-authored-by: duanbingzhe<duanbingzhe@huawei.com> # message auto-generated for no-merge-commit merge: !38 merge dbzDevelop into master [feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Created-by: duanbingzhe Commit-by: duanbingzhe Merged-by: cann-robot Description: ## 数据仓推送自配(breaking) -用户配置推送凭据,消除共享身份推送的审计混淆与单账号配额瓶颈 - 新入口: cpx auth 交互式配置命令;insight 设置页凭据落服务端(接口脱敏);引导式配置弹窗——未配置或凭据类失败时自动弹出,配完即用 - 上传错误结构化分类(无凭据 / 凭据无效 / 无写权限 / 配额满),各自给定向指引;https 远端无凭据提前快速失败,不再放行到 git 报错 - ⚠️ 迁移注意:默认仓推送需仓主将用户账号加为协作者;旧内置凭据请在托管平台后台作废 ## start.sh 单实例收口 - 默认启动即收口:杀掉已有自家实例后固定绑定 21025,不再端口顺延漂移(消除实例散落、僵尸进程与自动导入探测失效);端口被无关进程占用则明确报错,绝不静默换址 ## 稳定性修复 - 【WSL 上跑测试弹浏览器空页(修了三轮的复发根因)】旧修复拦错了分支——改为进程内守卫,任何环境下的测试运行都不再触发开浏览器 - 【cpx-only 独立运行三连】补全 bundle 被依赖链连带炸掉(auth 模块解耦为纯叶子);cpx auth 补 Tab 补全;无凭据指引按实际安装形态指路 - PR 审查意见修复与 CHANGELOG 措辞规范化 ## 版本号 insight 0.2.36 → 0.2.37、cpx 0.1.7 → 0.1.8,CHANGELOG 已定版(版本单轨校验通过);npm 发包另行拍板执行 See merge request: cann/cannbot-sentry!38 | 1 个月前 | |
insight v0.2.32:安全加固批(服务端输入校验收敛) Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !22 merge master into master insight v0.2.32:安全加固批(服务端输入校验收敛) Created-by: guanxinghua Commit-by: guanxinghua Merged-by: cann-robot Description: ## 概要 服务端安全加固批 + 版本号 v0.2.31 → v0.2.32(已同步上游 caae512 并解决 CHANGELOG 冲突)。 按信任边界划分(本地自用工具,外部威胁在**文件内容侧**): - **文件内容侧(外部数据,真威胁)**:本地 git 调用全部改为无 shell 的数组参数模式;taskId 与 cannbay 导入 filenames 白名单收敛——镜像文件名/导入内容字段在落地 sink(路径拼接、跨语言输出)封堵 - **smart-agent 参数收敛(零合法调用方成本)**:输出与 prompt 参数目录收敛( CANNBOT_AGENT_OUTPUT_ROOTS 可扩展输出根) - **刻意不设白名单**:导入/浏览路径(任意位置可导入)与 breather 连接目标(host/port 随意填)——本地自用功能优先 附带:e2e/cannbay2 适配上游 caae512 的双记录 .native 落位(原生 fixture 显式 recording='native' + 路径期望对齐——上游改动漏更此文件,隔离运行必失败,本 PR 已修) CHANGELOG 安全条目按口径级描述(不为未升级部署提供攻击面指引)。 ## 验证 - vitest 全量:187 文件 / 1694 测试全绿(0 failed) - e2e/cannbay2:20/20(修复前 6 failed,系上游漏改) - pytest(smart-agent):33 passed / 0 failed - tsc --noEmit 干净;eslint 零新增 建议尽快合入;旧版本部署应避免将服务端口暴露给不可信网络。 See merge request: cann/cannbot-sentry!22 | 1 个月前 | |
[feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Co-authored-by: duanbingzhe<duanbingzhe@huawei.com> # message auto-generated for no-merge-commit merge: !38 merge dbzDevelop into master [feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Created-by: duanbingzhe Commit-by: duanbingzhe Merged-by: cann-robot Description: ## 数据仓推送自配(breaking) -用户配置推送凭据,消除共享身份推送的审计混淆与单账号配额瓶颈 - 新入口: cpx auth 交互式配置命令;insight 设置页凭据落服务端(接口脱敏);引导式配置弹窗——未配置或凭据类失败时自动弹出,配完即用 - 上传错误结构化分类(无凭据 / 凭据无效 / 无写权限 / 配额满),各自给定向指引;https 远端无凭据提前快速失败,不再放行到 git 报错 - ⚠️ 迁移注意:默认仓推送需仓主将用户账号加为协作者;旧内置凭据请在托管平台后台作废 ## start.sh 单实例收口 - 默认启动即收口:杀掉已有自家实例后固定绑定 21025,不再端口顺延漂移(消除实例散落、僵尸进程与自动导入探测失效);端口被无关进程占用则明确报错,绝不静默换址 ## 稳定性修复 - 【WSL 上跑测试弹浏览器空页(修了三轮的复发根因)】旧修复拦错了分支——改为进程内守卫,任何环境下的测试运行都不再触发开浏览器 - 【cpx-only 独立运行三连】补全 bundle 被依赖链连带炸掉(auth 模块解耦为纯叶子);cpx auth 补 Tab 补全;无凭据指引按实际安装形态指路 - PR 审查意见修复与 CHANGELOG 措辞规范化 ## 版本号 insight 0.2.36 → 0.2.37、cpx 0.1.7 → 0.1.8,CHANGELOG 已定版(版本单轨校验通过);npm 发包另行拍板执行 See merge request: cann/cannbot-sentry!38 | 1 个月前 | |
[feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Co-authored-by: duanbingzhe<duanbingzhe@huawei.com> # message auto-generated for no-merge-commit merge: !38 merge dbzDevelop into master [feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Created-by: duanbingzhe Commit-by: duanbingzhe Merged-by: cann-robot Description: ## 数据仓推送自配(breaking) -用户配置推送凭据,消除共享身份推送的审计混淆与单账号配额瓶颈 - 新入口: cpx auth 交互式配置命令;insight 设置页凭据落服务端(接口脱敏);引导式配置弹窗——未配置或凭据类失败时自动弹出,配完即用 - 上传错误结构化分类(无凭据 / 凭据无效 / 无写权限 / 配额满),各自给定向指引;https 远端无凭据提前快速失败,不再放行到 git 报错 - ⚠️ 迁移注意:默认仓推送需仓主将用户账号加为协作者;旧内置凭据请在托管平台后台作废 ## start.sh 单实例收口 - 默认启动即收口:杀掉已有自家实例后固定绑定 21025,不再端口顺延漂移(消除实例散落、僵尸进程与自动导入探测失效);端口被无关进程占用则明确报错,绝不静默换址 ## 稳定性修复 - 【WSL 上跑测试弹浏览器空页(修了三轮的复发根因)】旧修复拦错了分支——改为进程内守卫,任何环境下的测试运行都不再触发开浏览器 - 【cpx-only 独立运行三连】补全 bundle 被依赖链连带炸掉(auth 模块解耦为纯叶子);cpx auth 补 Tab 补全;无凭据指引按实际安装形态指路 - PR 审查意见修复与 CHANGELOG 措辞规范化 ## 版本号 insight 0.2.36 → 0.2.37、cpx 0.1.7 → 0.1.8,CHANGELOG 已定版(版本单轨校验通过);npm 发包另行拍板执行 See merge request: cann/cannbot-sentry!38 | 1 个月前 | |
[test] 测试全环境自举 + UT/E2E 分层迁移(三包一条命令可跑 / 真进程 IT 归位 e2e 层) Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !36 merge master into master [test] 测试全环境自举 + UT/E2E 分层迁移(三包一条命令可跑 / 真进程 IT 归位 e2e 层) Created-by: guanxinghua Commit-by: guanxinghua Merged-by: cann-robot Description: ## 背景与目标 任何环境(fresh clone / CI / 换机) bash scripts/run-tests.sh 一条命令全绿;同时按根脚本既有分层标准(UT=进程内,E2E=真进程/浏览器/环境依赖)把越界用例迁回 e2e 层。 ## 一、测试全环境自举(9 文件) | 问题 | 根因 | 修复 | |---|---|---| | cpx 21 文件挂(7zip-bin 缺失)| lock 为 npmmirror 源生成,npm≥12 对跨源 tarball 一律 EALLOWREMOTE 拒装 | lock 归一化回 npmjs(32 处,与 insight 同源)| | cpx 新增依赖漏装 | 自举只查 .bin/tsx,package.json 新依赖探测不到 | run-tests.sh 全量 dependencies 目录级校验(装后复验)| | cpx context-pack 挂 | npm≥12 把 npm pack --json 输出从数组改为按包名键控对象 | pack-context.mjs 双形态归一化(与 insight 侧同款,两处调用点)| | insight 5s 超时类 flake | 满并行下 upload/git IT 超 vitest 默认预算(隔离跑 <2s)| project 级 testTimeout 30s(实证生效)| | insight 500 类 flake | dev.db 为 delete journal 模式——写锁全库、读写互斥是 BUSY 风暴系统性根因 | pretest 切 WAL(幂等、单进程窗口无竞争,对常驻 server 同样受益)+ gitignore 补 -wal/-shm | | insight 偶发 CANTOPEN | WAL 下多 worker 并发首开 -shm 瞬时竞争 | setup.ts $connect 有界重试 | | sift venv 挂 | Debian/Ubuntu 把 ensurepip 拆到 python3.x-venv 包 | 脚本检测 ensurepip 报错自动 apt 补装(root/sudo -n),失败给手工指引 | | sift opencode ENOEXEC | gate 只查 which 不验可执行(撞上二进制重装半成品)| gate 加 --version 探测 | ## 二、UT/E2E 分层迁移 - **insight 17 文件** ut→e2e(git mv 历史保留):cannbay2-* ×13 + cannbay-schema / context-pack / npm-publish / audit-proxy-classification(真 git/npm/npx 工具链 IT) - **cpx**:context-pack → tests/e2e/context-pack.e2e.test.ts(按 e2e 命名惯例);run-tests.sh 加 e2e 模式;test/test:e2e/test:all 三个裸调 vitest 的坏入口(command not found,pre-existing)修成转调 - **sift**:@pytest.mark.e2e + pyproject marker 注册 + runner 默认 -m "not e2e"(SIFT_RUN_E2E=1 全量 / -m e2e 单跑 / 传参含 -m 时尊重调用方) 留下不迁(同被测面在 API 层、稳定):import-file-api / upload-git-injection / delta-refresh 等;cannbay_viewer ut 族与 cpx CLI 子进程族为同标准候选,未动。 ## 三、迁移暴露的 e2e 层 pre-existing 故障(顺手修复) - insight runs-api.test.ts 3 用例 502:无 git-lfs 机器上导入 requireGitLfs fail-fast → fixture 显式 CANNBAY2_LFS=0(聚焦导入编排)+ 断言透出 body - sift phase2_wall>0.0:round(3) 亚毫秒归零 → >= 0.0(正性由加总不变量覆盖) ## 验证 - root bash scripts/run-tests.sh 连跑三轮 ALL PASSED(insight ut 182 文件 1533 / cpx ut 225 / sift 1805+1 deselected) - 各包 e2e 层单验:insight 281 过(含 17 迁入)、cpx 16 过、sift -m e2e 1 过 - sift 自愈链路:卸 python3.14-venv + 删 .venv → 脚本自动补装 → 1806 全过 - lint:改动文件零告警(既有 22 errors 为预存债务);tsc pretest 通过 ## 版本 版本号保持不变(insight 0.2.36 / cpx 0.1.7),CHANGELOG 维持 Unreleased——本 PR 全部为测试基建与小加固,按惯例不开条目。 See merge request: cann/cannbot-sentry!36 | 1 个月前 | |
[feat] insight v0.2.29 / cpx v0.1.4: CANNBay LFS 上传模式 + context 双名发布;修复 push 鉴权与构建缓存误判 Co-authored-by: duanbingzhe<duanbingzhe@huawei.com> # message auto-generated for no-merge-commit merge: !14 merge dev into master [feat] insight v0.2.29 / cpx v0.1.4: CANNBay LFS 上传模式 + context 双名发布;修复 push 鉴权与构建缓存误判 Created-by: duanbingzhe Commit-by: duanbingzhe Merged-by: cann-robot Description: ## 概述 双包触达:insight **v0.2.29**、cpx **v0.1.4**(45 文件,+1822/-116)。 已变基最新 master(含上游测试目录迁移 tests/ut/ 适配)。 ## ✨ 新增功能 - **CANNBay LFS 上传模式**(双包实现, CANNBAY2_LFS=1 opt-in):.jsonl.gz 以 LFS 指针出仓,容量脱离 git 仓 1GiB 配额(实测单会话最大 933MB); insight 导入侧 cat-file --filters 按需拉实体;缺省行为不变 - **context 双名发布**:pack-context.mjs 打包期品牌变换产出 context-insight / context-cpx 变体(字面量替换 + 泄漏哨兵 IT); 格式契约不品牌化,两品牌数据互通 - **CLI 版本旗标**:insight 补 -v,输出品牌化版本串 ## 🔧 修复问题 - **CANNBay push 鉴权失败**:pushUrl 内嵌凭据被 atomgit 拒绝——改 401 挑战-应答,凭据经一次性 credential helper;pushMirror 统一 push 出口 - **start.sh 构建缓存误判**:每次启动 ~15s 无谓全量重建——staleness 检查排除 export-view 产物 - **cpx 治理快路径失效**:meta 路径误传致 governed 标记失效,82MB 会话 多耗 ~38s——修复后免解压直传 ## ⚡ 性能优化 - **cannbay2 读路径提速**:blob 批量预取(列表首开 120s → ~10s)、分批物化 (3.8s → 0.4s)、合并请求 + 并发导入池 ## ✅ 验证 insight 1595 用例、cpx 169 用例全过;版本三处单轨同步 See merge request: cann/cannbot-sentry!14 | 1 个月前 | |
[fix]insight v0.2.33: cannbay viewer 适配同 sid 双记录布局 Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !23 merge master into master [fix]insight v0.2.33: cannbay viewer 适配同 sid 双记录布局 Created-by: guanxinghua Commit-by: guanxinghua Merged-by: cann-robot Description: ## 问题 v0.2.32 引入同 sid 双记录布局(wire 捕获占裸 <sid>/、原生会话占 <sid>.native/)后,cannbay viewer 未适配——native 会话行工具/模型列为空、开始时间退化为上传时间(≈)、导入失败(sid 带目录后缀按 capture 位物化,找不到主 jsonl)。 ## 修复 - 镜像层目录名换算 + meta 双形态匹配(与 cannbay2 同构),recording 维度贯通列表 / 导入 / 实验记录三链路 - 同 sid 双记录两条目(行键 sid@recording,native 行「原生」徽标);notes/opGen 按记录类落位,不在裸目录造幻影条目 - 兼容:recording 缺省 capture,存量裸目录会话行为不变 ## 测试 - 单测(mirror native meta 回归 + 换算纯单元 / runs 双记录两条目)+ e2e(native 位导入全链路:物化 → 写库 → 行转已导入) - 全量 vitest 1699 用例通过;真实仓验证 native 会话字段完整读出 版本:insight 0.2.32 → 0.2.33(CHANGELOG 已定版) See merge request: cann/cannbot-sentry!23 | 1 个月前 | |
[feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Co-authored-by: duanbingzhe<duanbingzhe@huawei.com> # message auto-generated for no-merge-commit merge: !38 merge dbzDevelop into master [feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Created-by: duanbingzhe Commit-by: duanbingzhe Merged-by: cann-robot Description: ## 数据仓推送自配(breaking) -用户配置推送凭据,消除共享身份推送的审计混淆与单账号配额瓶颈 - 新入口: cpx auth 交互式配置命令;insight 设置页凭据落服务端(接口脱敏);引导式配置弹窗——未配置或凭据类失败时自动弹出,配完即用 - 上传错误结构化分类(无凭据 / 凭据无效 / 无写权限 / 配额满),各自给定向指引;https 远端无凭据提前快速失败,不再放行到 git 报错 - ⚠️ 迁移注意:默认仓推送需仓主将用户账号加为协作者;旧内置凭据请在托管平台后台作废 ## start.sh 单实例收口 - 默认启动即收口:杀掉已有自家实例后固定绑定 21025,不再端口顺延漂移(消除实例散落、僵尸进程与自动导入探测失效);端口被无关进程占用则明确报错,绝不静默换址 ## 稳定性修复 - 【WSL 上跑测试弹浏览器空页(修了三轮的复发根因)】旧修复拦错了分支——改为进程内守卫,任何环境下的测试运行都不再触发开浏览器 - 【cpx-only 独立运行三连】补全 bundle 被依赖链连带炸掉(auth 模块解耦为纯叶子);cpx auth 补 Tab 补全;无凭据指引按实际安装形态指路 - PR 审查意见修复与 CHANGELOG 措辞规范化 ## 版本号 insight 0.2.36 → 0.2.37、cpx 0.1.7 → 0.1.8,CHANGELOG 已定版(版本单轨校验通过);npm 发包另行拍板执行 See merge request: cann/cannbot-sentry!38 | 1 个月前 | |
[fix]insight v0.2.33: cannbay viewer 适配同 sid 双记录布局 Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !23 merge master into master [fix]insight v0.2.33: cannbay viewer 适配同 sid 双记录布局 Created-by: guanxinghua Commit-by: guanxinghua Merged-by: cann-robot Description: ## 问题 v0.2.32 引入同 sid 双记录布局(wire 捕获占裸 <sid>/、原生会话占 <sid>.native/)后,cannbay viewer 未适配——native 会话行工具/模型列为空、开始时间退化为上传时间(≈)、导入失败(sid 带目录后缀按 capture 位物化,找不到主 jsonl)。 ## 修复 - 镜像层目录名换算 + meta 双形态匹配(与 cannbay2 同构),recording 维度贯通列表 / 导入 / 实验记录三链路 - 同 sid 双记录两条目(行键 sid@recording,native 行「原生」徽标);notes/opGen 按记录类落位,不在裸目录造幻影条目 - 兼容:recording 缺省 capture,存量裸目录会话行为不变 ## 测试 - 单测(mirror native meta 回归 + 换算纯单元 / runs 双记录两条目)+ e2e(native 位导入全链路:物化 → 写库 → 行转已导入) - 全量 vitest 1699 用例通过;真实仓验证 native 会话字段完整读出 版本:insight 0.2.32 → 0.2.33(CHANGELOG 已定版) See merge request: cann/cannbot-sentry!23 | 1 个月前 | |
[feat]合入cpx和insight Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !4 merge master into master [feat]合入cpx和insight Created-by: guanxinghua Commit-by: 管兴华;guanxinghua Merged-by: cann-robot Description: [feat]合入cpx和insight See merge request: cann/cannbot-sentry!4 | 1 个月前 | |
[feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Co-authored-by: duanbingzhe<duanbingzhe@huawei.com> # message auto-generated for no-merge-commit merge: !38 merge dbzDevelop into master [feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Created-by: duanbingzhe Commit-by: duanbingzhe Merged-by: cann-robot Description: ## 数据仓推送自配(breaking) -用户配置推送凭据,消除共享身份推送的审计混淆与单账号配额瓶颈 - 新入口: cpx auth 交互式配置命令;insight 设置页凭据落服务端(接口脱敏);引导式配置弹窗——未配置或凭据类失败时自动弹出,配完即用 - 上传错误结构化分类(无凭据 / 凭据无效 / 无写权限 / 配额满),各自给定向指引;https 远端无凭据提前快速失败,不再放行到 git 报错 - ⚠️ 迁移注意:默认仓推送需仓主将用户账号加为协作者;旧内置凭据请在托管平台后台作废 ## start.sh 单实例收口 - 默认启动即收口:杀掉已有自家实例后固定绑定 21025,不再端口顺延漂移(消除实例散落、僵尸进程与自动导入探测失效);端口被无关进程占用则明确报错,绝不静默换址 ## 稳定性修复 - 【WSL 上跑测试弹浏览器空页(修了三轮的复发根因)】旧修复拦错了分支——改为进程内守卫,任何环境下的测试运行都不再触发开浏览器 - 【cpx-only 独立运行三连】补全 bundle 被依赖链连带炸掉(auth 模块解耦为纯叶子);cpx auth 补 Tab 补全;无凭据指引按实际安装形态指路 - PR 审查意见修复与 CHANGELOG 措辞规范化 ## 版本号 insight 0.2.36 → 0.2.37、cpx 0.1.7 → 0.1.8,CHANGELOG 已定版(版本单轨校验通过);npm 发包另行拍板执行 See merge request: cann/cannbot-sentry!38 | 1 个月前 | |
[feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Co-authored-by: duanbingzhe<duanbingzhe@huawei.com> # message auto-generated for no-merge-commit merge: !38 merge dbzDevelop into master [feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Created-by: duanbingzhe Commit-by: duanbingzhe Merged-by: cann-robot Description: ## 数据仓推送自配(breaking) -用户配置推送凭据,消除共享身份推送的审计混淆与单账号配额瓶颈 - 新入口: cpx auth 交互式配置命令;insight 设置页凭据落服务端(接口脱敏);引导式配置弹窗——未配置或凭据类失败时自动弹出,配完即用 - 上传错误结构化分类(无凭据 / 凭据无效 / 无写权限 / 配额满),各自给定向指引;https 远端无凭据提前快速失败,不再放行到 git 报错 - ⚠️ 迁移注意:默认仓推送需仓主将用户账号加为协作者;旧内置凭据请在托管平台后台作废 ## start.sh 单实例收口 - 默认启动即收口:杀掉已有自家实例后固定绑定 21025,不再端口顺延漂移(消除实例散落、僵尸进程与自动导入探测失效);端口被无关进程占用则明确报错,绝不静默换址 ## 稳定性修复 - 【WSL 上跑测试弹浏览器空页(修了三轮的复发根因)】旧修复拦错了分支——改为进程内守卫,任何环境下的测试运行都不再触发开浏览器 - 【cpx-only 独立运行三连】补全 bundle 被依赖链连带炸掉(auth 模块解耦为纯叶子);cpx auth 补 Tab 补全;无凭据指引按实际安装形态指路 - PR 审查意见修复与 CHANGELOG 措辞规范化 ## 版本号 insight 0.2.36 → 0.2.37、cpx 0.1.7 → 0.1.8,CHANGELOG 已定版(版本单轨校验通过);npm 发包另行拍板执行 See merge request: cann/cannbot-sentry!38 | 1 个月前 | |
[feat]合入cpx和insight Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !4 merge master into master [feat]合入cpx和insight Created-by: guanxinghua Commit-by: 管兴华;guanxinghua Merged-by: cann-robot Description: [feat]合入cpx和insight See merge request: cann/cannbot-sentry!4 | 1 个月前 | |
[feat]合入cpx和insight Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !4 merge master into master [feat]合入cpx和insight Created-by: guanxinghua Commit-by: 管兴华;guanxinghua Merged-by: cann-robot Description: [feat]合入cpx和insight See merge request: cann/cannbot-sentry!4 | 1 个月前 | |
[fix] contextWindowLimit 基数:turn 无 model 回退会话级 model [fix] 并行 subagent 组就地展开:详情紧跟所属 chip 而非整个 chip 行末尾 Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !15 merge master into master [fix] review:contextWindowLimit 空串 model 与 null 同口径回退会话基数 Created-by: guanxinghua Commit-by: guanxinghua Merged-by: cann-robot Description: Turns 视图两处使用反馈修复(并行组展开位置 / 上下文窗口基数) 1. 并行 subagent 组就地展开 现象:同一 turn 派发多个并行 subagent 时,点第一个 chip,展开的详情却渲染在最后一个 chip 下方(现场:三路并行点 empty,详情出现在 base 下面)。 根因:ParallelSubagentGroup 把所有展开 lane 统一挂在整个 chip 行末尾(expandedLanes.map 渲染在 chips 容器之后)。 修复:每个 lane 独立 wrapper(chip + 自己的 SubagentLaneView),展开时 wrapper basis-full 独占一行——详情紧贴所属 chip 下方全宽渲染;折叠 chip 保持同行换行排布,多 lane 同时展开语义不变。chip 加 self-start 防拉伸,React key 移到 wrapper。 2. contextWindowLimit 窗口基数:turn 无 model 回退会话级 model 现象:同一模型(glm-5.3,1M 窗口)的 turn 详情右侧 Context 卡片,root 卡按 1M 算、subagent 卡按 200k 算(34.1kt 系统隐藏开销显示 17%,实际应 3.4%)。 根因:user turn 落库不带 model(现场会话 73 个 null-model turn 全是 user turn),turn 详情/列表 API 对 null model 一律落 200k 全局默认,而 root 卡取的是邻近 assistant turn 的 model(→1M),两边基数各说各话。 修复:turn.model 缺失时取会话级 Session.model 定基数,覆盖 turn 详情(含 -continuation 合成轮)与 turns 列表(含合成 continuation 条目,会话级 limit 只算一次);顺手合并详情 route 里原本只服务 reqParams 的 session 查询。review 补刀:详情 route 用 || 不用 ??——空串 model 与 null 同口径(列表 route 本就是真值判断),同一份数据两个 API 不再算出不同基数。会话自身无 model 时保持 200k 默认不变。 验证 - 新增 route 级 IT turn-context-limit(5 用例:null/空串/无 model 会话回归锁/两个 continuation 合成轮/列表口径);turn-timeline-parallel-overflow 扩展真点击交互用例(断言 lane 内容 DOM 顺序先于后续 chip、其他 lane 不连带展开) - 全量 UT 170 文件 / 1593 用例绿(exit=0);DB 实证:现场会话 73 个 null-model turn 全为 user turn、Session.model="glm-5.3" 未被利用 See merge request: cann/cannbot-sentry!15 | 1 个月前 | |
[feat]合入cpx和insight Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !4 merge master into master [feat]合入cpx和insight Created-by: guanxinghua Commit-by: 管兴华;guanxinghua Merged-by: cann-robot Description: [feat]合入cpx和insight See merge request: cann/cannbot-sentry!4 | 1 个月前 | |
[feat] 压缩格式 gzip→7z 双端全链路升级 + CANNBay LFS 默认开启与自动自举 + insight LLM Active 指标 / Duration 墙钟 / better-sqlite3 Co-authored-by: duanbingzhe<duanbingzhe@huawei.com> # message auto-generated for no-merge-commit merge: !32 merge dbzDevelop into master [feat] 压缩格式 gzip→7z 双端全链路升级 + CANNBay LFS 默认开启与自动自举 + insight LLM Active 指标 / Duration 墙钟 / better-sqlite3 Created-by: duanbingzhe Commit-by: duanbingzhe Merged-by: cann-robot Description: ## 压缩格式升级 gzip→7z(LZMA2)——数据湖仓配额收益 30-50% - 两包各内聚压缩唯一咽喉(cpx src/compression.ts / insight src/lib/compression.ts 同构,命令常量一致,parity IT 锁定);7za 来自 7zip-bin npm 预编译(离线可用,镜像剥执行位自动 chmod 兜底) - 写侧只出 .jsonl.7z;读侧三形态永续可读(明文 / 存量 .gz / 新 .7z——导入、列表、补全、物化、dedup 全路径透明解压,.7z 走 Buffer 直出不撞 V8 单字符串上限) - 确定性开关(-mtm/-mta/-mtc=off)保证同内容同字节——重传幂等不破坏;CANNBOT_7Z_LEVEL 可降级提速 - 存量 gz 迁移:上传/补传时 staging 转 7z 出仓(同 sid 重传整体替换 = 湖内逐会话自然迁移,本地源文件零改动) - 顺手修三存量 bug:① insight 治理快路径从未生效(governed meta 误读 .jsonl.gz 必败,改读 .meta.json)② 7z 导入在 next build 生产态产出空会话(7zip-bin 被 Turbopack 内联,serverExternalPackages 修复)③ cpx-complete 测试 utimes 传毫秒溢出 ## CANNBay LFS 上传默认开启 + git-lfs 自动自举 - cpx:CANNBAY2_LFS 单开关升级三层决议链(env 显式值 > cpx-config.json lfsUpload > 默认开), cpx config lfs on|off 持久切换,status/config 显示模式与生效来源,缺件 fail-fast 前置到 staging 之前 - insight:LFS 同步默认开启(env > 请求体 config.lfs > 默认开),git-lfs 解析链「系统件 > cpx 私有件」 - cpx git-lfs 自动自举:缺件自动下载私有件到 ~/.cannbot-insight/bin(版本 pin v3.8.0 + 官方 sha256 校验,零提权零全局污染;CPX_SKIP_LFS_SETUP=1 / 镜像 env 出路) - 数据量不再计入 atomgit git_repo 1GiB 硬配额;既有 blob 断言类测试统一钉 CANNBAY2_LFS=0 ## insight 指标与修复 - better-sqlite3@11→13:Node 24 启动即崩(GC 析构已 close Database 触发原生断言 abort,客户现场 core dump)根因消除;预编译随 npm 包分发,安装不再依赖 GitHub Releases;setup.ts 探针强引用 workaround 退役 - Session Duration 统一墙钟口径(endTime − startTime,客户端自算,API 不派生冗余 durationMs)——消除并行子代理重叠双计(实测曾达墙钟 2.1 倍) - 新增 LLM Active 指标:assistant turn 在途窗口区间并集(root + subagent 去重叠),详情/compare/CLI/TUI 全覆盖;首页 Sessions 列表 Duration 列升级为 LLM Active + 数字列右对齐排版规范 - start.sh 启动修复两连:① cpx 安装钉 CPX_SKIP_LFS_SETUP=1(启动关键路径零网络等待,120s→0.75s)② SIGTERM 双等死锁(3s 宽限 SIGKILL 补刀,-k 重启不再转圈) ## 测试与杂项 - 测试隔离批:e2e 真身不再弹浏览器/不再机会主义导入真 insight/共享 dev.db 按前缀自愈清理 - cpx-scratch 空壳会话泄漏修复补齐(dropSessionScratch + 启动期 sweepLeakedPlaceholders) - 门禁:cpx ut 202 passed + 5 skipped(LFS 真机件)/ e2e 11/11;insight tsc 干净 + 全量 1650 passed See merge request: cann/cannbot-sentry!32 | 1 个月前 | |
[feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Co-authored-by: duanbingzhe<duanbingzhe@huawei.com> # message auto-generated for no-merge-commit merge: !38 merge dbzDevelop into master [feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Created-by: duanbingzhe Commit-by: duanbingzhe Merged-by: cann-robot Description: ## 数据仓推送自配(breaking) -用户配置推送凭据,消除共享身份推送的审计混淆与单账号配额瓶颈 - 新入口: cpx auth 交互式配置命令;insight 设置页凭据落服务端(接口脱敏);引导式配置弹窗——未配置或凭据类失败时自动弹出,配完即用 - 上传错误结构化分类(无凭据 / 凭据无效 / 无写权限 / 配额满),各自给定向指引;https 远端无凭据提前快速失败,不再放行到 git 报错 - ⚠️ 迁移注意:默认仓推送需仓主将用户账号加为协作者;旧内置凭据请在托管平台后台作废 ## start.sh 单实例收口 - 默认启动即收口:杀掉已有自家实例后固定绑定 21025,不再端口顺延漂移(消除实例散落、僵尸进程与自动导入探测失效);端口被无关进程占用则明确报错,绝不静默换址 ## 稳定性修复 - 【WSL 上跑测试弹浏览器空页(修了三轮的复发根因)】旧修复拦错了分支——改为进程内守卫,任何环境下的测试运行都不再触发开浏览器 - 【cpx-only 独立运行三连】补全 bundle 被依赖链连带炸掉(auth 模块解耦为纯叶子);cpx auth 补 Tab 补全;无凭据指引按实际安装形态指路 - PR 审查意见修复与 CHANGELOG 措辞规范化 ## 版本号 insight 0.2.36 → 0.2.37、cpx 0.1.7 → 0.1.8,CHANGELOG 已定版(版本单轨校验通过);npm 发包另行拍板执行 See merge request: cann/cannbot-sentry!38 | 1 个月前 | |
[feat]合入cpx和insight Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !4 merge master into master [feat]合入cpx和insight Created-by: guanxinghua Commit-by: 管兴华;guanxinghua Merged-by: cann-robot Description: [feat]合入cpx和insight See merge request: cann/cannbot-sentry!4 | 1 个月前 | |
[feat]合入cpx和insight Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !4 merge master into master [feat]合入cpx和insight Created-by: guanxinghua Commit-by: 管兴华;guanxinghua Merged-by: cann-robot Description: [feat]合入cpx和insight See merge request: cann/cannbot-sentry!4 | 1 个月前 | |
[feat]合入cpx和insight Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !4 merge master into master [feat]合入cpx和insight Created-by: guanxinghua Commit-by: 管兴华;guanxinghua Merged-by: cann-robot Description: [feat]合入cpx和insight See merge request: cann/cannbot-sentry!4 | 1 个月前 | |
[feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Co-authored-by: duanbingzhe<duanbingzhe@huawei.com> # message auto-generated for no-merge-commit merge: !38 merge dbzDevelop into master [feat] 数据仓规范管理 + start.sh 单实例收口 / 测试弹浏览器与 cpx-only 独立运行修复 Created-by: duanbingzhe Commit-by: duanbingzhe Merged-by: cann-robot Description: ## 数据仓推送自配(breaking) -用户配置推送凭据,消除共享身份推送的审计混淆与单账号配额瓶颈 - 新入口: cpx auth 交互式配置命令;insight 设置页凭据落服务端(接口脱敏);引导式配置弹窗——未配置或凭据类失败时自动弹出,配完即用 - 上传错误结构化分类(无凭据 / 凭据无效 / 无写权限 / 配额满),各自给定向指引;https 远端无凭据提前快速失败,不再放行到 git 报错 - ⚠️ 迁移注意:默认仓推送需仓主将用户账号加为协作者;旧内置凭据请在托管平台后台作废 ## start.sh 单实例收口 - 默认启动即收口:杀掉已有自家实例后固定绑定 21025,不再端口顺延漂移(消除实例散落、僵尸进程与自动导入探测失效);端口被无关进程占用则明确报错,绝不静默换址 ## 稳定性修复 - 【WSL 上跑测试弹浏览器空页(修了三轮的复发根因)】旧修复拦错了分支——改为进程内守卫,任何环境下的测试运行都不再触发开浏览器 - 【cpx-only 独立运行三连】补全 bundle 被依赖链连带炸掉(auth 模块解耦为纯叶子);cpx auth 补 Tab 补全;无凭据指引按实际安装形态指路 - PR 审查意见修复与 CHANGELOG 措辞规范化 ## 版本号 insight 0.2.36 → 0.2.37、cpx 0.1.7 → 0.1.8,CHANGELOG 已定版(版本单轨校验通过);npm 发包另行拍板执行 See merge request: cann/cannbot-sentry!38 | 1 个月前 | |
[feat]合入cpx和insight Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !4 merge master into master [feat]合入cpx和insight Created-by: guanxinghua Commit-by: 管兴华;guanxinghua Merged-by: cann-robot Description: [feat]合入cpx和insight See merge request: cann/cannbot-sentry!4 | 1 个月前 | |
[test] UT 覆盖率收集接入:run-tests.sh 统一 --coverage/-c 选项 Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !39 merge ut-coverage into master [test] UT 覆盖率收集接入:run-tests.sh 统一 --coverage/-c 选项 Created-by: guanxinghua Commit-by: guanxinghua Merged-by: cann-robot Description: ## 背景 流水线门禁要求提供 UT 执行成功记录(执行逻辑 + 覆盖率收集策略)。本 PR 把覆盖率收集接进现有唯一测试入口 scripts/run-tests.sh,门禁默认路径零变化。 ## 改动 - 仓顶与三包入口统一支持 --coverage / -c(与 scope 顺序不限;环境变量 COVERAGE=1 等价,供流水线注入) - insight:新增 test:cov(pretest + vitest --coverage);cpx:追加 --coverage,provider 转为本包 devDependency 且缺失自愈补装;sift:pytest --cov(pytest-cov 入 dev extra,随 .[dev] 自愈) - 输出降噪:vitest dot + passed-only 静默(失败详情保留);sift 跑完打一行总覆盖率;各包跑完提示明细文件位置 - 覆盖率产物与执行日志目录全部 gitignore,不入库 ## 验证(分支 ut-coverage,基线 d18ef07) - bash scripts/run-tests.sh all:ALL PASSED,退出码 0 —— insight 1535 / cpx 225 / sift 1805 通过,0 失败 - bash scripts/run-tests.sh all --coverage:ALL PASSED —— 行覆盖 insight 58.00% / cpx 61.88% / sift 89.46% 🤖 Generated with [Claude Code](https://claude.ai/claude-code) See merge request: cann/cannbot-sentry!39 | 1 个月前 | |
[feat]合入cpx和insight Co-authored-by: guanxinghua<guanxinghua@huawei.com> # message auto-generated for no-merge-commit merge: !4 merge master into master [feat]合入cpx和insight Created-by: guanxinghua Commit-by: 管兴华;guanxinghua Merged-by: cann-robot Description: [feat]合入cpx和insight See merge request: cann/cannbot-sentry!4 | 1 个月前 |
CANNBot-Insight
LLM 编码 Agent 的 Session 级可观测工具:导入 agent 会话日志,逐轮分析 token、上下文、子代理与技能使用。
功能介绍
导入 SQLite(opencode.db)或 JSONL(Claude 原生 / cpx proxy 捕获,明文与 .jsonl.7z、存量 .jsonl.gz 均可,cpx- 前缀自动处理),进入 session 详情页的多个分析 Tab:
- Token 与费用 — 每轮 token 五项拆解,按模型上下文窗口显示占比,估算费用
- 上下文增长 — 逐 subagent 的上下文增长曲线与动画回放,
/compact压缩点标注 - 活跃 / 墙钟 — 会话详情 Wall Clock 拆分(活跃 + 非活跃 = 墙钟)与首页 Active / Wall 列:事件聚类口径(间隔 >5min 计非活跃、API 调用进行中计活跃)
- 上下文治理 — 查看每轮 LLM 输入构成:可见消息 + 稳定 System 开销
- Subagent 追踪 — 识别子代理会话与 dispatch→response 链路,时间线内联展示
- Turn 快速跳转 — Turns 时间线输入
#459回车直达该轮 - Wire 轮次(proxy 捕获)— 逐轮重组完整 wire 输入/输出,与 DB 重建对照;
-a启动显示 - Skill 事件 / 覆盖度 / 全文 — 每轮 skill 事件、可用 skills 全集对照使用情况、SKILL.md 全文重建
- Agent 定义恢复 — 子代理
.md定义一键取全文:会话内 system 注入优先,磁盘扫描兜底 - 概念追踪 — 跨轮关键词搜索、传播链路与 DAG 图,结果可按来源/thinking/工具过滤
- 文件读取分析 / 内容复卷 / 重编汇册 — 重复读取检测、单文件逐行重建、整目录重建打包下载
- Session 对比 — 两会话的 token / 费用 / 耗时 / 工具 / 子代理对比
- 轨迹评分 — 六维评分卡(完成度否决维 / 行为可信 / 质量 / 效率 / 冗余 / 自主性 + 自定义维度),支持基线对比与评分配置 profile
- Audit — Workflow 审计(流程框图 + 节点问题 + 优化优先级)与 Skill 审计(真实执行 vs SKILL.md / agent 定义 / workflow 声明对账)
- 密钥脱敏(proxy 捕获)— API key 永不落盘:落盘咽喉统一打码(
前4…后4)
主页 Sessions 列表支持关键词 / sessionID 搜索;导入对话框提供常用路径一键直达。
安装与使用
方式零:npm 一键安装(推荐)
npm install -g cannbot-insight
cannbot-insight # 首次:自动 build + migrate(约 30s-2min),随后启动 + 开浏览器
- 需 Node.js >= 20;国内网络可加
--registry=https://registry.npmmirror.com - 离线环境可用 tgz:
npm install -g ./cannbot-insight-<版本>.tgz - 可写状态集中在
~/.cannbot-insight/;默认端口 21025(占用自动顺延) - CLI 子命令直接透传:
cannbot-insight upload --file … --list/sessions;短别名cbi - Python 3 可选(存在则启动 smart-agent 分析后端,缺失静默降级)
- 别名品牌:
npm install -g context-insight—— 同一工具以 Context-Insight 品牌名发布(命令context-insight/ctxi,数据目录~/.context-insight/);会话数据与 cannbot-insight 完全互通(共享同一格式标识)
| 标志 | 作用 |
|---|---|
-a, --advanced |
显示高级 tab(wireRounds/replay) |
-k, --kill |
停掉本仓所有 insight/smart-agent 实例后从 21025 启动(被他方占用时顺延下一个空闲端口) |
-f, --fresh |
清空构建缓存重建 |
-h, --help |
打印完整 CLI 参考 —— 全部子命令与旗标(含 -v, --version 版本输出) |
方式一:源码运行 Web UI
./start.sh # 生产模式(默认):构建缓存复用 + 请求零编译
./start.sh -u # 更新依赖后启动
./start.sh -f # 强制重新构建
./start.sh -d # dev 模式(改源码热重载时用)
- 需 Node.js >= 20;
./start.sh同时安装 cpx 捕获命令(详见../cpx/README.md) - 浏览器打开
http://localhost:21025
日志文件位置:
- opencode:
~/.local/share/opencode/opencode.db - Claude Code:
~/.claude/projects/(目录自动扫描)
Web UI 还支持:导出 session 为独立 SQLite 或 Markdown。LLM 接入面板内置常见提供商 Base URL 速查。
方式二:CLI 导入 + Web 分析
适用于 SSH 远程等无浏览器环境(首次需 npm install + npx prisma migrate deploy,之后导入命令自动拉起后端):
# opencode:列出 / 指定导入 / 交互选择
npx tsx src/cli/index.ts upload --file ~/.local/share/opencode/opencode.db --list
npx tsx src/cli/index.ts upload --file ~/.local/share/opencode/opencode.db --session-id <id> --yes --json
# Claude Code:目录扫描 / 单文件
npx tsx src/cli/index.ts upload --file ~/.claude/projects/ --list
npx tsx src/cli/index.ts upload --file ~/.claude/projects/<hash>/<uuid>.jsonl --session-id <uuid> --yes --json
| 参数 | 说明 |
|---|---|
--file <path> |
源路径(.db / .jsonl / 目录,类型自动推断) |
--session-id <id> |
指定 session(跳过交互) |
--description <text> |
提交描述 |
--yes / --json |
跳过确认 / JSON 输出(脚本友好) |
--list |
仅列出可选 session |