[{"id":"开发报告-AI语音助手.md-0","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现\n\n 1. 项目概述\n\nAI_voice_assistant 是一个面向 Windows 本地环境的个人 AI 助手 Runtime。它并不是一个简单的“语音聊天脚本”，而是一个把本地大语言模型、语音识别、语音合成、桌面上下文、网页搜索、RAG、工具调用、长期记忆和 Skill Package 扩展机制整合到一起的桌面 Agent 框架。\n\n从整体定位来看，该项目希望实现的是：\n\n- 以本地大模型为核心的对话能力；\n- 通过 FunASR 完成中文语音输入；\n- 通过 GPT-SoVITS 完成拟人化语音输出；\n- 通过弹窗、桌宠入口、CLI、WebUI 等方式提供多入口交互；\n- 通过 Search/RAG 机制增强实时信息获取能力；\n- 通过 Tool Registry 和 Skill Package 实现工具调用与任务扩展；\n- 通过屏幕观察、浏览器上下文、桌面状态等能力，让助手具备一定的“桌面感知”能力。\n\n如果用一句话概括：\n\n 这是一个本地可部署、支持语音交互、具备桌面上下文感知、可联网检索、可调用工具、可扩展技能包的个人 AI Agent Runtime。\n\n 2. 技术栈分析\n\n 2.1 本地大模型服务\n\n项目默认使用 OpenAI-compatible API 形式访问本地模型服务。配置文件中主模型地址为：\n\n这意味着项目本身并不直接加载大模型权重，而是通过本地推理服务访问模型。仓库脚本中主要配套的是 llama.cpp 的 llama-server。\n\n项目约定了多个模型服务端口：\n\n| 服务 | 默认端口 | 作用 |\n| --- | ---: | --- |\n| 主对话模型 | 8000 | 负责普通对话、Agent 推理、工具调用决策 |\n| 视觉语言模型 | 8"},{"id":"开发报告-AI语音助手.md-1","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":"001 | 负责屏幕截图或视觉内容理解 |\n| Embedding 模型 | 8010 | 负责 RAG 向量召回 |\n| Reranker 模型 | 8011 | 负责搜索结果/网页片段重排序 |\n| GPT-SoVITS | 9880 | 负责文本转语音 |\n| SearXNG | 8080 | 负责本地搜索聚合 |\n\n这种拆分方式的优点是清晰：每个模型服务负责一种能力，Runtime 只负责调用和编排。缺点是启动成本较高，用户需要同时保证多个本地服务可用。\n\n 2.2 语音输入：FunASR\n\n语音输入部分位于 app/voice_input，核心包括：\n\n- service.py：语音输入服务入口；\n- voice_input_manager.py：麦克风采集、VAD、声纹验证、流式识别、最终识别的主流程；\n- asr_engine.py：FunASR 模型封装；\n- speaker_verifier.py：声纹验证与声纹档案更新；\n- text_filter.py：过滤误识别文本；\n- voice_vad.py：语音活动检测；\n- events.py：语音服务事件结构。\n\n配置文件 configs/voice_input.yaml 中默认使用：\n\n项目的语音输入并不是简单地“录音然后识别”，而是包含以下流程：\n\n1. 从麦克风采集音频；\n2. 进行噪声校准；\n3. 使用 VAD 判断是否有人声；\n4. 进行声纹验证，判断是不是用户本人；\n5. 流式 ASR 输出 partial 文本；\n6. 最终 ASR 输出完整文本；\n7. 把文本交给 Runtime 的 SessionRunner；\n8. 等待模型回答后，通过 TTS 输出语音；\n9. TTS 播放期间抑制麦克风输入，避免“自说自话”。\n\n这套设计体现了桌面语音助手需要解决的一个关键问题：语音输入和语音输出会"},{"id":"开发报告-AI语音助手.md-2","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":"互相干扰。如果没有 TTS 抑制机制，助手播放自己的回答时，麦克风可能再次捕获声音，导致系统把自己的语音误认为用户输入。\n\n 2.3 语音输出：GPT-SoVITS\n\nTTS 客户端位于：\n\n项目通过 HTTP 调用 GPT-SoVITS 的 /tts 接口，并支持：\n\n- 参考音频 ref_audio_path；\n- 文本分段合成；\n- 异步合成和分段播放；\n- 音频缓存；\n- 播放结束后自动清理输出音频；\n- TTS 文本净化，避免把 debug 信息、JSON、代码块直接读出来。\n\n配置文件中默认：\n\n从工程设计上看，tts_gate.py 是一个很实用的模块。因为 Agent 的文本回答可能包含引用、工具调试信息、代码、表格、链接等内容，这些内容适合显示，但不适合直接朗读。因此项目将“屏幕显示文本”和“TTS 朗读文本”拆开处理。\n\n 2.4 桌面 UI：Popup、CLI 与 WebUI\n\n项目提供多个交互入口：\n\n| 入口 | 文件 | 说明 |\n| --- | --- | --- |\n| 默认弹窗 | main.py → app.popup.launch | 默认启动方式，桌面弹窗交互 |\n| CLI | main.py --cli → app.cli.main | 命令行交互 |\n| 语音服务 | main.py --voice → app.voice_input.service.main | 独立语音输入服务 |\n| WebUI | webui.py → app.webui.launch | Gradio Web 界面 |\n| 桌宠/启动器 | app/popup/chat_popup.py | 与弹窗联动 |\n\nmain.py 是主入口，逻辑非常清晰：\n\n这说明项目的入口设计采用“单主入口，多模式分发”的方式，降低了用户使用门槛。\n\napp/popup/"},{"id":"开发报告-AI语音助手.md-3","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":"chat_popup.py 则是桌面端体验的核心文件。它负责：\n\n- 创建 Tkinter 弹窗；\n- 初始化 SessionRunner；\n- 绑定快捷键；\n- 启动语音服务子进程；\n- 读取语音服务 JSONL 事件；\n- 把最终 ASR 文本送入对话流程；\n- 显示模型回答；\n- 处理屏幕观察、桌面上下文、主动提醒等交互。\n\nWebUI 位于 app/webui/app.py，基于 Gradio Blocks 组织界面，包含 Chat、Memory、RAG、Pending、Runtime、Performance、Config、TTS、Logs、Diagnostics、Tasks、Workflow、Screen 等标签页。这更像是开发调试控制台，而不仅仅是聊天页面。\n\n 3. 项目目录结构分析\n\n项目目录可以按功能分为以下几层：\n\n目录结构体现了几个工程特点：\n\n1. 配置与逻辑分离：config.yaml 只做主入口配置，具体配置被拆到 configs/。\n2. Runtime 与 Agent 解耦：runtime 负责单轮会话生命周期，agent 负责决策和生成。\n3. 工具系统独立：tools 不直接散落在 Agent 中，而是通过注册表统一管理。\n4. RAG 与 Search 分层：search 负责搜索策略，rag 负责网页抓取、chunk、排序和证据组织。\n5. Skill Package 独立于代码主干：workspace/skills 中的技能包可以独立增删，不必修改核心代码。\n\n 4. 核心运行流程\n\n 4.1 总体流程\n\n可以将项目运行流程抽象为：\n\n该流程的关键设计是：所有输入最后都归一到 SessionRunner.run_user_turn()。也就是说，无论用户是打字、语音、WebUI 输入，还是桌面弹窗输入，后续都复用同一套 Runtim"},{"id":"开发报告-AI语音助手.md-4","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":"e。\n\n 4.2 SessionRunner：单轮会话中枢\n\napp/runtime/session_runner.py 是项目的运行中枢。它将一次用户输入封装为一个完整的生命周期：\n\n1. 检查是否是对 pending action 的确认或取消；\n2. 记录用户输入；\n3. 调用意图路由器判断请求类型；\n4. 根据配置决定是否走 Direct Tool Fast Path；\n5. 检索长期记忆；\n6. 调用 run_agent() 执行 Agent 推理；\n7. 渲染最终回复；\n8. 记录行为记忆；\n9. 更新 workspace 智能上下文；\n10. 写入会话；\n11. 进行记忆门控、分类与存储；\n12. 调度或播放 TTS；\n13. 返回 TurnResult。\n\nTurnResult 中包含：\n\n- reply：用于显示的回答；\n- tts_reply：用于语音播放的回答；\n- debug：调试信息；\n- tool_calls：工具调用记录；\n- rag_evidence：RAG 证据；\n- memory_updates：记忆更新；\n- pending_actions：待用户确认的操作；\n- perf：性能统计；\n- tts_status：TTS 状态。\n\n这个结构说明项目已经把“用户看到的内容”“TTS 朗读的内容”“调试信息”“工具执行过程”做了分离，这对于一个长期运行的桌面助手非常重要。\n\n 4.3 Intent Router：意图识别与快速路径\n\napp/agent/intent_router.py 负责根据用户输入判断请求类型，例如：\n\n- 记忆创建、更新、删除；\n- 技能管理；\n- 屏幕观察；\n- 桌面窗口操作；\n- 搜索；\n- 天气；\n- 系统信息；\n- 一般聊天。\n\n对于一些确定性任务，项目会绕过完整的 LLM Agent Loop，直接进入工具快"},{"id":"开发报告-AI语音助手.md-5","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":"速路径。这样做有两个好处：\n\n1. 减少大模型调用次数，提高响应速度；\n2. 降低模型误判工具参数的概率。\n\n例如“现在几点”“查一下天气”“打开观察屏幕”等任务，不一定需要大模型多轮思考，路由器可以直接交给对应工具。\n\n 4.4 Agent Loop：复杂任务的规划与工具调用\n\n复杂任务会进入 app/agent/round_runner.py 中的 run_agent()。其逻辑可以概括为：\n\n1. 推断当前话题；\n2. 构建上下文；\n3. 再次路由意图；\n4. 判断是否需要 Direct Tool；\n5. 判断是否可以由 Skill Workflow Engine 执行；\n6. 如果任务较复杂，生成动态计划；\n7. 进入 LLM Action Loop；\n8. 解析模型输出的工具调用 JSON；\n9. 调用 Tool Registry 执行工具；\n10. 观察工具结果；\n11. 根据结果反思或重规划；\n12. 生成最终回答。\n\n它不是简单的一次性 chat_completion，而是一个包含“计划—行动—观察—反思—回答”的 Agent 循环。\n\n配置文件中也限制了 Agent 的复杂度，例如：\n\n这可以避免 Agent 在工具调用中无限循环。\n\n 5. Tool Registry 与安全策略\n\n 5.1 工具注册机制\n\n项目中的工具系统位于 app/tools。核心文件包括：\n\n工具注册大致包含以下信息：\n\n- 工具名称；\n- 工具描述；\n- 参数 schema；\n- 执行函数 handler；\n- 风险等级；\n- 是否默认启用；\n- 是否允许模型可见；\n- 是否需要用户确认；\n- 超时时间；\n- 输出长度限制。\n\nToolRegistry 的职责不仅是“调用工具”，还包括：\n\n- 判断工具是否启用；\n- 判断模型是否可见；\n- 修复或校验工具参数；\n- 应用工具别"},{"id":"开发报告-AI语音助手.md-6","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":"名；\n- 判断是否需要用户确认；\n- 处理高风险操作；\n- 控制工具超时；\n- 压缩工具结果；\n- 记录工具调用日志。\n\n 5.2 工具安全策略\n\nconfigs/tools.yaml 中配置了工具权限。项目将工具分为低风险、中风险、高风险，并对高风险工具要求用户确认。\n\n例如：\n\n- 文件写入、文件编辑、补丁应用需要确认；\n- 任务删除需要确认；\n- 命令执行默认禁用；\n- 消息发送默认禁用；\n- code_execution 默认禁用；\n- 屏幕观察需要显式开启；\n- 私密数据清理脚本独立提供。\n\napp/tools/runtime/runtime_tools.py 中的命令执行工具使用 subprocess.run(..., shell=True)，这本身是高风险设计。但项目通过如下方式降低风险：\n\n1. 工具默认禁用；\n2. 风险等级为 high；\n3. 默认需要用户确认；\n4. 不在常规模型可见工具中暴露。\n\n如果二次开发时要启用命令执行，建议进一步加入：\n\n- 命令白名单；\n- 工作目录限制；\n- 最大输出限制；\n- 禁止网络敏感命令；\n- 禁止删除类命令；\n- 沙箱执行环境；\n- 对执行命令进行二次确认展示。\n\n 6. Search 与 RAG 机制分析\n\n 6.1 搜索入口\n\n搜索统一入口位于：\n\n项目没有保留多个分散的搜索工具，而是提供统一 search 工具。这个工具内部支持：\n\n- Query rewriting；\n- 搜索计划；\n- SearXNG；\n- DDGS；\n- 网页抓取；\n- 文档分块；\n- BM25；\n- Embedding；\n- Reranker；\n- 证据质量判断；\n- 二次搜索；\n- 回答缓存。\n\n这是该项目比较工程化的部分。它不是把搜索结果 snippet 直接丢给模型，而是尽量构建“可引用、可排序、可判断质量”的证据链。\n\n 6"},{"id":"开发报告-AI语音助手.md-7","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":".2 RAG 数据流\n\nRAG 过程大致如下：\n\n其中 app/rag/ranker.py 是排序核心。它会综合：\n\n- BM25 分数；\n- Embedding 相似度；\n- Reranker 分数；\n- 来源质量；\n- 片段质量；\n- snippet 惩罚；\n- 证据多样性。\n\n最终会给证据分配类似 S1、S2 的来源编号，再交给模型。\n\n 6.3 搜索设计优点\n\n该搜索系统的优点是：\n\n1. 层次清晰：搜索发现 URL，RAG 负责证据加工。\n2. 具备降级能力：Embedding 或 Reranker 不可用时，可回退到 BM25。\n3. 避免纯 snippet 回答：通过网页抓取和 chunk 提高证据质量。\n4. 支持二次搜索：当证据不足时继续补充。\n5. 支持缓存：降低重复搜索成本。\n\n 6.4 搜索设计不足\n\n可能的问题包括：\n\n1. 依赖外部网络和搜索服务，稳定性受环境影响；\n2. SearXNG、DDGS、Embedding、Reranker 任一服务异常都可能影响效果；\n3. 网页抓取不支持复杂 JS 渲染页面；\n4. 证据质量判断仍可能受模型能力影响；\n5. 缓存策略需要注意过期时间，避免回答过时信息。\n\n 7. Memory 长期记忆模块\n\n长期记忆模块位于：\n\n主要文件包括：\n\n- manager.py：记忆读写；\n- classifier.py：记忆分类；\n- gate.py：记忆写入门控；\n- conflict_resolver.py：冲突处理；\n- metadata_generator.py：记忆元数据生成；\n- memory_router.py：记忆相关意图路由。\n\n从配置看，项目支持：\n\n这表示它不会盲目把所有聊天内容写进长期记忆，而是经过门控和分类后再写入。\n\n工作区中还存在结构化记忆文件：\n\n这种设计适合桌面助手长期使用：\n\n- U"},{"id":"开发报告-AI语音助手.md-8","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":"SER.md 保存用户偏好；\n- PROJECT.md 保存当前项目背景；\n- TASKS.md 保存任务状态；\n- KNOWLEDGE.md 保存长期知识。\n\n不过，记忆系统也带来隐私风险。发布博客或开源示例时，应清理 data/memory、workspace/memory、logs、data/sessions 等目录，避免泄露真实聊天内容。\n\n 8. Skill Package 机制\n\nSkill Package 是项目很重要的扩展机制。目录位于：\n\n本次源码中包含多个内置 Skill，例如：\n\n- blog_writer：博客写作；\n- browser_video：浏览器视频相关；\n- github_research：GitHub 项目研究；\n- gptsovits：语音合成相关；\n- healthcheck：系统健康检查；\n- local_llm：本地模型；\n- memory：记忆管理；\n- model_deployment：模型部署；\n- openclaw：OpenClaw 集成；\n- paper_assistant：论文助手；\n- planning：任务规划；\n- ppt_master：PPT 生成相关；\n- project_refactor：项目重构；\n- rag_search：RAG 搜索；\n- screen_observer：屏幕观察；\n- search：搜索；\n- summarize：总结；\n- tts：语音输出；\n- weather：天气；\n- workspace：工作区管理。\n\n每个 Skill 一般可以包含：\n\napp/skills/loader.py 负责读取 Skill 元信息；app/skills/selector.py 负责根据用户意图选择合适 Skill；app/skills/executor.py 负责执行工作流。\n\nSkill 工作"},{"id":"开发报告-AI语音助手.md-9","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":"流支持：\n\n- 图结构工作流；\n- 并行工具调用；\n- 子工作流；\n- 条件分支；\n- 运行状态持久化；\n- 中断后恢复；\n- 用户确认后继续执行。\n\n这说明项目并不满足于“LLM 随机决定调用哪个工具”，而是希望通过可配置工作流，把常见任务变成可复用、可维护的技能包。\n\n 9. 屏幕观察与桌面上下文\n\n屏幕观察相关代码位于：\n\n配置文件 configs/screen.yaml 中可以看到：\n\n- 屏幕能力默认启用；\n- 视觉模型 VLM 默认可配置；\n- 截图缓存位于 data/cache/screen；\n- 保留最近若干张截图；\n- 屏幕观察需要显式开启；\n- 默认不自动保存调试截图；\n- 敏感文本可做脱敏；\n- 禁止自动发送消息。\n\n这部分设计非常重要。桌面 Agent 一旦具备屏幕感知，就可能接触聊天窗口、网页、文件路径、账号信息等敏感内容。因此项目在配置上提供了隐私保护策略：显式启动、限制缓存、脱敏、禁止自动发送消息。\n\n从功能上看，屏幕模块主要支持：\n\n1. 截图；\n2. 窗口信息读取；\n3. 屏幕状态缓存；\n4. 调用 VLM 分析屏幕内容；\n5. 主动观察与状态解释。\n\n这让助手可以回答类似：\n\n- “你看看我现在屏幕上这个报错是什么意思？”\n- “帮我总结当前网页内容。”\n- “我现在打开的是哪个应用？”\n\n但实际使用时，需要谨慎控制权限和日志保存。\n\n 10. 配置系统设计\n\n项目配置入口为 config.yaml，并通过 include_configs 引入多个子配置：\n\napp/config.py 中实现了配置加载逻辑：\n\n1. 读取主配置；\n2. 读取 include_configs；\n3. 深度合并 include 配置；\n4. 再用主配置覆盖 include 配置；\n5. 创建运行目录；\n6. 提供 get_config()、get_llm_a"},{"id":"开发报告-AI语音助手.md-10","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":"pi_key() 等接口。\n\n这种配置拆分方式的优点是：\n\n- 不同能力独立配置，便于维护；\n- 主配置保留全局覆盖能力；\n- 适合本地用户按需打开/关闭能力；\n- 便于排查问题。\n\n潜在问题是：当前 get_llm_api_key() 的逻辑中，内联 api_key 优先于环境变量。对于纯本地模型这没有问题，因为 api_key: local 只是占位；但如果未来接入真实远程 API，更推荐环境变量优先，或者移除配置文件中的明文 key。\n\n 11. 部署流程\n\n以下流程适合在博客中作为“复现指南”。\n\n 11.1 环境准备\n\n推荐环境：\n\n- Windows 10 / Windows 11；\n- Python 3.10 或 3.11；\n- NVIDIA GPU；\n- CUDA 可用；\n- 本地 llama.cpp；\n- FunASR / ModelScope；\n- GPT-SoVITS；\n- 可选：SearXNG、Embedding 模型、Reranker 模型。\n\n 11.2 获取项目\n\n或者直接解压项目压缩包。\n\n 11.3 创建 Python 环境\n\n如果某些音频库在 Windows 下安装失败，可以优先检查：\n\n- sounddevice；\n- pyaudio 或系统音频依赖；\n- playsound；\n- torch CUDA 版本；\n- ModelScope/FunASR 依赖。\n\n 11.4 启动本地大模型服务\n\n项目提供了 scripts/local_models/ 下的 .bat 脚本。使用前需要修改：\n\n- llama.cpp 路径；\n- GGUF 模型文件路径；\n- GPU offload 参数；\n- 上下文长度；\n- 线程数；\n- host 与 port。\n\n示例逻辑如下：\n\n如果只是个人本机使用，建议优先绑定：\n\n不要随意使用 0.0.0.0，"},{"id":"开发报告-AI语音助手.md-11","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":"否则同一局域网内的其他设备可能访问你的模型服务。\n\n 12.5 启动 GPT-SoVITS\n\n确保 GPT-SoVITS 的 HTTP 服务监听：\n\n然后在 configs/tts.yaml 中检查：\n\n 11.6 配置搜索与 RAG\n\n如果要使用搜索/RAG，建议启动或配置：\n\n- SearXNG：http://127.0.0.1:8080；\n- Embedding 服务：http://127.0.0.1:8010/v1；\n- Reranker 服务：http://127.0.0.1:8011/v1。\n\n如果暂时不启动这些服务，项目仍可部分运行，但搜索质量和 RAG 效果会下降。\n\n 11.7 启动项目\n\n默认弹窗模式：\n\nCLI 模式：\n\n语音服务模式：\n\nWebUI 模式：\n\n 11.8 运行诊断\n\n项目提供了多个诊断脚本：\n\n建议部署后优先执行这些脚本，检查：\n\n- 配置是否正确；\n- 搜索服务是否可用；\n- LLM 端口是否可用；\n- 工具策略是否符合预期；\n- RAG 依赖是否完整。\n\n 12. 代码质量评价\n\n 12.1 优点\n\n 1. 架构拆分较清晰\n\n项目将 Agent、Runtime、Tools、RAG、Voice、TTS、Memory、Skill、Screen 等模块拆开，避免了所有逻辑堆在一个脚本中。\n\n 2. 多入口统一到同一 Runtime\n\nPopup、CLI、WebUI、Voice 最终都进入 SessionRunner，这让核心逻辑复用度较高。\n\n 3. 工具系统有安全意识\n\n高风险工具不是直接暴露给模型，而是通过策略文件控制，并且需要用户确认。\n\n 4. Search/RAG 设计比较完整\n\n具备搜索计划、查询改写、网页抓取、分块、BM25、Embedding、Reranker、证据质量判断和二次搜索，不是简单搜索 API 拼接。\n\n 5"},{"id":"开发报告-AI语音助手.md-12","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":". 语音链路考虑了真实使用问题\n\n项目考虑了 VAD、声纹验证、TTS 抑制、barge-in、流式 partial、最终识别等问题，这些都是语音助手从 Demo 走向可用所必须解决的问题。\n\n 6. Skill Package 具备扩展潜力\n\n把常见任务封装为技能包，可以减少核心代码膨胀，也便于后续新增“博客写作”“论文助手”“PPT 生成”等能力。\n\n 12.2 不足\n\n 1. 部署链路较重\n\n完整运行需要 LLM、VLM、Embedding、Reranker、GPT-SoVITS、SearXNG、FunASR 等多个组件，对新手不友好。\n\n 2. 脚本中存在本地硬编码路径\n\nscripts/local_models/.bat 中包含本地模型路径和 llama.cpp 路径。其他用户部署时必须手动修改。\n\n 3. 自动化测试不足\n\n本次源码中未发现独立 tests/ 测试目录。虽然 compileall 可以通过，但仍建议补充单元测试和集成测试。\n\n 4. 命令执行工具需要更严格保护\n\n虽然命令执行工具默认禁用且需要确认，但如果未来启用，建议增加白名单、沙箱、危险命令拦截。\n\n 5. 配置文件中的模型名不适合公开演示\n\n默认模型名包含 Uncensored 和 Aggressive，博客发布时建议说明这是本地实验模型，并建议生产或公开演示换成更稳妥的对齐模型。\n\n 6. 隐私数据清理必须重视\n\n桌面上下文、屏幕观察、语音输入、聊天日志、长期记忆都可能包含隐私信息。发布项目截图、日志、压缩包前应执行清理。\n\n 13. 推荐改进路线\n\n 13.1 第一阶段：提升可部署性\n\n- 提供 .env.example；\n- 提供 config.example.yaml；\n- 将本地硬编码路径改为环境变量；\n- 提供一键检查脚本；\n- 将模型服务启动命令改成模板形式；\n- README"},{"id":"开发报告-AI语音助手.md-13","title":"浅梦 AI 助手 Runtime 开发报告：一个本地语音桌面 Agent 的工程化实现","category":"开发报告","file":"开发报告-AI语音助手.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-AI%E8%AF%AD%E9%9F%B3%E5%8A%A9%E6%89%8B/","content":" 中增加“最小启动模式”。\n\n建议最小启动模式只依赖：\n\n然后再逐步开启：\n\n 13.2 第二阶段：补充测试体系\n\n建议新增：\n\n重点测试：\n\n- 配置合并是否正确；\n- 工具策略优先级是否正确；\n- 高风险工具是否被拦截；\n- TTS 是否过滤 debug 文本；\n- 搜索依赖缺失时是否能降级；\n- Skill 是否能正确加载；\n- 记忆是否不会误写入。\n\n 13.3 第三阶段：提升安全性\n\n建议：\n\n- 命令执行工具加入命令白名单；\n- 文件操作限制到 workspace；\n- 屏幕观察增加醒目状态提示；\n- 日志默认脱敏；\n- 远程 API key 必须走环境变量；\n- 模型服务默认绑定 127.0.0.1；\n- 提供“隐私清理模式”。\n\n 13.4 第四阶段：优化用户体验\n\n可以继续改进：\n\n- 首次启动向导；\n- 模型服务状态面板；\n- 麦克风设备选择 UI；\n- 声纹注册向导；\n- TTS 参考音频管理；\n- Skill Package 可视化管理；\n- RAG 搜索过程可视化；\n- 工具确认弹窗优化。"},{"id":"开发报告-毕业设计.md-0","title":"基于大模型的移动应用合规检测系统开发记录","category":"开发报告","file":"开发报告-毕业设计.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/","content":"基于大模型的移动应用合规检测系统开发记录\n\n最近一直在做一个和“大模型 + RAG + 移动应用隐私合规检测”相关的项目。\n\n这个项目从最开始的简单想法，到后面慢慢扩展成完整的实验系统，其实经历了很长时间的迭代。\n\n现在回头看，已经不仅仅只是一个“调用大模型”的脚本了，而是一个包含：\n\n- 标准知识库构建\n- RAG 检索\n- 应用分类\n- 隐私政策分析\n- APK 权限分析\n- 自动报告生成\n- 实验评估\n- 消融实验\n\n的完整研究型项目。\n\n 一、项目最开始的想法\n\n一开始做这个项目，其实是因为发现：\n\n现在很多移动应用虽然都有隐私政策，但真正认真阅读的人很少。\n\n而且很多应用存在：\n\n- 权限申请过多\n- 隐私政策披露不完整\n- 实际行为和声明不一致\n- 敏感信息处理不规范\n\n这些问题。\n\n于是后面就开始思考：\n\n能不能利用大模型和 RAG，把国家标准、隐私政策和 APK 权限结合起来，自动做合规分析？\n\n后来整个项目就慢慢成型了。\n\n 二、项目整体目标\n\n整个系统主要围绕三个问题展开：\n\n 1. 应用分类识别\n\n系统需要先判断：\n\n一个应用到底属于什么类型。\n\n这里参考的是：\n\n中的重点应用类别。\n\n系统会结合：\n\n- 应用简介\n- 隐私政策\n- 国标定义\n- RAG 检索结果\n\n自动完成分类。\n\n 2. 隐私政策合规审查\n\n第二部分是分析隐私政策本身。\n\n例如：\n\n- 是否明确说明收集的数据\n- 是否说明用途\n- 是否涉及敏感信息\n- 是否存在第三方共享\n- 是否涉及未成年人规则\n\n然后结合国家标准做合规判断。\n\n 3. APK 权限一致性分析\n\n这一部分主要是：\n\n把 APK 权限和隐私政策进行比对。\n\n例如：\n\n- 是否申请了未披露权限\n- 是否存在超范围申请\n- 权限和业务是否匹配\n- 是否属于高风险权限\n\n这一部分后面做得其实比较复杂。\n\n 三、项目技术路"},{"id":"开发报告-毕业设计.md-1","title":"基于大模型的移动应用合规检测系统开发记录","category":"开发报告","file":"开发报告-毕业设计.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/","content":"线\n\n整个系统后面采用的是：\n\n这样的整体链路。\n\n 四、RAG 知识库构建\n\n这一部分其实是整个系统最麻烦的部分之一。\n\n因为国家标准 PDF 本身结构并不好处理。\n\n所以后面单独做了一整套：\n\n- PDF 渲染\n- OCR 解析\n- JSON 清洗\n- chunk 切分\n- embedding 构建\n- FAISS 向量化\n\n流程。\n\n 1. PDF 渲染\n\n首先把 PDF 渲染成高清图片。\n\n这样后面的 OCR 才更稳定。\n\n 2. OCR 解析\n\n后面使用：\n\n做版面解析。\n\n包括：\n\n- 标题\n- 表格\n- 附录\n- 段落结构\n\n全部提取成结构化内容。\n\n 3. chunk 构建\n\n这一部分其实调了很久。\n\n因为：\n\nchunk 太小会丢上下文。\n\nchunk 太大又会影响检索精度。\n\n后面针对：\n\n- 权限\n- 类别\n- 敏感信息\n- 附录\n\n做了强化切分。\n\n 4. 向量化\n\n最后把 chunk 写入：\n\n形成 RAG 检索库。\n\n 五、应用分类模块\n\n后面单独做了应用分类模块。\n\n采用的是“两阶段分类”。\n\n 第一阶段\n\n先判断：\n\n应用是否属于国标中的重点类别。\n\n 第二阶段\n\n如果属于重点类别：\n\n再进一步细分具体类型。\n\n例如：\n\n- 社交\n- 地图导航\n- 电商\n- 工具类\n\n等等。\n\n 六、多任务合规分析\n\n后面整个系统核心其实是：\n\n三类关系分析。\n\n 1. 国标 ↔ 隐私政策\n\n分析隐私政策是否符合国家标准。\n\n包括：\n\n- 告知义务\n- 敏感信息\n- 第三方共享\n- 用户同意\n- 未成年人规则\n\n等控制点。\n\n 2. 隐私政策 ↔ APK 权限\n\n这一部分主要分析：\n\n权限是否在隐私政策中被披露。\n\n后面采用的是：\n\n的混合方案。\n\n 3. 国标 ↔ APK 权限\n\n这一部分会进一步判断：\n\n某个权限到底：\n\n- 是否业务必要\n- 是否合理\n"},{"id":"开发报告-毕业设计.md-2","title":"基于大模型的移动应用合规检测系统开发记录","category":"开发报告","file":"开发报告-毕业设计.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/","content":"- 是否属于高风险权限\n\n最后给出风险等级。\n\n 七、实验部分\n\n这个项目后面其实不仅仅是功能实现。\n\n还做了很多实验。\n\n包括：\n\n- RAG 检索评估\n- 分类评估\n- 报告质量评估\n- 效率评估\n- 消融实验\n\n这一部分对论文帮助非常大。\n\n 八、开发过程中遇到的问题\n\n其实整个项目踩了很多坑。\n\n 1. OCR 解析稳定性\n\n不同 PDF 格式差异很大。\n\n有些：\n\n- 表格会错位\n- 标题层级会丢失\n- 附录结构很混乱\n\n后面做了大量清洗。\n\n 2. chunk 切分问题\n\n最开始直接固定长度切分。\n\n结果：\n\nRAG 检索效果很差。\n\n后面改成：\n\n- 语义结构切分\n- 表格强化\n- 权限特殊处理\n\n效果才慢慢稳定。\n\n 3. 权限语义映射\n\n这一部分其实很难。\n\n因为：\n\n很多权限并不一定能直接映射到某种业务。\n\n尤其是：\n\n- 厂商权限\n- 第三方 SDK 权限\n\n后面增加了弱语义推断。\n\n 4. 大模型稳定性\n\n不同模型输出风格差异非常明显。\n\n后面为了保证：\n\n- 输出格式稳定\n- 报告结构统一\n\n又做了很多 prompt 约束。\n\n 九、目前项目的整体状态\n\n目前整个系统已经能够完成：\n\n- 标准解析\n- 知识库构建\n- RAG 检索\n- 应用分类\n- 三类合规分析\n- 自动生成 Markdown 报告\n- 实验评估\n\n已经基本具备完整研究型原型系统的能力。\n\n 十、后续准备继续优化的方向\n\n后面准备继续完善：\n\n 1. 配置系统统一化\n\n目前很多：\n\n- 路径\n- 模型名\n- 参数\n\n还写在脚本里。\n\n后面准备统一：\n\n管理。\n\n 2. FastAPI 接口化\n\n目前主要还是：\n\n批处理脚本。\n\n后面准备做：\n\n- FastAPI 后端\n- Web 页面\n- 文件上传\n- 报告下载\n\n让整个系统更像真正的平台。\n\n 3. 模块进一步解耦\n\n目前部分代"},{"id":"开发报告-毕业设计.md-3","title":"基于大模型的移动应用合规检测系统开发记录","category":"开发报告","file":"开发报告-毕业设计.md","url":"/%E5%BC%80%E5%8F%91%E6%8A%A5%E5%91%8A-%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/","content":"码：\n\n- LLM 调用\n- IO\n- 文本清洗\n\n还有重复逻辑。\n\n后面准备继续模块化。\n\n 十一、总结\n\n这个项目其实是目前做过最复杂的一个项目之一。\n\n从最开始的想法，到后面：\n\n- RAG\n- OCR\n- 向量检索\n- 权限分析\n- Prompt\n- 消融实验"},{"id":"技术文档-PPT-Master.md-0","title":"PPT-Master","category":"AI工具","file":"技术文档-PPT-Master.md","url":"/%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3-PPT-Master/","content":"PPT-Master\n\n 一、项目介绍\n\n随着大语言模型的发展，AI 自动生成 PPT 已经成为一种非常热门的应用方向。\n\n传统 AI PPT 工具虽然可以快速生成内容，但大多数都存在一个问题：\n\n “生成后无法继续编辑”\n\n很多工具最终导出的：\n\n- 实际上只是截图\n- 或者整页图片\n- 无法修改布局\n- 无法编辑图形\n- 无法继续二次设计\n\n而 PPT-Master 最大的特点：\n\n就是：\n\n “生成真正可编辑的 PPT”\n\n项目地址：\n\nhttps://github.com/hugohe3/ppt-master\n\n 二、PPT-Master 能干什么？\n\nPPT-Master 本质上：\n\n是一个：\n\n组合而成的 AI PPT 自动生成系统。\n\n它不仅能：\n\n- 自动生成 PPT 内容\n- 自动设计页面布局\n- 自动生成图表\n- 自动生成 SVG 页面\n\n还可以：\n\n 将 SVG 转换为真正可编辑的 PPTX 文件\n\n最终生成的 PPT：\n\n支持：\n\n- 文本编辑\n- 图形编辑\n- 元素拖动\n- 配色修改\n- 动画\n- 转场\n\n而不是单纯的图片。\n\n 三、项目核心原理\n\n很多人以为：\n\nPPT-Master 是：\n\n实际上并不是。\n\n真正流程：\n\n 四、什么是 SVG？\n\nSVG：\n\n全称：\n\n即：\n\n 矢量图形\n\n与普通 PNG/JPG 最大区别：\n\n SVG 是“图形描述”\n\n例如：\n\n表示：\n\n绘制一个矩形。\n\n因此：\n\nSVG：\n\n- 可以无限缩放\n- 不失真\n- 元素独立\n- 更适合转换为 PPT 图形\n\n 五、为什么 SVG 非常适合 PPT？\n\n因为：\n\nPPT 本质上：\n\n也是：\n\n所以：\n\nSVG 与 PowerPoint：\n\n天然兼容。\n\n 六、什么是 DrawingML？\n\n这是 PPT-Master 最关键的技术之一。\n\nDrawingML：\n\n"},{"id":"技术文档-PPT-Master.md-1","title":"PPT-Master","category":"AI工具","file":"技术文档-PPT-Master.md","url":"/%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3-PPT-Master/","content":"是：\n\n即：\n\nPPT 中：\n\n所有：\n\n- 文字\n- 图形\n- 线条\n- 形状\n\n本质上：\n\n都是 DrawingML。\n\n 七、为什么很多 AI PPT 无法编辑？\n\n因为：\n\n它们：\n\n实际上：\n\n只是：\n\n例如：\n\n所以：\n\n无法：\n\n- 修改单独文字\n- 修改图形\n- 修改布局\n\n 八、PPT-Master 为什么能编辑？\n\n因为：\n\n它：\n\n不是插图片。\n\n而是：\n\n因此：\n\n生成的是：\n\n真正 Office 原生元素。\n\n 九、项目适合什么场景？\n\nPPT-Master 非常适合：\n\n 1. 学术场景\n\n例如：\n\n- 论文汇报\n- 毕设答辩\n- 研究生开题\n- 技术演示\n\n 2. 企业场景\n\n例如：\n\n- 产品汇报\n- 周报\n- 商业演示\n- 数据分析\n\n 3. AI Agent 自动办公\n\n例如：\n\n自动：\n\n 十、下载项目\n\n Git Clone\n\n 或下载 ZIP\n\nGitHub：\n\n 十一、创建 Conda 环境\n\n推荐：\n\n单独创建环境。\n\n 创建环境\n\n 激活环境\n\n 十二、安装项目依赖\n\n进入项目目录：\n\n安装依赖：\n\n 国内推荐清华源\n\n 十三、如何修改 PPT 风格？\n\n这是很多人最关心的问题。\n\n 方法 1：修改模板\n\n项目中：\n\n目录：\n\n控制：\n\n- 字体\n- 配色\n- 页面布局\n- 标题样式\n\n 方法 2：Prompt 控制风格\n\n例如：\n\n 方法 3：模仿论文风格\n\n甚至可以：\n\n上传论文截图。\n\n让 AI：\n\n模仿：\n\n- 配色\n- 字体\n- 图表\n- 布局\n\n 十四、如何接入 API？\n\nPPT-Master 本质：\n\n是：\n\n因此：\n\n支持：\n\n- OpenAI\n- DeepSeek\n- Qwen\n- Claude\n- Ollama\n- llama.cpp\n\n 十五、如何提高生成质量？\n\n 1. 使用更强模型\n\n推荐：\n\n- "},{"id":"技术文档-PPT-Master.md-2","title":"PPT-Master","category":"AI工具","file":"技术文档-PPT-Master.md","url":"/%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3-PPT-Master/","content":"GPT-4.1\n- Claude\n- Qwen3\n- DeepSeek\n\n 2. 强化 Prompt\n\n例如：\n\n 3. 使用参考图片\n\n上传：\n\n- PPT\n- 论文\n- UI 截图\n\n让 AI：\n\n模仿风格。\n\n 十六、项目最大优点\n\n最大的优点：\n\n “真正适合二次编辑”\n\n这是很多 AI PPT：\n\n做不到的。\n\n 十七、适合什么人？\n\n非常适合：\n\n- 学生\n- 毕设\n- 研究生\n- AI 开发者\n- 企业演示\n- 自动办公\n\n 十八、未来玩法\n\n我现在正在尝试：\n\n实现：\n\n 十九、总结\n\nPPT-Master 并不是：\n\n普通 AI PPT 工具。\n\n它更像：\n\n构成的一整套：\n\n AI 自动演示文稿生成系统\n\n其真正强大的地方：\n\n不是：\n\n“一键生成”。\n\n而是：\n\n “生成后还能继续编辑”\n\n这一点：\n\n对于：\n\n- 毕设\n- 学术汇报\n- 企业 PPT\n\n都非常重要。\n\n PPT-Master 保姆教程，如何在 windows 系统下安装使用及如何配置生图模型"},{"id":"技术文档-Qwen本地部署记录.md-0","title":"Qwen 本地部署记录","category":"技术文档","file":"技术文档-Qwen本地部署记录.md","url":"/%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3-Qwen%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2%E8%AE%B0%E5%BD%95/","content":"Qwen 本地部署记录\n\n最近开始正式折腾本地大模型。\n\n相比直接使用在线 API，本地部署最大的优点其实是：\n\n- 隐私可控\n- 不受网络限制\n- 响应速度稳定\n- 可以自由改参数\n- 能接各种 Agent 系统\n\n这次主要使用：\n\n进行本地部署。\n\n 一、设备环境\n\n目前使用的设备：\n\n- Honor MagicBook Pro 16\n- RTX 4060 Laptop GPU（8GB）\n- Windows 11\n- WSL2 Ubuntu 22.04\n\n 二、为什么选择 Qwen\n\n一开始其实对比过很多模型：\n\n- DeepSeek\n- Llama\n- Mistral\n- Qwen\n\n最后还是选择了 Qwen。\n\n主要原因：\n\n 1. 中文能力强\n\nQwen 的中文表现确实很好。\n\n尤其：\n\n- 长文本\n- 中文逻辑\n- 技术问题\n\n明显比很多模型更自然。\n\n 2. 本地部署生态成熟\n\n目前：\n\n- GGUF\n- llama.cpp\n- Ollama\n\n对 Qwen 支持都很好。\n\n部署方便很多。\n\n 3. 参数规模适合 4060 Laptop\n\n因为只有 8GB 显存。\n\n所以：\n\n- 70B 基本不现实\n- 32B 边缘可跑\n- 14B / 7B 更舒服\n\n后面主要使用：\n\n进行测试。\n\n 三、部署 llama.cpp\n\n 1. 克隆项目\n\n 2. 编译 CUDA 版本\n\n使用：\n\n 四、踩过的坑\n\n 1. CUDA 找不到\n\n最开始：\n\n后面发现：\n\nCUDA 没正确配置环境变量。\n\n 2. Visual Studio 编译问题\n\n还遇到：\n\n后来安装：\n\n- Desktop development with C++\n- MSVC\n- Windows SDK\n\n才正常。\n\n 五、模型下载\n\n模型使用：\n\n下载：\n\n- Q4_K_M\n- Q5_K_M\n\n两个量化版"},{"id":"技术文档-Qwen本地部署记录.md-1","title":"Qwen 本地部署记录","category":"技术文档","file":"技术文档-Qwen本地部署记录.md","url":"/%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3-Qwen%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2%E8%AE%B0%E5%BD%95/","content":"本。\n\n 六、启动参数\n\n目前最常用：\n\n 七、参数说明\n\n 1. ngl\n\nGPU 层数。\n\n代表尽量全部放 GPU。\n\n 2. c\n\n上下文长度。\n\n代表：\n\n8K 上下文。\n\n 3. t\n\nCPU 线程数。\n\n对应 CPU 线程数量。\n\n 八、关闭思考模式\n\n后面发现：\n\nQwen 思考模式虽然强。\n\n但：\n\n- 输出慢\n- token 消耗大\n- 有时太啰嗦\n\n后面默认关闭：\n\n 九、实际体验\n\n目前：\n\n- 日常聊天没问题\n- 技术问答效果很好\n- 中文体验优秀\n\n但：\n\n27B 在 8GB 显存下：\n\n还是有一定压力。"},{"id":"技术文档-WSL2配置CUDA.md-0","title":"WSL2 CUDA 配置记录","category":"技术文档","file":"技术文档-WSL2配置CUDA.md","url":"/%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3-WSL2%E9%85%8D%E7%BD%AECUDA/","content":"WSL2 CUDA 配置记录\n\n最近很多本地 AI 工具都开始依赖：\n\n环境。\n\n所以后面开始正式折腾：\n\n这一套环境。\n\n 一、为什么使用 WSL2\n\n相比虚拟机：\n\nWSL2 最大的优点是：\n\n- 更轻量\n- GPU 支持更好\n- Linux 兼容性强\n- 开发方便\n\n现在很多：\n\n- OpenClaw\n- Docker\n- AI Agent\n- Python 环境\n\n都更适合 Linux。\n\n 二、安装 WSL2\n\n管理员 PowerShell：\n\n安装完成后：\n\n查看版本。\n\n 三、安装 Ubuntu\n\n安装：\n\n作为主要开发环境。\n\n 四、检查 GPU\n\n进入 WSL：\n\n如果正常：\n\n会显示 GPU 信息。\n\n 五、安装 CUDA Toolkit\n\n下载：\n\n然后安装：\n\n 六、Python 环境\n\n后面主要使用：\n\n管理环境。\n\n创建：\n\n 七、PyTorch GPU 测试\n\n测试：\n\n输出：\n\n说明 CUDA 正常。\n\n 八、遇到的问题\n\n 1. localhost 代理问题\n\nWSL NAT 模式下：\n\n导致：\n\n很多工具无法直接走代理。\n\n后面需要：\n\n- 手动设置 IP\n- 或桥接模式\n\n 2. CUDA 版本不匹配\n\n有时候：\n\n- 驱动版本\n- CUDA Toolkit\n- PyTorch CUDA\n\n版本不一致。\n\n会导致：\n\n 九、实际效果\n\n配置完成后：\n\n目前已经能够正常：\n\n- 跑 llama.cpp\n- 跑 PyTorch\n- 跑 OpenClaw\n- 使用 GPU 推理\n\n整体体验比 Windows 原生稳定很多。\n\n 十、总结\n\nWSL2 现在已经基本成为：\n\nWindows 本地 AI 开发的核心环境之一。\n\n尤其：\n\n- CUDA\n- Docker\n- Python\n- Agent\n\n这一整套生态。\n\n在 Linux 下体验明显"},{"id":"技术文档-WSL2配置CUDA.md-1","title":"WSL2 CUDA 配置记录","category":"技术文档","file":"技术文档-WSL2配置CUDA.md","url":"/%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3-WSL2%E9%85%8D%E7%BD%AECUDA/","content":"更完整。"},{"id":"随笔-今天的一点想法.md-0","title":"搭建属于自己的博客","category":"随笔","file":"随笔-今天的一点想法.md","url":"/%E9%9A%8F%E7%AC%94-%E4%BB%8A%E5%A4%A9%E7%9A%84%E4%B8%80%E7%82%B9%E6%83%B3%E6%B3%95/","content":"今天花了一整天，把自己的个人博客慢慢搭了起来。\n\n从最开始什么都没有，到现在真正拥有了一个属于自己的网页空间，过程其实比想象中更有意思。\n\n一开始只是想简单做一个技术博客，用来记录以后学习 AI、本地大模型和开发过程里的内容。后来越改越上头，从 Hexo 到 Butterfly，从背景图到毛玻璃，再到导航栏、图片墙、视频页、随笔页……慢慢发现，自己想做的已经不只是一个“技术博客”。\n\n更像是一个属于自己的数字空间。\n\n这里以后不仅会放技术文档，也会记录一些生活里的东西，比如图片、视频、游戏截图、灵感、情绪、碎碎念，甚至可能只是某一天突然很喜欢的一张图。\n\n今天最大的感受，大概是：\n\n原来从零把一个网站慢慢搭成自己喜欢的样子，会有一种很强的“归属感”。\n\n尤其是当背景、颜色、动画和布局一点点变成自己想要的风格的时候，会觉得这个页面真的开始“像自己”了。\n\n目前博客还有很多地方没完善：\n\n- 关于我页面还没完全做好\n- 图片墙和视频页还在继续调整\n- 后面还想接 AI 功能\n- 还想加更多动态效果和内容分类\n\n但至少现在，它已经不再是默认模板了。\n\n而是真正开始变成：\n\n一个属于自己的长期记录空间。\n\n以后应该会经常在这里更新东西。"}]