REA模型实战:从资源-事件-代理到数据库表结构设计
你随便拿REA这三个字母去搜前几页可能全是音频插件、稀土行业甚至某个编程框架的缩写。但如果你恰好在搞企业信息系统、ERP、会计数字化相关的事这里的REA只有一个指向Resource-Event-Agent即资源、事件、代理三要素组成的概念建模框架。它不是新鲜理论却在很多记账软件、进销存系统、ERP项目的数据库设计里发挥着底层作用。这篇文章我会从实际建模的角度把它讲透包括REA到底是什么、怎么把一个销售回款流程拆明白、又如何从REA图干净地落到数据库表结构。适合系统分析师、后端开发、数据架构师还有所有不想在审计追溯和报表对账上反复返工的人。1. 先把REA三个字母的语义边界划清楚1.1 它不是插件也不是稀土而是一套概念框架先交代一个常见误会。有些人一看到REA会想到音频宿主里的Rea系列插件有些人会想到稀土元素还有人在代码仓库里见过某个叫rea的工具类。这些全都不在我今天讨论的范围内。在企业建模和会计信息系统领域REA是Resource-Event-Agent的固定缩写直译过来就是资源、事件、代理。这套思路最早来自会计信息系统领域的研究者目的是解决一个很朴素的问题传统的会计模型只关心借和贷但业务系统不能只记录借贷还得知道业务为什么发生、谁参与、资源怎么流动。于是研究者提出用三个基本概念来统一描述业务资源是企业拥有或控制的有价值的东西事件是改变资源状态的活动代理是参与事件的人或组织。听起来很简单但这三个词几乎能覆盖所有业务场景。我当年第一次接触REA模型时第一反应是这不就是把表拆细一点嘛。真正用起来才发现它最大的价值不是拆表而是逼着你用资源变了没有、谁改变的、变成什么样的视角重新审视业务。这个视角一旦建立很多数据问题从源头就消失了。1.2 什么人最需要吃透这套模型如果你是数据架构师、后端开发或者ERP实施顾问REA模型几乎是绕不开的底层语言。尤其是做进销存、订单中心、财务核算这类模块时需求里一定会出现可追溯、可审计、口径统一这些词。传统做法是把订单、付款、发货塞进几张业务表里字段越加越多最后变成一张大宽表查询倒是方便但数据一致性很难保证。举个例子销售订单表里既有客户信息、又有商品明细、还有金额和状态。表面上很好用但一旦出现一个订单分多次发货、一部分退款、尾款跨月结清这张表的字段就乱套了状态字段不知道该填部分发货还是已完成金额字段不知道对应的是原单金额还是实收金额。用REA模型建模的话订单、发货、收款是三个独立事件各自记录各自的时间、数量、金额和参与代理通过关系关联起来任何口径都能从数据里推导不需要靠开发人员临时写逻辑。这篇文章适合的产品经理、系统分析师、后端开发甚至做财务数字化的业务同学。只要你在设计数据库表结构之前多花半小时画一张REA图后面省下的返工时间可能是几十倍。2. 传统方案为什么别扭REA到底好在哪2.1 一张大宽表的诱惑与代价很多团队在业务初期都倾向把所有字段塞进一张大表。比如订单表从客户姓名、手机号、收货地址到商品编号、单价、数量、运费、优惠金额、实付金额、支付时间、发货时间、签收时间、退款状态一次性全列上。这种表对开发最友好查询最直接可是对业务演进非常不友好。踩过一次坑某甲方系统的订单表里有一个状态字段用一串数字代表不同状态组合。刚开始只有待付款、已付款、已发货、已完成四个状态后来业务变了出现部分发货、部分退款、换货中等状态原来的字段无法表达只能不断加状态枚举最后状态组合多达几十种业务代码里全是if-else判断。这就是典型的事件语义被压缩进单个字段导致的模型腐化。REA模型从根本上规避这个问题状态不是存出来的而是根据事件记录推导出来的。只要知道下单事件、付款事件、发货事件分别有没有发生按时间序列一推当前状态自然就清楚了。这样做还有一个额外好处业务状态无论怎么扩展只要事件记录完整状态就能推导不需要改表结构。2.2 资源、事件、代理各管一摊REA的三个核心概念在每个业务场景里都能找到对应物。资源是业务中有价值、可量化、需要被追踪的东西。在销售场景里商品是资源现金是资源应收账款其实也可以理解成一种资源化的权利在采购场景里原材料是资源付款出去的现金是资源。判断标准很简单这个东西有没有独立价值要不要被统计和追踪事件是改变资源的活动。它分两类一类是交易型事件比如销售、采购这类事件改变资源的控制权另一类是转换型事件比如生产领料、完工入库这类事件改变资源的形态或位置。事件最重要的特征是它发生在特定时间点有具体参与代理并且一定会引起至少一个资源的增减变化。代理是事件的责任主体或参与方。在业务系统里代理可以细分为内部代理和外部代理。内部代理通常是员工、部门外部代理通常是客户、供应商。代理与事件之间的关系是多对多的一个客户会参与多个销售事件一个销售事件也可能有多个内部代理参与比如销售员开单、仓管员发货。我自己的建模习惯是先把业务里的名词全部写出来然后逐个问三个问题它是资源吗它值得独立追踪吗有事件会改变它吗如果答案是肯定的它就应该作为资源表存在。如果一个名词只是事件的属性比如发货地址订单备注那就别当成独立实体留在事件表或事件明细表里即可。2.3 事件二元性业务闭环的开关REA模型最精巧的地方在于事件二元性这个概念。简单说任何完整的业务循环都由两个相互对应的事件组成一个带来资源流入一个带来资源流出。销售场景里交货事件带来商品流出收款事件带来现金流入两者成对出现采购场景里收货事件带来商品流入付款事件带来现金流出两者也成对出现。我一般会给非技术背景的同事打比方你买一杯咖啡付款和拿咖啡其实是两个独立的事件。付款事件让现金减少、商家的现金增加交货事件让咖啡的拥有权从店家转移给你。传统的订单记录把这两件事写在一行里看似简单但如果你在付款前又不想买了订单记录怎么改如果付了款但咖啡做出来了又该怎么记把付款和交货拆成两个独立事件再记录它们之间的对应关系任何业务变化都能被准确表达这就是二元性的价值。理解了二元性就理解了REA模型的灵魂系统里记录的不是结果而是过程。结果可以由过程推导过程不能由结果反推。这个思路对财务系统、供应链系统、订单系统的设计都有指导意义。3. 动手建模一个销售回款场景的完整拆解3.1 先圈定业务边界别一上来就建全模型很多第一次使用REA的人容易犯一个错想把整个公司的业务一次性全部建模结果画出来的图非常庞大一时半会根本无法落地。我建议的做法是先圈一个核心业务循环比如销售与收款循环——这个循环在财务上通常被称为收入循环包含从客户下单到最终收到货款的完整路径。本文的样例场景设定为客户通过系统下单形成销售订单仓库根据订单发货财务或系统对接收款后续如果发生退货再单独记录退货事件。这里注意我从一开始就把退货单独列为一个事件而不是给订单表加一个是否退货字段这是非常关键的建模决策。圈定边界后需要把业务叙事写出来客户张三在系统里下单买10件商品A单价100元仓库生成发货单并发货客户确认收货后供应商收款1000元假设第3天客户退回了1件商品系统记录退货事件。这个故事虽然简单但已经覆盖了资源流出、资源流入、代理参与三个核心维度。3.2 识别事件、资源与代理完成第一版实体清单有了业务叙事接下来的工作就是填表。我会先把所有候选实体列出来然后逐个打标。订单本身不是资源也不是代理它是对销售协议达成这个事件的一种记录所以应作为一个销售事件。发货动作是另一个事件对应商品资源的流出。收款动作是第三个事件对应现金资源的流入。退货动作是第四个事件对应商品资源的回流。商品是资源现金是资源应收账款也可以作为资源。客户是外部代理销售员、仓管员、财务是内部代理。一份订单可以有多个明细行每行对应一件不同的商品资源所以订单与商品之间是多对多的关系需要通过订单明细表来承载。打标之后我再补充必要属性。资源实体需要编号、名称、规格、计量单位、成本单价、参考售价等代理实体需要编码、类型客户/供应商/员工、名称、信用等级、联系方式等事件实体需要事件编码、事件类型、发生时间、参与代理、业务单据号等。请注意事件表和资源之间不是直接挂在同一个字段上而是通过一张事件-资源影响表来表达影响方向、数量和金额。3.3 实体关系与基数先想清楚谁对谁实体识别完成后重点是梳理关系基数。这也是新手最容易忽略的环节。订单事件与订单明细之间的关系是一对多一条订单可以包含多个明细商品资源与订单明细是一对多一个商品可以出现在多条明细里客户代理与订单事件是一对多一个客户可以下多张订单。发货事件与订单事件之间可以是一对一也可以是多对一——一次发货可能对应一张订单也可能一个订单分多次发货这种情况下经营上叫分批交货。建模时要根据实际业务规则确定基数不能想当然。收款事件和订单事件的关系需要仔细设计。现实中一个客户可能会一次性结算多张订单的款项也可能一张订单分多次付款。因此我建议通过结算记录或分配表来承载收款事件与订单事件的关联而不是直接在订单表上加一个收款状态字段。这里我整理了一张常用的基数表方便对照实体关系基数说明资源 vs 事件影响明细一对多一个资源可被多个事件影响事件 vs 事件影响明细一对多一个事件影响多个资源代理 vs 事件一对多一个代理参与多个事件订单事件 vs 发货事件一对多一次发货可对应一单也可分批收款事件 vs 订单事件多对多一笔款可结算多单一单可多次支付3.4 从REA模型到数据库表结构一张订单表拆成几段REA模型最终要落到数据库表和业务代码里不能只停在概念层。以销售回款为例落地时可以拆成四类表资源表、代理表、事件表、事件-资源影响关系表。先建基础表create table resource ( id bigint primary key, resource_code varchar(50), resource_name varchar(200), unit varchar(20), is_tangible boolean, standard_cost numeric(18,4) ); create table agent ( id bigint primary key, agent_code varchar(50), agent_name varchar(200), agent_type varchar(20), -- customer / supplier / employee credit_limit numeric(18,4) );然后是事件表。不同类型的事件放在一张表还是拆成多张表这是一个需要权衡的问题。我的建议是事件字段差异不大时优先用一张事件主表加一张事件类型字典扩展性好如果不同类型的事件属性差异巨大再考虑拆分。create table business_event ( id bigint primary key, event_type varchar(50), -- order / shipment / payment / return event_code varchar(50), event_time timestamp, operator_agent_id bigint, counterparty_agent_id bigint, remark varchar(500) ); create table event_resource_effect ( id bigint primary key, event_id bigint, resource_id bigint, direction varchar(4), -- in / out quantity numeric(18,4), unit_price numeric(18,4), amount numeric(18,4) );在设计事件表时有一个容易被忽略的点事件表的记录原则上只增不改。业务事件一旦发生它对应的记录就应该是不可变的历史事实。如果业务发生变更比如客户退货不能去修改原始发货事件的记录而应该新增一个独立的退货事件。这么做的好处是审计追溯时能看到完整的时间线而不是看到一个被反复覆盖的最终状态。落地时我也不建议把REA的理论结构原封不动搬进数据库因为纯理论结构会产生大量join性能上不划算。实际项目中可以在event_resource_effect表上增加冗余的event_time和resource_name快照字段减少查询时的关联次数。这就是典型的概念模型到物理模型的调整。4. 与复式记账对照为什么财务和审计会喜欢这套设计4.1 事件的二元性就是借贷的底层逻辑干过财务系统的人都知道复式记账的核心是有借必有贷借贷必相等。这个概念和REA的事件二元性之间有一种天然的对应关系一个业务循环必然涉及资源的流入和流出而流入和流出在账务上就表现为借贷方向。我用前面咖啡的例子来对照客户付款现金从客户的口袋流入商家的口袋。站在商家的视角这笔业务对应两种资源的变化——现金资源增加商品资源减少。如果不用借贷这种资源变动就很难被严谨记录而借贷记账法通过借现金、贷商品销售收入这样的分录把资源变动记录得清清楚楚。REA模型的贡献在于它是独立于具体记账法抽象出来的业务语义模型。即使后继系统不做传统财务记账只做业务数据管理REA的事件记录仍然能完美描述资源流转。将来如果企业需要对接外部财务核算或审计系统REA模型的数据也可以很方便地生成会计分录因为事件与资源影响的关系已经足够清晰。4.2 从事件表就能推导财务报表传统财务系统的报表往往通过科目余额表来出科目余额又来自记账凭证。REA模型设计的系统则可以换个思路直接从事件记录推导收入和成本。以销售收入为例。销售事件发生、仓库发货时商品资源流出这个事件就对应收入确认的时点。收款事件发生时现金资源流入这对应资金到账。两个事件之间的时间差就是通常说的应收账款账期。如果数据库里存储了完整的事件时间、事件类型、影响资源的方向和金额那么利润表里的收入、成本就能通过对事件表做聚合查询得到资产负债表的存货、现金、应收账款也能通过资源与事件的汇总得出。我自己实操时常用一个简单的SQL思路select date_trunc(month, e.event_time) as month, sum(case when e.event_type order then efe.amount else 0 end) as sales_revenue, sum(case when e.event_type shipment then efe.amount else 0 end) as sales_cost from business_event e join event_resource_effect efe on efe.event_id e.id group by month;当然这个极度简化实际业务远不止这么简单但它足以说明一个关键点事件数据是最底层的原子记录。报表只是对原子记录的聚合视图不需要单独维护一套口径。4.3 只增不改的事件日志审计友好的关键审计人员最看重的不是系统里有多少张报表而是业务数据的真实性。传统表结构里如果订单状态被改来改去没有任何痕迹审计就很难还原当时发生了什么。REA模型天然适合审计因为事件记录不可覆盖。比如订单金额写错了正确的做法不是update订单表把金额改掉而是新增一个订单更正事件来对冲原事件。这样的设计会让数据量越来越大但换来的是完整且不可抵赖的业务事实链条。审计要查一笔收入从发生、确认、回款到最终结清的全部过程只要按事件时间线回放每一步都清清楚楚。5. 落地项目时的关键取舍与实践经验5.1 模型不是越纯粹越好需要实用化裁剪REA模型在学术界非常优雅但在实际项目里如果完全不裁剪一定会遇到性能或实现复杂度问题。我试过在一个高并发订单系统里对每个事件都走完整REA结构结果一张订单详情查询需要join五张表压测时性能明显吃紧。后来做了两个调整。第一个调整事件主表保持精简高频查询需要的冗余字段直接冗余在主表上比如订单号、客户名称、订单金额。第二个调整对核心交易事件在事件表之外维护一个可变的业务聚合状态表比如订单当前状态、已收金额、已发货数量。这个状态表是冗余的、可变的但它真实地服务于业务展示场景。关键是理解REA事件表是事实表业务状态表是派生表。派生表可以根据事实表重建事实表永远忠于原始事实。只要保持这个主从关系系统既能满足高性能展示又能满足审计追溯。5.2 快照与历史版本的取舍大量使用REA模型后还会遇到一个常见问题商品资源的信息是会变的。比如商品A今天的参考售价是100元下个月调整成110元。如果直接修改resource表里的price字段历史事件里关联的价格语义就会混乱因为库存成本、收入确认都依赖这个价格。解决方案是引入时点快照。对资源属性价格、成本、分类等不直接在资源表里更新而是通过有效期表记录每个资源在不同时间段的属性版本。事件发生时把当时适用的属性复制到事件影响明细的冗余字段里。这样之后无论资源信息怎么变历史事件的数据都不受影响。这个技巧在实际项目中特别有用遇到成本核算、历史报表比对时能省掉大量扯皮。5.3 幂等性与并发控制只增不改的另一面很多人担心只增不改会带来重复记录问题。比如用户点了一下支付按钮因为网络超时又点了一下系统可能创建两笔支付事件。这个问题的核心是幂等性设计在事件写入前先做唯一性校验。我的习惯是在事件表上加上业务唯一键比如订单支付事件用订单号支付流水号作为唯一键同一笔支付重复提交时系统直接返回已存在的记录。这种设计配合数据库唯一索引可以在高并发场景下有效抵御重复事件。另外事件写入时涉及多个资源的增减变化必须放在同一个数据库事务里。比如发货事件既要记录商品资源减少又要记录对应订单的资源状态改变这两步必须同时成功或同时失败否则就会出现库存扣了单子没发的情况。6. 常见问题速查与建模自检清单6.1 问题排查表我整理了下面这张速查表基本覆盖了REA模型落地时最常见的坑常见现象可能原因处理思路报表金额对不上事件时间字段未记录到业务实际发生时间点调整事件写入时机确保事件时间来自业务操作时间订单状态混乱把状态直接存字段而不是从事件推导改为以事件为准按事件序列计算状态审计历史链路不全修改了旧事件记录强制事件只增不改修正操作以冲销事件实现库存数据失真资源增减与服务事件不在同一事务用数据库事务保证资源影响与事件同时提交价格历史追溯不准直接改了资源主表价格引入有效期版本表事件冗余关键属性快照性能吃紧查询事件表时join过多合理冗余高频字段并维护派生状态表6.2 十分钟建模自检清单每次完成REA模型设计后我都会对照一张自检清单走一遍推荐你也用起来每个业务循环是否都由两个二元性事件构成如果没有业务闭环是否真的完整资源实体是否都有明确的量化单位没有量化单位的字段可能不是资源。代理类型是否覆盖了内外部参与方关键业务事件是否记录了操作代理和对方代理事件的时间粒度是否足够细所有事件是否都能追溯到具体发生时间有没有直接修改旧事件记录的逻辑如果有请改成冲销事件。事件影响明细中是否记录了数量、单价、金额三个要素方向标记是否清晰关键资源属性是否做了快照或版本管理历史追溯时能否还原当时口径派生状态表是否能够从事件表和事件资源影响表重建我在实际项目里的体会是REA模型真正难的第一关不是理解概念而是克制住用一张表解决问题的冲动。只要把资源、事件、代理的边界划清楚事件二元性想明白再落到表结构时就会非常顺。这套框架也不只在财务或进销存系统里能用凡是涉及谁在什么时间做了什么、导致什么资源发生了何种变化的领域都可以用REA建模。最后再分享一个小技巧下次讨论业务需求时别急着问表怎么建先请业务方把业务场景讲成一个带时间顺序的故事。把故事里改变资源价值的动作逐个挑出来你的REA模型就已经完成一半了。

