Hyperledger Fabric核心架构与源码解析:从交易流程到实战踩坑
1. 整体架构的设计哲学不只是又一个区块链平台很多人刚开始看Hyperledger Fabric的时候第一反应都是这不就是一个联盟链框架吗跟公链有什么区别带着这个疑问去读源码很容易被一堆陌生的术语卡住。我在协助项目团队搭建溯源系统、供应链金融Demo时也经历过这种阶段。直到把架构层面“为什么这么设计”想清楚了再回头看代码整个脉络一下子就通了。Fabric最核心的设计理念我总结成一句话它不是把区块链当数据库而是把区块链当业务引擎。传统区块链强调去中心化和不可篡改所有节点执行相同逻辑、维护相同账本Fabric则更关注企业场景里“参与方之间如何在信任边界内高效协作”。所以它引入了组织Organization、通道Channel、背书策略Endorsement Policy、排序服务Ordering Service这些概念每个概念解决的都是现实商业协作中的具体问题。以组织为例。在公链里节点是无差别的在Fabric里节点属于某个组织组织之间通过MSPMembership Service Provider成员服务提供者完成身份认证和权限控制。说白了这就是把现实世界的公司、监管方、审计方映射到链上。企业之间不需要把信任交给某个“万能节点”而是通过配置策略来决定“谁有资格背书交易”“谁的节点可以存储账本”。另外一个容易被忽视的关键设计是“执行与排序分离”。在大多数第一代区块链系统中交易执行、交易排序、区块生成是耦合在一起的。Fabric把这条链路拆开了背书节点负责执行链码Chaincode并模拟交易结果排序服务只负责把全球交易按顺序打包成区块提交节点负责校验结果并写入账本。我第一次理解这个分工时类比的是餐厅后厨——大厨背书节点只管把菜做好端出来传菜员排序服务只负责按顺序上菜收银台提交节点最后统一记账核查。职责清楚扩展性自然就上来了。这套设计的直接好处是性能和可插拔性。因为执行不用等全球共识背书节点可以并行处理多个提案因为排序服务可以对接不同的共识实现比如Raft或Kafka企业就能根据合规要求自主选择。对于一个要落地到产业里的区块链平台来说这是大多数公链方案给不出来的灵活性。理解架构时我建议你先抓“三件事”一是节点有哪些角色、各自管什么二是交易从发起到上链走完了几步三是数据到底存在哪里、哪些人能碰。把这三件事理清楚Fabric的骨架就立住了。2. 核心细节拆解从交易提案到区块落地的完整链路2.1 背书、排序、确认三步走的交易生命周期Fabric的交易流程分成四个阶段这比以太坊那种“一把梭”的模型要精细得多。我按一次实际转账或者叫链码调用的完整旅程来说。第一步是客户端构造提案Proposal。客户端拿自己的身份证书去请求特定背书节点说“我想执行链码A的参数B”。这一步只是模拟不会改任何状态。背书节点收到提案后会做两步检查校验客户端身份有没有权限、签名是不是合法然后根据链码逻辑模拟执行得到一组读写集合Read-Write Set。读写集就是“假如这笔交易通过账本会发生哪些变化”它会被背书节点签上名送回给客户端。注意此时账本完全没动。第二步是客户端收集背书响应。背书策略可能要求多个组织都同意比如“某公司节点和某监管节点都必须背书”。客户端拿到足够多的背书签名后再把交易请求连同背书结果一起发给排序服务。这里常遇到新手困惑客户端怎么知道找哪些节点背书答案在链码定义的背书策略里结构化的由通道配置控制。第三步是排序服务打包区块。排序节点不执行交易不做状态校验它只做“全局定序”把收到的所有交易按时间顺序排列打包成区块再通过广播通道分发给通道内所有组织的锚节点。此时交易仍是“待提交”状态。第四步是提交节点校验并写块。每个组织的节点收到区块后会逐条检查交易背书签名数量够不够、策略满不满足、读写集MVCC冲突有没有就是并发写同一把锁的问题、世界状态是否跟上一条已提交交易有出入。通过校验的交易才会写入区块并更新本地的状态数据库。这一整套流程走完客户端才算真正拿到“交易已被接收”的确认。2.2 为什么必须区分“世界状态”和“账本日志”很多教程都在说Fabric有两套存储一份是区块链文件区块的文件即账本一份是状态数据库LevelDB或CouchDB。但很少有人把“为什么要两份”讲明白。我把账本日志理解为“完整的流程图”它记录了从过去到现在的每一次变更永不修改状态数据库则是“资产的当前快照”——比如某个质检记录的当前状态、某笔数字资产当前归属谁。查询当前状态如果每次都要从头扫所有区块性能会非常难看状态数据库就是为了让查询高效而生。这个设计与传统的数据库“先写日志再更新数据”的WAL机制很像只是区块链把它放大到分布式场景里并且用区块的形式绑定签名和哈希。所以你在读源码时会看到statedb这个模块它就是负责管理这个世界状态的。默认用LevelDB如果你需要富查询按字段过滤、范围查询可以换成CouchDB。我的经验是生产环境中能用CouchDB还是尽量用因为LevelDB只支持按key查CouchDB可以走JSON查询语法排查数据问题方便得多。代价是多一个组件要运维但值。2.3 通道Fabric实现数据隔离的秘密武器通道是Fabric最容易被面试问倒、也是实际项目中最需要小心设计的概念。一条通道本质上就是“一组组织之间的私有通信子网”。通道内的交易对通道外完全不可见通道外的节点甚至不保管通道的账本。我见过不少项目把全量业务放在一条通道里理由是“简单”。短期看确实省事但一旦参与方之间有数据隔离需求比如采购商不想让同行看到自己的采购价格后面改造成本就非常痛。Fabric正确的做法是按照业务边界或数据敏感级别划分通道比如“供应链协同通道”和“对账专用通道”分开。当然通道也不是越多越好。每条通道都有自己的账本、自己的锚节点配置、自己的链码生命周期通道多了运维成本和资源消耗会成倍上升。一个我总结的经验把通道数控制在组织关系图谱的“可见性边界”数而不是按业务功能无限拆分。通道设计不好后面每个链码升级、新增组织都够你喝一壶。2.4 身份、权限与MSP撑起整个信任模型的基础设施Fabric的权限体系全部围绕证书展开。每个组织在加入网络时都会有一套证书体系根证书CA的根、组织管理员证书、节点证书、客户端证书。这个结构由MSP管理源码里对应的是msp包。初学者最容易犯的错是以为“有证书就能为所欲为”。其实证书只是第一步真正的权限还要看ACL访问控制列表和通道策略。比如说你拿到某组织管理员签发的客户端证书可以调用链码但能不能升级链码、能不能新增组织成员那是由通道配置里的策略决定的不是单个证书说了算。Fabric有很多“隐式权限”和“显式权限”的组合不小心配置错了就会出现“证书都正常但操作就是被拒”的诡异问题。我的建议是在项目刚开始就建立一本“权限配置表”把每个操作对应的策略、需要哪些角色、各组织希望拥有的权力列清楚。别等到测试环节再临时调策略Fabric的策略校验层层嵌套到后面排查起来极其费时。2.5 链码机制理解“链上代码”的真实边界很多区块链开发者一上手就以为链码是运行在“链上”的。从物理部署上看链码其实运行在节点自己的容器里标准模式下是独立Docker容器只是状态变更会被账本机制固定下来。这里有个特别重要的设计链码的背书结果是被打包进区块的但链码程序的升级不受历史约束。也就是说你升级链码后的逻辑可以变但历史状态永远不会被改写。这一特性在业务上可以翻译成“规则可以变但历史不能抹掉”。做审计、溯源类项目这个性质是刚需务必在方案文档里点清楚。链码的开发语言现在是Go、Node.js和Java为主。我自己的项目偏好Go原因很简单Fabric底层就是Go出问题你能顺着代码追到底层逻辑查资料的效率高很多。Node.js链码适合团队前端背景强、不想切语言的人但要注意吞吐量不能跟Go比。3. 源码结构解析仓库那么多到底该从哪儿读起第一次拉Fabric源码的人通常会被仓库数量吓到。官方组织下有一大堆仓库但真正核心的其实就几个别被列表迷惑了。fabric主仓库是核心。你要关心的关键目录大致如下core/包含了链码运行环境、背书逻辑、账本管理、配置等核心模块。其中core/chaincode负责链码生命周期管理core/ledger负责账本core/peer是节点主程序入口。orderer/排序服务节点。里面实现共识算法接入、区块切割batch切割规则、广播服务。你要看Raft实现就往这里走。common/公共工具库定义了配置区块结构、策略、账本元数据等属于“骨架级”代码。gossip/节点间的数据同步协议。区块由排序服务生成后靠它传播给通道内的所有节点。protos/所有数据结构、接口定义的proto文件。想理解Fabric的消息格式这里是源头。msp/身份管理相关实现。peer/peer节点的CLI入口比如peer chaincode install、peer channel join这些命令都在这里实现。光是看目录还不够我强烈建议按“一条交易流程”来读代码。你可以用这个顺序从protos/peer/proposal.proto看交易提案的数据结构再进core/chaincode看背书节点的处理器转去orderer看区块生成逻辑回core/committer看提交校验逻辑最后用gossip理解区块的传播机制。这样走一圈你会对Fabric分布式共识的全貌有体感而不是东看一下西看一下什么都抓不住。另外两个常用仓库也要了解fabric-samples里是官方示例和测试网络比如用Docker起的test-network这是新手练习最稳妥的环境fabric-ca是实现组织CA服务的独立组件你可以自建CA也可以对接企业已有的CA体系。很多企业在生产里把fabric-ca换成自有证书体系这完全可行因为MSP就是为可插拔设计预留的。源码阅读上还可以善用一个技巧Fabric所有关键模块都有明确的功能注释和README文档比如docs/目录下有源码结构说明。遇到不懂的模块先读对应文档再读代码比抱着源码硬啃效率高很多。节点启动流程则从cmd/peer/main.go看起主程序逻辑很短一进来就会调用node.Start()后面进入标准库那套服务注册和启动框架并不会太绕。构建Fabric源码是需要版本的。当前主流版本是2.x建议你想读源码就使用2.5.x以上版本3.x也有预览但社区还在迭代生产慎用。构建环境建议直接用Linux或MacWindows上开Docker跑fabric-samples问题不算太大但要直接编译fabric源码就比较折腾了别浪费时间。4. 实操过程用测试网络完整走通一次交易并观察内部结构4.1 搭建最小可运行环境为了真正理解架构我建议你亲手启动一次Fabric测试网络并把每条命令背后触发的模块记录下来。测试网络使用的是脚本式启动会自动把组织、排序节点、通道都建好非常适合作学习和源码观测底座。环境准备并不复杂确认几样东西即可Docker及Docker ComposeGo 1.19Node.js用go链码则不需要以及fabric-samples仓库。克隆仓库后切到自己要的版本标签比如v2.5.x执行cd fabric-samples git checkout v2.5.x cd test-network ./network.sh up createChannel -c mychannelnetwork.sh up命令会启动两个组织节点org1和org2各有peer节点以及一个排序集群默认可能是单节点Raft然后用createChannel把这两个组织拉进一条名为mychannel的通道。启动完成后你用一句docker ps能看到一堆容器在跑。每个容器对应源码里的一类角色。到这一步你就可以开始“对照实验”了开一个窗口进peer容器用peer channel list查看节点所属通道进orderer容器观察日志里每个区块如何被切割和广播。4.2 部署链码并触发一笔交易测试网络自带一个名为asset-transfer-basic的示例链码。部署过程分成两步先打包、安装、审批提交再初始化以及调用。命令形如./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go这个脚本实际背后执行的动作很有教学意义先对链码包做签名各组织管理者分别签名然后提交到通道之后等背书节点完成初始化。如果你把network.sh脚本打开读一下能学到链码全生命周期管理的具体操作组合这也是源码里core/chaincode/lifecycle模块所对应的职责。部署后发起一笔交易我建议直接调peer chaincode invoke -o localhost:7050 -C mychannel -n basic -c {Args:[CreateAsset,asset1,blue,5,Tom,100]}这条命令里-o指定的是排序服务地址因为第一阶段提案收集虽然只需要找背书节点订单服务地址客户端还得带着核心作用是后续传递块。每走完一次调用你可以回过去看排序节点日志能看到类似“Created block [n]”的日志输出那就是整体流程中最直观的确认信号。4.3 在源码环境中用调试日志还原全链路要想把源码与运行状态对应起来开调试日志是最高效的手段。Fabric节点都支持CORE_LOGGING_LEVELdebug环境变量打开后节点会把每个关键动作的细节输出出来。举个例子你在debug日志里能看到背书节点收到Proposal并执行链码过程的具体输出也能看到Committer在处理区块时执行MVCC检查的轨迹。我不是说“看日志”就能替代读源码但它给了一个非常有效的锚点先知道某个动作在哪一行日志再顺藤摸瓜在源码里搜索对应的打点位置等于给源码阅读安装了定位器。读core/ledger相关代码时这个方式尤其好用。调试过程还有一个极小但很实用的建议给fabric-samples里Docker容器挂载一个专门的日志目录并做持久化排查奇葩问题时会省掉很多重跑网络的功夫。没有日志留存一旦容器重启所有现场直接没了。我踩过好几次“复现不了问题”的坑后来都靠日志持久化解决。5. 常见问题与排查技巧实录我在这里整合一套高频踩坑清单。很多问题不是源码有多玄而是使用者对运行机制的理解偏差造成的。5.1 容器间通信与localhost冲突测试网络默认跑在Docker网络里容器之间用服务名通信不要用localhost。很多人本地明明把端口映射好了客户端工具连不上节点原因就是命令里用了localhost没走对容器网络。如果要在宿主机上直接跑CLI要先确认端口确实映射出来了再用docker exec进容器执行或改hosts。5.2 背书策略不满足报错往往晚出现交易失败时会看到“chaincode endorsement policy violation”之类的错误。很多新人第一反应是证书错了其实更要紧的是看背书响应收集阶段有没有凑够策略要求的数量。例如策略要求AND(Org1.member, Org2.member)结果客户端只联系了Org1的节点哪怕Org1背书签了名交易进到排序后仍然过不了提交校验。启动测试网络后建议你第一节课就做一次故意失败的背书策略实验这对理解背书机制有奇效。5.3 链码升级后状态“没变”有同学升级完链码调用新函数时发现返回的还是老逻辑。原因通常是升级后的链码版本没真正安装到目标组织的所有节点上或者通道上的应用没更新。别信日志里写的“upgrade success”一定要用peer lifecycle chaincode queryinstalled逐个节点确认版本。5.4 状态数据库选型CouchDB的坑从LevelDB切到CouchDB最常出现的问题是容器里CouchDB容器起不来或者peer连不上CouchDB的地址。此时第一步检查core.yaml里state database配置和docker-compose中的地址是否一致。第二步检查CouchDB用户认证Fabric连接是需要账号密码的默认配置里常常用docker环境变量但你本地没设自然连不上。5.5 通道配置更新失败时的僵尸状态改通道配置比如新增组织失败后通道可能进入一种“部分节点更新成功、部分失败”的假死状态。这个问题的根因是通道配置更新也需要满足策略背书部分节点拿不到更新区块导致通道高度不一致。排查时先进每个peer查peer channel getinfo看各节点最高区块高度如果差得太多用peer channel fetch手动拉区块比无脑重新创建通道安全得多。5.6 数据一致性问题先看时间戳和区块高度如果怀疑节点数据不一致我建议第一步对比各peer的peer channel getinfo输出第二步对比链码container哈希是否一致第三步查世界状态中的关键key。如果区块高度一样但状态不一样那基本可以确定链码或CouchDB索引出了问题如果高度都不一样那大概率是对等网络同步出了问题优先查gossip日志。建议大家在测试环境里把每个节点的容器单独配置好日志输出和监控出问题先看日志再动数据否则很容易把“小问题”弄成“大事故”。6. 源码阅读路径与后续扩展建议如果你读到这里我已经默认你想真正进入源码层。再给你划一条从浅入深的路第一阶段跑通测试网络。你必须亲手创建通道、装一次链码、调一次账本。这一阶段的目标是建立“节点/通道/链码/账本”的心理模型。第二阶段沿着交易流程看模块。先从protos看数据结构再从core/chaincode看到orderer再到core/ledger。这个阶段不必抠每个算法细节重点理解模块间的调用关系和数据流向。第三阶段精读核心机制。选一个你最关心的机制比如Raft共识、MVCC冲突检测、MSP证书验证精读与之对应的源码包。精读时写笔记我建议以“调用链关键结构体”的形式记录比抄代码有效得多。第四阶段自定义扩展。看完Fabric源码后真正有价值的是把它变成你自己的技能。比如你可以在测试网络里加一个自定义组织、写一个自定义背书策略、开发一版自己的链码。更进一步如果对底层有兴趣可以研究和Fabric兼容的共识插件、状态数据库插件这就是从“使用者”变成“改造者”的分水岭。个人经验是走到第四阶段的人在求职和实际项目中的竞争力与停留在文档层的人差距极其明显。7. 最后再分享一点学习心态相关的经验这套技术栈入门的最大门槛不是代码而是模型转换。很多开发同学习惯性地把区块链当普通分布式数据库理解这是学习Fabric最大的思想障碍。你要把它当成一个“带有审计性质的异步状态机”账本日志在前状态视为派生数据节点间靠证书和策略建立信任。我在给团队做内部培训时经常让大家做一个练习不写代码把一次跨组织交易的完整流程用文字描述出来要求每个动作注明发生在哪个角色身上、使用哪个配置项。这个练习看似笨拙但能暴露出大量潜在的理解盲区。我也建议你用同样的方式自测一下能把流程写在纸上才说明你真正把架构记进脑子里了。另外学习Fabric过程中你大概率会遇到各种资料之间说法不一致我的建议是以官方文档和源码为准。社区博客可以帮你找思路但版本差异会导致很多“我的命令怎么跑不起来”的烦恼几乎都源于照着老版本博客操作新版代码。坚持用官方渠道校验每条命令和参数后面能少踩非常多坑。我现在做Fabric项目时遇到任何底层行为解释不清的情况第一反应仍然是去源码里查证。源码不会骗人但文档和博客会过时。希望这篇文章能帮你建立起“架构—源码—实操”的相互印证意识这也是我认为掌握Hyperledger Fabric最稳的一条路径。

