<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>开源项目 on Harry AI</title><link>https://harryai.cc/categories/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/</link><description>Recent content in 开源项目 on Harry AI</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><managingEditor>harryliuwx888@gmail.com (Harry)</managingEditor><webMaster>harryliuwx888@gmail.com (Harry)</webMaster><copyright>Copyright © 深圳市网旭科技有限公司。&lt;a href="https://beian.miit.gov.cn/" target="_blank">粤ICP备14077691号&lt;/a></copyright><lastBuildDate>Wed, 05 Aug 2026 16:05:20 +0800</lastBuildDate><atom:link href="https://harryai.cc/categories/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/index.xml" rel="self" type="application/rss+xml"/><item><title>电脑空间去哪了？我开源了 MangoDisk</title><link>https://harryai.cc/post/mangodisk/</link><pubDate>Wed, 05 Aug 2026 16:05:20 +0800</pubDate><author>harryliuwx888@gmail.com (Harry)</author><guid>https://harryai.cc/post/mangodisk/</guid><description>&lt;img src="https://harryai.cc/post/mangodisk/cover.webp" alt="MangoDisk 芒果磁盘清理工具">&lt;p>最近几年，我经常遇到一个很熟悉的提醒：&lt;strong>磁盘空间不足。&lt;/strong>&lt;/p>
&lt;p>刚换电脑时，总觉得几百 GB 已经足够。可随开发工具越来越多，项目越做越多，再加上本地运行的 AI 模型，剩余空间还是会一点点变少。&lt;/p>
&lt;p>真正开始清理时，却很难说清这些空间到底去了哪里。&lt;/p>
&lt;h2 id="空间不是突然消失的">空间不是突然消失的&lt;/h2>
&lt;p>有时是一个很久没有打开的视频，有时是重复下载的安装包，有时是已经结束的项目留下了几 GB 构建文件。浏览器、开发工具和各种应用也在持续产生缓存，但它们分散在系统的不同位置，平时几乎感觉不到。&lt;/p>
&lt;p>这些东西单独看都不算大，积累起来却很可观。&lt;/p>
&lt;p>我试过手动查找，也写过一些清理脚本。它们偶尔很有效，但用久了就会遇到另一个问题：&lt;strong>我不确定删掉的到底是什么。&lt;/strong>&lt;/p>
&lt;p>脚本中的路径可能已经过时，网上找到的命令也未必适合自己的电脑。面对一个几十 GB 的目录，最难做的不是按下删除键，而是判断里面有没有仍然重要的内容。&lt;/p>
&lt;h2 id="我想要的工具并不复杂">我想要的工具并不复杂&lt;/h2>
&lt;p>我找过不少磁盘清理软件。有些功能很多，但每次打开都会推荐各种不需要的服务；有些直接告诉我可以释放几十 GB，却没有把这些文件解释清楚；还有一些需要登录账号，或者把简单的清理功能放进订阅中。&lt;/p>
&lt;p>我真正需要的其实很简单：&lt;/p>
&lt;ul>
&lt;li>告诉我空间主要用在了哪里；&lt;/li>
&lt;li>把可能不再需要的内容整理出来；&lt;/li>
&lt;li>在删除之前，让我能看清位置、大小和风险；&lt;/li>
&lt;li>不上传文件，也不要求注册账号。&lt;/li>
&lt;/ul>
&lt;p>既然一直没有找到完全符合自己习惯的工具，我就开始做 &lt;a href="https://github.com/harry0703/MangoDisk">MangoDisk&lt;/a>。&lt;/p>
&lt;h2 id="把杂乱的磁盘重新看清楚">把杂乱的磁盘重新看清楚&lt;/h2>
&lt;p>MangoDisk 最早只是用来处理我自己的开发缓存，后来逐渐加入了大文件查找、重复文件清理、应用卸载和磁盘空间分析。&lt;/p>
&lt;img src="https://assets.mangodisk.app/images/readme/zh-light.jpg" alt="MangoDisk 深度清理、重复文件和磁盘分析界面">&lt;p>现在，我会先用空间分析看看哪些目录占用最多，再检查大文件和已经不用的项目。如果某个应用准备卸载，也可以顺便确认它留下了哪些缓存和数据，不需要再去网上查每一个目录的位置。&lt;/p>
&lt;p>对开发者来说，MangoDisk 也能找到常见的项目构建产物和工具缓存。&lt;code>node_modules&lt;/code>、Rust 的 &lt;code>target&lt;/code>、IDE 索引以及包管理器缓存，往往就是磁盘空间缓慢减少的原因。&lt;/p>
&lt;p>但 MangoDisk 不会扫描结束后直接替你删除。它会先把内容分类，显示大小、位置和风险，再由你决定哪些应该保留。智能推荐可以减少逐项判断的时间，但最终的选择仍然属于用户。&lt;/p>
&lt;h2 id="有些大文件本来就不应该被随便清理">有些大文件，本来就不应该被随便清理&lt;/h2>
&lt;p>做这个工具以后，我越来越觉得，磁盘清理并不是“删得越多越好”。&lt;/p>
&lt;p>比如本地 AI 模型经常占用几十 GB，但重新下载同样需要大量时间和流量。照片、代码、文档和云同步文件更不用说，它们不能仅仅因为体积大，就被当作垃圾。&lt;/p>
&lt;p>所以 MangoDisk 对这些内容会更保守。普通清理不会把个人文件或用户管理的模型当成缓存；遇到可能影响使用的数据，也会把风险和位置展示出来，而不是默认选中。&lt;/p>
&lt;p>我希望它给人的感觉不是“帮我做决定”，而是“帮我把决定需要的信息整理好”。这也是我自己愿意长期使用它的前提。&lt;/p>
&lt;h2 id="为什么把它开源">为什么把它开源&lt;/h2>
&lt;p>清理工具需要读取很多文件信息，也拥有删除文件的能力。与其只告诉用户“可以放心使用”，我更希望大家能够直接看到它扫描了什么、如何判断，以及一次清理最终会做什么。&lt;/p>
&lt;p>因此，我决定将 MangoDisk 以 GPLv3 许可证开源。它支持 macOS 和 Windows，扫描与清理都在本地完成，不需要登录，也不会上传文件或扫描结果。&lt;/p>
&lt;p>开源也意味着，一个人不熟悉的软件和系统，可以由真正使用它的人补充。不同开发工具、不同版本的缓存位置，都可以通过社区一起完善。&lt;/p>
&lt;h2 id="写在最后">写在最后&lt;/h2>
&lt;p>MangoDisk 不是一个追求“每次都清出几十 GB”的工具。有时候扫描以后，会发现真正适合清理的内容并没有想象中那么多，我觉得这反而是正常的。&lt;/p>
&lt;p>它更像是我为自己做的一次磁盘整理：先看清空间去了哪里，再决定什么可以离开。&lt;/p>
&lt;p>目前 MangoDisk 已经可以在 macOS 和 Windows 上使用。如果你也经常被磁盘空间不足困扰，可以前往 &lt;a href="https://mangodisk.app/zh">MangoDisk 官网&lt;/a> 下载体验，也可以在 &lt;a href="https://github.com/harry0703/MangoDisk">GitHub&lt;/a> 查看源码和参与改进。&lt;/p></description></item><item><title>如何利用本地模型，将音视频整理成一份结构化的Markdown笔记</title><link>https://harryai.cc/post/audio-notes/</link><pubDate>Fri, 19 Jul 2024 15:16:01 +0800</pubDate><author>harryliuwx888@gmail.com (Harry)</author><guid>https://harryai.cc/post/audio-notes/</guid><description>&lt;p>项目地址：&lt;a href="https://github.com/harry0703/AudioNotes">https://github.com/harry0703/AudioNotes&lt;/a>&lt;/p>
&lt;h2 id="基于-funasr-和-qwen2-构建的音视频转结构化笔记系统">基于 FunASR 和 Qwen2 构建的音视频转结构化笔记系统&lt;/h2>
&lt;p>能够快速提取音视频的内容，并且调用大模型进行整理，成为一份结构化的markdown笔记，方便快速阅读&lt;/p>
&lt;p>FunASR: &lt;a href="http://localhost:15433/">https://github.com/modelscope/FunASR&lt;/a>&lt;/p>
&lt;p>Qwen2: &lt;a href="http://localhost:15433/">https://ollama.com/library/qwen2&lt;/a>&lt;/p>
&lt;h2 id="效果展示">效果展示&lt;/h2>
&lt;h3 id="音视频识别和整理">音视频识别和整理&lt;/h3>
&lt;img src="https://harryai.cc/post/audio-notes/1.jpg" alt="image">&lt;h3 id="与音视频内容对话">与音视频内容对话&lt;/h3>
&lt;img src="https://harryai.cc/post/audio-notes/2.jpg" alt="image">&lt;h2 id="使用方法">使用方法&lt;/h2>
&lt;h3 id="-安装-ollama">① 安装 Ollama&lt;/h3>
&lt;p>下载对应系统的 Ollama 安装包进行安装&lt;/p>
&lt;p>&lt;a href="http://localhost:15433/">https://ollama.com/download&lt;/a>&lt;/p>
&lt;h3 id="-拉取模型">② 拉取模型&lt;/h3>
&lt;p>我以 &lt;code>阿里的千问2 7b&lt;/code> 为例 &lt;a href="http://localhost:15433/">https://ollama.com/library/qwen2&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1">1&lt;/a>
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>ollama pull qwen2:7b
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="docker部署推荐">Docker部署（推荐）🐳&lt;/h3>
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-1">1&lt;/a>
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-2">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-2">2&lt;/a>
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -fsSL https://harryai.cc/audio-notes/docker-compose.yml -o docker-compose.yml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker-compose up
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>docker 启动后，访问 &lt;a href="http://localhost:15433/">http://localhost:15433/&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>登录账号为 admin，密码为 admin （可以在 docker-compose.yml 文件里面修改）&lt;/p>&lt;/blockquote>
&lt;h3 id="本地部署-">本地部署 📦&lt;/h3>
&lt;p>需要有可访问的 postgresql 数据库&lt;/p>
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-1">1&lt;/a>
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-2">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-2">2&lt;/a>
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-3">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-3">3&lt;/a>
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-4">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-4">4&lt;/a>
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-5">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-5">5&lt;/a>
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>conda create -n AudioNotes python&lt;span style="color:#f92672">=&lt;/span>3.10 -y
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>conda activate AudioNotes
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git clone https://github.com/harry0703/AudioNotes.git
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cd AudioNotes
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pip install -r requirements.txt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>将 &lt;code>.env.example&lt;/code> 重命名为 &lt;code>.env&lt;/code>，修改相关配置信息&lt;/p>
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-1">1&lt;/a>
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>chainlit run main.py
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>服务启动后，访问 http://localhost:8000/&lt;/p>
&lt;blockquote>
&lt;p>登录账号为 admin，密码为 admin （可以在 docker-compose.yml 文件里面修改）&lt;/p>&lt;/blockquote></description></item></channel></rss>