相关新闻

软件功能与组件拆分实践:从迭代重构到模块化演进

软件功能与组件拆分实践:从迭代重构到模块化演进

写这个复盘的时候,我刚把“Software Features & Components 2”这个项目最后一批组件文档归档完毕。这个标题初看平平无奇,但凡是做过中型软件项目的人都会懂,前面带着“2”字,意味着这是一次迭代,是踩过坑之后的重…

2026/10/13 23:05:17 阅读更多 →
FTP协议深度解析:嵌入式与工控场景下的不可替代性

FTP协议深度解析:嵌入式与工控场景下的不可替代性

1. 为什么今天还要谈FTP——一个被低估的协议级基础设施“FTP?那不是上古时代的东西吗?”这是我每次在技术分享会上提到这个关键词时,台下最常听到的反应。某次给某高校实验室做网络服务架构复盘,一位刚入职的运维同事直接说&…

2026/10/13 23:05:17 阅读更多 →
Nacos 1.2.0整合Seata 1.2.0:分布式事务配置实战与踩坑记录

Nacos 1.2.0整合Seata 1.2.0:分布式事务配置实战与踩坑记录

最近在一个微服务拆分改造项目里,我撞上了分布式事务这道坎。用户下单这个操作,牵扯订单服务、库存服务、余额服务,任何一个成功而另一个失败,账就对不上。考虑团队当时已经在用 Nacos 1.2.0 做注册中心和配置中心,顺势…