相关新闻

基于阿里云OpenAPI自建DDNS:RAM最小权限与PowerShell实战

基于阿里云OpenAPI自建DDNS:RAM最小权限与PowerShell实战

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

2026/10/17 1:18:19 阅读更多 →
Timeline编辑器:数据驱动的交互式流程可视化系统

Timeline编辑器:数据驱动的交互式流程可视化系统

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

2026/10/17 1:17:19 阅读更多 →
基于MP2642GR-Z与ATmega1284P的储能电池均衡方案设计与实现

基于MP2642GR-Z与ATmega1284P的储能电池均衡方案设计与实现

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

2026/10/17 1:17:19 阅读更多 →

最新新闻

【共创稿事节】HarmonyOS 7 Agent 开发实战 09:Agent 测试评测集

【共创稿事节】HarmonyOS 7 Agent 开发实战 09:Agent 测试评测集

做 Agent 应用最怕的不是「写不出第一版」,而是「改了第三版之后,发现第一版明明答对的题现在答错了」。大模型有随机性、提示词有耦合、工具调用有边界,靠人肉聊天抽查既覆盖不全又无法回放。这一篇我们给 Agent 配上一套离线评测集&#xf…

2026/10/17 7:41:11 阅读更多 →
智能体密钥管理实战:Hermes与Agent Vault凭据注入与安全审计

智能体密钥管理实战:Hermes与Agent Vault凭据注入与安全审计

1. 为什么智能体需要一个“管钥匙的保安”做过 Agent 项目的人大概都有过这种体验:功能跑通了,Demo 演示也很顺利,但一旦要往生产环境推,心里就开始发虚。原因往往不是模型不够聪明,也不是编排逻辑有 bug,而…

2026/10/17 7:41:11 阅读更多 →
Flink Operator State 深度解析:从原理到批量 Sink 实战

Flink Operator State 深度解析:从原理到批量 Sink 实战

1. 为什么 Operator State 值得单独拎出来讲Flink 的状态体系里,Keyed State 出镜率极高,几乎每篇讲状态的资料都会先拿 keyBy 之后的 ValueState、ListState 举例。但真正落到生产环境,有一类状态是绕不开的:它不依赖 key&#x…

2026/10/17 7:41:11 阅读更多 →
Flink Operator State 深度解析:非键控状态管理实战指南

Flink Operator State 深度解析:非键控状态管理实战指南

1. 为什么 Operator State 值得单独拎出来讲Flink 的状态管理一直是流计算里最容易被低估的一块。大部分人刚上手的时候,注意力都放在窗口、水位线、Checkpoint 这些"显眼"的机制上,等到真正在生产环境里跑起来,才发现状态才是决定…

2026/10/17 7:41:11 阅读更多 →
RPA+大模型:打造外部群聊专家级自动应答系统

RPA+大模型:打造外部群聊专家级自动应答系统

1. 从一线需求说起:为什么群聊回应也能自动到“专家级”做运营和客户成功的朋友,大概率都经历过这种状态:手机里挂着四五个外部群,每个群都在问问题,有的问报价,有的问故障排查,有的纯粹是闲聊。…

2026/10/17 7:41:11 阅读更多 →
地质工程一体化实战:从地质建模到随钻导向与压裂设计的闭环

地质工程一体化实战:从地质建模到随钻导向与压裂设计的闭环

你要是问一个油气田开发工程师,最怕听到哪句话,十有八九是——“模型是这么说的,但井不是这么钻的。”这种地质和工程互相不认账的场面,在非常规油气、复杂油气藏开发里几乎每隔几天就来一次。模型画得再漂亮,现场不买…

2026/10/17 7:40:11 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/16 14:23:36 阅读更多 →