any-listen 深度解析:本地、WebDAV 与在线资源三位一体的跨平台私人音乐播放服务
音视频桌面应用前端后端【免费下载链接】any-listenA cross-platform private music playback service项目地址https://gitcode.com/gh_mirrors/an/any-listen点击查看免费下载本文围绕官方 READMEdocs/README_zh-tw.md、docs/README_zh.md展开结合仓库源码逐一拆解 any-listen 的六大核心特性、桌面版与网页版两种交付形态并给出网页版完整的部署、配置与环境变量操作指南。读完本文你将掌握 any-listen 的列表类型体系普通/本地/远程/在线、扩展驱动的在线资源与信息匹配机制、WebDAV 数据同步原理以及从零部署网页版服务的完整流程。项目概览一款跨平台的私人音乐播放服务any-listen 是一款正处于积极开发阶段的跨平台私人音乐播放服务目前提供桌面版Desktop与网页版服务Web Server两种形态。所谓私人体现在它的核心设计取向上你既可以播放本机磁盘上的歌曲也可以接入自建的 WebDAV 服务作为远程曲库还可以通过扩展机制按需获取在线歌单与排行榜——数据归属与播放链路始终由你自己掌控。仓库采用 pnpm workspace 管理见 package.json核心业务逻辑集中在packages/shared/app/modules下的若干模块音乐列表、播放器、扩展服务、同步、资源获取等桌面界面位于packages/view-main与packages/view-lyric服务端位于packages/web-server。特性总览六大核心能力官方 README 将项目能力概括为以下六项本文后续章节将逐一展开并结合源码印证特性说明涉及列表/模块本地歌曲播放普通列表、本地列表本地列表localListProviderWebDAV 歌曲播放远程列表接入自建或第三方 WebDAV远程列表、内置 WebDAV 扩展在线匹配歌曲信息封面、歌词等元数据补充扩展的资源能力musicPic/musicLyric在线资源播放歌单、排行榜等在线列表onlineListProvider实验性音效均衡器、混响、变调、声像等音效模块Web Audio API卡拉 OK 歌词与标题栏歌词逐字歌词、桌面歌词窗口、标题栏展示歌词渲染与歌词播放器本地歌曲普通列表与本地列表any-listen 的列表体系以内置列表 用户列表为核心内置列表包括默认列表default、我喜欢love、最近播放last_played与下载download定义在 packages/shared/common/constants.ts 的LIST_IDS常量中用户列表按类型分为local本地、remote远程WebDAV、online在线这一类型判别贯穿于 musicList/index.ts 的同步、排序、元数据解析等逻辑。本地列表local类型直接关联磁盘目录其实现要点集中在 localListProvider.ts路径校验与文件监视创建/更新本地列表时先通过checkPath校验目录存在性verifyLocalListCreate/verifyLocalListUpdate同时为列表目录挂载文件监视器watcherMap目录内文件变化可实时反映到列表中删除列表时同步移除监视器。批量添加与扫描添加文件按每批 100 个处理handleCreateAndAddMusics并支持文件夹扫描——scanMusics.ts 实现了基于 BFS广度优先的目录扫描递归发现子目录中的音乐文件扫描任务可随时取消。元数据解析新增歌曲会通过parseLocalMusicInfosMetadata解析内嵌标签标题、歌手、封面、时长等解析失败的条目会被自动从列表移除保证列表内数据可用性。封面与滚动位置列表封面通过getListsCover缓存cacheListCovers滚动位置按列表 ID 持久化并以 500ms 节流保存saveListScrollInfoThrottle切换列表后可以还原阅读位置。删除文件当本地列表开启允许删除文件meta.enabledRemove时移除歌曲可同步删除磁盘文件多文件删除前会弹出确认框。WebDAV 远程列表把自建网盘变成曲库WebDAV 是 any-listen 实现私人曲库的关键能力。它并非硬编码的网络源而是以内置扩展的形式存在internal.webdav定义见 internalExtension/extensions/webdav/index.ts。该扩展的清单manifest声明了全局设置项enabledCache缓存开关、enabledDebugLog调试日志、servers服务器配置文本输入。列表提供器listProvider表单字段字段类型说明urlinputWebDAV 服务地址usernameinput用户名directoryinput根目录路径includeSubDirboolean是否包含子目录中的歌曲enabledRemoveboolean是否允许从列表中删除远端文件lazzyParseMetaboolean是否懒解析元数据远程列表的底层实现在 listProviderAction.ts音乐条目 ID 生成generateId将扩展ID_源_用户名_地址_文件路径拼接为稳定唯一 ID保证跨设备引用一致。目录遍历getDirFiles递归读取目录子目录深度上限MAX_DEEP 5目录列表缓存 TTL 10 分钟音乐条目缓存 TTL 2 分钟。元数据懒解析WebDAV 文件先以文件名作为歌曲名入库meta.unparsed true随后通过parseMusicInfoMetadata读取文件内嵌标签补齐歌手、专辑、时长、码率等信息。排序支持可按创建时间ctime_asc/desc、修改时间mtime_asc/desc、文件大小size_asc/desc六种方式排序。播放资源资源能力resource声明了musicUrl、musicPic、musicLyric三类见 resourceAction.ts即播放地址、封面、歌词都直接由 WebDAV 提供同时通过parseLyrics解析歌词文件401 认证失败时支持弹窗重新输入密码并校验setPassword。围绕 WebDAV 还有一套多端数据同步机制模块位于packages/shared/app/modules/sync/webdav配置sync.webdav.enable、url、username、password、path后默认值见 defaultSetting.ts可定时将歌单列表syncEnable.list与不感兴趣列表syncEnable.dislike同步到 WebDAV。同步时先建锁lock防止多端并发写冲突再按快照增量合并MergeMode可选择冲突合并策略状态机在idle → waiting → syncing → error间流转sync.ts默认每 180 秒触发一次自动同步任务task.ts。在线匹配歌曲信息封面、歌词的补全机制对于本地歌曲any-listen 支持在线匹配歌曲信息封面、歌词等但这一能力依赖扩展需要到扩展管理中安装提供对应资源能力的扩展。资源获取的公共入口在packages/shared/app/modules/resourcesmusicPic.tsmusicPicSearch搜索封面、getMusicPic获取封面并校验返回的 URL 是否在白名单内allowedUrl。lyric.tslyricSearch搜索歌词、getLyric获取歌词详情、getMusicLyricByExtensionSource按源直接取歌词结果经isValidLyric校验后才生效。musicUrl.tsgetMusicUrl获取可播放地址同样做 URL 白名单校验。这三个模块通过扩展服务extensionService.resourceAction调用扩展暴露的musicPic/musicLyric/musicUrl能力。从调用链看如 remoteListProvider.ts 的parseMusicInfoMetadata与批量解析handleMusicsParseBatch元数据补全以每批 10 首的节奏进行避免瞬间请求过多歌词还支持简体转繁体lyricS2T见 utilService/music.ts。在线资源歌单与排行榜在线资源歌单、排行榜同样需要扩展支持。接入后在线列表online类型可随扩展提供的数据源实时刷新。相关资源接口定义在packages/shared/app/modules/resources歌单songlist.tssonglistSorts歌单分类、songlistTags标签、songlist分页列表、songlistDetail/songlistDetailAll详情与全量拉取。排行榜topSongs.tstopSongs榜单列表、topSongsDate榜单日期、topSongsDetail/topSongsDetailAll榜单详情。歌曲搜索musicSearch.tsmusicSearch分页搜索与findMusic精确匹配按歌名/歌手/专辑/时长。在线列表的同步逻辑位于 onlineListProvider.ts按扩展清单中声明的资源能力过滤可用扩展将用户添加的在线列表入队waitingSyncLists串行拉取详情并与本地已缓存条目做增量对比isUpdated仅在发生变化时覆盖写回并刷新syncTime。项目还内置了定时同步任务runSyncUserListTask见 musicList/index.ts每天随机在 11:00–12:00 之间触发一次远程/在线列表的全量同步保证列表内容时效。实验性音效any-listen 将音效定位为实验性功能基于 Web Audio API 在播放链路中注入效果节点。参数集中定义在 defaultSetting.ts 的player.soundEffect.*配置组卷积混响convolutionfileName脉冲响应文件、mainGain主增益默认 10、sendGain发送增益默认 0脉冲响应文件预置在 view-main/src/assets/medias/filters14 个.wav。双二阶滤波器均衡biquadFilter31Hz、62Hz、125Hz、250Hz、500Hz、1kHz、2kHz、4kHz、8kHz、16kHz 共 10 段默认增益均为 0。声像控制pannerenable默认关、soundR默认 5、speed默认 50。变调器pitchShifterplaybackRate默认 1配合player.preservesPitch保持音调实现变速不变调。渲染层按效果类型拆分为独立组件AudioConvolution、BiquadFilter、PitchShifter、AudioPanner位于 view-main/src/components/common/SoundEffectBtn支持将自定义 EQ 与卷积预设保存/删除到本地存储soundEffect/store/actions.ts。卡拉 OK 歌词与标题栏歌词any-listen 在歌词能力上提供了两处亮点卡拉 OK 歌词逐字歌词歌词数据模型AnyListen.Music.LyricInfo包含逐字时间标签字段awlyric见 types/music.d.ts解析由 lrcTool.ts 完成支持 LRC、逐字AWLRC 等与翻译/音译歌词默认开启player.isPlayAwlrc。渲染层使用any-listen/web/lyric-font-player播放器在桌面歌词窗口view-lyric中以经典classic与多行multiLine两种模式呈现逐字滚动效果。标题栏歌词通过player.isShowTitleLyric标题栏歌词、player.isShowStatusBarLyric状态栏歌词、player.isShowMediaSessionLyric系统媒体会话歌词三个开关控制展示位置均默认关闭可在设置中开启。桌面歌词窗口还支持锁定、置顶、悬停隐藏、锁屏显示、暂停隐藏等行为desktopLyric.*配置组并可从标题栏直接调节字号10–80与透明度6–100。桌面版获取与安装桌面版对应packages/desktop与packages/view-main渲染层以安装包形式发布前往 any-listen 官方仓库的Release页面下载最新版本按平台安装包类型完成安装即可使用。桌面版集成托盘tray、全局快捷键hotKey、系统任务栏缩略图按钮、窗口歌词等桌面专属能力在 Windows 下还保留了旧版布局兼容层winLegacy。网页版部署、配置与环境变量网页版packages/web-server可直接部署到自己的服务器或使用 Docker 部署。完整部署指南见 docs/docker-server_zh-tw.md简体版docs/docker-server_zh.md本节摘录其核心流程。方式一Docker 部署使用官方发布的 Docker 镜像镜像名lyswhut/any-listen-web-server即可启动仓库根目录同时提供了构建镜像所需的 Dockerfile 与 Dockerfile.lts-slim可自行构建。典型的容器启动命令仅为示例请按实际路径调整docker run --volume/home/music:/music --volume/data:/server/data -p 8080:9500 -d test:latest其中/home/music挂载为允许访问的本地音乐目录/data挂载为服务数据目录容器内服务监听 9500 端口并映射到宿主 8080。方式二直接部署要求Node.js 20。从官方 Release 下载最新版本并解压到目标目录参考 lx-music-sync-server 的部署方式。升级流程删除旧版本项目目录下的public与server文件夹将新版本的public与server文件夹上传到项目目录重新启动服务。配置文件先创建配置文件data/config.cjs服务启动时会自动加载该文件见 web-server/src/index.ts 中margeConfig的逻辑const config { // port: 9500, // 绑定端口 // bindIp: 127.0.0.1, // 绑定 IP // httpLog: true, // 是否启用 HTTP 请求日志 // cors.enabled: false, // 是否启用跨域 // cors.whitelist: [ // 允许跨域的域名空数组表示允许所有域名 // // www.xxx.com, // ], // upstreamProxy.enabled: false, // 是否使用代理转发请求 // upstreamProxy.header: , // 代理转发请求头如 x-real-ip // extension.ghMirrorHosts: [], // 扩展商店 GitHub 镜像地址 // httpProxy: , // 代理服务器地址示例 127.0.0.1:2080 // 允许访问的本地目录 // allowPublicDir: [G:, E:\\music], // Windows 示例 // allowPublicDir: [/music], // Linux 示例 password: 123456a, // 登录密码 } module.exports config配置文件支持.cjs/.jsNode 模块导出与.jsonJSON 解析两种格式allowPublicDir中的路径会被统一规范化反斜杠转正斜杠、末尾补路径分隔符。服务默认配置端口 9500、绑定 127.0.0.1 等可在 packages/web-server/src/shared/defaultConfig.ts 中查看。环境变量变量名描述PORT绑定端口默认9500BIND_IP绑定 IP默认127.0.0.1设为0.0.0.0接受所有 IPv4 请求设为::接受所有 IP 请求UPSTREAM_PROXY_HEADER代理转发请求头如x-real-ip设置后自动启用代理ALLOW_PUBLIC_DIR允许访问的本地目录多个目录用英文逗号分隔DATA_PATH数据存储路径默认./dataLOGIN_PWD登录密码CONFIG_PATH配置文件路径默认./data/config.jsLOG_PATH日志存储路径默认./data/logsEXTENSION_GH_MIRROR_HOSTS扩展商店 GitHub 镜像地址多个地址用英文逗号分隔HTTP_PROXY代理服务器例如127.0.0.1:2080以上环境变量在 web-server/src/index.ts 启动时统一读取并合并到运行配置中其中代理转发逻辑由UPSTREAM_PROXY_HEADER/PROXY_HEADER触发LOGIN_PWD覆盖配置文件中的passwordALLOW_PUBLIC_DIR按逗号拆分后规范化。数据目录、日志目录会自动创建访问被允许目录之外的路径会被 fileSystem/index.ts 的checkAllowPath拦截。源码编译pnpm install pnpm run build:web cd build mkdir data # 建立配置文件 config.cjs node index.cjs根目录 package.json 同时提供build:web构建网页版、build:desktop构建桌面版、dev:web/dev:desktop开发模式等脚本Node 运行时要求22.12.0 || ^20.19.0包管理器为 pnpm。扩展机制一切在线能力的基石在线匹配歌曲信息与在线资源都依赖扩展扩展管理是 any-listen 的开放能力核心。从源码看extensionService生命周期管理loadLocalExtensions扫描扩展目录并读取配置enableExtension/disableExtension/restartExtension/uninstallExtension/updateExtension覆盖启停、重启、卸载与升级内置扩展如internal.webdav不可禁用。两类扩展内置扩展internal随程序分发与在线扩展online从扩展商店安装在线扩展商店的拉取地址可通过extension.onlineExtensionHost配置GitHub 镜像地址通过extension.ghMirrorHosts配置默认内置多个镜像见 defaultSetting.ts。能力模型扩展通过 manifest 声明listProviders列表提供器与resource资源能力如musicUrl/musicPic/musicLyric运行在隔离虚拟机中vm/hostContext并通过extensionApis暴露 command、configuration、musicList、musicUtils、player、request、storage 等宿主 API见 extensionApis当前扩展引擎版本为1.4.0constants.ts。参与贡献欢迎提交 PR。为保证 PR 顺利合并官方 README 给出了如下约定新增功能的 PR建议先创建 Issue 说明以确认该功能是否确实需要修复 bug 的 PR提供修复前后的说明及重现方式其他类型的 PR适当附上说明。贡献步骤克隆本仓库并切换到dev分支进行开发git clone https://gitcode.com/gh_mirrors/an/any-listen cd any-listen git checkout dev提交 PR 至dev分支。开源授权本项目基于Affero 通用公共许可证AGPLv3.0授权并附加以下条款严禁商业用途除非已获得原作者的书面许可完整细则请参阅 LICENSE 文件。在使用或二次分发时请务必遵守上述授权约束尤其是非商用的附加条款。赞分享音视频桌面应用前端后端【免费下载链接】any-listenA cross-platform private music playback service项目地址https://gitcode.com/gh_mirrors/an/any-listen点击查看免费下载相关推荐革新性全方位私人音乐体验any-listen跨平台音乐播放器深度解析革新性全方位私人音乐体验any listen跨平台音乐播放器深度解析 在数字音乐时代我们却面临着前所未有的听音乐自由危机——版权限制、算法操控、数据隐私泄露音视频桌面应用前端后端构建专属私人音乐库Any-Listen跨平台音乐播放方案深度解析构建专属私人音乐库Any Listen跨平台音乐播放方案深度解析 还在为音乐文件散落各处而烦恼吗想要随时随地享受自己收藏的歌曲又不想依赖商业流媒体平台A音视频桌面应用前端后端any-listen跨平台私有音乐播放系统深度体验指南any listen跨平台私有音乐播放系统深度体验指南 在数字音乐时代拥有一个完全自主控制的音乐播放系统已成为众多音乐爱好者的追求。any listen作为一音视频桌面应用前端后端上一篇Flame引擎与Firebase集成实现云存储与实时分析下一篇Gridea多语言内容管理高效维护多版本博客文章创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