2026/10/13 23:05:17 阅读更多 →

最新新闻

深度学习损失函数选型实战:从MSE到Focal Loss的原理与踩坑

深度学习损失函数选型实战:从MSE到Focal Loss的原理与踩坑

损失函数这玩意儿,说起来是深度学习里最基础的组件之一,但恰恰是很多同学在实战里翻车最频繁的地方。我带项目的时候经常看到有人模型结构抄得挺像样,学习率调度也配了一堆,可训练出来的结果就是不对,Loss 曲线跟心电图…

2026/10/14 6:38:29 阅读更多 →
微信小程序聊天室:WebSocket实时通信与图片消息实现

微信小程序聊天室:WebSocket实时通信与图片消息实现

上个月接了个需求,要做微信小程序聊天室,支持文字消息和图片消息,图片要能直接发到聊天流里。团队里一位同事提议先上HTTP轮询,2秒拉一次,省事。我说这个方案在简单场景下能跑,但聊天室里撑不住多少用户。后…

2026/10/14 6:38:29 阅读更多 →
SQLite FTS5+BM25实现上下文感知搜索(context-mode)

SQLite FTS5+BM25实现上下文感知搜索(context-mode)

1. “context-mode”到底是什么?别被术语唬住,它本质是让工具真正“听懂你话”的底层机制 “context-mode”这个词最近在开发者社区、低代码平台和本地AI工具链里高频出现,但翻遍官方文档,几乎找不到一句清晰定义。我最初看到它时…

2026/10/14 6:38:29 阅读更多 →
QGIS 加载天地图 403 权限类型错误(301013):User-Agent 分流与三种解法

QGIS 加载天地图 403 权限类型错误(301013):User-Agent 分流与三种解法

场景QGIS 里挂天地图底图,画面全空。F12 或者 QGIS 的网络日志里刷一片 403,响应体是:{"code":301013,"msg":"权限类型错误"}天地图控制台里 key 明明状态正常、配额也没用完,换一个浏览器端 key 试…

2026/10/14 6:38:29 阅读更多 →
极地环境计算设备可靠性测试:低温启动与温循实战指南

极地环境计算设备可靠性测试:低温启动与温循实战指南

把服务器从20℃的调试间一路运到零下四十多度的极地站点,开机那一刻,谁都不敢保证屏幕上是正常的登录界面还是黑屏。我在嵌入式测试这一行摸爬滚打了十几年,实验室里跑高低温箱和真正面对“跨越温差的可靠性挑战”,是完全两种体验…

2026/10/14 6:38:29 阅读更多 →
Simulink Bode图频域分析:线性化与稳定裕度实战

Simulink Bode图频域分析:线性化与稳定裕度实战

简介:这份资源面向学习自动控制原理、从事控制系统频域分析的初学者与工程人员,针对传统用MATLAB M语言绘制Bode图耗时费力、不便直观理解频域指标的问题,讲解如何借助Simulink可视化工具完成开环与闭环Bode图的绘制。资源包内含1个PDF文档&a…

2026/10/14 6:37:29 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →