QGDW740-2012输变电I2接口示例:用mongoose搭SOAP/WebService联调环境并改到TaoToken
1. 从一次“I2 还是 I2C”的误会说起QGDW740-2012 输变电 I2 接口到底在传什么刚接触电力在线监测项目时我在一次评审会上听到同事说“I2 接口要对接一下”旁边另一位同事顺口补了句“就是那个 I2C 吧”。当时我脑子里第一反应是硬件总线I2C 不是芯片之间那两根线SDA/SCL吗跟主站系统对接有什么关系。结果翻代码一看第三方库里确实有个带i2c字眼的模块名但里面全是 HTTP、XML、方法名跟总线一点关系都没有。这个误会其实很典型QGDW740-2012 里的 I2 接口指的是输变电设备状态监测主站系统与变电设备在线监测装置之间的应用层数据交互规范不是硬件 I2C 总线。那它到底传什么简单说I2 接口规定了主站和监测装置之间“怎么调、调什么、字段长什么样”。文档里出现的是 WebService、方法名比如心跳上报、监测数据上送、字段定义而真正落到报文层很多现场实现用的是 SOAP over HTTP。这里有个坑QGDW740-2012 文档通篇讲 WebService但几乎不写“SOAP”这个词。WebService 只是一种服务风格底层可以是 SOAP也可以是 REST。现场第三方库既然跑通了说明它用的就是 SOAP 信封 HTTP POST 这套组合。所以你要复现联调环境核心就三件事把 SOAP 信封拼对、把 HTTP 请求发对、把 endpoint 指对。这篇文章适合谁适合正在做输变电在线监测对接、手里有 QGDW740-2012 文档但不知道从哪下手、或者已经拿到第三方库但想自己实现一遍的工程师。我会用 mongoose 这个轻量 C/C 网络库在本地搭一套可复现的服务端 客户端服务端模拟主站接收 SOAP 请求客户端按 I2 接口的方法名和命名空间发报文。跑通本地之后再把 endpoint 改到 TaoToken 的兼容接口上验证一次完整调用链路。整个过程你能直接复制配置、复制请求样例遇到 401、local proxy failed、reading choices这类报错也知道去哪查。先明确一个检索词方便你后面搜资料QGDW740-2012 输变电 I2 接口 WebService SOAP 报文结构。记住这个组合比单搜“I2 接口”精准得多因为“I2”太容易被 I2C 带偏。我试过用纯手写 socket 去发 SOAP结果卡在Content-Length和Host头上报文拼错一个换行服务端就返回 400。后来换成 mongoose它的mg_printfmg_send组合能把 HTTP 头和 body 分开处理调试成本低很多。下面从环境准备开始一步步来。2. 用 mongoose 搭 SOAP 联调环境前的准备命名空间、方法名与 endpoint 三要素在写代码之前必须先把 I2 接口的“三要素”确认清楚否则后面报文拼出来服务端也不认。这三要素是命名空间namespace、方法名methodName、endpoint URL。QGDW740-2012 文档里会给出一批方法比如心跳类、监测数据类、控制类。以心跳上报为例第三方库里常见的命名空间是http://info.nari-china.com/CAG方法名类似uploadCACHeartbeatInfo。注意不同主站厂商的命名空间可能不同一定要以你手上那份文档或现场抓包为准不要照抄网上的例子。为什么命名空间这么关键因为 SOAP 的soapAction通常是namespace methodName拼出来的服务端靠它路由到具体处理函数。你命名空间写错服务端可能返回500或者直接告诉你方法不存在。我踩过的坑就是文档里命名空间结尾带不带斜杠、大小写是否一致都会影响匹配。建议你把文档里的命名空间原样复制别手敲。环境准备分两块服务端和客户端。服务端我用 mongoose 起一个 HTTP 监听收到 POST 后打印 body并返回一个符合 SOAP 规范的响应信封。客户端同样用 mongoose 发 POST。这样你不需要装 Tomcat、不需要 Axis一个可执行文件就能跑。依赖只有 mongoose 源码单文件mongoose.cmongoose.h编译命令后面会给。在把 endpoint 改到 TaoToken 之前你要先确认本地能跑通。TaoToken 在这里的角色是提供一个兼容的 API 入口方便你做模型对话或编码类调用验证。它的 API 地址是https://taotoken.net/api官网是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。注意I2 接口本身是电力业务协议TaoToken 不替代主站它只是帮你验证“HTTP 结构化报文”这条链路是否通。所以本地 SOAP 服务端仍然要自己搭TaoToken 用于后续把请求发到一个可观测的入口看返回是否符合预期。这里给一个对照表把三要素和常见取值列出来你填自己项目的时候直接替换要素示例值说明namespacehttp://info.nari-china.com/CAG以文档为准注意斜杠和大小写methodNameuploadCACHeartbeatInfo心跳上报方法不同主站可能不同soapActionnamespace methodName部分服务端要求放在 HTTP 头endpointhttp://localhost:8080/本地联调先用这个Content-Typetext/xml; charsetutf-8SOAP 1.1 常用也有用 octet-stream 的注意最后一行excerpt 里第三方库用的是Content-Type: octet-stream这在实际现场也能跑通因为有些服务端不严格校验。但标准 SOAP 1.1 建议用text/xml。你联调时如果服务端返回 415就换成text/xml再试。这个细节后面排障章节会再展开。另外mongoose 的版本建议用较新的单文件版编译时加-DMG_ENABLE_OPENSSL0先跑通明文 HTTP避免一上来就被 TLS 卡住。等本地通了再考虑 HTTPS。下面进入可复制配置环节。3. 可复制配置mongoose 服务端与 SOAP 信封的完整代码片段这一节给你两份可直接编译的代码服务端和客户端。先看服务端。它的作用是监听 8080 端口收到 POST 后把 SOAP body 打印出来然后返回一个带uploadCACHeartbeatInfoResponse的响应信封。这样客户端能拿到一个结构完整的返回方便你验证解析逻辑。服务端代码保存为server.c#include mongoose.h static void fn(struct mg_connection *c, int ev, void *ev_data) { if (ev MG_EV_HTTP_MSG) { struct mg_http_message *hm (struct mg_http_message *) ev_data; // 打印请求行、头和 body方便对照 SOAP 信封 MG_INFO((method: %.*s, (int) hm-method.len, hm-method.buf)); MG_INFO((uri: %.*s, (int) hm-uri.len, hm-uri.buf)); MG_INFO((body: %.*s, (int) hm-body.len, hm-body.buf)); const char *resp soap:Envelope xmlns:soap\http://schemas.xmlsoap.org/soap/envelope/\ soap:Body uploadCACHeartbeatInfoResponse xmlns\http://info.nari-china.com/CAG\ resultOK/result /uploadCACHeartbeatInfoResponse /soap:Body /soap:Envelope; mg_http_reply(c, 200, Content-Type: text/xml; charsetutf-8\r\n, %s, resp); } } int main(void) { struct mg_mgr mgr; mg_mgr_init(mgr); mg_http_listen(mgr, http://0.0.0.0:8080, fn, NULL); MG_INFO((SOAP mock server started on :8080)); for (;;) mg_mgr_poll(mgr, 1000); mg_mgr_free(mgr); return 0; }编译命令gcc server.c mongoose.c -o server -DMG_ENABLE_OPENSSL0 ./server客户端代码保存为client.c它按 I2 接口三要素拼 SOAP 信封并 POST#include mongoose.h #include stdio.h #include string.h int main(void) { struct mg_mgr mgr; mg_mgr_init(mgr); const char *url http://localhost:8080/; const char *ns http://info.nari-china.com/CAG; const char *method uploadCACHeartbeatInfo; char body[1024]; snprintf(body, sizeof(body), soap:Envelope xmlns:soap\http://schemas.xmlsoap.org/soap/envelope/\ soap:Body %s xmlns\%s\ deviceIdDEV-001/deviceId status1/status /%s /soap:Body /soap:Envelope, method, ns, method); char soapAction[256]; snprintf(soapAction, sizeof(soapAction), %s%s, ns, method); struct mg_connection *c mg_http_connect(mgr, url, NULL, NULL); if (c NULL) { MG_ERROR((connect failed)); return 1; } mg_printf(c, POST / HTTP/1.1\r\n Host: localhost:8080\r\n Content-Type: text/xml; charsetutf-8\r\n SOAPAction: \%s\\r\n Content-Length: %d\r\n \r\n %s, soapAction, (int) strlen(body), body); for (int i 0; i 50; i) mg_mgr_poll(mgr, 100); mg_mgr_free(mgr); return 0; }编译并运行gcc client.c mongoose.c -o client -DMG_ENABLE_OPENSSL0 ./client跑完你应该在服务端窗口看到打印出的 body里面包含uploadCACHeartbeatInfo和DEV-001。客户端这边因为没注册响应回调不会打印返回但服务端返回 200 就说明链路通了。如果你想看返回可以在客户端加MG_EV_HTTP_MSG回调打印hm-body。这里有个可复制的 JSON 配置片段用于记录你的联调参数方便切换环境保存为i2-config.json{ namespace: http://info.nari-china.com/CAG, methodName: uploadCACHeartbeatInfo, endpoint: http://localhost:8080/, contentType: text/xml; charsetutf-8, soapAction: http://info.nari-china.com/CAGuploadCACHeartbeatInfo, timeoutMs: 5000 }注意soapAction是拼接结果有些服务端要求带引号有些不要。你按现场抓包调整。这个 JSON 不是给 mongoose 直接读的而是给你做参数管理用后面改 endpoint 到 TaoToken 时只改endpoint字段即可。配置里timeoutMs建议设 5000因为 SOAP 请求如果服务端不响应mongoose 默认可能等很久。你可以在客户端加超时逻辑或者用mg_timer_add。本地联调阶段先不折腾跑通优先。到这里服务端和客户端代码都齐了。下一节做验证请求看成功结果长什么样。4. 验证请求与成功结果从本地 8080 到 TaoToken endpoint 的完整调用先验证本地。启动服务端./server另开终端跑./client。服务端输出应该类似method: POST uri: / body: soap:Envelope xmlns:soaphttp://schemas.xmlsoap.org/soap/envelope/soap:BodyuploadCACHeartbeatInfo xmlnshttp://info.nari-china.com/CAGdeviceIdDEV-001/deviceIdstatus1/status/uploadCACHeartbeatInfo/soap:Body/soap:Envelope看到这段就说明 SOAP 信封拼对了HTTP 头也发对了。如果服务端没打印先检查端口是否被占用、Content-Length是否和 body 实际长度一致。Content-Length算错是最常见的 400 来源。本地通了之后把 endpoint 改到 TaoToken 做一次完整调用验证。TaoToken 的 API 入口是https://taotoken.net/api你需要先拿到 API Key。获取地址在控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite。拿到 Key 后把客户端里的url改成 TaoToken 的接口地址并在 HTTP 头里加上Authorization: Bearer 你的Key。改完的客户端关键片段const char *url https://taotoken.net/api; ... mg_printf(c, POST /api HTTP/1.1\r\n Host: taotoken.net\r\n Authorization: Bearer %s\r\n Content-Type: application/json\r\n Content-Length: %d\r\n \r\n %s, apiKey, (int) strlen(payload), payload);注意TaoToken 的接口期望的是 JSON 负载不是 SOAP 信封。所以这一步的验证目的不是“把 I2 的 SOAP 发给 TaoToken”而是验证你的 HTTP 客户端、鉴权头、TLS 链路是否正常。你可以把 payload 换成一个简单的模型对话请求比如{ model: claude-3-5-sonnet, messages: [{role: user, content: ping}] }如果你要验证模型对话可以直接用模型对话入口https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite。如果你在做长期编码或 Agent 类任务Coding Plan 入口是https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite。API Key 管理在https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite。成功结果长什么样如果鉴权通过你会收到 200 和一段 JSON里面包含choices或类似字段。如果返回 401说明 Key 没带对或过期。如果返回local proxy failed通常是你的网络环境或 TLS 配置问题检查是否用了系统代理、证书是否可信。如果返回reading choices相关错误说明响应体解析失败可能是你读 body 的方式不对比如没等完整响应就关闭连接。这里给一个验证清单你按顺序过检查项期望常见错误本地 8080服务端打印 body端口占用、Content-Length 错TaoToken 鉴权200 JSON401、Key 拼写错TLS 链路握手成功local proxy failed响应解析能读到 choicesreading choices 报错跑通一次完整调用后你就有了一个可复现的联调环境本地 SOAP 服务端负责模拟 I2 主站TaoToken 负责验证 HTTP 链路和鉴权。两者结合能快速定位是报文结构问题还是网络鉴权问题。下一节讲常见报错怎么排查。5. 本篇常见错排查401、local proxy failed、reading choices 与 OAuth 报错对照联调时最容易卡住的不是业务逻辑而是这些看起来像“玄学”的报错。我按真实遇到过的顺序列出来每条给现象、原因、动作。401 Unauthorized。现象请求 TaoToken 返回 401body 里可能写invalid api key。原因通常是 Key 没带、带错、或者带了多余空格。动作检查Authorization: Bearer Key这一行Key 前后不要有空格不要用中文引号。如果你是从控制台复制的注意有没有把换行也复制进去。另外Key 分环境别把测试环境的 Key 用到生产入口。local proxy failed。现象请求发不出去或者返回这个字符串。原因你的运行环境配置了本地代理但代理不可达或者 TLS 证书校验失败。动作先确认你的程序没有读取HTTP_PROXY/HTTPS_PROXY环境变量。mongoose 默认不走系统代理但如果你手动设了就会走。把代理环境变量清掉再试。如果是证书问题本地联调阶段可以临时跳过校验但生产环境必须校验证书。reading choices 报错。现象返回 200但解析响应时提示读不到choices。原因响应体不是你以为的 JSON可能是 HTML 错误页或者你读 body 时只读了一部分。动作先把原始 body 完整打印出来看是不是 JSON。如果不是检查 endpoint 路径是否写错比如少写或多写/api。如果是检查你的 JSON 解析器是否处理了流式响应。有些接口返回 SSE 流需要按行读。OAuth 相关报错。现象提示OAuth token invalid或authorization failed。原因你用的可能是 OAuth 流程而不是 API Key或者 token 过期。动作确认你用的是 API Key 还是 OAuth。如果是 API Key就不要走 OAuth 流程。如果确实需要 OAuth检查 token 有效期和 scope。在 TaoToken 的场景下API Key 方式更直接建议先用 API Key 跑通。SOAP 服务端返回 500。现象本地服务端返回 500或者客户端收到 500。原因SOAP 信封命名空间不匹配、方法名拼错、或者SOAPAction头缺失。动作把服务端收到的 body 原样打印和文档里的方法名逐字对比。特别注意命名空间结尾的斜杠http://info.nari-china.com/CAG和http://info.nari-china.com/CAG/是两个不同的命名空间。Content-Length 不匹配。现象服务端返回 400或者连接被重置。原因Content-Length写的是字符数而不是字节数中文或特殊字符会导致长度算错。动作用strlen算字节数不要用sizeof。如果 body 里有中文确保编码是 UTF-8并且Content-Length按字节算。如果你在配置 Claude Code 或类似工具时遇到 OAuth 报错检查~/.claude/settings.json或auth.json里的 Base URL、Key、Model ID 三件套是否齐全。Base URL 指向https://taotoken.net/apiKey 用你的 API KeyModel ID 按文档填。三件套缺一个都会导致鉴权失败。CC Switch、Cline MCP、Codex 的auth.json也是同样的逻辑Base URL Key Model ID缺一不可。排障的核心思路是分层先确认 HTTP 层通不通用 curl 测再确认鉴权层401 还是 200最后确认业务层报文结构对不对。不要一上来就改业务代码先把链路打通。6. 从本地 SOAP 到 TaoToken把 I2 接口联调经验复用到日常验证把本地 SOAP 服务端跑通、再把 endpoint 切到 TaoToken 验证鉴权这套流程的价值不只是“跑通一次”。它帮你建立了一个分层排查的习惯报文层用本地 mock 服务端兜底网络和鉴权层用 TaoToken 这类入口验证。以后遇到新的 I2 方法你只需要改methodName和字段服务端返回结构照着文档补客户端不用大改。如果你要长期做编码或 Agent 类任务建议把 Coding Plan 用起来入口在https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite。它适合需要持续调用、批量验证的场景。日常快速验证模型对话用模型对话入口更轻https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite。API Key 管理和文档分别在https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite和https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite。最后留一个实用技巧把i2-config.json纳入版本管理每次联调前先确认namespace、methodName、endpoint三个字段。我踩过的坑是现场抓包发现命名空间和文档不一致文档是旧版主站已经升级。所以文档和抓包要对照看别只信文档。报文拼好后先用本地服务端验证结构再切 TaoToken 验证链路两步都过基本就能定位问题是出在业务字段还是网络鉴权。

相关新闻

Scale-Up光链路可靠性设计:协议机制与工程实践复盘

Scale-Up光链路可靠性设计:协议机制与工程实践复盘

最近在调一个面向AI训练的Scale-Up集群时,光链路可靠性这块让我吃了不少苦头。Scale-Up这类短距无损互连协议,本来就是在机柜内或跨机柜之间把GPU加速卡直连起来,带宽大、时延要求极低,和传统以太网那种“尽力而为”的模型完全不同…

2026/10/11 10:07:00 阅读更多 →
WeClaw常见问题排查:二维码过期、Agent不启动等8个问题的解决方法

WeClaw常见问题排查:二维码过期、Agent不启动等8个问题的解决方法

【免费下载链接】weclaw Connect to any agents with WeChat ClawBot. 项目地址: https://gitcode.com/gh_mirrors/we/weclaw 点击查看 免费下载 WeClaw 是一款微信 AI Agent 桥接工具,可以把 Claude、Codex、Gemini、Kimi 等 AI Agent 接入微信&#x…

2026/10/11 10:07:00 阅读更多 →
从模糊代号到可落地项目:结构化需求分析方法

从模糊代号到可落地项目:结构化需求分析方法

有人给我发来一个项目代号:rea。没有项目正文,没有关键词,没有摘要描述,没有任何上下文。我第一反应是回了一句“这是什么”,对方回了一个”你猜“。这种事我刚入行那会儿可能真会去猜,猜上个三天三夜&…