软件需求分析报告模板实操指南:从骨架搭建到验收落地

软件需求分析报告模板实操指南:从骨架搭建到验收落地

简介:软件需求分析报告模板(完整版)是一份面向软件开发全流程的标准文档范本,适合项目经理、需求分析师、开发测试人员及客户方参考,用于规范需求调研、设计评审与项目推进。模板依次涵盖项目范围、总体功能要求、软件…

2026/10/13 2:02:19 阅读更多 →
ESP32 ModbusTCP分片缓存设计:资源受限下的工业通信鲁棒性实现

ESP32 ModbusTCP分片缓存设计:资源受限下的工业通信鲁棒性实现

/* 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 2:01:19 阅读更多 →
KaihongOS落地实战:架构、开发、编译与排查全解析

KaihongOS落地实战:架构、开发、编译与排查全解析

/* 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 2:01:19 阅读更多 →

最新新闻

C++数组指针字符串:从内存视角彻底搞懂核心难点

C++数组指针字符串:从内存视角彻底搞懂核心难点

我知道很多人第一次翻开郑莉这本《C语言程序设计》,到第六章"数组、指针和字符串"就开始心里打鼓。说实话,我当年也是这样:前面的流程控制、函数调用,照着抄总能写出来,可数组和指针一上来,什么&…

2026/10/13 11:01:04 阅读更多 →
智能PDU:从车间排插到智慧工厂电力神经中枢

智能PDU:从车间排插到智慧工厂电力神经中枢

1. 先聊聊为什么车间里要装“智能排插”前阵子去一个做汽车零部件的工厂看产线改造,走到车间角落的配电柜旁边,正好看到一位老师傅拿着红外测温枪对着一个满负载的插线板在测温度。那个插线板上插着三台设备的电源,线缆摸上去已经有些发烫了&…

2026/10/13 11:01:04 阅读更多 →
OpenClaw跨平台安装指南:让《Captain Claw》在现代系统重生

OpenClaw跨平台安装指南:让《Captain Claw》在现代系统重生

前几天整理旧硬盘,翻出一个十年前的游戏存档文件夹,里面还躺着那只猫船长的记录。我试着双击当年的老游戏程序,Win11下直接黑屏闪退,连个报错都不给。正想放弃,朋友提了一句:“有没有试过OpenClaw&#xff…

2026/10/13 11:01:04 阅读更多 →
2026计算机职业规划:产品思维与新兴技术赛道

2026计算机职业规划:产品思维与新兴技术赛道

## 1. 计算机专业职业规划的现状与痛点2026年的计算机行业与十年前相比已经发生翻天覆地的变化。当我在某985高校计算机系担任企业导师时,发现超过70%的应届生仍在使用2015年的职业规划模板——这就像用Windows XP的操作手册来指导Windows 12的安装。最典型的认知偏…

2026/10/13 11:01:04 阅读更多 →
Java+SSM+Flask全栈实现在线奶茶店系统

Java+SSM+Flask全栈实现在线奶茶店系统

1. 项目概述:在线奶茶店系统的全栈实现这个基于JavaSSMFlask的网上奶茶店系统,是我为连锁奶茶品牌开发的一套完整的线上销售解决方案。系统采用前后端分离架构,后端使用JavaSSM框架处理核心业务逻辑,Flask则负责轻量级的API服务和…

2026/10/13 11:01:04 阅读更多 →
MySQL慢查询定位与索引设计:EXPLAIN与B+树实战全解析

MySQL慢查询定位与索引设计:EXPLAIN与B+树实战全解析

接手线上业务系统这几年,最让我头疼的问题之一就是MySQL慢查询。明明功能开发完了、测试也过了,一到流量高峰期,几个核心接口突然就卡了几秒,数据库CPU飙高,紧接着就是连接数打满、应用报错。排查下来,十有…

2026/10/13 11:00:03 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →