HarmonyOS智慧农业应用:成本核算系统设计与分摊引擎实现
这一篇是高高种地系列教程的第12篇。前面11篇我们一路把环境监测、农事任务、物资库存这些模块都搬进了HarmonyOS应用传感器数据能看了地块档案也建好了。但每次跑农场总被同一个问题问住你说这季种的黄瓜到底赚没赚钱 大多数人的回答是应该赚了再追问一亩地成本多少就卡壳了——要么没记要么记在皱巴巴的本子上月底翻半天对不上数。这就是智慧农业里最容易被忽视、却最要命的一环成本核算。所以这一篇我打算把账算明白。我们要在HarmonyOS智慧农业管理应用里做一个完整的成本核算系统从农资、人工、水电、折旧这些成本数据录入到按地块/批次分摊再到算出亩均成本、批次总成本、预估盈亏最后用ArkUI呈现成一张能直接决策的报表。这篇适合已经在跟这个系列、想把记账功能落到实处的开发者也适合正打算给农业项目加算账能力的朋友。不啰嗦直接开始。1. 算清这笔账智慧农业里的成本核算到底要解决什么1.1 一季黄瓜种下来利润去哪儿了我认识一个种大棚的朋友去年种了一茬黄瓜销售季看着价格还不错货也走得快年底一算账却发现没赚多少。翻账本才发现问题出在隐性成本上水费电费是混在一起交的没法知道这茬黄瓜到底用了多少人工是按天结算的却被算到其他杂活里了大棚的造价和农机的折旧更是从来没进过成本里。最后算出来的利润充其量是销售收入减掉了买苗买肥的钱剩下全是糊涂账。这种场景在中小型农场非常普遍。大家不是不想算是不知道该怎么算。而智慧农业应用如果只做环境监测、自动灌溉却不碰成本那它就只是个传感器展示器。成本核算系统的核心目标是把每一笔支出都尽量落到具体的批次和地块上再通过合理分摊规则把共同费用算回各批次最终得到有说服力的成本数字。1.2 直接成本、间接成本与分摊的最小闭环在开始建表之前先要建立一对概念直接成本和间接成本。直接成本能明确说是为了哪块地、哪个批次花的钱。比如种子的钱、这个批次专用的有机肥、这茬只给番茄打的生物农药。这类钱不需要分摊直接记到对应批次头上就行。间接成本分不清具体归属但确实生产用掉了。比如整个大棚的水电费、共享农机的折旧、临时工的统包人工、仓库的租金。这类钱必须设计一个分摊规则按某个基准摊到多个批次上去。一个最小可用的成本核算闭环是这样的录入成本记录 - 标记直接或间接 - 汇总直接成本 - 按分摊规则把间接成本分配到批次 - 加上批次产量算单位成本 - 对比销售收入算盈亏。这个闭环看起来简单但落到代码里字段设计和计算顺序稍有偏差结果就会失真。接下来我们从数据模型开始一步步把它搭起来。2. 数据建模这步决定后续所有计算的可信度2.1 成本分类字典让每一笔支出都有固定户口我见过很多应用把成本类型做成一个下拉框选项是写死的种子、化肥、农药。这在一开始没问题但农业生产的支出类型非常杂还会随着季节变化冒出地膜回收费无人机飞防费这些新项目。写死选项意味着每次都要改代码、发版本太不智慧了。更稳妥的做法是建一张成本分类字典表让用户在后台或设置页里自己维护。这样既能保证录入时选项统一又能在计算时根据分类类型来判断应该走直接归属还是间接分摊。字典表里给每个分类一个唯一的code程序里所有逻辑都认这个code不认中文名避免用户把人工费写成人工导致统计对不上。2.2 RDB表结构成本记录、批次与地块的关联设计HarmonyOS侧我们用的是系统自带的RelationalStore关系型数据库也就是SQLite的封装。成本核算至少需要三张表批次表、成本分类表、成本记录表。如果你照着系列前面的章节建过地块表批次表也可以直接复用我这里为了讲清楚关联关系单独列出来-- 批次表一块地按种植季划分批次 CREATE TABLE IF NOT EXISTS batch ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, -- 批次名例如“1号大棚-2025春黄瓜” crop TEXT, -- 种植作物 area REAL DEFAULT 0, -- 该批次面积亩 expected_yield REAL DEFAULT 0, -- 预计产量斤/公斤 status TEXT DEFAULT active ); -- 成本分类字典表 CREATE TABLE IF NOT EXISTS cost_category ( id INTEGER PRIMARY KEY AUTOINCREMENT, code TEXT UNIQUE NOT NULL, -- 固定编码如 SEED、FERTILIZER name TEXT NOT NULL, -- 显示名称 alloc_type TEXT DEFAULT direct, -- direct直接归属indirect需要分摊 alloc_base TEXT DEFAULT -- 分摊基准area/yield/labor ); -- 成本记录表 CREATE TABLE IF NOT EXISTS cost_record ( id INTEGER PRIMARY KEY AUTOINCREMENT, batch_id INTEGER NOT NULL, -- 关联批次间接成本时可为空 category_code TEXT NOT NULL, -- 关联分类编码 amount REAL NOT NULL, -- 金额单位元 quantity REAL DEFAULT 0, -- 发生数量如5公斤、3人次 unit TEXT, -- 数量单位 occurred_date TEXT, -- 发生日期 note TEXT, -- 备注 create_time TEXT );注意cost_record里我让batch_id可以为空因为间接成本在录入时还不确定要分给谁它会先挂在一个待分摊池里等核算时再按规则分出去。直接成本则必须填写batch_id不能省。这个设计看似多了一个空值判断实际会让录入体验好很多。2.3 预留的两个关键字段分摊基准与发生数量有些人建成本记录表时只关心花了多少钱但我强烈建议你多加两个字段quantity和unit。因为很多成本如果只记金额后面想按产量/面积验证单价是否合理时完全没有原始数据。比如你记了一笔复合肥支出2000元但不知道买了多少公斤就无法判断这是不是被农资店坑了。quantity的另一个用途是辅助间接成本分摊。比如临时工包了一天的活总工钱是1200元分配给甲地块600元、乙地块600元靠的是现场估算工时。记录里的quantity可以作为分摊权重的一部分后面计算时能派上用场。所以不要怕字段多初期多留一两个看似用不上的字段后面扩展功能时你会感谢自己。3. 分摊引擎亩均成本与批次盈亏的计算逻辑3.1 三种分摊口径的选择按面积、按产量、按估算工时间接成本不能瞎摊必须有一个合理口径。我在自己的项目里总结了三种常用规则按面积分摊适用于水电费、大棚折旧、地租这类与土地规模强相关的成本。比如整片基地电费3000元总面积10亩其中1号大棚黄瓜批次占3亩那么它应当承担的电费就是3000 * 3 / 10 900元。按产量分摊适用于包装费、运输费、销售佣金这种跟着产出走的成本。产量高的批次分配更多相对公平。按估算工时分摊适用于临时工、人工管理费这类跟劳动力投入相关的成本。需要现场记录或按经验估算比例。这三种口径在分类字典表里用alloc_base字段标识area、yield、labor。核算时程序读取所有待分摊的间接成本根据它对应的基准类型结合批次表的area、expected_yield或手工录入的工时比例算出每个批次应承担金额。3.2 核心计算函数实现ArkTSHarmonyOS Next API 12之后我们可以在ArkTS里写纯TS的计算逻辑。下面这段代码我抽成了一个单独的CostCalculator类方便在录入页和报表页复用// CostCalculator.ets export interface CostRecord { batchId: number; categoryCode: string; amount: number; quantity: number; unit: string; } export interface BatchStat { batchId: number; batchName: string; area: number; yield: number; // 实际产量用于按产量分摊 } export interface AllocResult { batchId: number; directCost: number; indirectCost: number; totalCost: number; costPerMu: number; // 亩均成本 costPerKg: number; // 单位产量成本斤或公斤 } export default class CostCalculator { /** * 汇总一批成本记录的总金额 */ static sumAmount(records: CostRecord[]): number { let total 0; records.forEach((r: CostRecord) { total r.amount; }); return Math.round(total * 100) / 100; } /** * 间接成本按面积分摊 * param indirectTotal 待分摊总额 * param batchArea 当前批次面积 * param totalArea 参与分摊的总面积 */ static allocByArea(indirectTotal: number, batchArea: number, totalArea: number): number { if (totalArea 0) return 0; return Math.round((indirectTotal * batchArea / totalArea) * 100) / 100; } /** * 核心汇总直接成本 分摊间接成本生成批次核算结果 */ static calculateBatchCost( directRecords: CostRecord[], // 当前批次直接成本记录 indirectTotal: number, // 需要分摊到当前批次的间接成本总额 allocBase: area | yield, // 分摊基准 batch: BatchStat ): AllocResult { const directCost this.sumAmount(directRecords); let indirectCost 0; if (allocBase area) { indirectCost this.allocByArea(indirectTotal, batch.area, batch.totalArea); } else if (allocBase yield) { indirectCost this.allocByYield(indirectTotal, batch.yield, batch.totalYield); } const totalCost Math.round((directCost indirectCost) * 100) / 100; const costPerMu batch.area 0 ? Math.round((totalCost / batch.area) * 100) / 100 : 0; const costPerKg batch.yield 0 ? Math.round((totalCost / batch.yield) * 100) / 100 : 0; return { batchId: batch.batchId, batchName: batch.batchName, directCost, indirectCost, totalCost, costPerMu, costPerKg }; } }这里要注意一个细节所有除法结果我都用Math.round保留两位小数。因为金额相关计算不允许出现0.30000000000000004这种浮点残留否则报表里会出现莫名其妙的差额。如果你做多批次分摊最后可能会出现各批次分摊金额之和不等于总金额的分币差异这是舍入导致的建议在展示层把最大批次或者最后一个批次做一次尾差校正。3.3 精度与边界除零、空批次、超大金额核算引擎最怕什么怕除以零。地块面积不可能为0但用户录入时可能漏填后台数据也可能因为历史版本没强制校验而出现0。所以在allocByArea里必须有totalArea 0的判断否则一核算就崩。空批次也要处理如果某批次没有任何成本记录直接显示0不能报错。金额上限方面虽然数据库里REAL能存很大数但UI输入框应该限制最大位数我一般限9位整数、2位小数超过就提示金额过大请检查输入。这些都是小细节但就是这些细节决定了核算系统能不能真正被用户天天用。4. 录入端到报表端ArkUI页面怎么搭配才顺手4.1 成本录入页选择批次、类型、快速入账成本录入是使用频率最高的页面必须做得好用。我的录入页布局是顶部一个批次选择的横向滚动卡片下面跟着成本分类的宫格按钮再往下才是金额输入框和备注。批次选择用横向滚动的Scroll嵌套Row实现每个批次卡片显示地块作物面积。选中的卡片边框高亮没选中的半透明。这么做的好处是用户进入页面第一眼就能选批次不需要先弹一个Picker再选一遍。分类按钮我用了Grid组件每行4个图标加文字。点击分类按钮时把对应的categoryCode存到状态里同时高亮。这里有个交互细节如果用户没选批次就点了直接成本分类页面底部会弹一个Toast提示直接成本需要先选批次如果选的是间接成本分类则不强求批次因为间接成本后面统一分摊。金额输入部分HarmonyOS的TextInput自带数字键盘模式设置type: InputType.NUMBER_DECIMAL即可。我还在底部放了一排快捷金额按钮50、100、200、500农场录入小额开支时点一下比抠键盘快多了。保存按钮做了防重复提交isSaving标志位置为true后按钮变灰防止手快连点插两条记录。4.2 核算报表页汇总卡片、明细列表与趋势图报表页我分了三块顶部汇总区、中间趋势图、底部明细列表。汇总区用一行三个卡片展示本季总成本直接成本占比预估亏损/盈利。这三个数字来自核算引擎的汇总结果。如果有批次数据可以用Swiper左右滑动切换不同批次的统计卡片。趋势图这块我不建议在这个阶段引入重型图表库。HarmonyOS的ArkUI自带了Canvas组件画一组简单的月度成本柱状图完全够用。我自己的做法是用Canvas的RenderingContext按月统计成本总和按比例映射成柱状图高度每个月柱子上方标金额。如果开发时间紧更简单的方案是用Svg组件加一排Rect也能达到目视化效果。明细列表用ListForEach渲染每条记录展示日期 分类 数量 金额右侧放一个小箭头跳转编辑页。列表底部显示本批次合计方便对照。4.3 状态管理什么时候用State什么时候带着类对象走HarmonyOS ArkUI的状态管理有一个常见误区习惯性把所有数据都塞进State。但成本核算这种模块需要跨页面共享的数据不多我更倾向于用一个单例的CostRepository类负责数据读取页面里用State只承载当前显示的统计数据这类UI状态。例如核算报表页的汇总数据我从数据库捞出来后组装成一个AllocResult[]然后整体赋给State results: AllocResult[] []。因为AllocResult是纯数据类重新赋值整个数组一定触发刷新没必要用Observed做深层观测。反过来如果你让State直接指向一个经由前端计算改动的对象比如给某个记录动态追加字段那就容易出现数据变了UI不变的灵异事件。我的经验是核算模块的数据流转是DB - Repository - UIUI只展示一次性算好的结果不要在前端反复修改数据源。这样状态管理会清爽很多。5. 数据落地从RDB存储到版本迁移的实操细节5.1 为什么我选RelationalStore而不是KVStoreHarmonyOS提供两种主要的本地数据方案RelationalStore关系型数据库和KVStore键值数据库。成本核算这种有明确字段、需要聚合统计的数据显然要用关系型数据库。KVStore适合存配置项、用户偏好比如上次选中的批次ID、是否已看过引导页。如果你强行把成本记录存成KV查某批次所有成本时就只能全量遍历数据量一大性能完全不可用。创建RDBStore的代码在HarmonyOS Next API 12下是这样写的import { relationalStore } from kit.ArkData; import { common } from kit.AbilityKit; let context getContext(this) as common.UIAbilityContext; const STORE_CONFIG: relationalStore.StoreConfig { name: gaogao.db, securityLevel: relationalStore.SecurityLevel.S1 }; // 初始化数据库 let store await relationalStore.getRdbStore(context, STORE_CONFIG); // 执行建表SQL await store.executeSql(SQL_CREATE_BATCH); await store.executeSql(SQL_CREATE_COST_CATEGORY); await store.executeSql(SQL_CREATE_COST_RECORD);注意securityLevel建议与设备基础安全等级保持一致如果涉及农场的经营数据可以调高到S2但也要考虑跨设备同步时的约束。5.2 数据库升级迁移以后加表加字段不用慌成本核算系统上线后一定会遇到需求变更今天要加一个补贴收入明天要加一个支出单据照片。直接改数据库结构最危险的地方是用户手机上已有了旧库程序一升级CREATE TABLE IF NOT EXISTS不会更新旧表结构应用就会出现列不存在的崩溃。我的做法是主动管理数据库版本号。在getRdbStore成功后检查store.version如果低于目标版本就执行ALTER TABLE等迁移语句然后把store.version更新为最新const TARGET_VERSION 2; const currentVersion store.version; if (currentVersion 2) { await store.executeSql(ALTER TABLE cost_record ADD COLUMN receipt_path TEXT DEFAULT \\); store.version 2; }这里有个坑store.version的设置必须在所有迁移语句执行完之后再做。如果你中途设置了version后续SQL失败下次启动还会认为已经迁移到v2导致新字段没有真正加上。所以一定要先把所有executeSql用try-catch包起来全部成功后再赋值版本号。这块我踩过一次数据全部丢了才长记性。6. 用真实数据走一遍核算流程留意外面的坑6.1 一组模拟数据的手工计算与引擎输出对比光说不练不行。我模拟了一个10亩基地的场景1号大棚种黄瓜占地3亩2号大棚种番茄占地2亩剩余5亩是露地叶菜。一个月内发生了以下成本成本项金额(元)归属方式黄瓜种子800直接 - 1号批番茄种苗600直接 - 2号批有机肥(共用)1500间接 - 按面积水电费1200间接 - 按面积采摘临时工(黄瓜)900直接 - 1号批包装箱(按产量)600间接 - 按产量手工算一下间接成本总额 1500 1200 600 3300元。按面积分摊的为150012002700元总面积10亩黄瓜3亩分得810元番茄2亩分得540元叶菜5亩分得1350元。按产量分摊的600元假设黄瓜产量3000斤、番茄产量2000斤、叶菜1000斤那么黄瓜分得600 * 3000 / 6000 300元番茄分得200元叶菜分得100元。所以黄瓜批次总成本 直接成本800900 间接成本810300 2810元亩均成本 2810 / 3 936.67元。用我们的CostCalculator输入相同数据输出结果完全一致。这一步非常建议你在项目里写一个单元测试盯着数据库和纯函数不跑偏后面改代码时才敢重构。6.2 我在真机上踩过的三个坑第一个坑是浮点误差。第一次核算时黄瓜亩均成本算出来是936.6700000000001页面上直接显示那么长一串。后来所有金额计算都套了roundToTwo才彻底解决。第二个坑是ForEach渲染大列表卡顿。成本明细如果累积到上千条用普通的ForEach一次性渲染会让页面掉帧。我改成LazyForEach绑定IDataSource滑动时才创建行组件流畅度提升明显。第三个坑是数据库事务。批量插入多条成本记录时如果循环单条insert速度慢不说一旦中间某条失败前面成功的记录就留下了半截账。正确的做法是把所有插入放到一个事务里await store.beginTransaction(); try { for (let item of items) { await store.insert(cost_record, item); } await store.commit(); } catch (e) { await store.rollBack(); }事务能保证要么全部成功要么全部回滚成本数据这种敏感信息必须这么处理。6.3 后续扩展用成本核算反推种植计划成本核算系统做到这里已经不是单纯的记账本了。当你积累了足够多的批次数据就能做一件有意思的事反推种植计划。比如去年同一块地种黄瓜亩均成本900元亩产4000斤管理成本250元种番茄亩均成本1200元亩产3000斤。再结合当前市场价系统就能在录入新批次前给出建议“该地块近期更适合种黄瓜”。这个功能未来在HarmonyOS应用里可以用本地AI框架或简单的规则引擎实现。我在实际开发里的体会是成本核算系统的难点从来不是怎么写SQL、怎么画页面而是怎么跟用户把分摊口径对齐。很多时候你觉得自己设计的规则很合理但农场主的一句话就会让你重新审视我那个大棚东边和西边产量差一倍分摊水电费凭什么按面积 所以分类字典和分摊基准一定要做成可配置的让用户能为自己的管理模式定义规则。这个弹性才是智慧农业应用最值钱的部分。

相关新闻

Agent 工具网关实践:Hermes v0.10.0 能力拆解与接入避坑

Agent 工具网关实践:Hermes v0.10.0 能力拆解与接入避坑

Hermes v0.10.0 Release 这版发布,最大的变化不是又适配了几个模型,而是把 Tool Gateway——工具网关——从内部模块正式提成了对外能力集的头部功能。我这两周在 Windows 和 Linux 环境下做了不少接入测试,把 Hermes 接进了本地文件工具、一…

2026/10/2 21:05:21 阅读更多 →
RAG 检索过程(Retrieval Process)详解:从查询向量化到近似最近邻搜索

RAG 检索过程(Retrieval Process)详解:从查询向量化到近似最近邻搜索

文档教程知识库 【免费下载链接】developer-roadmap Interactive roadmaps, guides and other educational content to help developers grow in their careers. 项目地址: https://gitcode.com/GitHub_Trending/de/developer-roadmap 点击查看 免费下载 检索过程是…

2026/10/2 21:04:20 阅读更多 →
从单Skill到AI工作台:多Skill编排与工作流实战指南

从单Skill到AI工作台:多Skill编排与工作流实战指南

1. 从单点技能到工作台:为什么单个Skill永远不够用刚开始接触Skill这套机制的时候,我和大多数人一样,觉得一个Skill解决一个具体问题就已经很香了。写文案的Skill、做数据清洗的Skill、生成周报的Skill,每个单独拎出来都能跑通&am…

2026/10/2 21:04:20 阅读更多 →

最新新闻

Python发送邮件实战指南:从SMTP原理到自动化报表

Python发送邮件实战指南:从SMTP原理到自动化报表

做Python自动化的人,迟早会碰到“发邮件”这个需求。我最早写这东西是为了半夜盯服务器,CPU飙了要把日志推到我邮箱;后来做爬虫,每天把更新数据整理成Excel发给同事;再后来写公司内部的报表工具,直接定时往…

2026/10/2 22:34:49 阅读更多 →
Java+SpringBoot+Vue扶贫助农系统设计与实现解析

Java+SpringBoot+Vue扶贫助农系统设计与实现解析

做Java毕业设计辅导这几年,被问爆的一个题目就是“扶贫助农系统”。好多同学一上来就问:老师,基于javaspringbootvue的扶贫助农系统怎么做?源码怎么用?部署说明靠不靠谱?演示视频怎么录?说实话&…

2026/10/2 22:34:49 阅读更多 →
SQL直接生成JSON并自动转Word:数据库到报表的自动化链路

SQL直接生成JSON并自动转Word:数据库到报表的自动化链路

简介:面向SQL Server开发人员的实战型文档,聚焦数据库层自动生成JSON数据并供前端或业务系统调用。文档从JSON基本概念切入,重点讲解利用SYS.SYSCOLUMNS系统视图动态读取表结构,结合WITH子句与ROW_NUMBER()完成分页查询&#xff0…

2026/10/2 22:34:49 阅读更多 →
扶贫助农系统毕设实战:Spring Boot+Vue前后端分离开发全流程解析

扶贫助农系统毕设实战:Spring Boot+Vue前后端分离开发全流程解析

扶贫助农系统这类选题,在计算机毕设里属于典型的“看着简单、做起来全是细节”的方向。很多同学拿到题目第一反应是“不就是个商城吗”,结果真动手才发现,光用户角色、订单状态、权限控制这些就能绕晕。我前前后后帮人改过好几套这类毕设&…

2026/10/2 22:34:49 阅读更多 →
Python面向对象编程核心笔记:类、对象、继承与多态实战解析

Python面向对象编程核心笔记:类、对象、继承与多态实战解析

说实话,写Python学习笔记这玩意儿,我一开始也是随手记,写到第四部分“面向对象编程”的时候,发现前面那些变量、循环、函数的知识,全都在这里开始“串”起来了。如果你的学习路线跟我一样——先是基本语法,…

2026/10/2 22:34:49 阅读更多 →
DeepSeek V4.1 Pro测试聚焦Harness:本地部署与Agent编排实战

DeepSeek V4.1 Pro测试聚焦Harness:本地部署与Agent编排实战

1. 从一条测试消息说起:DeepSeek V4.1 Pro 到底在测什么 国庆前一周,几个技术群里同时冒出一条消息:DeepSeek V4.1 Pro 已经进入测试阶段,有望在国庆期间发布。消息本身很短,但底下跟的讨论量不小,因为这次…

2026/10/2 22:33:49 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05: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/2 10:36:31 阅读更多 →
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/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练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/2 6:09:11 阅读更多 →