-
案例介绍本案例采用华为云码道(CodeArts)代码智能体作为核心开发工具,结合SDD规范驱动开发方法论,构建从需求分析、系统设计、编码实现到部署发布的完整开发流程。实现网络监测桌面应用从需求到可安装发布包的全流程智能化场景,让网络状态监测告别手动ping,迈入自动化监测新时代。案例内容一、概述1.1 案例介绍在日常网络运维和开发调试中,用户往往需要长时间监测网络状态,及时发现延迟抖动、丢包、DNS异常等问题。现有工具(如ping、tracert)功能单一、无法持续监测,专业工具(如Wireshark)过于复杂、资源占用高。NetworkMonitor致力于填补这一空白——提供一款轻量、精简、持续运行、数据丰富、可生成总报告的桌面监测应用。本案例采用华为云码道(CodeArts)代码智能体作为核心开发工具,结合SDD规范驱动开发方法论的creating-sdd-directory、managing-spec-document、managing-design-document、managing-tasks-document四大核心流程skills,构建从需求分析、系统设计、编码任务规划到代码实现的全流程开发。该方案将传统开发中分散的需求文档、设计文档、任务清单整合为规范化的SDD体系,使决策过程可追溯、文档与代码同步更新,大幅提升开发效率和项目可维护性。通过码道的智能体模式,开发者无需深厚的桌面应用开发背景即可快速完成复杂网络监测应用的设计与开发。案例技术选型:华为云码道(CodeArts)代码智能体:集代码大模型、AI IDE、Code Agent为一体的智能编码产品。具备强大的需求理解、架构设计和代码生成能力,支持智能体模式自动规划并执行复杂开发任务。本案例中作为核心开发平台,通过对话式交互快速完成网络监测桌面应用的需求分析、架构设计、SDD文档生成和代码实现与调试。SDD规范驱动开发方法论:系统化的软件开发方法论,包含creating-sdd-directory、managing-spec/design/tasks-document四大核心流程skills。使决策过程可追溯,文档与代码同步更新,形成完整知识库,特别适合多模块复杂功能项目。本案例中作为整体开发方法论指导,确保网络监测桌面应用开发的规范性、可追溯性和可维护性。Tauri v2 + Rust + TypeScript:Tauri v2桌面框架使用操作系统原生WebView渲染前端,Rust编写后端逻辑,打包后体积仅5-15MB(Electron通常100MB+),内存占用约30-50MB,完美契合"轻量、精简"的需求约束。Rust的内存安全和零成本抽象特性适合系统级网络编程,TypeScript提供类型安全的前端开发体验。1.2 适用对象个人开发者高校学生企业开发者1.3 案例时间本案例总时长预计90分钟。1.4 案例流程说明:AI IDE华为云码道(CodeArts)代码智能体安装部署;对话码道,使用creating-sdd-directory skill初始化SDD项目目录;对话码道,使用managing-spec-document skill生成需求规格文档;对话码道,使用managing-design-document skill生成实现方案设计文档;对话码道,使用managing-tasks-document skill生成编码任务清单;对话码道,根据tasks.md开始执行编码任务,完成代码实现与调试;构建Release版本,生成Windows安装包。1.5 资源总览本案例预计花费0元。资源名称规格单价(元)华为云码道(CodeArts)代码智能体体验版免费二、环境和资源准备2.1 AI IDE华为云码道安装部署参考案例《AI IDE华为云码道(CodeArts)代码智能体安装部署》完成Windows版AI IDE华为云码道(CodeArts)代码智能体安装部署。注:本案例中项目所创建的本地目录为C:\Users\Lv JingQi\Desktop\demo\network-monitor;本案例使用码道智能体模式,模型选择GLM-5.1,开发模式为探索模式(Vibe-Coding Mode)。2.2 开发环境准备本案例需要以下开发环境:Rust工具链:安装rustup,配置Cargo(国内环境需配置代理或镜像源)Node.js:v18+,用于前端构建Tauri CLI:cargo install tauri-cli --version "^2"注:本案例在Windows环境下开发,需配置HTTPS代理(如Clash的127.0.0.1:7897)以访问crates.io。三、对话码道:NetworkMonitor 项目开发3.1 项目背景与原始需求项目背景与原始需求是产品价值的源头定义与所有后续决策的基石。如下是NetworkMonitor项目的原始需求:用户原始需求:"制作一款能够长时间监测计算机网络情况的桌面应用,要求轻量、精简、收集多种网络数据,并能在监测结束后生成总报告"3.2 NetworkMonitor SDD设计3.2.1 初始化SDD项目目录对话码道,使用creating-sdd-directory skill初始化SDD项目目录结构:请帮我创建一个SDD项目,需求是制作一款能够长时间监测计算机网络情况的桌面应用,要求轻量、精简、收集多种网络数据,并能在监测结束后生成总报告。码道自动调用creating-sdd-directory skill,在.codeartsdoer/specs/network_monitor目录下创建SDD项目目录结构。3.2.2 生成需求规格文档对话码道,使用managing-spec-document skill生成需求规格文档:请使用managing-spec-document skill帮我生成网络监测桌面应用的需求规格文档。码道自动调用spec-requirement-agent,从用户需求中提取出5大核心能力域:监测会话管理:启动/停止/配置/恢复网络数据采集:延迟/丢包/DNS/流量/连接实时状态展示:指标概览/健康标识异常告警:延迟超限/丢包超限/DNS异常/断网监测总报告:统计指标/健康评分/趋势图表/导出生成的spec.md包含完整的领域术语定义(10个)、角色边界、DFX约束(性能/可靠性/安全性/兼容性)、业务规则与验收条件(30+条)、异常场景处理等,共500+行。3.2.3 生成实现方案设计文档对话码道,使用managing-design-document skill生成实现方案设计文档:请使用managing-design-document skill帮我生成网络监测桌面应用的实现方案设计文档。码道自动调用spec-design-agent,基于需求规格生成详细的实现方案文档design.md,包含:存量功能分析:评估操作系统原生API、Tauri框架能力、开源库的匹配度增量设计方案:模块划分、接口定义、状态机设计、数据模型设计技术选型决策:ICMP vs TCP探测、PowerShell vs Win32 API、前端框架选择关键设计决策:探测策略:TCP优先 + ICMP回退TCP探测:无需管理员权限,向目标端口发起连接测量RTTICMP探测:需要管理员权限,通过ping命令实现自动降级:TCP成功则使用TCP,失败时回退ICMP3.2.4 生成编码任务清单对话码道,使用managing-tasks-document skill生成编码任务清单:请使用managing-tasks-document skill帮我生成网络监测桌面应用的编码任务清单。码道自动调用spec-task-agent,将设计方案拆解为13个大项、60+个具体编码任务,生成tasks.md。每个任务都有明确的验收标准和依赖关系。3.3 NetworkMonitor 代码实现与调试3.3.1 项目初始化对话码道,根据tasks.md开始执行编码任务:请根据tasks.md开始执行编码任务,从项目初始化开始。码道自动执行以下初始化步骤:使用create-tauri-app初始化项目,选择Rust后端 + TypeScript前端模板配置tauri.conf.json基础信息(应用名称、窗口尺寸、权限声明)配置前端构建工具(Vite)与基础依赖(TypeScript、Chart.js)配置Rust后端依赖:tokio(异步运行时)、rusqlite(SQLite)、serde/serde_json(序列化)、chrono(时间处理)、encoding_rs(GBK解码)3.3.2 后端模块实现码道按照tasks.md中的任务顺序,依次实现以下Rust后端模块:序号模块文件核心内容1models/enums.rs枚举类型定义:SessionStatus, MetricType, ProbeType, AlertType, TcpState, HealthLevel等2models/session.rs会话配置与信息:SessionConfig, SessionInfo, AlertThresholds3models/records.rs数据记录模型:LatencyRecord, DnsRecord, TrafficRecord, ConnectionRecord, AlertEvent, RealtimeMetrics, PagedData4models/report.rs报告模型:MonitorReport, ReportSummary, 各统计结构体5models/config.rs应用配置:AppConfig, ProbeNode, DnsTestDomain, AppConfigUpdate6models/errors.rs统一错误类型:AppError, AppErrorCode7services/storage.rs存储服务:SQLite CRUD,含Schema初始化、批量写入、分页查询8collectors/probe.rs探测引擎:TCP优先 + ICMP回退,GBK解码,每节点独立ProbeType9collectors/dns.rsDNS采集器:DNS解析测试,延迟计时与成功率统计10collectors/traffic.rs流量采集器:Windows PowerShell Get-NetAdapterStatistics,parse_link_speed11collectors/connection.rs连接采集器:Windows PowerShell Get-NetTCPConnection12collectors/scheduler.rs采集调度器:采集调度、频率控制、平均RTT计算13collectors/alert.rs告警引擎:告警评估、5分钟去重、断网检测与恢复通知14collectors/report_gen.rs报告生成器:报告生成、健康评分、趋势数据聚合、round2精度、CSV/JSON导出15commands/session.rs会话命令:start_session, stop_session, get_current_session16commands/data.rs数据命令:get_realtime_metrics, query_*_data17commands/report.rs报告命令:generate_report, get_report, list_reports, export_report, delete_report18commands/config.rs配置命令:get_config, update_config, get_probe_nodes, get_dns_test_domains19commands/debug.rs调试命令:debug_ping(GBK解码,测试所有探测节点)3.3.3 前端界面实现码道继续实现前端界面,包含4个页面和4个实时折线图:监测仪表盘:8个核心指标卡片 + 4个Chart.js折线图 + 健康等级标识 + 告警记录列表配置管理:采集频率滑块 + 监测时长设置 + 启用指标勾选 + 告警阈值配置历史报告:报告列表 + 报告详情 + CSV/JSON导出调试工具:Ping测试 + TCP连通性测试3.3.4 智能调试与问题修复在开发过程中,码道智能体识别并修复了多个关键Bug,以下是典型交互场景:场景一:GBK编码问题用户反馈:应用启动监测后,延迟数据始终为0,但TCP探测应该是成功的。码道诊断过程:1. 检查probe.rs中的parse_ping_output函数2. 发现该函数通过匹配"时间="关键字提取延迟值3. 分析发现:中文Windows的ping输出使用GBK编码,而代码使用String::from_utf8_lossy解码,导致中文字符变成乱码4. "时间="变成了不可读字符,关键字匹配自然失败修复方案:引入encoding_rs库,使用GBK.decode()正确解码ping输出。同时修复"平均 = "偏移量计算Bug:中文UTF-8字节长度不固定,改用prefix.len()动态计算。场景二:探测节点不可达用户反馈:在某些网络环境下,所有探测节点均超时,延迟数据全为0。码道诊断过程:1. 检查默认探测节点列表:1.1.1.1:53、114.114.114.114:532. 分析发现:1.1.1.1被Clash代理拦截(53端口拒绝连接),114.114.114.114在无代理时ping超时3. TCP探测使用原始socket,不走HTTP代理,但某些代理软件的TUN模式会拦截特定端口修复方案:将探测节点替换为更稳定的组合:8.8.8.8:53(Google DNS)、223.5.5.5:53(阿里DNS)、www.baidu.com:443、www.qq.com:443。场景三:PowerShell弹窗问题用户反馈:开始监测后频繁弹出PowerShell窗口,严重影响使用体验。码道诊断过程:1. 搜索所有Command::new调用,找到9处子进程启动2. 分析发现:traffic.rs和connection.rs使用PowerShell采集数据,probe.rs和debug.rs使用ping命令3. 所有子进程在Windows上默认会创建控制台窗口修复方案:为所有子进程添加CREATE_NO_WINDOW标志(0x08000000),通过std::os::windows::process::CommandExt trait的creation_flags方法设置。完整Bug修复清单:序号问题根因修复方案1Ping输出中文乱码GBK编码未正确解码encoding_rs::GBK.decode()2调度器取值错误取最后一个节点RTT改为成功节点平均延迟3probe_type覆盖多节点共享probe_type每节点独立返回元组4时间戳显示UTCchrono::Utc::now()改为chrono::Local::now()5趋势数据重复同一时间戳多节点数据HashMap聚合取平均值6浮点精度不一致小数位数不统一round2()四舍五入到2位7parse_link_speed失败先replace再contains先判断单位再解析8平均=偏移量错误中文UTF-8字节长度非固定prefix.len()动态计算9探测节点不可达1.1.1.1被代理拦截替换为稳定节点组合10导出路径错误相对路径写到Tauri工作目录dialog.save()文件保存对话框11PowerShell弹窗子进程创建控制台窗口CREATE_NO_WINDOW标志12编译警告未使用的变量/函数/枚举移除未使用代码3.3.5 编译警告清理对话码道,清理所有编译警告:请帮我清理所有编译警告,移除未使用的代码。码道自动识别并移除了以下未使用代码:TimeRange结构体(models/records.rs)5个未使用的错误函数(models/errors.rs):no_network_interface, session_not_stopped, insufficient_data, report_already_exists, disk_space_insufficient4个未使用的枚举变体(models/errors.rs):NoNetworkInterface, InsufficientData, ReportAlreadyExists, DiskSpaceInsufficient2个未使用的存储方法(services/storage.rs):get_active_session, delete_session_data1个未使用的调度方法(collectors/scheduler.rs):is_running1个多余的mut声明(collectors/report_gen.rs):bandwidth_trend最终编译结果:0警告通过。3.3.6 UI重构:调试工具独立页面对话码道,将调试区域从仪表盘移到独立页面:请将debug section从仪表盘移到左侧导航,变成一个单独的"调试工具"页面,和历史报告、配置管理并列。码道自动完成以下修改:在index.html的侧边栏导航中添加"调试工具"菜单项将debug section从page-dashboard中移除创建独立的page-debug页面,包含Ping测试按钮和输出区域3.4 NetworkMonitor 项目介绍3.4.1 项目架构设计架构说明:层次组件职责前端层TypeScript + Vite + Chart.js页面渲染、用户交互、实时图表、API调用通信层Tauri IPC (invoke/emit)前后端双向通信、事件推送后端层Rust + Tokio业务逻辑处理、数据采集、告警评估、报告生成数据层SQLite (rusqlite)业务数据持久化、关系查询、事务支持系统层操作系统网络栈/DNS/PowerShell网络数据采集、系统通知推送3.4.2 技术栈层次技术选型版本说明桌面框架Tauri v2比Electron体积小90%+,内存占用低后端语言Rust2021内存安全、零成本抽象、系统级网络编程异步运行时Tokio1.53异步任务调度、定时器、TCP连接前端语言TypeScript + Vite6.x类型安全、构建快速数据可视化Chart.js4.x轻量级、支持实时数据更新本地存储SQLite (rusqlite)0.40嵌入式、零配置、WAL模式序列化serde / serde_json1.xJSON序列化/反序列化时间处理chrono0.4本地时区时间戳UUID生成uuid1.24会话ID、报告ID、告警ID编码处理encoding_rs0.8GBK → UTF-8转码系统通知tauri-plugin-notification2.3Windows Toast通知文件对话框tauri-plugin-dialog2.7文件保存对话框文件系统tauri-plugin-fs2.5文件读写权限3.4.3 系统分层设计后端分层src-tauri/src/├── main.rs # Windows入口├── lib.rs # 主入口,AppState定义与Tauri Builder├── models/│ ├── enums.rs # 枚举类型(SessionStatus, MetricType, ProbeType, AlertType, TcpState, HealthLevel)│ ├── session.rs # SessionConfig, SessionInfo, AlertThresholds│ ├── records.rs # LatencyRecord, DnsRecord, TrafficRecord, ConnectionRecord, AlertEvent, RealtimeMetrics, PagedData│ ├── report.rs # MonitorReport, ReportSummary, 各统计结构体│ ├── config.rs # AppConfig, ProbeNode, DnsTestDomain, AppConfigUpdate│ └── errors.rs # AppError, AppErrorCode├── services/│ └── storage.rs # StorageService(SQLite CRUD,含Schema初始化)├── collectors/│ ├── probe.rs # ProbeEngine(TCP优先 + ICMP回退,GBK解码)│ ├── dns.rs # DnsCollector(DNS解析测试)│ ├── traffic.rs # TrafficCollector(Windows PowerShell,带宽计算)│ ├── connection.rs # ConnectionCollector(Windows PowerShell,TCP/UDP统计)│ ├── scheduler.rs # CollectScheduler(采集调度、频率控制、平均RTT)│ ├── alert.rs # AlertEngine(告警评估、5分钟去重、断网检测)│ └── report_gen.rs # ReportGenerator(报告生成、健康评分、趋势聚合、导出)└── commands/ ├── session.rs # start_session, stop_session, get_current_session ├── data.rs # get_realtime_metrics, query_*_data ├── report.rs # generate_report, get_report, list_reports, export_report, delete_report ├── config.rs # get_config, update_config, get_probe_nodes, get_dns_test_domains └── debug.rs # debug_ping(GBK解码,测试所有探测节点)前端分层src/├── main.ts # 前端逻辑,含Chart.js图表、实时数据更新、文件保存对话框├── styles.css # 深色主题样式└── (index.html 在项目根目录)3.4.4 核心代码释义探测引擎(collectors/probe.rs)TCP优先 + ICMP回退的混合探测策略,解决了Windows下ICMP需要管理员权限的问题:async fn probe_node(&self, host: &str, port: u16) -> (f64, ProbeType) { // 第一步:尝试TCP探测(无需管理员权限) let tcp_rtt = self.tcp_probe(host, port).await; if tcp_rtt > 0.0 { return (tcp_rtt, ProbeType::Tcp); } // 第二步:TCP失败时回退ICMP let icmp_rtt = self.icmp_probe(host).await; if icmp_rtt > 0.0 { return (icmp_rtt, ProbeType::Icmp); } (0.0, ProbeType::Tcp)}告警引擎(collectors/alert.rs)基于连续采样的断网检测与5分钟去重机制:断网判定:丢包100% + DNS成功率0% → 连续2次触发NetworkDisconnected恢复判定:丢包 < 100% 或 DNS成功率 > 0% → 触发恢复通知去重规则:同一类型告警5分钟内不重复发送报告生成器(collectors/report_gen.rs)健康评分算法,基于加权扣分机制:延迟扣分(权重30%):>200ms重扣,>100ms轻扣丢包扣分(权重25%):>10%重扣,>5%轻扣DNS扣分(权重20%):成功率<80%扣分带宽扣分(权重15%):利用率>90%扣分告警扣分(权重10%):每个告警扣2分,最多扣10分3.4.5 需求矩阵需求ID需求描述(简)任务引用设计文档引用5.1.1启动监测规则任务3.1design.md#2.1.35.1.2停止监测规则任务3.1design.md#2.1.35.1.3监测参数配置规则任务3.2design.md#2.1.35.2.1网络延迟采集规则任务4.1design.md#2.1.25.2.2丢包率采集规则任务4.1design.md#2.1.25.2.5DNS解析延迟采集规则任务5.1design.md#2.1.25.2.7网络连接状态采集规则任务7.1design.md#2.1.25.3.1状态概览规则任务13.1design.md#2.1.25.4.1延迟告警规则任务9.1design.md#2.1.25.4.4网络断开告警规则任务9.1design.md#2.1.25.5.1报告生成触发规则任务10.1design.md#2.1.25.5.4报告导出规则任务10.2design.md#2.1.23.4.6 任务矩阵序号部分模块任务编号任务名称1第1部分:项目初始化基础架构搭建任务1.1初始化Tauri项目骨架2任务1.2定义核心类型与枚举3任务1.3定义统一错误类型4第2部分:存储与数据模型存储服务实现任务2.1SQLite数据库Schema初始化5任务2.2实现StorageService模块6第3部分:监测会话管理会话管理实现任务3.1实现SessionManager模块7任务3.2实现会话配置校验8任务3.3注册Tauri Command接口9第4部分:网络探测引擎探测引擎实现任务4.1实现ProbeEngine模块10任务4.2实现跨平台兼容11第5部分:DNS采集器DNS采集实现任务5.1实现DnsCollector模块12第6部分:流量采集器流量采集实现任务6.1实现TrafficCollector模块13第7部分:连接采集器连接采集实现任务7.1实现ConnectionCollector模块14第8部分:采集调度器调度器实现任务8.1实现CollectScheduler模块15第9部分:异常告警引擎告警引擎实现任务9.1实现AlertEngine模块16任务9.2实现系统通知推送17第10部分:监测总报告报告生成实现任务10.1实现ReportGenerator模块18任务10.2实现报告导出功能19第11部分:前端界面界面实现任务13.1实现监测仪表盘页面20任务13.2实现配置管理页面21任务13.3实现历史报告页面22第12部分:部署发布构建与打包任务14.1构建Release版本23任务14.2生成Windows安装包3.5 NetworkMonitor 应用构建与发布3.5.1 构建Release版本对话码道,构建Release版本并生成安装包:请帮我构建Release版本,生成Windows安装包。码道执行以下构建流程:1. 前端构建:tsc && vite build(TypeScript编译 + Vite打包)2. Rust编译:cargo build --release(优化编译,约1-2分钟)3. 安装包打包:NSIS (.exe) + MSI (.msi)构建产出物:产物路径说明NSIS安装包src-tauri/target/release/bundle/nsis/network-monitor_0.1.0_x64-setup.exe推荐使用,双击安装MSI安装包src-tauri/target/release/bundle/msi/network-monitor_0.1.0_x64_en-US.msi企业部署独立EXEsrc-tauri/target/release/network-monitor.exe免安装运行3.5.2 安装与验证双击network-monitor_0.1.0_x64-setup.exe,按向导完成安装后即可运行。应用启动后展示深色主题的监测仪表盘界面,点击"开始监测"即可开始实时采集网络数据。四、案例总结&补充4.1 案例阶段性总结截至当前,NetworkMonitor项目已完成从需求到发布的全流程开发:需求规格文档(spec.md):从一句话需求出发,系统性地完成了5大能力域的需求细化,包含10个领域术语、5类DFX约束、30+条业务规则与验收条件、异常场景处理。实现方案设计文档(design.md):完成了存量功能分析、增量设计方案、技术选型决策,包含模块划分、接口定义、状态机设计、数据模型设计。编码任务清单(tasks.md):将设计方案拆解为13个大项、60+个具体编码任务,每个任务都有明确的验收标准和依赖关系。代码实现:9个Rust后端模块、4个前端页面、4个实时图表,代码量约3000+行,0编译警告。智能调试:识别并修复了12+个关键Bug,涵盖编码兼容(GBK)、权限降级(TCP/ICMP)、数据聚合(平均延迟/趋势去重)、进程管理(CREATE_NO_WINDOW)等。部署发布:成功构建Windows平台MSI/NSIS安装包,应用可直接安装运行。本案例以华为云码道AI IDE为核心开发工具,结合SDD规范驱动开发方法论的creating-sdd-directory、managing-spec-document、managing-design-document、managing-tasks-document四大核心流程skills,从原始需求出发,系统性地完成了包括需求细化、架构设计、编码实现、智能调试、部署发布在内的全流程开发工作,为桌面应用开发提供了完整、可落地的AI辅助开发实践参考。4.2 附录 仓库地址:Ljq1133/network-monitor demo地址:network-monitor/Compressed demo.mp4 at master · Ljq1133/network-monitor本案例中所涉及的NetworkMonitor网络监测桌面应用的相关需求、设计等文档位于项目目录:.codeartsdoer/specs/network_monitor/spec.md — 需求规格文档.codeartsdoer/specs/network_monitor/design.md — 实现方案设计文档.codeartsdoer/specs/network_monitor/tasks.md — 编码任务清单4.3 反馈改进建议如您在案例实操过程中遇到问题或有改进建议,可以到开发者论坛评论区反馈即可,我们会及时响应处理,谢谢!
-
用户行为分析在互联网行业已发展多年,并不陌生。随着越来越多企业开始建设数字化产品和业务系统,如何采集用户行为数据,并通过数据了解用户使用习惯、优化产品体验,也逐渐成为很多团队需要面对的问题。过去,企业通常会选择商业SaaS分析工具来完成这类工作。不过现在企业开始对数据安全要求有所提升,同时对于数据自主控制、私有化部署和长期成本的关注,让越来越多团队开始考虑开源用户行为分析方案。目前市场上有一些具有代表性的开源方案,例如:PostHog Matomo Countly ClkLog 不过,这些产品虽然都涉及用户行为数据分析,但定位和适用场景存在一定区别。本文将从产品定位、分析能力、部署方式等方面,对这些开源用户行为分析平台进行简单对比,帮助企业找到适合自己的方案。 一、什么是用户行为分析平台?用户行为分析平台,是一种用于采集、分析和理解用户行为数据的软件系统。它通常通过 SDK、API 等方式采集用户在 Web、App、小程序等产品中的使用行为,例如页面访问、点击操作、功能使用、搜索行为、用户转化路径等,再通过分析模型帮助企业理解用户如何使用产品,从而优化产品体验、提升运营效率,并为业务决策提供数据支持。 用户行为分析平台通常包含哪些功能?不同用户行为分析平台的定位和能力侧重点有所不同,但一个较完整的平台通常会包含以下几类核心功能: ① 数据采集支持 Web、App、小程序、H5 等多端数据接入,通常提供代码埋点、可视化埋点或全埋点等采集方式,并支持用户身份识别与跨端数据关联,为后续分析提供数据基础。② 分析模型提供事件分析、漏斗分析、留存分析、路径分析、分布分析等分析模型,帮助企业了解用户行为特征、产品使用情况以及转化效果。③ 用户洞察基于用户属性和行为数据构建用户标签、用户分群和用户画像,从"分析事件"逐步延伸到"理解用户",帮助企业识别不同用户群体的行为特点 ④ 数据可视化提供图表、仪表盘和自定义看板等能力,将分析结果以可视化方式展示,便于业务监控、数据共享和团队协作。⑤ 数据开放与应用支持数据导出、开放 API 或与其他业务系统集成,将分析结果应用于运营、产品优化、营销等实际业务场景。⑥ 智能分析(部分平台提供)随着AI的发展,部分用户行为分析平台开始提供智能问答、自然语言查询、异常检测等AI 辅助分析能力,帮助用户更高效地获取数据洞察。 这些能力共同构成了从数据采集、分析洞察到业务应用的完整闭环,不同平台会根据自身定位,在各项能力上的侧重点有所不同。 二、选型开源平台,重点关注什么?开源只是产品的一种交付方式,并不意味着一定适合所有企业。在选型时,建议重点关注以下几个方面: ① 产品定位是否匹配不同平台的发展方向并不相同,有的偏网站访问分析,有的偏产品增长分析,也有的更关注企业级用户行为分析。选型前,应先明确自身的业务需求。 ② 数据采集与分析能力关注是否支持所需终端的数据采集,以及事件分析、漏斗分析、留存分析等核心分析能力是否满足实际业务场景。③ 部署方式与数据安全根据企业要求,评估是否支持私有化部署、内网环境,以及数据是否能够实现自主存储和管理。④ 扩展能力与生态支持了解平台是否提供开放 API、二次开发能力,以及社区活跃度、文档完善程度和后续维护支持。 三、常见开源用户行为分析平台介绍目前,开源用户行为分析领域已经出现了一些具有代表性的产品。虽然都具备用户行为数据分析能力,但产品定位和适用场景各有侧重。 1. PostHog产品定位:开源 Product Analytics(产品分析)平台。PostHog更偏向产品增长分析,提供事件分析、漏斗分析、留存分析等能力,帮助产品团队了解用户如何使用产品、优化产品体验。适合场景: SaaS产品、互联网产品、产品增长分析。2. Matomo产品定位: 开源网站访问分析平台。Matomo 常被称为 Google Analytics 的开源替代方案,核心优势在于网站访问分析,同时也通过插件机制扩展了 App 等场景的数据采集能力。适合场景: 企业官网、内容网站、SEO 流量分析。3. Countly产品定位: 面向Web和移动应用的用户行为分析平台。Countly 关注应用产品中的用户行为分析,支持事件分析、用户分群等能力,同时支持私有化部署,在移动应用分析场景中应用较多。适合场景: App、Web 应用、数字产品分析。4. ClkLog产品定位:企业级用户行为分析平台。ClkLog面向企业数字化场景,提供 Web / App / 小程序等多端数据采集、分析和洞察能力,支持开源、私有化部署和源码交付,帮助企业构建自主可控的用户行为分析体系。适合场景:企业数字化系统、对数据安全和私有化部署有要求的业务场景。 四、PostHog、Matomo、Countly、ClkLog对比对比维度PostHogMatomoCountlyClkLog文档与社区支持英文文档为主,中文资料较少英文文档为主,中文社区有限英文文档为主中文文档完善,国内社区响应较快核心定位Product Analytics网站分析Web/App/用户行为分析企业级开源用户行为分析平台支持私有化部署✔✔✔✔多端数据采集Web、App以 Web 为主Web、AppWeb、App、小程序、鸿蒙等适合团队产品团队网站运营产品团队、移动应用团队技术团队、数字化企业*产品不同版本的授权、部署方式和功能可能存在差异,具体能力需结合官方版本确认。 五、总结近年来,开源用户行为分析平台逐渐成为越来越多企业关注的方向。从目前的开源生态来看,PostHog、Matomo、Countly 和 ClkLog 都有各自明确的产品定位,并没有绝对的优劣。对于企业而言,选型时不应只关注功能数量,而应结合自身的业务目标、数据安全要求、部署环境以及未来扩展规划进行综合评估。只有选择与自身业务场景相匹配的平台,才能真正发挥用户行为分析数据的价值,为产品优化、运营决策和业务增长提供长期支撑。
-
由于文件最多限制2个,所以我只发2个特别关键的文档+一份图解ppt+开发者,我的文档有7篇+1篇法律文档+一片ppt 1. 彻底统一编址:将所有资源映射到一个64位地址空间。这消除了内核与用户空间、内存与存储之间无数次的数据复制。 2. 语言即是隔离墙:用Rust的编译期检查,替代MMU硬件隔离。这意味着极其轻量的上下文切换,和实现上的划时代安全。 3. 能力授权引擎:不具伪造性的令牌作为一切资源访问的唯一凭证。这不只是安全,它重新定义了“程序”与“权限”的关系——不是谁拥有更多权限,而是谁能证明它应该被允许。 彻底统一编址:将所有资源(内存、I/O、文件、网络)映射到单一64位虚拟地址空间。例如:Unikernel(如OSv、MielinOS)、μFork等。能力授权引擎:使用能力作为资源访问的唯一凭证,由内核统一创建和验证。例如:RedLeaf OS(使用Rust语言特性实现隔离)、Tock OS、ATLAS。语言即是隔离墙:用Rust的类型系统、所有权和借用检查,替代传统MMU的硬件隔离。 例如:RedLeaf OS、Tock OS、herkos、Asterinas星绽。技术的“合金”与“提纯”这个新型操作系统的框架真正独创性在于:将上述三种理念以“Rust语言安全”这一核心逻辑进行了一次巧妙的“合金式”融合。让它们互为因果,形成了一个逻辑严密、相互增强的有机整体。如果说RedLeaf等项目是“用工具改造现有的房子”,那这个新型操作系统就如同“从零开始,重新发明一种更坚固、更轻盈的建材来造房子”。同时,该框架实现了对思想实验的哲学提纯。例如,Unikernel通常在虚拟机之上运行,隔离依赖于Hypervisor。而这个操作系统的目标是直接在裸机上运行,并且完全依赖Rust编译器来保证其内部组件的隔离,这就好比打造了一个性能损耗接近于零的“纯软件虚拟机”环境。统一编址提供零拷贝数据通道 → 语言隔离墙无需页表切换 → 能力令牌确保访问即授权。三者缺一不可,互为因果废除传统菜单,设立OmniBar 智能交互栏: OmniBar是本系统的主要交互入口,替代传统开始菜单。OmniBar是一个悬浮式智能交互栏,用户通过输入即所得的方式访问应用、数据和系统功能。 用户将鼠标移动到屏幕顶部边缘,OmniBar从屏幕顶部滑入,动画时长约50毫秒。用户也可按下系统键直接唤出。用户操作完成后,鼠标移出OmniBar区域或按下Esc键,OmniBar自动隐藏。OmniBar的唤出和隐藏不改变当前桌面状态,不影响正在进行的工作。 OmniBar直接与键值对象存储服务、能力授权引擎、桌面核心服务通信。OmniBar能搜索所有用户持有ObjectToken的数据,显示当前运行程序的令牌持有状态,执行窗口管理操作。用户无需打开任何菜单或设置面板,通过OmniBar即可完成绝大多数系统操作。我们的新型操作系统是能够打破微软,Linux垄断的一种新型操作系统,无POSIX,无系统调用,废除了大量的开销 这不仅是民用新型操作系统,更是真正自主的国产操作系统 我们的新型架构已在实机验证,能够在裸机下进行令牌验证 我们不断优化操作系统,开机3秒,关机1秒,更新采用原子替代,永不强制重启 我们的操作系统兼容旧数据格式:NTFS / FAT32 / EXT4 可导入键值存储,不丢失用户数据,我们只做文件格式转换为键值存储,我们随着WASI/WASM的发展加入我们的操作系统,通过 WASI/WASM 兼容海量应用生态,任何能编译到 WASI 的程序都能原生运行。经过理论验证,我们的操作系统基于Rust语言的内存安全保证,核心机制无内存安全类漏洞,但难免会存在开发时的逻辑错误。所有用户态服务的崩溃不影响内核,看护服务可自动恢复。 我们的操作系统是跨时代的操作系统,能力令牌机制使攻击面极小,防篡改校验由 SHA-256/SHA-3 保障,系统默认不开启网络服务,无网络攻击面。即使开启网络服务,其作为独立用户态服务运行,崩溃或被攻击不影响内核。 我们的新型操作系统性能设计目标接近裸机性能。已在QEMU与实机环境中完成内核启动、令牌验证、上下文切换基础验证中,关键路径开销低于5%,整体性能达到95%以上。作为BDFL,当前急需 Rust / 驱动 / 文档贡献者,欢迎通过 QQ 频道或 GitHub Issues 联系我们。我们为了民用,我们需要真真正正的自主操作系统,在2030年实现可装机目标,在2035年实现海量的兼容,我们为实现中华民族伟大复兴,富强民主文明和谐自由现代化的强国而努力奋斗! QQ频道:RenMinSystem64 QQ邮箱:3671256293@qq.com Github:https://github.com/wupeixing192/New-Operating-System Gitee:https://gitee.com/wupeixing192/New-Operating-System
-
ClkLog在与客户的交流过程中发现,很多咨询埋点系统的企业,最初关注的往往是分析能力,例如漏斗分析、用户画像、自动化营销、AB测试等功能,而容易忽略一些真正影响项目落地和长期使用的问题。 事实上,一个埋点项目能否顺利实施、后续能否持续发挥价值,除了分析功能之外,还与数据接入、存储架构、运维成本等因素密切相关。 我们结合实际项目经验,聊聊在私有化部署场景下,埋点系统选型时值得重点关注的几个方面。 一、先看接入成本,而不是分析功能很多团队在选型时,第一反应是比较功能:是否有漏斗分析、留存分析、用户画像,报表是否丰富,界面是否可配置等。但项目真正启动以后,第一件事情其实是接入数据。如果数据接不进来,或者接入成本过高,那么后续分析功能再丰富也无法发挥作用。 因此在选型时,建议优先关注以下几个问题:● 支持哪些平台的数据采集?企业业务场景越来越复杂,往往同时存在:Web网站、Android App、iOS App、微信小程序、鸿蒙应用等。如果需要针对不同平台使用不同方案,后续维护成本会明显增加。 ● 是否支持自定义事件采集?每家企业关注的数据指标都不完全相同。除了页面访问、退出这种基础的行为之外,通常还会涉及用户业务行为,例如:注册、下单、支付、提交表单、内容发布等。因此系统是否支持灵活定义事件和属性,也是一个重要考量因素。 ● 是否方便验证埋点?项目实施过程中,经常会遇到数据没有上报、属性传错、事件名称不一致的情况。如果缺少便捷的数据验证能力,问题排查成本会比较高。 以ClkLog为例,目前支持Web、Android、iOS、小程序、HarmonyOS 等多个平台的数据采集,同时支持自定义事件模型。开发人员完成埋点后,可以快速验证数据是否正常上报,减少联调成本。 二、存储架构决定系统能否长期使用很多企业在测试阶段数据量并不大,因此不同产品之间的性能差异并不明显。但随着业务增长,日活数从几千到几万到几十万之后,系统的底层架构开始发挥决定性作用。常见问题包括:● 查询越来越慢● 报表加载时间变长● 数据维护成本不断增加因此在选型时,除了关注功能,也建议了解产品底层的数据存储方式。对于用户来说,不一定需要了解复杂的技术细节,但至少需要关注两个问题:● 查询是否稳定?例如:查询最近7天数据和查询最近1年数据,性能差距是否过大?● 数据增长后是否容易扩展?很多企业前期业务量较小,系统运行良好。但几年后数据量增长数十倍,原有架构可能会逐渐成为瓶颈。 目前ClkLog采用宽表存储架构,针对用户行为分析场景进行了优化处理,减少复杂查询过程中的计算开销。在私有化部署场景下,也可以根据数据量增长情况,对服务器资源进行扩展或调整,使系统在数据规模上升后,整体查询体验仍然保持相对稳定。 三、分析功能够用比功能数量更重要不少埋点产品在演示时会展示大量分析模型。从用户角度来看,功能丰富当然是一件好事。但从实际使用情况来看,大多数企业长期高频使用的能力主要集中在以下几类:○ 访问分析○ 事件分析○ 漏斗分析○ 留存分析○ 用户画像相比分析模型数量,更值得关注的是:这些能力是否能够快速落地并真正被业务团队使用。如果每次分析都需要数据团队介入,那么再丰富的功能最终也可能沦为摆设。 ClkLog内置了许多成熟的用户行为分析能力,覆盖了日常使用频率比较高的场景,比如新老访客分析、地域分布、页面访问分析、事件分析、漏斗分析,以及基于用户标签和用户画像的分析等。在完成埋点接入之后,这些分析能力一般可以直接使用,不需要再做额外的二次开发或复杂配置,整体上满足“开箱即用”。 ClkLog分析能力 四、权限管理和数据治理往往容易被忽略很多项目刚上线时,只有少数人员使用系统,因此不会特别关注权限问题。但随着使用范围扩大,往往会涉及:产品团队、运营团队、数据团队、管理层。不同角色对数据的访问需求并不相同。因此建议在选型阶段提前了解:○ 是否支持角色权限管理○ 是否支持数据访问控制○ 是否支持用户信息管理这些能力虽然不像分析模型那样显眼,但对于长期运营同样重要。 ClkLog支持按项目维度进行权限隔离,不同项目之间的数据和配置可以相互独立管理。同时在单个项目内部,也可以针对不同用户设置不同的权限角色,例如系统管理、项目管理、数据管理、数据查看等,从而实现分角色的使用和管理。 五、不要忽略后续运维成本很多企业在采购阶段重点关注软件价格。但从长期来看,系统的运维成本往往更值得关注。例如:○ 系统升级是否方便?○ 是否支持数据备份?○ 出现问题是否容易排查? 对于私有化部署项目来说,这些因素都会直接影响后续维护成本。因此建议在选型阶段提前了解产品的部署方式、升级机制以及技术支持方案。 由于ClkLog采用源码交付的方式,系统在部署后整体结构相对清晰,日志链路也比较完整,出现问题时一般可以直接在本地环境中进行定位,而不需要过度依赖外部支持。另外,在版本升级方面,ClkLog提供标准化的版本更新方式(如镜像或源码更新),在规范部署的前提下,一般可以在不影响现有数据的情况下完成系统升级,从而减少对业务分析的中断。 六、结语埋点系统的价值不仅仅是生成几张分析报表,更重要的是帮助企业建立持续的数据分析能力。在选型过程中,除了分析功能之外,也建议关注:数据接入成本、存储架构、查询性能、权限管理、运维成本。 只有这些基础能力具备之后,用户行为数据才能真正发挥价值。对于有私有化部署、源码交付或国产化适配需求的企业来说,在评估方案时也可以将这些因素纳入重点考察范围,从而选择更适合自身业务发展的埋点平台。
-
OpenTiny NEXT 前端智能化系列直播 ——第五期带你了解TinRobot,讲师将带来《TinyRobot助你一站式搞定AI界面开发》的主题分享。AI应用落地日趋广泛,智能交互产品形态愈发多元,市面通用开发组件难以契合AI交互特质,开发效率与适配效果存在短板,专属开发方案成为刚需。本次分享将介绍TinyRobot组件库定位,展示完整AI界面效果,实操搭建页面并讲解场景扩展能力,带你一站式完成AI界面开发。全程干货、可落地、可实战,更有一手课程资料、贡献者证书、AtomGit & OpenTiny 周边好礼等你来拿!主题:TinyRobot助你一站式搞定AI界面开发时间:05/26(周二) 19:00-20:00 (UTC+08:00)Beijing更多精彩活动1.评论区提问赢好礼,专家现场解答每期直播开始前,前往AtomGit 活动帖评论区提问,围绕本期直播主题与 AI 前端技术发布你的问题,即可参与!活动评论区:cid:link_02.实战出真知,OpenTiny 前端智能化实践营本次 OpenTiny NEXT 系列直播每期配套专属实战任务,让你边学边练、学完即用,真正把 AI 前端技术落地掌握。你只需在 AtomGit 平台关注并 Star OpenTiny 组织,Fork 对应仓库,根据直播内容完成实践任务,提交你的代码 PR,即可参与活动。所有提交的作品将由专业团队评审,优质实践作品将获得 AtomGit & OpenTiny 定制周边奖励,优秀 PR 还会被合并进 OpenTiny 官方仓库,成为开源贡献者,获得贡献者证书,为你的技术履历加分。AtomGit 地址:cid:link_23.参与征文有奖活动期间参与 OpenTiny NEXT 前端智能化系列征文活动,无论你是直播学习者、技术爱好者,还是开源实践者,均可围绕 AI 前端、WebMCP、WebAgent、TinyVue、TinyEngine、GenUI 、TinyRobot、AI Extension等相关技术与实战体验进行创作。征文活动:cid:link_1参与&领奖进群提前锁定福利+免费领取课程资料(见海报下方)仅有效提问、issue、PR、投稿可参与活动,灌水等无意义内容将取消活动资格本次活动解释权归 OpenTiny 团队和 AtomGit 平台所有
-
【ClkLog 信创版本】正式发布!在越来越多企业推进信创改造的过程中,一个现实问题正在逐渐显现:业务系统可以完成国产化替代,但“数据分析能力”却往往难以同步落地。尤其是用户行为分析系统这类对实时性、分析能力、数据安全要求较高的平台,在信创环境中的适配难度远高于普通业务系统。 基于这一背景,ClkLog 正式推出信创版本。ClkLog 信创版面向国产化基础设施环境设计,支持私有化部署与源码交付,可运行于国产操作系统环境,并基于Apache Doris构建行为分析能力,为企业提供一套可落地的用户行为分析方案。 一、为什么“埋点用户分析系统”在信创场景中更难落地?相比普通业务系统,用户行为分析系统通常具有数据量大、 写入频繁 、 查询维度复杂 、 分析模型较多、 对实时分析要求较高的特点。在实际项目中,常见问题主要集中在以下几个方面。1. SaaS模式难以适配实际需求很多团队早期使用的是 SaaS 类分析产品,但在信创推进过程中,逐渐会面临数据无法本地化、难以适配国产化环境以及无法满足内网部署等问题。对于政企及高安全要求行业而言,用户行为数据通常需要在本地完成采集、存储与分析,因此私有化部署正逐渐成为刚性需求。 2. 原有分析系统无法继续使用部分企业此前已经建设过埋点分析体系,但随着国产化环境建设推,原有系统可能会面临: 基础技术栈不兼容、部分组件缺少国产化适配 、运维体系难以迁移 、 数据链路无法满足当前要求,最终导致企业只能重新选型,甚至重建整套分析体系。 3. 行为分析系统本身对底层能力要求更高用户行为分析并不仅仅是“数据存储”。实际场景中,通常会涉及多维事件分析、漏斗分析、用户标签与画像、用户分群、实时或近实时查询等。这意味着底层分析引擎不仅需要具备大规模数据处理能力,还需要兼顾复杂查询性能与扩展能力。 基于这些场景,让我们意识到:在信创场景下,用户行为分析系统必须从一开始就按“可私有化、可适配”的方式来设计。这也是ClkLog推出信创版本的出发点。 二、ClkLog信创方案优势在设计信创版本时,我们围绕可适配、可落地、可持续使用三个方向进行优化: 1. 架构层:支持国产化环境部署ClkLog 采用分层解耦架构设计,采集、处理、存储与分析模块可独立部署。在信创场景下,系统可部署于国产操作系统环境(麒麟等),并支持私有化部署模式,满足企业对本地化运行与数据可控性的要求。 2. 分析引擎:基于 Apache Doris 构建在分析引擎选型过程中,我们重点评估了行为分析场景数据的特征:一方面数据量大、写入频繁、查询维度多、分析路径复杂,另一方面,在实际使用中,分需需求往往是:○ 多条件/多维度组合查询○ 实时或近实时查询○ 路径分析、漏斗分析等复杂计算由于Apache Doris在实时分析、列式存储、多维聚合查询等方面具备较好的性能特点,同时也具备良好的国产化环境适配能力,能够满足用户行为分析场景中的复杂分析需求,最终,ClkLog 信创版选择基于 Apache Doris 构建核心分析能力。 3. 分析能力:延续成熟模型,而不是“从零开始”在功能层面,ClkLog信创版本延续CDP企业版的完整能力体系,包括:○ 基础访问分析○ 多维事件分析/漏斗○ 用户标签/画像/细查○ 用户分群/群画像对比企业在推进信创建设的同时,依然能够保留完整的数据分析能力体系。 三、信创场景下,不同方案的差异在信创场景下,不同类型的方案,在部署方式、适配能力与实施成本上可适配性、数据安全与分析能力上的差异非常明显。以下对比基于实际项目中的典型方案整理: 四、ClkLog信创方案适用场景ClkLog 信创版本适用于以下类型的需求场景:✓ 正在推进信创方案选型的企业✓ 对数据安全、私有化部署有要求的企业✓ 希望构建自有用户行为分析体系的团队✓ 需要兼顾分析能力与国产化适配的项目场景 在信创趋势下,数据平台的国产化不仅仅是“替换组件”,更重要的是——分析能力本身不能缺失。用户行为分析作为连接产品、运营与用户的重要能力,也需要有一套真正能够落地的国产化实现方案。ClkLog信创版本,正是我们在这一方向上的一次实践。如果您正在关注用户行为分析系统的国产化建设,或对用户行为分析系统的国产化方案感兴趣,欢迎与小秘书进行交流。
-
各位开发者朋友们!OpenTiny NEXT 系列产品(NEXT SDK / TinyRobot / GenUI SDK / AI Extension / WebAgent 等)已陪伴大家走过一段时间。为了更精准地解决实际开发中的痛点,我们正式启动 2026 年度用户体验调研。⏰ 调研时间: 即日起至 2026年6月15日🎯 面向对象: 正在使用或曾使用过 OpenTiny NEXT 的开发者🎁 参与福利: 完成问卷的用户将有机会获得 OpenTiny 定制周边🔗 立即参与: cid:link_0💬 反馈直达: 填写后如有补充,欢迎 @OpenTiny小助手或在本帖留言每一条反馈都会进入产品需求池,直接影响后续版本规划。期待听到你的真实声音!
-
某国企在选型用户行为分析系统时,遇到了一个很现实的问题:几家厂商都表示“支持信创”,系统也确实可以运行在国产操作系统之上。但当进一步深入询问时:● 是否支持内网环境的独立部署? ● 是否可以适配国产数据库方案? ● 数据从采集到分析,是否具备可追踪与审计能力? 很多方案开始变得不那么清晰。这其实是信创选型中一个非常典型的现象:在信创环境下,系统“能运行”,只是起点,而不是判断标准。 一、什么是信创?从实践角度看,信创的核心在于:在关键基础设施中,实现软硬件体系的自主可控与国产化适配,确保系统在安全、供应链和运维层面具备长期可持续性。因此,信创关注的并不仅是“能否运行”,而是:● 是否具备自主可控能力● 是否适配国产软硬件生态● 是否满足安全与合规要求 二、如何理解“适配信创”的系统?在实际选型中,一个常见误区是:能在国产环境运行 ≠ 适配信创结合项目经验,一套更具可落地性的判断思路,可以从以下几个方面来看: 1. 是否具备独立运行能力不仅是“可以部署”,更重要的是:✧ 支持在内网环境中独立运行✧ 不依赖外部云服务✧ 出现问题时,具备本地可排查、可定位能力 这决定了系统在封闭环境中的可用性与稳定性。 2. 是否适配国产技术生态信创环境下,技术选型往往受到约束,例如数据库、中间件等。更现实的要求是:✧ 能够适配主流国产数据库与中间件✧ 架构上具备一定灵活性,避免强绑定单一技术栈 ✧ 在替换底层组件时,不需要大规模重构业务能力✧ 支持随着国产生态变化进行持续适配,而不是一次性适配 以分析型数据库为例,像 Apache Doris 这类引擎可以作为分析层的一种选择,但在信创环境中,往往还需要结合具体国产数据库生态进行整体设计。 3. 数据链路是否可观测、可审计用户行为分析系统,本质是一条完整的数据链路:采集 → 传输 → 存储 → 分析 在信创场景下,更关注的是:✧ 数据来源是否清晰 ✧ 数据流转是否可追踪 ✧ 数据使用是否可审计 ✧ 在业务规则变化时,链路结构是否可以调整(如新增采集点/调整分析维度) 也就是说,不仅要“能看结果”,还需要对关键数据链路具备可控性与透明度。 三、为什么在用户行为分析场景中更容易出现问题?相比单点工具,用户行为分析系统涉及多个环节协同:数据采集(SDK / 埋点)、数据传输、数据存储、数据分析 在一些以云为中心设计的系统中,常见情况包括:● 采集在本地,但分析依赖云端能力 ● 数据可以使用,但链路不够透明 ● 在特定环境中可用,但迁移后成本较高 在信创环境下,这些问题会被进一步放大。 四、一个更可落地的判断方式从选型角度,可以用更务实的标准来评估系统:1) 数据是否运行在自身可控的体系内2) 系统架构是否具备一定的可调整与适配能力3) 在环境变化(如国产化替换)时,核心分析能力是否仍然可用 4) 系统是否具备开放性与可持续演进能力。 开放性 + 可定制能力 + 可持续演进能力,往往比功能本身更重要。能够满足这些条件的系统,通常更容易在信创环境中长期稳定运行 五、为什么部分系统难以满足这些要求?这与系统的设计起点密切相关。不少用户行为分析产品最初是围绕云化场景构建的:● 强依赖云端计算与服务能力 ● 技术栈相对固定 ● 数据链路相对封闭 而信创环境,更强调:本地化部署能力 + 架构可控性 + 技术生态适配能力 这两种设计思路之间,天然存在一定差异。 六、换个角度看选型问题在信创环境中选择用户行为分析系统,本质上是在判断:这套系统,是否能够在既定技术约束下,长期稳定运行,并始终支持业务变化下的持续调整能力。这不仅是产品能力问题,也是架构设计问题。 七、一种实践思路(以 ClkLog 为例)以 ClkLog 的设计思路为例,其关注点不局限于单一分析功能,而是围绕用户行为数据的完整链路进行设计:✓ 数据从采集到分析全链路本地化部署,可在信创环境中独立运行 ✓ 在架构上支持适配多种数据库方案,可根据国产化要求灵活替换适配✓ 分析模型与底层环境解耦,在系统迁移或升级时可降低调整成本✓ 产品采用开放架构设计,支持基于业务需求进行扩展与二次开发,实现长期业务演进能力 在强调“自主可控与国产化适配”的信创环境中,这类设计思路通常更容易落地。 结语在信创背景下,用户行为分析系统的选型标准,正在从“功能是否完善”,转向:系统是否真正可控、可适配、可持续运行,并具备随业务变化的持续演进能力。这也是判断一套系统能否长期支撑业务的关键。
-
前言携手共创,致敬不凡!2025年,OpenTiny持续在前端开源领域扎根,每一位开发者都是推动项目共同前行的宝贵力量。从bug修复,到技术探讨;从参与开源活动,到输出技术文章;从使用项目,到参与共建,每一步跨越,都凝聚了开发者的智慧与汗水。致敬所有在OpenTiny社区里默默付出、积极贡献、引领创新的杰出个人,我们正式启动“OpenTiny年度贡献者评选”活动!快为你喜爱的人气贡献者投票吧~人气贡献者评选名单公布:年度贡献者投票评选时间:2025年12月25日-2025年12月31日投票规则:每人每天可回答3次,每次最多可投2票,最终投票结果选取前5名投票入口:cid:link_0关于OpenTiny欢迎加入 OpenTiny 开源社区。添加微信小助手:opentiny-official 一起参与交流前端技术~OpenTiny 官网:https://opentiny.designOpenTiny 代码仓库:https://github.com/opentinyTinyVue 源码:https://github.com/opentiny/tiny-vueTinyEngine 源码:https://github.com/opentiny/tiny-engine欢迎进入代码仓库 Star🌟TinyEngine、TinyVue、TinyNG、TinyCLI~ 如果你也想要共建,可以进入代码仓库,找到 good first issue标签,一起参与开源贡献~
-
前言携手共创,致敬不凡!2025年,OpenTiny持续在前端开源领域扎根,每一位开发者都是推动项目共同前行的宝贵力量。从bug修复,到技术探讨;从参与开源活动,到输出技术文章;从使用项目,到参与共建,每一步跨越,都凝聚了开发者的智慧与汗水。致敬所有在OpenTiny社区里默默付出、积极贡献、引领创新的杰出个人,我们正式启动“OpenTiny年度贡献者评选”活动!欢迎各位开发者踊跃报名~活动详情活动简介:本次活动主要是通过开发者申报+社区评选+开发者投票形式开展,入选开发者后续可获得相应活动礼品。本次活动一共设置 4 类奖项。“技术炼金师”(参与共建)、“布道魔法师”(参与分享)、“社区宝藏玩家”(参与社区讨论) 三个类目奖项通过投票评选获奖选手,本次投票共选出5名获奖选手,按照名次顺利依次给予相应奖励。“技术硬核奖”则由社区自主根据实际共建情况评选 2 位,获得机械键盘/蓝牙音响(2选1)及荣誉证书活动奖品:荣誉奖项礼品第一名技术炼金师布道魔法师社区宝藏玩家机械键盘 / 蓝牙音响(2选1) +荣誉证书第二名华为 66W 快充充电宝+荣誉证书第三名BKT 护腰坐垫椅+荣誉证书第四/五名屏幕挂灯+荣誉证书社区优秀共建者技术硬核奖机械键盘 / 蓝牙音响(2选1) +荣誉证书活动时间:年度贡献者征集时间:2025年12月17日-2025年12月24日年度贡献者投票评选时间:2025年12月25日-2025年12月31日报名入口:https://v.wjx.cn/vm/tdGJdjR.aspx#关于OpenTiny欢迎加入 OpenTiny 开源社区。添加微信小助手:opentiny-official 一起参与交流前端技术~OpenTiny 官网:https://opentiny.designOpenTiny 代码仓库:https://github.com/opentinyTinyVue 源码:https://github.com/opentiny/tiny-vueTinyEngine 源码: https://github.com/opentiny/tiny-engine欢迎进入代码仓库 Star🌟TinyEngine、TinyVue、TinyNG、TinyCLI、TinyEditor~如果你也想要共建,可以进入代码仓库,找到 good first issue 标签,一起参与开源贡献~
-
引入协程背景有大量的异步业务逻辑, 传统的回调代码割裂, 可读性差, 不可避免的回调地狱简化编码复杂度,希望底层能够支持协程, 简化跨线程或者实现rpc的能力项目Github: CrystalNetCrystalNet支持C++20, 包括requires, 协程等特性协程框架是CrystalNet的一个底层支持协程源码路径:kernel/include/kernel/comp/Coroutines测试case: TestCoroutine.h/TestCoroutine.cpp TestPoller.h/TestPoller.cpp细节介绍封装一个通用的协程类template<typename T> class CoTask<T>封装一个阻塞等待类CoWaiter,并提供阻塞等待接口:CoTask<> Waiting(), 用于等待条件满足时唤醒协程设计封装了一个Poller,主要用于处理事件循环, 协程的suspend时候会向Poller抛异步任务调度协程, 直到在CoWaiting时永久阻塞CoTask提供GetParam让用户在协程阻塞时获取到协程句柄,方便用户在条件满足时通过协程句柄唤醒协程Poller提供SendAsync接口实现跨线程的通信(协程方式提供)// 跨线程协程消息(otherPoller也可以是自己) // req暂时只能传指针,而且会在otherChannel(可能不同线程)释放 // req/res 必须实现Release, ToString接口 template<typename ResType, typename ReqType> requires requires(ReqType req, ResType res) { // req/res必须有Release接口 req.Release(); res.Release(); // req/res必须有ToString接口 req.ToString(); res.ToString(); } CoTask<KERNEL_NS::SmartPtr<ResType, AutoDelMethods::Release>> SendToAsync(Poller &otherPoller, ReqType *req) { // 1.ptr用来回传ResType KERNEL_NS::SmartPtr<ResType *, KERNEL_NS::AutoDelMethods::CustomDelete> ptr(KERNEL_NS::KernelCastTo<ResType *>( kernel::KernelAllocMemory<KERNEL_NS::_Build::TL>(sizeof(ResType **)))); ptr.SetClosureDelegate([](void *p) { // 释放packet auto castP = KERNEL_NS::KernelCastTo<ResType*>(p); if(*castP) (*castP)->Release(); KERNEL_NS::KernelFreeMemory<KERNEL_NS::_Build::TL>(castP); }); *ptr = NULL; // 设置stub => ResType的事件回调 UInt64 stub = ++_maxStub; KERNEL_NS::SmartPtr<KERNEL_NS::TaskParamRefWrapper, KERNEL_NS::AutoDelMethods::Release> params = KERNEL_NS::TaskParamRefWrapper::NewThreadLocal_TaskParamRefWrapper(); SubscribeStubEvent(stub, [ptr, params](KERNEL_NS::StubPollerEvent *ev) mutable { KERNEL_NS::ObjectPollerEvent<ResType> *finalEv = KernelCastTo<KERNEL_NS::ObjectPollerEvent<ResType>>(ev); // 将结果带出去 *ptr = finalEv->_obj; finalEv->_obj = NULL; // 唤醒Waiter auto &coParam = params->_params; if(coParam && coParam->_handle) coParam->_handle->ForceAwake(); }); // 发送对象事件 ObjectPollerEvent到 other auto iterChannel = _targetPollerRefChannel.find(&otherPoller); if(LIKELY(iterChannel != _targetPollerRefChannel.end())) { auto objEvent = ObjectPollerEvent<ReqType>::New_ObjectPollerEvent(stub, false, this, iterChannel->second); objEvent->_obj = req; iterChannel->second->Send(objEvent); } else { auto objEvent = ObjectPollerEvent<ReqType>::New_ObjectPollerEvent(stub, false, this, nullptr); objEvent->_obj = req; otherPoller.Push(objEvent); } // 等待 ObjectPollerEvent 的返回消息唤醒 auto poller = this; // 外部如果协程销毁兜底销毁资源 auto releaseFun = [stub, poller]() { poller->UnSubscribeStubEvent(stub); }; auto delg = KERNEL_CREATE_CLOSURE_DELEGATE(releaseFun, void); co_await KERNEL_NS::Waiting().SetDisableSuspend().GetParam(params).SetRelease(delg); if(LIKELY(params->_params)) { auto &pa = params->_params; if(pa->_errCode != Status::Success) { g_Log->Warn(LOGFMT_OBJ_TAG("waiting err:%d, stub:%llu, req:%p") , pa->_errCode, stub, req); UnSubscribeStubEvent(stub); } // 销毁waiting协程 if(pa->_handle) pa->_handle->DestroyHandle(pa->_errCode); } // 3.将消息回调中的ResType引用设置成空 auto res = *ptr; *ptr = NULL; co_return KERNEL_NS::SmartPtr<ResType, KERNEL_NS::AutoDelMethods::Release>(res); } 提供异步化工具函数: PostCaller异步编码举例代码在测试用例:TestPoller, 示例中实现了co_await 请求一个req,并返回一个resclass TestTimeoutStartup : public KERNEL_NS::IThreadStartUp { POOL_CREATE_OBJ_DEFAULT_P1(IThreadStartUp, TestTimeoutStartup); public: TestTimeoutStartup(KERNEL_NS::LibEventLoopThread * target) : _target(target) { } virtual void Run() override { KERNEL_NS::PostCaller([this]() mutable -> KERNEL_NS::CoTask<> { auto targetPoller = co_await _target->GetPoller(); auto req = HelloWorldReq::New_HelloWorldReq(); auto res = co_await targetPoller->template SendAsync<HelloWorldRes, HelloWorldReq>(req).SetTimeout(KERNEL_NS::TimeSlice::FromSeconds(5)); g_Log->Info(LOGFMT_NON_OBJ_TAG(TestTimeoutStartup, "res return")); }); } virtual void Release() override { TestTimeoutStartup::Delete_TestTimeoutStartup(this); } KERNEL_NS::LibEventLoopThread * _target; };
上滑加载中
推荐直播
-
华为云码道Skill实战与极速交付,智能开发全链路实战2026/07/22 周三 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;姜浩-华为云HCDG核心组成员
直播深度解读华为云码道6月产品新特性,从Skill市场安装专家技能,带你零距离体验从需求,开发,审查,重构全链路闭环的开发过程。从零构建并交付一个完整项目,让您体验从代码提交到服务上线的“极速”之旅。
回顾中 -
聚开发者之力,创具身新未来2026/07/23 周四 15:00-17:00
张豪杰/程文/王军/刘新春/黄钦开 /张晓天
本次华为云具身智能开发平台CloudRobo培训面向具身智能开发者,带您全流程体验机器人本体R2C小时级接入、环境重建与轨迹生成仿真数据生产、PB级数据管理、数据评测、模型训推、强化学习和Benchmark一键评测等功能,并体验业界主流具身模型应用。
回顾中
热门标签