Spring AI+Vue3 企业知识库设计:让每个答案有依据,让每份资料守住权限
Spring AIVue3 企业知识库设计让每个答案有依据让每份资料守住权限文档地址https://ruoyioffice.com 文章底部获取源码和演示地址 17156169080获取产品咨询本文由 RuoYi Office 团队整理结合实际项目分享企业软件的设计思路与开发经验。员工问“我下周去外地参加客户验收交通和住宿该按哪个标准申请”知识库很快给出了完整答案但引用的是去年的制度还混入了只向管理层开放的补充说明。文字再流畅这也不是一次合格的企业问答。真正要解决的是让答案使用正确范围内、正确版本的资料并让读者可以核验依据。▲ 目标架构示意资料先经过可见性和有效性筛选再成为回答证据证据不足时应明确说明而不是补出一个看似合理的结论。一、企业知识问答的难点不是再多接一个模型RAG即检索增强生成是先检索与问题相关的资料再让模型结合资料组织回答。它能缓解模型不知道企业内部信息的问题但并不自动解决“这份资料能不能给这个人看”“现在还是否有效”“引用是否真正支持结论”等问题。在企业场景里资料通常同时具有内容属性和管理属性。两份标题相近的制度可能分别属于不同子公司同一个操作手册可能保留着适用不同产品版本的分支一份合同模板可能包含内部谈判说明。把它们都转成向量不能抹掉这些差别。因此企业知识问答至少包含三层责任**业务确定资料边界检索寻找有效证据模型组织可解释的表达。**如果把三层责任全部交给一句提示词系统就很难证明自己在权限变更、资料更新和问题歧义时仍然正确。用户看到的现象实际缺失的能力应当验证什么回答引用了旧制度缺少生效与适用范围判断当前问题适用哪个版本普通员工看见内部补充条款内容可见范围未进入检索链路资料是否属于当前主体可见集合有引用但点开不支持结论引用只是装饰性链接原文是否支撑对应断言没找到资料仍然回答得很肯定缺少证据不足分支是否区分已知、未知与待确认本文以“查询出差制度”为贯穿案例。讨论的是软件设计不替企业制定报销政策。制度金额、适用人员和审批要求应来自企业自己的有效文件而不是由模型凭经验补全。现有工程给了哪些基础RuoYi Office 的 AI 模块已经具有知识库配置、文档处理、分段、检索测试和对话中的知识引用组件。源码中的AiKnowledgeSegmentServiceImpl会写入知识库、文档、分段标识按知识库限定向量检索再根据向量标识回读关系库中的段落记录。这些能力解决了“资料如何被检索、证据如何回到业务记录”的基础问题。本文进一步讨论的组织级 ACL、制度生效版本、引用点击时重新授权与证据不足策略应当作为扩展设计核实不能因为出现了一个知识库过滤条件就宣称已经完成所有安全治理。二、先把资料变成可以管理的知识而不只是上传文件1. 知识库配置解决检索方式不代替业务授权知识库配置页上的模型、召回数量和相似度阈值属于检索参数。它们影响“从候选资料中找出什么”不直接定义“哪些资料允许成为候选”。这两个问题在产品界面上也应该有清晰分工。▲ 真实系统配置界面。模型和召回参数是已有入口组织可见范围与制度有效性不能仅靠这些参数推断。对制度类知识管理员还需要给出负责人、适用组织、业务主题、生效时间和替代关系。这里不建议一开始就做庞大的知识本体而应先确定那些一旦缺失就可能造成错误答案的属性。例如问题里只有“出差住宿标准”但资料库存在不同地区和不同职级的规则。系统可以先询问缺少的适用条件也可以返回带条件的比较说明。直接选择相似度最高的一段给出唯一金额反而掩盖了资料本身的分支。2. 文档处理完成不等于知识已经可以上线上传、解析、分段、向量写入是资料进入检索系统的技术过程。业务上的“已发布、可查询”则是另一个决定。两者合并成一个状态会让解析成功但尚未复核的制度提前参与问答。▲ 真实分段编辑页面用于查看和修订资料内容。本次仅打开查看未保存更改该入口不代表已经具备完整的制度发布审批。一种可落地的设计是把处理状态和业务状态拆开处理状态描述解析是否成功、索引是否就绪业务状态描述草稿、待复核、生效、废止。只有两方面都满足条件文档版本才进入可检索集合。旧版资料也不一定应该删除。它可能仍然是解释历史报销单的依据。更合适的方式是保留版本身份并明确“当前制度问答”和“历史业务核查”是两种查询模式。后一种模式需要显式给定业务日期不能悄悄与当前查询混用。3. 分段必须保留回到原文的路径段落是检索单位但文档通常才是权限、版本和责任归属的单位。一个段落被命中之后系统至少应知道它来自哪份文档、哪一版、哪个位置。否则读者看见的只是一段脱离上下文的文字。▲ 真实分段页面。段落内容是检索基础正式引用还需要携带稳定的来源身份和适用上下文。源码目前写入向量元数据的knowledgeId、documentId、segmentId正是把向量结果与业务实体重新连接起来的支点。扩展版本治理时可以在此基础上增加版本身份而不是只在文档标题后面拼上“最新版”。需要特别留意段落上下文。标题写着“例外情况”正文写着“可以不受前款限制”如果切片时丢掉适用条件即使检索完全准确模型也可能误解。分段策略应围绕文档结构服务而不是只追求每段长度一致。三、从一个员工的问题走完一条可信检索链路假设员工正在查询下周适用的出差制度。服务端首先解析当前登录主体、组织和租户再确定问题中的业务时间与适用条件。客户端可以提供查询意图但不能自行决定自己可以访问哪些知识库。接着系统得到当前可用的资料范围。能直接在向量存储中表达的过滤条件应尽早下推复杂授权若无法完整下推也必须在任何段落进入模型上下文、日志或返回值之前完成严格过滤。为补足过滤后不足的候选可以分页扩大检索但不能先把未经授权的内容发给模型再让模型“不要泄露”。▲ 设计时序授权发生在内容进入模型之前引用在返回和打开原文时还需要按当前权限核验。这里有一个容易遗漏的时间窗口用户检索时有权限生成期间权限被收回返回时是否仍能展示原文对于敏感资料返回前需要重新检查关键授权缓存也应包含主体范围或权限版本不能只按问题文本命中。这不意味着所有系统都要实现复杂的实时撤权广播。最小可用方案可以是短期缓存、主体隔离、返回前校验以及权限变更触发失效。重要的是写清楚一致性边界而不是把“用了 Redis”当作安全方案。现有检索过滤解决的是哪一层下面从现有searchDocument方法中抽出向量检索阶段保留知识库过滤以及重排对候选数量的影响未展开后续重排分支。它是局部逻辑示例不是完整方法也不是额外实现的组织授权服务。privateListDocumentsearchDocument(AiKnowledgeDOknowledge,AiKnowledgeSegmentSearchReqBOreq){VectorStorestoregetVectorStoreById(knowledge);inttopKObjUtil.defaultIfNull(req.getTopK(),knowledge.getTopK());doublethresholdObjUtil.defaultIfNull(req.getSimilarityThreshold(),knowledge.getSimilarityThreshold());intcandidatesrerankModel!null?topK*RERANK_RETRIEVAL_FACTOR:topK;doublescorererankModel!null?SIMILARITY_THRESHOLD_ACCEPT_ALL:threshold;varrequestSearchRequest.builder().query(req.getContent()).topK(candidates).similarityThreshold(score).filterExpression(newFilterExpressionBuilder().eq(knowledgeId,req.getKnowledgeId().toString()).build()).build();ListDocumentdocumentsstore.similaritySearch(request);if(CollUtil.isEmpty(documents))returndocuments;// 后续按已有 Rerank 分支重排并应用阈值。// knowledgeId 过滤不等价于组织、人员、版本的完整授权。returndocuments;}需要避免把示例末尾的简化返回直接替换现有方法真实代码还有重排与分数处理。文章展示这段的目的是标明业务授权应该接入的位置而不是用一个不完整片段替换成熟检索逻辑。把权限和有效性变成进入上下文的硬条件下例是扩展设计伪代码policy、versions、evidenceStore是业务接口占位不代表仓库里已经存在同名服务。关键约束是过滤依据来自服务端返回给模型的只能是校验后的证据。publicListEvidenceretrieve(Queryquery,Subjectsubject){Scopescopepolicy.resolve(subject,query.businessDate());policy.requireKnowledgeAccess(scope,query.knowledgeId());SearchFilterfilterSearchFilter.fromServerScope(scope);ListHithitsvectorSearch.search(query.text(),filter);ListEvidenceacceptednewArrayList();for(Hithit:hits){EvidenceevidenceevidenceStore.load(hit.segmentId());if(evidencenull)continue;if(!policy.canRead(subject,evidence))continue;if(!versions.isApplicable(evidence,query.businessDate()))continue;if(!evidence.isIndexedAndPublished())continue;accepted.add(evidence);}ListEvidencerankedreranker.rank(query.text(),accepted);returnranked.stream().limit(query.allowedTopK()).toList();}这种二次回读还有一个价值向量索引与关系库更新可能存在短暂延迟。文档已经废止但旧向量尚未清除时业务库的有效性校验可以阻止它继续参与回答。代价是增加了读取与过滤因此需要批量加载和合理缓存而不是逐段发起多个远程请求。四、引用不是一个链接而是一条证据记录前端知识引用组件会按documentId聚合分段并展示文档名称和分段内容。这使读者能够知道一条回答用了哪些资料。但“列出了用过的文档”和“每个结论都有对应证据”仍然是两件事。假设回答包含交通标准、住宿标准和审批路径三条结论引用区只挂了一份十几页的制度读者仍需要自己搜索出处。更好的设计是让关键断言关联具体段落并显示版本、章节以及适用范围。▲ 建议逻辑模型文档承载业务身份版本承载当时内容段落承载检索单元引用把回答与具体证据关联。版本和引用记录为扩展设计。可以把引用拆成两类标识内部使用不可猜测或可授权的引用 ID外部展示可读的来源名称。不要让模型直接生成一个任意 URL 作为“原文地址”也不要把客户端传来的文件地址当作授权凭据。下例是引用校验的设计伪代码。模型只能选择服务端给出的证据 ID未在本次上下文中的标识一律不作为合法引用。publicAnswerverifyDraft(DraftAnswerdraft,ListEvidencecontext,Subjectsubject){MapString,Evidenceallowedcontext.stream().collect(Collectors.toMap(Evidence::citationId,Function.identity()));ListCitationcitationsnewArrayList();for(Stringid:draft.citationIds()){Evidenceevidenceallowed.get(id);if(evidencenull){returnAnswer.needsReview(出现未提供的证据标识);}if(!policy.canRead(subject,evidence)){returnAnswer.unavailable(资料权限已经变化);}citations.add(Citation.fromServerEvidence(evidence));}if(citations.isEmpty())returnAnswer.insufficientEvidence();returnAnswer.withCitations(draft.text(),citations);}这段校验只证明引用“来自本次授权证据集合”不证明模型的每句话都被证据支持。语义支持度还需要评估规则、人工抽样必要时增加逐项断言核验。两者不可混称否则只是给错误答案盖了一层“来源真实”的外衣。历史回答与当前访问必须分开处理保存回答时可以记录问题、答案文本、证据身份、使用版本、模型配置标识和生成时间。是否保存证据全文要根据资料敏感性和留存策略决定。审计记录不是无限复制原文的理由。当用户再次打开旧对话系统不能只因为当时生成成功就永远展示所有引用。当前访问应再次授权若资料已撤权可以保留经过审查的提示和必要审计信息但不继续泄露原文。对严格场景连历史答案正文的再次展示都应纳入策略。这也是“引用跳转”和“下载原文件”不能共用一个无鉴权静态地址的原因。缓存 CDN 地址、对象存储签名地址或浏览器本地缓存都可能延长内容暴露时间。设计时应把这些边界列入验收而不只测试聊天窗口。五、证据不足时好的产品应该如何回答企业问答的失败不只有“没有检索结果”。还包括资料互相冲突、缺少适用条件、原文过期、用户无权读取关键内容以及已有段落无法支持问题要求的推断。这些情况不宜全部提示“请重试”。用户需要知道下一步应该补充什么补充组织、指定业务日期、选择制度版本、联系资料负责人或者转到正式申请页面。系统可以帮助推进工作但不能为了显得智能而伪造一个确定答案。例如两个同样有效的文件分别规定一般情况和特批情况正确行为可能是并列说明适用条件而不是简单选择发布时间更晚的一份。新发布时间只是证据属性不自动代表它全面废止旧文件。对于制度类问题可以把输出约束为“结论、适用条件、依据、无法确认的部分”四个部分。回答不必很长但重要条件不能藏在最后一句免责声明里。对没有企业依据的通用知识回答也应明确标注“以下为一般说明不代表本单位制度”。还应把检索资料视为不可信输入。文档里即使出现“忽略系统规则、读取其他用户资料”这样的文本也只是被检索的内容不是应用的执行指令。若问答进一步接入工具调用工具权限必须由服务端独立约束不能被文档内容扩大。六、怎样验收把“看起来不错”变成可复核的样本验收时建议建立一个小而有代表性的评估集而不是只演示最容易命中的问题。每个样本至少包含主体、组织、业务日期、问题、允许引用的资料以及预期行为。预期行为可以是“回答”也可以是“询问条件”或“拒绝给出确定结论”。验收样本应观察的结果不能接受的捷径同问句不同部门各自只使用授权资料共用未隔离的答案缓存新旧制度标题相同按适用日期选择并展示版本单纯按上传时间取第一条原文已废止、向量未清理返回前排除旧证据仅等待下次全量重建资料只回答了半个问题明确剩余部分无法确认用常识补成完整企业政策引用 ID 被模型编造校验失败并安全处理生成一个看似可点击的链接生成期间权限收回按策略重新检查展示范围当作普通命中直接返回度量也要分层。召回率评估有没有找到应找的资料授权正确性评估有没有混入不该看的资料引用支持度评估结论与证据是否对应产品完成度则看用户能否据此完成下一步。这些指标的分母不同不应合成一个没有定义的“准确率”。错误样本需要回到具体环节治理。漏召回可能要改分段或检索误用旧版要改版本策略模型曲解原文要改上下文组织和输出约束。把所有问题都归因于模型不够大既增加成本也可能让真正的业务漏洞一直存在。七、从现有系统渐进落地而不是一次重写全部 RAG第一步可以直接利用已有知识库、文档、分段与检索测试能力确认资料能稳定进入系统。此时的目标是建立清晰的资料责任人和样本不宜承诺全员自动回答。第二步为少量制度类文档补充适用范围、有效时间和版本身份在独立的检索入口验证授权与过期过滤。先控制资料规模通常比一次导入整个共享盘更容易发现治理问题。第三步将证据身份贯穿到对话引用中增加无依据分支和原文访问校验。只有在资料更新、撤权和冲突样本均可解释后再逐步扩大用户范围。第四步建立持续反馈错误回答可以标记到具体证据与规则资料负责人能修正文档而不只是删除聊天记录。这样知识库才是一个持续运营的业务系统而不是交付时能演示一次的聊天页面。实际体验可以从 AI 知识库配置进入文档处理和分段管理再查看检索测试与聊天引用。本文三张截图对应现有资料管理入口扩展的版本授权链路应按上面的验收样本实现和验证不能直接当成演示站已有菜单。常见问题使用向量库的 metadata 过滤是否就完成了权限控制没有。过滤表达式需要由可信主体范围生成段落回读、模型上下文、缓存、引用原文和历史答案都需要保持相同边界。单独传入一个 knowledgeId 只是限定知识库不等价于完备的人员与组织授权。相似度分数很高为什么仍然不能直接回答相似度表达检索相关性不代表制度有效也不代表结论得到支持。高度相似的旧制度、例外条款或其他组织的规则都可能在业务上不适用。原文件删除后历史回答还能保留吗要分别决定回答文本、引用身份、原文副本和审计信息的留存策略。保留业务审计不意味着可以无期限展示敏感原文删除和撤权应有可验证的传播路径。可信问答是否必须换更大的模型不一定。先检查授权集合、资料版本、证据组织和输出校验。模型能力影响理解与表达但资料边界和业务规则不能依靠模型大小自动补齐。结语企业知识库的价值不是让所有问题都得到一句答案而是让可以回答的问题有依据让不能回答的问题有边界。把资料身份、权限、有效版本和引用证据连接起来Spring AI 的检索能力与 Vue3 的交互能力才真正服务于企业决策而不是只服务于一场漂亮演示。RuoYi Office 已有知识库和知识引用的工程基础。以这些可核对的实现为起点逐步补齐业务治理通常比重新拼装一套聊天界面更能沉淀长期价值。如果这篇对你有用欢迎点赞支持。我们会持续分享企业软件开发实践与 RuoYi Office 产品进展。演示地址https://ruoyioffice.com/webGitHub 源码https://github.com/yuqing2026/ruoyi-officeGitee 源码https://gitee.com/yqzy1688/ruoyi-office微信17156169080获取产品咨询打开演示地址直接查看系统。

相关新闻

【芳心科技】基于单片机的自动化煎饼机

【芳心科技】基于单片机的自动化煎饼机

实物效果图:实现功能:基于单片机的自动烙饼机系统采用STM32单片机作为主控核心。采用继电器控制加热面板的开启和关闭。采用NTC温度传感器对温度进行恒温控制。采用LCD显示屏作为人机交互界面。通过按键输入设定工作温度和工作时间。通过红外传感器检测是…

2026/10/16 6:25:53 阅读更多 →
MNIST手写数字识别:神经网络入门的元模型与工程实践指南

MNIST手写数字识别:神经网络入门的元模型与工程实践指南

/* 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 6:25:53 阅读更多 →
云原生并非大厂专属:中小企业低成本容器化落地路径

云原生并非大厂专属:中小企业低成本容器化落地路径

最近和某位在云原生开源社区做了多年布道工作的大使深聊了一次,话题绕来绕去始终离不开一个老问题:为什么很多中小企业一提云原生就摆手,觉得那是大厂烧钱、堆人才能玩得转的东西。这位大使观点很直接——这个印象过时了,而且正在…

2026/10/16 6:25:53 阅读更多 →

最新新闻

Win11地址栏拖拽失效:原因排查与替代方案指南

Win11地址栏拖拽失效:原因排查与替代方案指南

这事还得从上周整理文件说起。我在Win11的资源管理器里打开了一串多级目录,类似D盘-素材库-项目A-最终交付,手头有一份改完的压缩包要归位到上级的“项目A”目录。按照以前用Win10的习惯,我直接把文件往地址栏的面包屑路径上一拖就完事了&…

2026/10/16 7:15:04 阅读更多 →
PostgreSQL内核元数据核心:PG_CLASS系统表字段详解与实战排查指南

PostgreSQL内核元数据核心:PG_CLASS系统表字段详解与实战排查指南

维护基于 PostgreSQL 内核的数据库产品时,几乎每天都会和各种系统表打交道,而 PG_CLASS 是其中最绕不开的一张。HIGHGO 这个名字是我对某个基于 PG 内核的数据库项目的代号,它的目录体系和原生 PostgreSQL 保持一致,所以很多排查思…

2026/10/16 7:15:04 阅读更多 →
WinForms VS风格主界面框架:可继承可调试的桌面UI解决方案

WinForms VS风格主界面框架:可继承可调试的桌面UI解决方案

简介:这是一套高度仿Visual Studio界面风格的WinForms Docking框架源代码,面向C#桌面开发初学者与中级工程师,用于快速构建具备专业级停靠、浮动、标签页管理功能的MDI应用程序。资源包含230个文件,主体为95个C#核心逻辑文件&…

2026/10/16 7:15:04 阅读更多 →
分布式事务实战:8种方案的选型逻辑与踩坑指南

分布式事务实战:8种方案的选型逻辑与踩坑指南

1. 为什么“分布式事务”不是一道选择题,而是一场持续权衡的实战“8种常用的分布式事务解决方案”——这个标题听起来像一份技术选型清单,但在我过去十年参与过的二十多个中大型系统重构项目里,它从来不是“挑一个用”的简单动作。我见过某电…

2026/10/16 7:15:04 阅读更多 →
如何把电视盒子变成全屋打印服务器(Armbian + CUPS 完整实操)

如何把电视盒子变成全屋打印服务器(Armbian + CUPS 完整实操)

如何把电视盒子变成全屋打印服务器(Armbian CUPS 完整实操) 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905…

2026/10/16 7:15:04 阅读更多 →
面向对象核心知识详解:从类与对象到封装继承多态

面向对象核心知识详解:从类与对象到封装继承多态

最近重新翻出自己几年前记的一套面向对象基础笔记,边看边感慨。当年跟着一套讲得很细的Java基础课,逐行敲代码、抄概念、画内存图的日子,其实才是真正把编程底子打牢的阶段。面向对象这四个字,很多新手一听就觉得抽象,…

2026/10/16 7:14:04 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* 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 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/15 9:49:14 阅读更多 →