2026/10/11 10:05:59 阅读更多 →

最新新闻

DeepSeek开源算力地基:FlashMLA与DeepEP如何加速国产大模型?

DeepSeek开源算力地基:FlashMLA与DeepEP如何加速国产大模型?

先说明一下我的第一反应:看到“致敬,DeepSeek 最新开源的不是模型,是国产算力的地基”这个标题,我以为是又一个大模型权重开源了。结果点进仓库一看,里面没有模型文件,躺着的全是 FlashMLA、DeepEP、DeepGE…

2026/10/12 7:08:08 阅读更多 →
NumPy随机函数与广播机制:维度对齐、代码实战与踩坑全解

NumPy随机函数与广播机制:维度对齐、代码实战与踩坑全解

【day 48】随机函数与广播机制,打卡到这个组合的时候,我明显感觉身边不少同学开始卡壳了:随机函数单独用没问题,广播规则单独看也能理解,但真到写代码的时候,要么随机生成的数组形状对不上,要么…

2026/10/12 7:08:08 阅读更多 →
MTCNN人脸检测详解:P-Net、R-Net、O-Net三级网络训练与部署实战

MTCNN人脸检测详解:P-Net、R-Net、O-Net三级网络训练与部署实战

简介:面向深度学习和计算机视觉研究者,这份完整代码基于MTCNN级联卷积网络实现人脸检测,清晰覆盖P-Net候选框提议、R-Net边界框精修、O-Net关键点定位的完整流程。包体共80个文件,以Python源码为核心,包含48个py文件&a…

2026/10/12 7:08:08 阅读更多 →
物联网通信技术选型与架构设计:从链路预算到协议栈的工程实践指南

物联网通信技术选型与架构设计:从链路预算到协议栈的工程实践指南

干了十几年通信,最明显的感觉是:打电话的人越来越少,问"能不能帮我把这个箱子里的定位数据传回来"的人越来越多。物联网这个概念被炒了很多年,别人看到的是智能家居、智慧城市、大风口,我看到的是另一件事—…

2026/10/12 7:08:08 阅读更多 →
MyBatis查询功能全解析:从动态SQL到性能优化的实战指南

MyBatis查询功能全解析:从动态SQL到性能优化的实战指南

项目标题: MyBatis各种查询功能用到一定年头你就会发现,MyBatis的查询功能说难不难,说简单也绝不是写个select标签就完事。日常开发里,动态条件、分页、多表嵌套、批量操作,任何一个场景都能写出好几种不同写法,而每种…

2026/10/12 7:08:08 阅读更多 →
老毛桃UEFI启动盘v7.0:稳过Secure Boot,原生支持NVMe与Win11架构识别

老毛桃UEFI启动盘v7.0:稳过Secure Boot,原生支持NVMe与Win11架构识别

简介:老毛桃U盘启动盘制作工具(UEFI版 装机版)v7.0是一款面向电脑初学者与系统维护人员的轻量级系统辅助工具,专为快速制作兼容UEFI与传统BIOS的U盘启动盘、安装原版Windows系统及执行PE环境下的故障排查而设计。资源包共2个文件&…

2026/10/12 7:07:08 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →