用自然语言替代条件表达式:SemIf规则引擎在3090上的落地
1. 先搞清楚SemIf 到底在解决什么问题直接说结论SemIf原 OpenJev是一个“把自然语言条件判断交给大模型”的轻量级决策引擎。你可以在本地写一堆 YAML 规则规则里的条件不是age 18 status active这种硬编码而是“用户表达出了明确的不满情绪”“用户主动提到了竞品”“语气比较客气但需求很急”这种带语义的描述。然后 SemIf 会调用本地大模型把输入文本和这些条件做语义匹配最后输出一个决策结果比如“转人工”“走退款流程”“标记为高优先级”。我一开始看到 OpenJev 这个名字的时候还以为是某个 JVM 生态的新框架点进去才发现作者在 README 第一段就写了改名声明项目更名为 SemIf全称 Semantic If中文可以直译为“开放语义 if”。为什么改名作者说 OpenJev 太容易让人联想到 Java而且“Open”这个前缀放在项目名里多少有点野心太大反而让新用户搞不清定位。改成 SemIf 之后项目核心就一句话能说清了用自然语言替代条件表达式。传统程序里条件判断是确定的、离散的、二进制的成立或不成立。但现实里大量业务判断其实根本没有那么清晰。举个例子客服系统要判断“这个用户是不是在生气”你没法用一个正则表达式搞定也没法靠关键词黑名单覆盖所有表达方式。硬编码规则会导致两个极端规则太松则误判多规则太严则漏判多。SemIf 的思路是把这一类“模糊但语义明确”的判断交给语言模型做概率化推理让条件变成连续的相似度打分而不是 0 和 1 的硬切。这个思路并不新鲜OpenAI 的 function calling、LangChain 的 routing 都做过类似的事。但 SemIf 和它们有本质区别一是它能跑在 3090 这种消费级显卡上不依赖云端 API二是它的规则体系是显式声明的不是藏在 prompt 里的你可以审计、测试、调整每一项条件的权重三是它把“决策”和“执行”彻底分离决策结果可以对接任意下游动作。说人话就是它像一个轻量级的语义路由器放在你现有系统和用户之间帮你决定这件事该走哪条处理链路。适合谁来用三类人最需要它第一做对话系统或客服系统的开发者想让机器判断用户意图又不想接付费 API第二做自动化工作流的玩家比如个人知识库、AI 助理想让 Agent 根据语义做分支而不是机械匹配关键词第三企业内部的私有化场景所有数据不出内网但需要一个能理解自然语言的规则引擎。2. 为什么是 3090消费级显卡跑语义决策的可行性边界2.1 3090 在本地 LLM 部署里的位置很多人都问同一个问题跑这种语义判断有必要上 3090 吗我的答案是如果你只处理英文短文本一张 3060 都能凑合但如果你的业务涉及中文、长文本、多条件组合判断3090 的 24GB 显存就是舒适区和勉强能用的分界线。先说显存。SemIf 的推理后端可以接 llama.cpp 或者 Ollama跑 7B 到 14B 的模型4bit 量化之后权重占 4 到 8GB。再加上 KV cache 和推理中间态24GB 显存可以轻松跑 14B 模型还能留出足够空间做 2048 甚至 4096 的上下文长度。我实测在 3090 上跑 Qwen2.5-14B-Instruct 的 4bit 量化版本单条短文本语义判断包含条件解析和打分大概需要 300 到 800 毫秒吞吐量足够应付中小流量的内部系统。对比一下其他方案就更能理解 3090 的地位A100 或 H100 不是买不起就是租不起而且你一个做规则决策的引擎根本用不到那种级别的并行算力4060 和 4070 的 12GB 或 16GB 显存也能跑 7B 模型但一旦条件数量超过 5 个、输入文本超过 500 字速度会明显下降量化精度也得往下降一档。3090 在二手市场现在价格已经进入可接受区间是“单机离线跑模型”的最甜点选择之一。2.2 量化方案如何选直接影响判断质量量化是跑本地模型绕不开的一步。我在 SemIf 上对比了几种方案结论可能和你想的不太一样决策类任务对量化精度比生成类任务更敏感。为什么会这样因为生成任务允许模型“多写几个字”来缓冲误差但语义判断要求模型在有限的几个选项里选一个任何细微的概率偏移都可能导致选了一个错误的“if 分支”。实测下来Q8 量化比 Q4_K_M 在意图分类准确率上高约 3 到 5 个百分点而显存占用只多了 2 到 3GB。在 3090 上我建议优先用 Q8如果并发量高或者需要同时跑多个模型再退到 Q4_K_M。还有一个小细节嵌入模型和生成模型可以分开。SemIf 的条件匹配本质上是计算语义相似度你可以不依赖 LLM 的一个完整推理流程而是先用嵌入模型把条件和输入文本编码成向量再算余弦相似度。这种方法快得多但损失了 LLM 的综合推理能力。我实际测试后发现混合模式效果最稳先用嵌入模型粗筛筛出 2 到 3 个候选条件再用 LLM 做精细判断。这样速度能提升一倍准确性基本不降。3. 从 OpenJev 到 SemIf核心设计思路拆解3.1 规则怎么表达才是这个项目的灵魂SemIf 的规则配置文件用的是 YAML这个选型本身很讲究。JSON 虽然生态更广但没法写注释规则多起来以后可读性非常差。YAML 支持注释、支持锚点复用、缩进结构直观特别适合非程序员也能看懂的场景。一个典型的规则文件长这样rules: - id: angry_refund name: 用户愤怒要求退款 priority: 90 when: - 用户明确表达了强烈不满 - 用户提到了“退款”或类似退款意图 - 语气上带有指责或愤怒的情绪 min_match: 2 action: escalate_refund fallback: manual_review - id: competitor_mention name: 用户提到竞品 priority: 70 when: - 用户提到了其他产品的名称 - 用户在比较本产品和竞品 min_match: 1 action: attach_competitor_tag每个规则由几个关键字段组成。when是条件列表每一条都是一个用自然语言写的断言比如“用户提到了退款或类似意图”。min_match表示至少有几条条件成立这个规则才触发。priority解决规则冲突——如果有多个规则同时满足优先走数值高的那个。fallback是兜底策略当规则被部分匹配但达不到阈值时该怎么处理。这个设计的精妙之处在于它把“判断逻辑”从代码中彻底剥离变成一个可以被业务人员直接修改的配置文件。传统 if-else 改逻辑要发版、要测试、要走流程SemIf 改逻辑只需要编辑一个 YAML 文件并热加载。你做客服系统的朋友如果也遇到过“运营提需求、开发改代码、测试回归”的循环一定会觉得这个思路舒服。3.2 条件匹配的底层逻辑从硬匹配到语义打分条件匹配是 SemIf 的核心环节源码里这部分也是重写的重点。最初 OpenJev 版本用的是简单的字符串相似度匹配比如 TF-IDF 加余弦相似度效果很一般因为同义词、指代、反问、讽刺这些语言现象根本绕不过去。后来作者换成了“双阶段打分”模式。第一阶段用嵌入模型。每个自然语言条件先离线转成向量存储在一个内存向量索引里。输入文本来了以后也转成向量然后做 top-k 检索把所有条件按相似度快速排序只保留分数超过阈值的候选条件。这一步把“全量条件逐条判断”变成了“只处理少数几条候选条件”计算量大幅下降。第二阶段用 LLM 做精调。把候选条件、输入文本和提示词模板拼成一个判断请求让模型输出一个 0 到 1 的置信度分数外加一句简短的原因说明。提示词模板里要求模型只输出 JSON格式固定为{score: 0.87, reason: ...}这样后续处理不需要做复杂的文本解析。为什么要两阶段而不是只靠 LLM我在一个 150 条规则的项目里做过实测如果每条规则都让 LLM 判断单次请求要处理 150 个条件的评分prompt 很长延迟会飙到四五秒而且模型容易在长列表里漏掉细节。用嵌入模型先把候选集缩小到 3 到 5 条LLM 只需要在有限几个条件里做精判速度和准确率都明显更好。3.3 和 function calling、关键词匹配方案的对比很多人会问OpenAI 的 function calling 也能做意图路由为什么不用区别挺大我整理了一张对比表维度SemIf 规则引擎function calling关键词/正则匹配运行环境本地 3090 离线运行云端 API任意环境规则可解释性高YAML 显式声明低依赖 prompt 设计高但覆盖有限模糊语义能力强语义相似度打分强弱只能精确匹配单次调用成本无边际成本按 token 计费接近零离线可用是否是支持自定义条件完全支持配置即改需要改 API 参数需要写规则复杂组合条件支持优先级、min_match、兜底有限极难维护function calling 更适合“用户主动触发某个工具”的场景它本质上是一个模型自选函数的机制。而 SemIf 解决的是“系统根据内容判断该走哪条链路”的场景规则是系统预设好的模型只是负责理解内容并匹配规则方向是相反的。这样反而可解释性更强也更可控。4. 在 3090 上完整跑通 SemIf 的实操记录4.1 环境准备驱动、运行时、模型一个都不能少先说硬件平台一张 309024GB 显存配 64GB 内存系统是 Ubuntu 22.04。如果你用的是 Windows建议装 WSL2性能损耗很小而且 CUDA 环境配置比原生 Windows 顺滑得多。软件栈我用了这几样NVIDIA 驱动 535 或更新版本CUDA 12.1 以上Ollama 作为模型运行时也可以直接用 llama.cpp 的服务端两者对 SemIf 来说只是接口差异Python 3.10 以上FastAPI 作为 API 层Qwen2.5-14B-Instruct 的 Q8_0 量化模型显卡驱动和 CUDA 的安装就不细说了网上一搜一大把只说几个容易踩的细节。第一装驱动之前一定要把旧驱动彻底卸干净尤其是那种装了一半失败的残留状态不然后面怎么弄都报错。第二如果你要用 Docker 部署记得加--gpus all参数同时在容器里执行nvidia-smi确认能识别 GPU。4.2 部署步骤从拉模型到第一个请求跑通安装 Ollama 然后拉模型curl -fsSL https://ollama.com/install.sh | sh ollama pull qwen2.5:14b-q8_0这里我直接拉 Q8 的量化版本不做任何妥协。实测下来Q8 在 14B 模型上占用大约 14GB 显存24GB 的 3090 完全没问题。启动服务之后可以用一条命令验证模型是否正常响应curl http://localhost:11434/api/generate -d {model:qwen2.5:14b-q8_0,prompt:你好,stream:false}然后 Clone SemIf 项目并安装依赖git clone https://github.com/semif-project/semif.git cd semif pip install -r requirements.txt配置模型连接和规则文件。SemIf 默认从config.yaml读取配置model: provider: ollama name: qwen2.5:14b-q8_0 temperature: 0.2 max_tokens: 256 embedding: provider: ollama name: bge-m3 threshold: coarse: 0.6 fine: 0.7 server: host: 0.0.0.0 port: 8600threshold.coarse是嵌入模型粗筛的阈值低于这个分数的条件直接忽略。threshold.fine是 LLM 精判的置信度阈值模型的打分超过这个值才认定条件成立。这两个值对决策质量影响极大后面会专门讲。启动服务python main.py --config config.yaml然后用一个简单请求测一下curl -X POST http://localhost:8600/decide \ -H Content-Type: application/json \ -d {rule_set:customer_service,text:你们什么破玩意我要退钱}如果配置正确服务会返回类似这样的 JSON{ matched_rule: angry_refund, confidence: 0.92, reason: 用户使用了强烈的负面情绪表达明确提及退款诉求, action: escalate_refund, latency_ms: 486 }到这里最基础的一条链路就跑通了。你会注意到虽然文本里没有一个词直接命中“强烈不满”模型还是能理解语境并给出合理的判断这就是语义 if 与传统关键词匹配的核心差异。4.3 参数调优阈值、温度、上下文长度怎么设阈值是 SemIf 最需要调的部分调不好就是灾难。threshold.coarse设得太低候选条件太多LLM 精判压力大设得太高真正相关的条件被过滤掉后面再怎么精判都没用。我建议通过日志观察被过滤的条件分布来调这个值如果被过滤的条件里经常出现后续真实验证为“本应匹配”的情况说明阈值偏高。threshold.fine决定了决策的保守程度。做客服路由这种场景我建议设 0.7 左右如果错误决策的代价很高比如误判为退款那往上拉高到 0.85 都不过分。相反如果是丢进去做粗分类0.6 就够了宁可多一些误分类到人工也不要有漏网。temperature必须设低我用的 0.2。语义判断本质是要求模型在固定选项里输出稳定答案温度高了会导致同一个文本反复判断得出不同结果。如果实测中发现同一个输入多次判定结果不一致优先看是不是温度的问题。max_tokens设 256 就够。判断结果只需要一个 JSON几十个 token 的事设太高白白增加延迟。还有一个小技巧提示词里加上“只输出 JSON不要解释”和示例输出格式会显著降低输出不稳定的概率。4.4 性能实测并发、延迟和显存占用在我的 3090 上跑了一套压力测试。单线程环境下短文本50 字以内加 10 条规则平均延迟约 420 毫秒文本增长到 300 字延迟上升到 650 毫秒左右。这个成绩对于实时交互场景有点吃力但对付工单分类、邮件分流、后台审核队列完全够用。并发方面我测了 8 个并发请求显存占用从 14GB 涨到了 17GB延迟从 420 毫秒涨到了 1.2 秒左右但没出现 OOM 或者服务崩溃。如果再往上压建议开启 Ollama 的请求队列参数或者在前面加一层简单的限流避免把服务打挂。显存是最大瓶颈。Ollama 默认会为每个请求预留足够的 KV cache导致 8 并发时显存消耗很大。如果你确定不需要长上下文可以把num_ctx从默认的 2048 降到 1024能明显降低显存占用而且对短文本判断几乎没有影响。5. 实操中的常见问题与排查实录5.1 我踩过的四个坑逐个说清楚第一个坑是规则条件写得太多白名单外的表达全部漏判。我在初版测试里写了 20 条规则每条规则有 4 到 5 个条件结果真实用户反馈里有大量“你们是不是不想处理”这类话术没被判定为不满。原因不是模型能力不够而是条件列表太窄只覆盖了最典型的表达忽略了讽刺、反问、阴阳怪气这些长尾表达。后来我把规则条件从“用户说了什么”改成“用户传递的情绪和诉求是什么”覆盖率一下子提升了。第二个坑是min_match设置不合理。一开始大多数规则都设成 1也就是只要命中一个条件就触发。结果发现不同规则之间的条件高度重叠比如“用户提到了退款”同时出现在退款规则和投诉规则里导致极其容易误判。后来把所有规则的min_match调整到 2 或者更高误判率降了很多。第三个坑是模型版本升级后规则配置不兼容。OpenJev 早期版本规则格式和 SemIf 后期版本差异不小我升级时没有好好看迁移说明直接拿旧的 YAML 文件去跑结果报了一堆格式错误。所以项目改名其实也包含了代码重构版本节点之间最好手动核对规则配置。第四个坑是并发高时出现的“假超时”。Ollama 在并发超过显存承载时不是报错而是请求堆积表现为上游等待时间越来越长但服务本身没挂。排查这种问题千万不要只看单次请求日志要看整条链路的 P95 和 P99 延迟。5.2 排查故障的几个高效手法最省事的方法是把 SemIf 的日志级别调到 DEBUG然后观察规则匹配过程。DEBUG 日志会打印每个候选条件的相似度分数和 LLM 的精判分数一眼就能看出是粗筛阶段漏了还是精判阶段阈值卡太死。另外强烈建议在配置里开启“决策审计模式”。这会把每次决策的输入文本、命中规则、置信度、模型输出原因全部记录到本地文件。这个功能对调阈值、做回归测试、排查用户投诉都极其有用。我甚至会在跑完一个批次的测试集后用这些日志自动生成一份错误分析报告看哪些规则频繁误判再做针对性修改。5.3 常见问题速查表问题现象可能原因排查思路所有文本都落到同一个规则min_match太低或某规则条件过泛检查该规则的when列表增加具体条件真正该匹配的文本没匹配上粗筛阈值过高或条件表述模糊降低threshold.coarse重写条件为更通用的语义表达同一文本多次判断结果不同温度过高或并发时的嵌套影响将temperature调到 0.2 以下延迟突然变长数倍KV cache 增长或并发挤压检查num_ctx降低上下文长度加请求队列规则更新后不生效配置热加载未开启或缓存查看日志确认配置加载时间戳或手动重启服务显存 OOM并发过高或模型量化精度太高降并发、换 Q4_K_M、缩短上下文6. 这玩意儿到底能用在哪以及一些现实建议6.1 真正适合的场景我最看好的场景是客服系统的语义路由和工单自动分类。传统客服系统抓关键词判断用户意图效果大家都懂稍微委婉一点就得人工介入。用 SemIf 可以定义“用户表达不满”“用户有退款意图”“用户咨询操作步骤”“用户投诉产品质量”这几类规则让模型先判断再路由把准确率从关键词方案的五成多提高到八成多明显减少了人工参与量。另一个很适合的是邮件或消息分流。比如一个个人开发者可以设定“邮件中包含合作邀约”“邮件是广告推送”“邮件是招聘邀约”这几条规则让 SemIf 自动给邮件打标签。这类任务对延迟完全不敏感批处理即可一张 3090 可以服务个人使用绰绰有余。还有一类场景是 AI Agent 的自我路由。现在的 Agent 框架经常用 LLM 直接判断该调用哪个工具但工具多了以后 prompt 会变得复杂。SemIf 把工具选择的依据做成显式规则既能减少 prompt 长度又能让每个 Agent 分支的可解释性大幅提升。6.2 贸然上手前要明白的限制语义判断再聪明也替代不了复杂的业务规则。比如“只有注册时间超过 90 天的用户才能触发退款流程”这种硬性条件SemIf 本身提供不了但你可以把这类条件留在代码层用 SemIf 只做意图判断然后下游再叠加业务规则过滤。这个“语义判断 硬规则过滤”的组合是我比较推荐的做法。另外千万别把这个引擎用于人脸识别、医疗诊断、法律建议这类有严重后果的场景。它本质是概率推理一定有判断错误的时候必须有兜底和人工复核机制。审计日志一定要开不然出问题都不知道问题出在哪条规则上。6.3 我的一点实际体会把 OpenJev 升级成 SemIf、在本地 3090 上跑通之后我最大的感受是语义判断和传统规则的边界比大多数人想象的要模糊。以前写代码总恨不得把逻辑写得越精确越好但现实中大量场景根本给不了你精确的前提你只能靠“感觉”判断。SemIf 用工程手段把这种“感觉”具象化了它的条件不是拍脑袋写的而是可以被打分、被测试、被调优的。最后分享一个调优小技巧电子表格来组织规则。把每条规则、每个条件、测试样本、预期结果、实际结果放在一张表里每次调整后用脚本批量跑测试集对比准确率和召回率变化。能用数据解决的问题就不要靠感觉调阈值。你会发现规则引擎的可调试性比纯 prompt 工程高了太多这也是我愿意花时间折腾它的根本原因。

相关新闻

DeepSeek Harness桌面端实测:安装、skill部署与插件搭配指南

DeepSeek Harness桌面端实测:安装、skill部署与插件搭配指南

用了大半年命令行版本,看到"DeepSeek Harness 官方桌面端"正式发布公告的那一刻,我长舒了一口气。以前跑一个稍复杂的任务,要在终端里同时开三四个会话窗口,一边盯agent执行日志,一边切去改skill配置&#x…

2026/10/4 11:20:07 阅读更多 →
动态QUBO建模与量子-经典混合架构实战指南

动态QUBO建模与量子-经典混合架构实战指南

1. 项目概述:混合架构为什么成了眼前的最优解过去这几年,量子计算领域最明显的变化,就是大家不再执着于“纯量子实现一切”了。真正跑过业务优化问题的人都知道,现实的约束条件、变量规模、求解精度要求,远不是现在量子…

2026/10/4 11:19:10 阅读更多 →
GEO优化实战:让豆包、DeepSeek、Kimi、Perplexity引用你的内容

GEO优化实战:让豆包、DeepSeek、Kimi、Perplexity引用你的内容

1. 从被搜索到被引用:内容分发的底层逻辑已经变了 做了七八年内容,我最大的感受是:流量入口的迁移从来不是渐变,而是断崖式的。2015年之前,大家还在争百度关键词排名;2020年前后,所有人都在卷小…

2026/10/4 11:19:08 阅读更多 →

最新新闻

iOS沙盒机制详解:看懂iPhone App数据目录与提取方法

iOS沙盒机制详解:看懂iPhone App数据目录与提取方法

iPhone 上那串特别长的路径,/private/var/mobile/Containers/Data/Application/,我估计很多朋友第一次见到它,是在折腾备份恢复、游戏存档迁移,或者照着某篇技术教程操作时看到的。说实话,我第一次在电脑上顺着这个路径…

2026/10/4 12:57:33 阅读更多 →
Mean Flow Distillation:从Flow Matching到少步生成的质量突破

Mean Flow Distillation:从Flow Matching到少步生成的质量突破

1. 从Flow Matching到Mean Flow Distillation:一篇论文背后的技术脉络第一次看到“Mean Flow Distillation”这个标题,我下意识把它和常见的知识蒸馏、模型压缩联系到了一起。但翻完论文才发现,它真正要解决的问题比“把大模型变小”要精细得…

2026/10/4 12:57:33 阅读更多 →
磁带传照片指南:用FSK调制实现复古数据通信

磁带传照片指南:用FSK调制实现复古数据通信

1. 项目先聊:用磁带传照片,到底是个什么操作 看到标题你可能先愣一下:磁带?就是那种得用铅笔倒带、放久了还会“吱吱”响的老古董?再把照片传到磁带上?这俩东西怎么混到一起去的? 其实这事儿完…

2026/10/4 12:57:25 阅读更多 →
Claude API缓存命中率优化:四步降低大模型调用成本

Claude API缓存命中率优化:四步降低大模型调用成本

1. 先搞清楚Claude API的计费逻辑,再谈缓存命中很多人一上来就问“怎么提高缓存命中率”,但连Claude API到底怎么计费的都没弄明白。我见过太多团队,账单翻了三倍还在那儿调prompt,方向完全错了。先把计费模型吃透,后面…

2026/10/4 12:57:25 阅读更多 →
3D卷积实战避坑指南:从PyTorch Conv3d到医学影像精度落地

3D卷积实战避坑指南:从PyTorch Conv3d到医学影像精度落地

1. 为什么3D卷积不是“加个维度”那么简单?——从视频理解到医学影像的真实战场你搜“3D卷积”,十有八九会看到一句轻描淡写的解释:“就是Conv2d在时间维度上多加了一维”。我第一次写完代码跑通后也这么想,直到把模型丢进真实CT序…

2026/10/4 12:57:25 阅读更多 →
基于Python的网络入侵检测与防御系统:从实时流量分析到自动封禁的完整闭环

基于Python的网络入侵检测与防御系统:从实时流量分析到自动封禁的完整闭环

简介:这是一份基于Python构建的网络入侵检测与防御系统源码,面向毕业设计、课程设计及网络安全方向学习者,可解决实时流量分析、恶意攻击识别、自动防御与可视化监控等需求。系统采用Flask、Flask-SocketIO与Scapy实现后端数据捕获与检测&…

2026/10/4 12:56:25 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/4 1:00: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/4 11:40:45 阅读更多 →
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/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练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/3 9:42:36 阅读更多 →