news 2026/9/17 5:01:49

CPS系统技术选型实战:边缘计算、数据链路与实时架构设计全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CPS系统技术选型实战:边缘计算、数据链路与实时架构设计全解析

做一个CPS项目选型的时候,我曾经天真地以为最难的是算法,是控制策略,是数据处理。真正推进之后才意识到,系分和架构设计才是决定项目天花板的那道坎。所谓"CPS系统技术选型",本质上不是挑几个数据库、选几个框架那么简单,而是要回答一个灵魂拷问:物理世界的实时性,和数字世界的通用性,到底怎么在一条技术链路上共存?

这篇文章不聊概念,直接讲我在实际项目中踩过的坑、做过的方案对比、算过的带宽账。适合正在做产线智能化、设备联网、边缘控制、以及智能制造领域架构设计的工程师和架构师参考。你会看到从感知层到执行层,从MCU到云平台,一条完整的选型脉络,以及每个关键决策背后的计算逻辑和妥协。想要直接抄方案的人,这里面的经验你可以直接拿去评审;想要理解"为什么这么选"的人,这篇文章也不会让你失望。

1. 系分先于选型:CPS系统的边界怎么划才不翻车

做技术选型最忌讳一上来就开会讨论"用MySQL还是Oracle""上不上K8s"。CPS这种系统尤其如此,因为它横跨物理域和信息域,边界划错,后面每一步都是在给错误买单。

1.1 先把CPS的四段链路画出来

我习惯把CPS系统按照数据流切成四段:物理实体层(设备、执行器)、感知采集层(传感器、PLC、边缘IO)、网络传输层(现场总线、工业以太网、无线)、计算决策层(边缘控制器、服务器、云平台)。每段之间的接口定义,决定了你后续要选什么技术。

举个例子,一条装配线有几十台拧紧枪、扫码枪和气缸传感器,物理实体层产生的数据是布尔量、扭矩值、位移量;感知采集层用分布式IO模块把这些信号变成Modbus寄存器或者EtherCAT报文;网络传输层把它们汇聚到边缘控制器;计算决策层做质量判定和数据追溯。这条链路的每一跳,延迟和可靠性要求都不一样,选型时不能一把尺子量到底。

1.2 边界划分的三个原则

第一,按控制闭环切。凡是参与实时控制回路的(比如伺服定位、压力闭环),必须在现场层闭环,不允许数据先上云端再回来;凡是只做监控和回溯的(比如产量统计、设备OEE),可以放边缘或者云。这两类需求对通信和计算的要求天差地别。

第二,按生命周期切。设备固件升级、参数下发属于低频但高可靠操作,和毫秒级的实时数据采集逻辑要分开设计。这就是为什么很多系统里会单独有一条OTA和配置管理的通道,而不是复用实时数据链路。

第三,按数据所有权切。工艺参数、质量数据是企业的核心资产,必须在边缘侧有完整副本;原始波形和原始报文则可以根据价值决定是否上云。数据层没有边界规划,后期存储成本会失控。

我在这上面吃过大亏。最初做方案时没有把控制闭环和数据上云分开,直接走"设备→网关→MQTT→云端算法→结果下发"这条链路,结果云端一个GC停顿或者网络抖动,产线就得停摆。后来老老实实把PID闭环放在PLC里,云端只做参数优化建议,问题才解决。这段经历让我明白,技术选型的起点,永远是先分清哪些环节能容忍延迟、哪些环节一毫秒都不能多等

1.3 通过数据流图暴露真正的选型清单

边界划分完成后,画一张完整的数据流图,从物理量采集、模数转换、协议封装、网络传输、边缘解析、云端存储,到反向的控制指令下发。每一段都标注出:数据量大小、频率、允许的最大延迟、可靠性要求。这张图画完,选型清单就自己浮出来了:

  • 采集层:多大的采样率?需要多少IO点?是否要支持热插拔?
  • 传输层:多少个节点?单节点数据量?总线周期要求?
  • 计算层:需要在边缘跑什么算法?模型多大?实时性要求?
  • 存储层:每天产生多少数据?需要保存多久?是否需要跨站点分析?
  • 管理面:设备如何被发现?固件如何升级?证书如何管理?

