<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>开源项目 on Harry0703</title><link>https://harry0703.com/categories/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/</link><description>Recent content in 开源项目 on Harry0703</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><managingEditor>harry0703@hotmail.com (Harry)</managingEditor><webMaster>harry0703@hotmail.com (Harry)</webMaster><copyright>&lt;a href="https://github.com/harry0703" target="_blank" rel="noopener noreferrer"&gt;github.com/harry0703&lt;/a&gt;</copyright><lastBuildDate>Fri, 04 Sep 2026 12:30:00 +0800</lastBuildDate><atom:link href="https://harry0703.com/categories/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/index.xml" rel="self" type="application/rss+xml"/><item><title>从 0 到 12 万 Star：MoneyPrinterTurbo 做对了什么，又没解决什么</title><link>https://harry0703.com/post/moneyprinterturbo-120k-stars/</link><pubDate>Fri, 04 Sep 2026 12:30:00 +0800</pubDate><author>harry0703@hotmail.com (Harry)</author><guid>https://harry0703.com/post/moneyprinterturbo-120k-stars/</guid><description>&lt;img src="https://harry0703.com/post/moneyprinterturbo-120k-stars/webui.jpg" alt="MoneyPrinterTurbo WebUI"&gt;&lt;p&gt;截至 2026 年 9 月，&lt;a href="https://github.com/harry0703/MoneyPrinterTurbo"&gt;MoneyPrinterTurbo&lt;/a&gt; 在 GitHub 上获得了超过 12 万 Star 和 1.84 万 Fork。&lt;/p&gt;
&lt;p&gt;这两个数字只能说明项目被大量关注和复制，不能证明生成的视频足够好，更不能证明它已经解决了 AI 视频生产的问题。&lt;/p&gt;
&lt;p&gt;真正值得分析的是：&lt;strong&gt;为什么这么多人愿意点进来，并且认为这套代码值得保留和修改？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a href="https://github.com/harry0703/MoneyPrinterTurbo"&gt;https://github.com/harry0703/MoneyPrinterTurbo&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="它没有创造新模型但跑通了一条工作流"&gt;它没有创造新模型，但跑通了一条工作流&lt;/h2&gt;
&lt;p&gt;MoneyPrinterTurbo 没有训练视频模型，也没有提出新的生成算法。&lt;/p&gt;
&lt;p&gt;它做的事情并不神秘：生成文案、搜索素材、合成语音、制作字幕，最后把这些内容组合成视频。&lt;/p&gt;
&lt;p&gt;这些能力在项目出现之前就已经存在。问题在于，它们分散在不同的工具和服务中。用户要自己选择模型、转换数据、处理字幕时间，再调用视频工具完成合成。每一步都不算难，连起来却足以挡住大多数人。&lt;/p&gt;
&lt;p&gt;MoneyPrinterTurbo 把这堆零件收进了一条可以运行的流程：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;输入一个主题，得到一条视频。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;它降低的不是某项技术的计算成本，而是用户组织整套流程的成本。&lt;/p&gt;
&lt;p&gt;开发者很容易沉迷于模型、框架和参数，用户只关心最后有没有东西交付。技术是零件，跑通任务才是产品。&lt;/p&gt;
&lt;h2 id="184-万-fork-比-12-万-star-更值得看"&gt;1.84 万 Fork 比 12 万 Star 更值得看&lt;/h2&gt;
&lt;p&gt;Star 很轻，看到感兴趣的项目，顺手就可以点一下。Fork 通常多了一层意图：准备部署、修改，或者把它接进自己的系统。&lt;/p&gt;
&lt;p&gt;MoneyPrinterTurbo 的用户会更换大模型和语音服务，接入自己的素材源，修改提示词、视频尺寸和合成规则。还有人把它改造成批量生产服务，放进自己的内容业务里。&lt;/p&gt;
&lt;p&gt;封闭产品只给用户一个输入框和最终结果。开源之后，文案、素材、配音、字幕和合成中的任何一环都可以替换。&lt;/p&gt;
&lt;p&gt;所以，1.84 万 Fork 所反映的需求，不只是“一键生成视频”，还有一套&lt;strong&gt;能够自己控制的内容生产流程&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="它解决了生产没有解决内容"&gt;它解决了生产，没有解决内容&lt;/h2&gt;
&lt;p&gt;MoneyPrinterTurbo 可以生成视频，却回答不了一个更难的问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;为什么有人愿意把这条视频看完？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;关键词搜索可以找到相关素材，却不理解叙事。语音模型可以读出文案，却未必懂得情绪。程序可以对齐画面、配音和字幕，却不会自然产生节奏、审美和观点。&lt;/p&gt;
&lt;p&gt;最后得到的视频可能结构完整，也可能毫无记忆点。&lt;/p&gt;
&lt;p&gt;说得直接一点，自动化可以更快地生产内容，也可以更快地制造平庸。如果选题没有价值，文案没有观点，生成速度越快，只会得到更多没人愿意看的视频。&lt;/p&gt;
&lt;p&gt;MoneyPrinterTurbo 把视频制作从“不会做”降低到了“能做”，但从“能做”到“做好”，仍然需要人的判断。&lt;/p&gt;
&lt;h2 id="素材拼接的上限很明确"&gt;素材拼接的上限很明确&lt;/h2&gt;
&lt;p&gt;MoneyPrinterTurbo 本质上仍然是一套素材组织和视频合成流程。这一点没有必要回避。&lt;/p&gt;
&lt;p&gt;它适合快速验证选题、制作基础内容，也确实能省掉大量重复操作。但仅靠关键词搜索素材，很难解决人物一致性、镜头连续性和视觉表达。&lt;/p&gt;
&lt;p&gt;把它说成可以替代编导、剪辑和内容创作者，是夸大工具的能力；只把它看成简单的素材拼接，又忽略了完整工作流节省的时间。&lt;/p&gt;
&lt;p&gt;更准确的定位是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;它处理视频生产中的重复劳动，但不替用户决定什么值得表达。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="下一步不该只是接入更多模型"&gt;下一步不该只是接入更多模型&lt;/h2&gt;
&lt;p&gt;如果后续只是不断增加模型供应商、语音服务和配置项，功能清单会越来越长，生成结果却未必更好。这类接入也很容易被其他项目复制。&lt;/p&gt;
&lt;p&gt;更难、也更值得继续做的部分，是内容生产过程本身：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从理解文案到生成可编辑的分镜，而不只是提取几个关键词；&lt;/li&gt;
&lt;li&gt;让人物、场景和视觉风格在多个镜头中保持一致；&lt;/li&gt;
&lt;li&gt;保留中间结果，让人可以介入，而不是只能接受最终成片；&lt;/li&gt;
&lt;li&gt;根据发布后的真实反馈，调整下一次选题和内容结构。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;12 万 Star 说明这类需求足够大，但没有替 MoneyPrinterTurbo 回答这些问题。&lt;/p&gt;
&lt;p&gt;它现在是一套有效的视频自动化工具。能不能继续往前走，取决于它能否跨过素材拼接的边界，开始理解内容，而不只是组装内容。&lt;/p&gt;</description></item><item><title>电脑空间去哪了？我开源了 MangoDisk</title><link>https://harry0703.com/post/mangodisk/</link><pubDate>Wed, 05 Aug 2026 16:05:20 +0800</pubDate><author>harry0703@hotmail.com (Harry)</author><guid>https://harry0703.com/post/mangodisk/</guid><description>&lt;img src="https://assets.mangodisk.app/images/readme/zh-light.jpg" alt="MangoDisk 芒果磁盘清理工具"&gt;&lt;p&gt;最近几年，我经常遇到一个很熟悉的提醒：&lt;strong&gt;磁盘空间不足。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;刚换电脑时，总觉得几百 GB 已经足够。可随开发工具越来越多，项目越做越多，再加上本地运行的 AI 模型，剩余空间还是会一点点变少。&lt;/p&gt;
&lt;p&gt;真正开始清理时，却很难说清这些空间到底去了哪里。&lt;/p&gt;
&lt;h2 id="空间不是突然消失的"&gt;空间不是突然消失的&lt;/h2&gt;
&lt;p&gt;有时是一个很久没有打开的视频，有时是重复下载的安装包，有时是已经结束的项目留下了几 GB 构建文件。浏览器、开发工具和各种应用也在持续产生缓存，但它们分散在系统的不同位置，平时几乎感觉不到。&lt;/p&gt;
&lt;p&gt;这些东西单独看都不算大，积累起来却很可观。&lt;/p&gt;
&lt;p&gt;我试过手动查找，也写过一些清理脚本。它们偶尔很有效，但用久了就会遇到另一个问题：&lt;strong&gt;我不确定删掉的到底是什么。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;脚本中的路径可能已经过时，网上找到的命令也未必适合自己的电脑。面对一个几十 GB 的目录，最难做的不是按下删除键，而是判断里面有没有仍然重要的内容。&lt;/p&gt;
&lt;h2 id="我想要的工具并不复杂"&gt;我想要的工具并不复杂&lt;/h2&gt;
&lt;p&gt;我找过不少磁盘清理软件。有些功能很多，但每次打开都会推荐各种不需要的服务；有些直接告诉我可以释放几十 GB，却没有把这些文件解释清楚；还有一些需要登录账号，或者把简单的清理功能放进订阅中。&lt;/p&gt;
&lt;p&gt;我真正需要的其实很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;告诉我空间主要用在了哪里；&lt;/li&gt;
&lt;li&gt;把可能不再需要的内容整理出来；&lt;/li&gt;
&lt;li&gt;在删除之前，让我能看清位置、大小和风险；&lt;/li&gt;
&lt;li&gt;不上传文件，也不要求注册账号。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;既然一直没有找到完全符合自己习惯的工具，我就开始做 &lt;a href="https://github.com/harry0703/MangoDisk"&gt;MangoDisk&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="把杂乱的磁盘重新看清楚"&gt;把杂乱的磁盘重新看清楚&lt;/h2&gt;
&lt;p&gt;MangoDisk 最早只是用来处理我自己的开发缓存，后来逐渐加入了大文件查找、重复文件清理、应用卸载和磁盘空间分析。&lt;/p&gt;
&lt;img src="https://assets.mangodisk.app/images/screenshots/zh/light-01-deep-cleanup.jpg" alt="MangoDisk 深度清理界面"&gt;&lt;p&gt;现在，我会先用空间分析看看哪些目录占用最多，再检查大文件和已经不用的项目。如果某个应用准备卸载，也可以顺便确认它留下了哪些缓存和数据，不需要再去网上查每一个目录的位置。&lt;/p&gt;
&lt;p&gt;对开发者来说，MangoDisk 也能找到常见的项目构建产物和工具缓存。&lt;code&gt;node_modules&lt;/code&gt;、Rust 的 &lt;code&gt;target&lt;/code&gt;、IDE 索引以及包管理器缓存，往往就是磁盘空间缓慢减少的原因。&lt;/p&gt;
&lt;p&gt;但 MangoDisk 不会扫描结束后直接替你删除。它会先把内容分类，显示大小、位置和风险，再由你决定哪些应该保留。智能推荐可以减少逐项判断的时间，但最终的选择仍然属于用户。&lt;/p&gt;
&lt;h2 id="有些大文件本来就不应该被随便清理"&gt;有些大文件，本来就不应该被随便清理&lt;/h2&gt;
&lt;p&gt;做这个工具以后，我越来越觉得，磁盘清理并不是“删得越多越好”。&lt;/p&gt;
&lt;p&gt;比如本地 AI 模型经常占用几十 GB，但重新下载同样需要大量时间和流量。照片、代码、文档和云同步文件更不用说，它们不能仅仅因为体积大，就被当作垃圾。&lt;/p&gt;
&lt;p&gt;所以 MangoDisk 对这些内容会更保守。普通清理不会把个人文件或用户管理的模型当成缓存；遇到可能影响使用的数据，也会把风险和位置展示出来，而不是默认选中。&lt;/p&gt;
&lt;p&gt;我希望它给人的感觉不是“帮我做决定”，而是“帮我把决定需要的信息整理好”。这也是我自己愿意长期使用它的前提。&lt;/p&gt;
&lt;h2 id="为什么把它开源"&gt;为什么把它开源&lt;/h2&gt;
&lt;p&gt;清理工具需要读取很多文件信息，也拥有删除文件的能力。与其只告诉用户“可以放心使用”，我更希望大家能够直接看到它扫描了什么、如何判断，以及一次清理最终会做什么。&lt;/p&gt;
&lt;p&gt;因此，我决定将 MangoDisk 以 GPLv3 许可证开源。它支持 macOS 和 Windows，扫描与清理都在本地完成，不需要登录，也不会上传文件或扫描结果。&lt;/p&gt;
&lt;p&gt;开源也意味着，一个人不熟悉的软件和系统，可以由真正使用它的人补充。不同开发工具、不同版本的缓存位置，都可以通过社区一起完善。&lt;/p&gt;
&lt;h2 id="写在最后"&gt;写在最后&lt;/h2&gt;
&lt;p&gt;MangoDisk 不是一个追求“每次都清出几十 GB”的工具。有时候扫描以后，会发现真正适合清理的内容并没有想象中那么多，我觉得这反而是正常的。&lt;/p&gt;
&lt;p&gt;它更像是我为自己做的一次磁盘整理：先看清空间去了哪里，再决定什么可以离开。&lt;/p&gt;
&lt;p&gt;目前 MangoDisk 已经可以在 macOS 和 Windows 上使用。如果你也经常被磁盘空间不足困扰，可以前往 &lt;a href="https://mangodisk.app/zh"&gt;MangoDisk 官网&lt;/a&gt; 下载体验，也可以在 &lt;a href="https://github.com/harry0703/MangoDisk"&gt;GitHub&lt;/a&gt; 查看源码和参与改进。&lt;/p&gt;</description></item><item><title>如何利用本地模型，将音视频整理成一份结构化的Markdown笔记</title><link>https://harry0703.com/post/audio-notes/</link><pubDate>Fri, 19 Jul 2024 15:16:01 +0800</pubDate><author>harry0703@hotmail.com (Harry)</author><guid>https://harry0703.com/post/audio-notes/</guid><description>&lt;p&gt;项目地址：&lt;a href="https://github.com/harry0703/AudioNotes"&gt;https://github.com/harry0703/AudioNotes&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="基于-funasr-和-qwen2-构建的音视频转结构化笔记系统"&gt;基于 FunASR 和 Qwen2 构建的音视频转结构化笔记系统&lt;/h2&gt;
&lt;p&gt;能够快速提取音视频的内容，并且调用大模型进行整理，成为一份结构化的markdown笔记，方便快速阅读&lt;/p&gt;
&lt;p&gt;FunASR: &lt;a href="https://github.com/modelscope/FunASR"&gt;https://github.com/modelscope/FunASR&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Qwen2: &lt;a href="https://ollama.com/library/qwen2"&gt;https://ollama.com/library/qwen2&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="效果展示"&gt;效果展示&lt;/h2&gt;
&lt;h3 id="音视频识别和整理"&gt;音视频识别和整理&lt;/h3&gt;
&lt;img src="https://harry0703.com/post/audio-notes/1.jpg" alt="image"&gt;&lt;h3 id="与音视频内容对话"&gt;与音视频内容对话&lt;/h3&gt;
&lt;img src="https://harry0703.com/post/audio-notes/2.jpg" alt="image"&gt;&lt;h2 id="使用方法"&gt;使用方法&lt;/h2&gt;
&lt;h3 id="-安装-ollama"&gt;① 安装 Ollama&lt;/h3&gt;
&lt;p&gt;下载对应系统的 Ollama 安装包进行安装&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ollama.com/download"&gt;https://ollama.com/download&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="-拉取模型"&gt;② 拉取模型&lt;/h3&gt;
&lt;p&gt;我以 &lt;code&gt;阿里的千问2 7b&lt;/code&gt; 为例 &lt;a href="https://ollama.com/library/qwen2"&gt;https://ollama.com/library/qwen2&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&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"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ollama pull qwen2:7b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="docker部署推荐"&gt;Docker部署（推荐）🐳&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&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"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&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"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -fsSL https://harry0703.com/audio-notes/docker-compose.yml -o docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker-compose up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;docker 启动后，访问 &lt;a href="http://localhost:15433/"&gt;http://localhost:15433/&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;登录账号为 admin，密码为 admin （可以在 docker-compose.yml 文件里面修改）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="本地部署-"&gt;本地部署 📦&lt;/h3&gt;
&lt;p&gt;需要有可访问的 postgresql 数据库&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&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"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&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"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&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"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-3"&gt;3&lt;/a&gt;
&lt;/span&gt;&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"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-4"&gt;4&lt;/a&gt;
&lt;/span&gt;&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"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-5"&gt;5&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;conda create -n AudioNotes python&lt;span style="color:#f92672"&gt;=&lt;/span&gt;3.10 -y
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;conda activate AudioNotes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/harry0703/AudioNotes.git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd AudioNotes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;将 &lt;code&gt;.env.example&lt;/code&gt; 重命名为 &lt;code&gt;.env&lt;/code&gt;，修改相关配置信息&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&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"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chainlit run main.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;服务启动后，访问 http://localhost:8000/&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;登录账号为 admin，密码为 admin （可以在 docker-compose.yml 文件里面修改）&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>