我不太相信那种"先在白板上画个架构图再往下填技术"的思路,更实用的做法是让数据流和需求清单倒逼技术选择。CPS牵扯的技术面太广,没有这个前置过程,选型会议就是各说各话——搞嵌入式的想要裸机+RTOS,搞IT的想要Docker+K8s,谁都说服不了谁。

2. 通信链路选型:走Modbus还是走TSN,先算一笔账

通信是CPS的血管,也是选型中坑最多的环节。很多团队在这里犯的错误是"跟风":看到别人用OPC UA就跟着用,看到互联网公司推MQTT就觉得先进。实际上CPS的通信选型,核心看三件事:实时性、互操作性和数据量。

2.1 现场总线和工业以太网的实时性对比

技术典型延迟传输距离/节点规模适用场景
Modbus RTU/TCP10ms~100ms串口短距,TCP可达百节点简单传感器采集、老旧设备兼容
Profinet IRT1ms级百节点级运动控制、高速产线
EtherCAT数百微秒级百节点级(理论上65535)伺服运动控制、高同步需求
TSN(802.1Qbv等)亚毫秒级支持大规模网络多协议混合、跨交换机实时传输
5G URLLC1ms~10ms(空口)大范围移动场景AGV、移动机器人

做选型时我在EtherCAT和TSN之间纠结了很久。EtherCAT生态成熟,伺服驱动器、IO模块接上就能用,但它是"一主多从"的集中式架构,灵活性差;TSN是标准以太网的扩展,能承载多种协议流量共存,但交换机、端点设备和支持的软件栈要贵不少。

最后怎么定的?看生产现场到底有没有"跨交换机的时间敏感数据"需求。如果所有实时控制都在一台设备内闭环,EtherCAT完全够用,还能省一半预算;只有当实时控点分布在多个机台、多个子网,需要跨越交换骨干网时,TSN才有真实的落地价值。钱要花在矛盾最尖锐的地方,而不是花在概念最先进的地方

2.2 无线补位:Wi-Fi 6、5G和LoRa的定位并不冲突

很多CPS场景绕不开无线,尤其是AGV、移动巡检和旋转体监测。这里我给的选型建议是分场景并行:

  • 产线上位置相对固定、但线缆不便部署的传感器(比如旋转臂上的振动传感器),用Wi-Fi 6;2.4GHz/5GHz双频,加密和漫游比传统Wi-Fi 4可控得多。
  • 厂区内长距离移动设备(AGV、叉车),优先考虑5G专网或运营商切片;注意这里要求的不是"快",而是切换时延低、丢包率可控。
  • 高分散、低频次、低功耗的资产追踪和环境监测(温湿度、震动、门磁),LoRa或LoRaWAN更合适。

举一个实际场景的算账过程:一个AGV调度系统,50台AGV,每台每秒上报位置、状态、电池电压,单帧200字节,还包含一个200KB的激光点云的心跳快照和实时局部地图。Wi-Fi 6下的每台AGV吞吐约3Mbps,50台约150Mbps,单个AP的极限吞吐大概600Mbps(实际打六折),所以一个AP覆盖3到4台AGV是可行的,单用5G反而成本划不来。

2.3 协议栈选型:MQTT、OPC UA还是Modbus,数据语义比传输方式更重要

聊完链路层,还必须有应用层协议。我踩过一个典型的坑:现场装配设备走Modbus TCP,网关把寄存器地址映射成JSON走MQTT上云,结果每次新增一个设备型号,映射表就要改一遍,现场调试工程师和云端开发工程师来回扯皮。

后来换成OPC UA,信息模型直接把设备类型、参数语义、单位、报警条件都描述清楚,网关只做一个协议转换,云端和MES不用再被"寄存器地址=数据含义"这种脆弱绑定折磨。我的建议很明确:

  • 设备内部或PLC与IO之间,爱用什么用什么,Modbus、CANopen都行,这层链路短、语义需求低。
  • 设备与边缘计算之间,尽量用OPC UA,语义化好、跟踪诊断方便。
  • 边缘与云之间,MQTT更务实,轻量、异步、对弱网容忍度高。

没必要盲目追求"全链路协议统一"。链路短的地方,简单粗暴就是高效;跨系统集成的地方,语义和标准才是王道,各层选各层该用的,这本身就是架构能力。

3. 控制与计算架构:边缘侧要"独当一面",别把鸡蛋全放云端

CPS的控制与计算架构,得失成败全在"边缘与云端的切分"。方案评审时云厂商喜欢说"全部上云,中心化管理",供应商喜欢说"全部下沉到边缘,本地闭环"。我的经验是,两种极端都走不通,但一定要倾向于**"边缘自治优先,云上做强决策"**。

3.1 为什么CPS不能纯走云

回程通信总会有延迟、抖动和中断,这是物理约束,不是优化能解决的。如果控制系统依赖云端闭环,网络一断全线停摆,这在工厂是绝对不可接受的。因此在CPS架构中,边缘侧的边缘控制器必须拥有独立完成实时闭环、基本联锁保护和异常停车的能力;云端负责模型训练、全局优化、跨产线调度和长期数据洞察。

我做过一个注塑车间的案例:边缘计算节点就地闭环控制注塑机的温度回路,用PID配合前馈,周期50ms,现场总线直接控制加热棒和热电偶。云端每天做一次参数寻优,把新的PID参数下发到边缘节点。网络断掉的一天一夜里,设备照常生产,只是参数不再优化,这就是边缘自治的价值。

3.2 边缘计算节点的选型:嵌入式Linux、RTOS还是PLC

这个选择背后的逻辑是"你接受什么样的实时性、能接受什么样的开发效率"。我把它们拆开来看:

  • PLC:可靠性最高、现场工程师最熟,但算法能力弱,不适合跑视觉或复杂模型。适合作为执行层单元,管理IO和联锁。
  • RTOS(FreeRTOS、Zephyr、RT-Thread):任务调度时间可控,适合确定性要求高的固件级控制,但上层生态弱,很多数据处理框架跑不起来。
  • 嵌入式Linux(Yocto、Debian裁剪、或商业发行版):生态丰富,Python、C++、Node-RED都能跑,能承担"边缘计算"职责,但实时性要靠PREEMPT_RT、Xenomai或者与RTOS共存来弥补。

如果一个CPS系统既要运动控制又要图像识别,我不会强求一块板子全扛下来。运动控制交给STM32或者PLC,视觉识别和工艺优化交给一块带GPU或NPU的嵌入式Linux板卡,两者之间通过共享内存或者CAN/以太网完成数据交互。分层解耦,比在一块板子上追求全能更安全

3.3 微服务还是模块化单体:工业场景的务实选择

行业里"微服务"热度很高,很多做CPS的团队一上来就要拆微服务、上K8s。但在工业现场我第一次选型时坚持用了模块化单体+独立守护进程的架构,为什么?

CPS边缘节点的负载往往是"固定的几件事":数据采集、协议转换、实时控制、状态上报。这些任务的边界相对清晰,且硬件资源有限。拆成十几个微服务,先不说容器开销,光服务间通信和版本兼容就能让现场工程师崩溃。模块化单体内聚度高、部署简单、占用资源小,每个模块以独立进程或动态库的方式拆分,已经能够满足绝大多数需求。

那什么时候引入微服务?当出现多个边缘节点需要统一管理、统一配置下发、按需扩展算法时,中心侧的管理平台可以走微服务架构,边缘侧保持轻量。边缘重自治,中心重编排,这个分工比"全微服务"要务实得多。

3.4 确定性调度与实时操作系统的引入时机

CPS选型进入深水区后必然会遇到确定性问题:同样是Linux下的一个采集线程,为什么有时候3ms跑完,有时候30ms才跑完?因为Linux默认调度器不保证硬实时。这时候你有两条路:

  • 引入Preempt RT补丁,让内核线程和用户态任务都可以被高优先级抢占,解决大部分软实时问题。
  • 如果连"微秒级误差"都不能接受(比如同步采样、精确联动),那就得让实时核心跑RTOS,负责硬实时任务;普通核心跑Linux,负责复杂逻辑和网络通信。这就是异构核(ASMP)架构的典型形态,也是很多工业控制器采用双核/多核的原因。

我有一块板子,四核A53,两核跑Linux,两核跑RTOS,中间通过共享内存和Mailbox通信。刚开始觉得这种设计多余,调试时被打脸了不止一次:一个在Linux上跑起来挺顺的振动监测算法,放到实时核心上后,采样抖动直接从几十微秒降到几微秒,FFT频谱干净了不止一点。实时性是CPS里"再做一次会感谢自己"的决策

4. 数据层选型:MySQL、时序库和大内存方案该怎么拼

数据层是CPS系统最容易"后期爆炸"的地方。前期数据量看起来不大,一旦系统上线,时序数据的增长速度会超出大多数人的预期。这块的选型思路,我总结为"分层存储、各司其职"。

4.1 先算清楚数据规模,再谈数据库选型

以我经手的卷烟厂设备的健康监测系统为例:设备上有200个测点,每个测点采样率1kHz,每个采样值8字节。那么每秒产生的数据量为200×1000×8=1.6MB/s,一天约138GB。如果再加上工艺数据和事件日志,一天存储量逼近200GB。在这种规模下,传统MySQL的按行插入和二级索引直接性能崩溃。

实用做法是"三级存储":

  • 实时层(边缘):只保留最近7天的原始波形和快照,用高性能时序引擎,内存索引+SSD落盘,支撑实时查询。
  • 分析层(中心):每天上传趋势值、统计特征(均值、峰值、FFT特征)和异常事件,数据量锐减到原始数据的5%以内。
  • 归档层(冷存储):原始数据压缩后按周期归档至对象存储或磁带,用于事后审计和算法演进。

4.2 时序库选型:TDengine vs InfluxDB vs 自研

工业CPS场景我重点对比过三套时序库:

时序库优点缺点适用场景
InfluxDB生态成熟、文档多、易上手单机写入上限、高可用需企业版中小规模、快速Demo
TDengine国产开源、写入强劲、自带超级表生态相对较窄、复杂查询能力有限大规模设备接入、数据量大
TimescaleDB基于PostgreSQL、SQL能力强压缩和高性能依赖磁盘资源已有PG团队、复杂分析

我最终在项目里选了TDengine,理由是工业测点天然就是"时间戳+标签+数值"的结构,TDengine的超级表模型与这个场景高度匹配,并且数据的保留策略和自动清理省去了大量运维工作。如果团队对SQL非常依赖,需要和业务数据做大量关联查询,TimescaleDB更顺手。每个团队背景不同,选型结果应该不同。

4.3 MySQL仍然有一席之地,但定位要清晰

很多人一听"工业大数据"就觉得MySQL该退场了,这是误解。设备的资产台账、报警规则配置、用户权限、维护工单,这些结构化业务数据MySQL依然是性价比最高的选择。关键在于不要让业务库承担时序数据

在边缘节点上,我常用SQLite和MySQL并存:SQLite管理本地配置和短时日志,MySQL(或PostgreSQL)放在中心侧管理业务模型。边缘节点离线时数据写到本地SQLite,网络恢复后再按增量模式同步到中心侧MySQL,既保障了数据不丢,又避免边缘节点对中心库产生过大压力。

另外,与热词"大内存架构"对应的情况:当系统对实时查询要求很高、比如需要用历史数据做快速回溯时,我会在边缘节点引入Redis或内存数据库缓存最近一段时间的热数据。注意,缓存的作用是加速查询,不是持久化,存储字段、过期策略和落盘逻辑必须提前设计好,否则边缘节点一重启就"失忆",运营人员会疯掉。

4.4 数据压缩与采样策略:决定存储成本的隐形边界

数据量算出来之后,千万别急着扩容服务器,先做"降采样+无损/有损压缩"两层优化。例如振动原始信号以1kHz采样,但对绝大多数轴承故障特征,只需要保留0-200Hz频段,那么直接降采样到500Hz就能大幅减少存储量;更进一步,仅保存每个时间窗的均方根值、峰值因子等特征值,数据分析照样够用。

压缩算法上,工业数据有较强的时间相关性,使用压缩算法(比如delta-of-delta、Simple-8b或列存的压缩)可达到3-5倍压缩比。加上降采样和只保留特征,最终可能只用原始数据1/20的存储量。预算从"加三台服务器"变成了"加一块大容量SSD",这就是技术选型对TCO的直接价值。

5. 设备端架构:从C51到应用处理器,固件设计比选型本身更关键

很多做CPS方案的人把注意力放在云端和边缘平台上,忽略了一个事实:所有数据的源头都在设备端,设备端固件架构决定了数据质量和系统稳定性。这里结合CPS里最常见的MCU应用场景展开讲。

5.1 MCU选型:C51、STM32和应用处理器怎么分工

从热词中能看到不少关于C51单片机串口升级架构、stm32系统架构的讨论。这确实是设备端绕不开的话题。

低端场景(比如一个温度传感器、一个限位开关),C51或等效8位MCU依然够用,成本能做到几块钱,开发简单。但是一旦涉及Bootloader升级、多中断嵌套、协议栈处理,C51的资源和架构就捉襟见肘了。所以我对新项目的建议是:除非成本极其敏感,否则32位MCU(如STM32/GD32)起步。Cortex-M系列有完整的中断向量表、硬件浮点和丰富外设,固件架构能支撑更复杂的CPS协议栈。

举个具体的场景:我们做了一批环境采集终端,最初选了一款8位MCU,跑Modbus RTU和MQTT协议栈(通过串口转Wi-Fi模块)已经接近极限,77%的Flash和87%的RAM被占满。后来切换到一个主频96MHz的Cortex-M0+,Flash翻两倍,RAM翻四倍,同样代码量占用掉一大截,还顺便给OTA升级留了空间。在设备端,资源余量就是工程释压阀

5.2 Bootloader与App的中断处理架构

嵌入式开发里"Boot和App都用到同一个串口中断"这个问题,几乎每个项目都会遇到。C51时代一个串口中断函数里既要跑升级逻辑又要跑业务逻辑,冲突是常态。升级到Cortex-M后,我通常这样设计:

  • Bootloader仅支持固定的外设(当前周期内只开一个UART用于接收固件),用中断向量表重映射(如通过VTOR寄存器)把App的中断向量放到App起始地址。
  • App运行过程中,Bootloader完全不运行;进入升级模式时通过设置标志位并软复位,重启后Bootloader优先读取标志位,进入固件接收和烧写流程。
  • 双A/B分区升级:App分为A/B两个区,升级时写非活动分区,写完校验CRC/签名,然后切换启动分区。这样即使升级写一半掉电,系统也能从另一个分区正常启动。

这个设计让我从"半夜三点去现场用烧录器救砖"的窘境里彻底解放出来。设备端固件的恢复能力,直接影响CPS系统整体的可用性。如果你做的设备还停留在"一线只有一套固件、升级失败就变砖"的阶段,再狠的云端架构也救不了它的运维口碑。

5.3 设备端的"最后一公里"协议解析

从CPS选型角度看,设备端协议栈要考虑到边缘侧的解析能力。很多设备数据在总线上传输时为了省流量使用了极其紧凑的位域编码,比如把8个IO状态打包进一个字节,边缘侧解析时要写一堆位运算。这种做法的维护成本远高于省下的那几十个字节流量。

除非有硬性的带宽或延迟要求,否则我建议设备端尽量把数据组织成"结构体对齐、字段语义明确"的格式(比如protobuf、或带Tag的JSON),在Cortex-M4及以上的MCU上解析成本完全可以接受。现代CPS系统的瓶颈很少在带宽,而经常在调试维护的人效上,设备端主动降低数据解析难度,就是给整个系统减压。

5.4 交叉编译与工具链的常见误区

热词里也提到了交叉编译。做ARM架构设备端开发时,不少团队还在沿用x86开发习惯,直接在Arm板上编译,或拿错误的工具链编译。我建议:开发机上用统一的交叉编译工具链(如arm-none-eabi-gcc或aarch64-linux-gnu-gcc),与目标板宿主机内核版本保持一致的glibc,同时用CMake做工具链文件管理,这样团队切人重新拉一个构建环境不会踩版本坑。另外编译参数务必开启-O2-ffunction-sections -fdata-sections,配合--gc-sections能显著减少固件体积,对MCU场景特别有用。

6. 选型评审阶段我反复问自己的四个问题

技术选型真正难的不是知道那些技术存在,而是在评审时能识别出"美丽陷阱"。我把自己的选型评审经验集中成四个问题,每次过方案都拿出来问一遍。

6.1 这个技术,三年后团队维护得起吗?

很多技术方案从能力上完美,但团队不具备长期维护能力。比如引入一套自研的实时调度器,当时性能异常惊艳,但原创作者一离职,后面没有人能改得动。我宁可选择有活跃社区或商业背书的方案,也不鼓励核心系统依赖某个"高手个人作品"。工业CPS系统通常要运行10年以上,技术选型不是赢一场比赛,而是找一个能长期陪你走的队友。

6.2 出问题的时候,能不能快速定位?

分布式的中间件一大堆,但大多数CPS故障最终表现为"数据不对""指令没到""延迟突然变高"。因此我会在选型阶段就关注系统的可观测性能力:链路是否可控?日志是否结构清楚?能否按设备维度快速检索?如果一套架构数据流转过程是"黑盒",哪怕技术再先进,在产线排障时也会变成灾难。选型报告里必须包含可观测性设计说明。

6.3 安全性和版本升级怎么保证?

CPS系统的安全不只是"防止黑客攻进来",还包括:设备证书怎么管理?固件如何安全加签?配置变更如何回滚?以及,系统运行两三年后,操作系统和第三方库的漏洞谁来更新?没有安全升级机制的CPS系统,本身就是一颗定时炸弹。关于"14个漏洞的可执行程序"那种案例,现实里每天都在发生,架构评审时必须把供应链安全纳入选型指标。

6.4 预算之外,是否还有隐含成本?

直观成本是硬件费用和软件许可证,但隐含成本通常更致命:新增一台边缘节点后的运维开销、为跑新算法引入的GPU/NPU、边缘节点上服务配置变更带来的停机损失。这些隐含成本在方案评审时往往被低估。我的做法是为每个候选方案做一次"三年总成本"估算,明确列出硬件更换周期、人工维护时数和停机窗口,对比起来一目了然。


做CPS系统这么久,我最大的体会是:技术选型没有标准答案,只有基于场景的取舍。别人推荐的好技术,放到你的物理环境、团队能力、项目周期里可能完全不适用。真正扎实的做法就是把边界划清楚——哪些环节要硬实时,哪些环节允许等待;哪些数据要全量保留,哪些只要特征值;哪些能力必须自治,哪些可以依赖云端——你有清晰的边界,技术选型就变成了一个求解约束问题的过程,而不是开盲盒。

如果看完这篇你只记住一句话,我希望是:CPS的技术选型,本质上是为"物理确定性"和"数字灵活性"之间搭一座配得上场景的桥。桥面选什么材质不重要,重要的是它承得住你要过的人和货。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 5:01:07

装箱平台本质是供应链协同决策中枢

1. 装箱平台不是“打包软件”,而是供应链协同的神经中枢很多人第一次听到“装箱平台”这个词,下意识会联想到快递小哥手里的胶带、纸箱和电子面单打印机——这其实是个典型误解。装箱平台根本不是面向末端操作员的简易工具,而是一套嵌入在仓储…

作者头像 李华
网站建设 2026/9/17 5:00:25

灰狼优化算法在单区域LFC系统PID参数整定中的Simulink实现

1. 项目背景与核心需求拆解做控制系统仿真的朋友应该都有体会,调PID参数这件事,看着简单,真正动手的时候能把人磨到怀疑人生。尤其是电力系统里的负荷频率控制(Load Frequency Control,LFC),系统…

作者头像 李华
网站建设 2026/9/17 5:00:11

STM32+OpenMV自动泊车系统:图像识别与PID控制的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 4:58:49

四臂PEG-NH2(4arm-PEG-NH2)结构与实验规范全解析

如果你在实验室里接过四臂聚乙二醇胺这类材料,大概率会对“4arm-PEG-NH2”这个名称有些印象:白色粉末、水溶性不错、一袋几百毫克到几克不等。但这玩意儿到底好在哪、能做哪些事、实验时有哪些坑,很多刚接触的人并不清楚。借这篇文章&#xf…

作者头像 李华
网站建设 2026/9/17 4:58:14

MarkText 使用指南:开源所见即所得 Markdown 编辑器配置与避坑

写 Markdown 的人,最烦的就是“左边写右边看”那种割裂感。我之前在 Typora 和 VS Code 之间反复横跳了很久,直到后来折腾到 MarkText 这个开源编辑器,才算是把日常写作、技术笔记、博客草稿这几条线统一到了一个工具里。MarkText 是一个主打…

作者头像 李华