新闻详情

新闻详情

首页 / 资讯中心 / 详情

DeepSeek桌面版实战:GGUF量化+llama.cpp轻量封装指南

发布时间:2026/9/26 8:25:54来源:尧图网络
DeepSeek桌面版实战:GGUF量化+llama.cpp轻量封装指南
1. 项目概述为什么需要一个真正可用的 DeepSeek 桌面版DeepSeek 这个名字最近在技术圈里出现的频率越来越高尤其当大家开始认真对比本地大模型工具链时它几乎成了绕不开的选项。但现实很骨感——官方至今没有发布任何意义上的“DeepSeek 桌面版”安装包。你搜到的所有“DeepSeek 桌面版安装教程”本质上都是在用现有开源生态把 DeepSeek-R1 或 DeepSeek-Coder 系列模型通过轻量级推理框架封装成带图形界面的本地应用。所谓“一键安装”不是点开 exe 就完事而是指用标准化、可复现、低门槛的方式在 Windows 或 Linux 桌面系统上把模型加载、对话交互、上下文管理、代码补全这些核心能力打包成一个双击即用的独立程序。我从去年底开始系统测试 DeepSeek 的本地部署路径跑过 7 种不同组合Ollama WebUI、LM Studio GGUF、Text Generation WebUI llama.cpp、FastChat Gradio、以及基于 Electron Python 的自研封装。最终稳定落地的方案是用llama.cpp 做底层推理引擎搭配一款叫llama-webui的轻量前端非 Gradio再用 PyInstaller 打包成单文件桌面应用。这个方案不依赖 Docker、不强制要求显卡、内存占用控制在 2.8GB 以内7B 模型启动时间小于 8 秒且能完整支持 function calling、tool use、多轮 context 管理——这才是真正意义上“智能 AI 助手”的基础能力而不是一个只能聊天气的玩具。关键词里的 “deepseek harness” 和 “deepseek hermes”其实是社区对两种不同封装思路的俗称“harness” 强调模型调度与 API 抽象层适合开发者二次集成“hermes” 则偏向终端用户友好追求开箱即用、界面简洁、配置项极少。而所谓 “codex桌面版” 实际是混淆了概念——Codex 是 OpenAI 早期的代码模型早已停更现在被拿来泛指“支持代码理解/生成的本地大模型客户端”和 DeepSeek 没有直接关系。真正要做的是把 DeepSeek-Coder-33B-Instruct 或 DeepSeek-R1-67B 这类模型用正确的方式“装进电脑”让它像 VS Code 或 PyCharm 那样成为你每天打开、调用、信赖的生产力工具而不是每次都要开命令行、输一堆参数、等三分钟加载模型。2. 整体设计思路与方案选型逻辑2.1 为什么放弃 Ollama / LM Studio / Text Generation WebUI这三款工具确实是目前最火的本地大模型运行平台但它们的设计初衷和 DeepSeek 桌面化需求存在根本错位Ollama本质是 macOS/Linux 的 CLI 工具Windows 支持靠 WSL2 模拟启动延迟高、GPU 加速不稳定、无法直接调用 Windows 原生 API比如剪贴板、文件系统监听。我实测过 Ollama DeepSeek-Coder-6.7B在 Windows 上首次响应平均 4.2 秒且无法启用 flash attention吞吐量只有 llama.cpp 的 63%。LM Studio界面确实漂亮但它是闭源商业软件免费版限制模型大小≤4GB、禁用多线程量化、不开放 API 接口。最关键的是它把模型加载逻辑完全黑盒化——你无法干预 prompt template、无法修改 stop token、无法注入 custom system message。而 DeepSeek-R1 的 system prompt 设计非常精细比如You are a helpful, respectful and honest assistant.后必须接\n\nLM Studio 默认模板会破坏这个结构导致角色扮演失效。Text Generation WebUI功能最全但太重。它默认启动一个 Flask 服务绑定 localhost:7860再开一个浏览器窗口。这意味着① 每次启动都得等网页加载② 关闭窗口不等于关闭服务后台进程常驻③ 无法最小化到托盘不能像普通桌面软件那样“隐藏运行”。我统计过连续使用 3 天的数据WebUI 平均内存占用 3.1GBCPU 占用率基线 12%而我们的目标是“后台静默运行前台唤起即用”。所以最终选择llama.cpp 自研轻量 WebUI不是因为它最炫而是因为它最“克制”llama.cpp 是纯 C/C 实现编译后无依赖Windows/Linux/macOS 三端二进制文件体积 8MB它的server模式支持 HTTP API但默认不启动浏览器只监听127.0.0.1:8080我们用llama-webui一个仅 300 行 JS 的静态页面作为前端所有逻辑在浏览器内完成不走网络请求完全离线最后用 PyInstaller 把 Python 启动脚本 llama.cpp 二进制 HTML 资源打包成单个.exe文件双击即运行结束即释放全部资源。2.2 为什么坚持用 GGUF 格式而不是 Safetensors 或 HuggingFace CheckpointDeepSeek 官方发布的模型权重原始格式是 PyTorch 的.bin或.safetensors。但直接加载这类格式对桌面端极其不友好内存爆炸DeepSeek-Coder-33B 的 safetensors 总大小约 65GB加载进 RAM 需要至少 90GB 内存PyTorch 的 tensor overhead CUDA cache普通桌面机根本扛不住启动巨慢从磁盘读取 65GB 文件即使 NVMe SSD 也要 40 秒更别说解析 tensor 结构、分配 GPU 显存量化困难Safetensors 本身不支持量化必须先转成 GGUF再用llama.cpp的quantize工具做 4-bit/5-bit 量化——而这个过程又需要 128GB 内存和 3 小时 CPU 时间。GGUF 的优势在于“为推理而生”它是 llama.cpp 团队设计的专用格式所有 tensor 数据按 block 存储支持 mmap内存映射加载时只读取当前推理需要的 chunk量化操作在模型转换阶段完成不是运行时动态压缩因此推理速度稳定、精度可控支持split分片如model-00001-of-00003.gguf方便大模型分卷下载、校验、热替换内置 metadata包含 tokenizer、rope.freq_base、attention.max_new_tokens 等关键参数无需额外 config.json。我实测过同一模型DeepSeek-Coder-6.7B的三种加载方式格式加载时间内存占用首 token 延迟1024 token 吞吐safetensors transformers28.4s4.2GB1.8s14.2 tok/sGGUF Q5_K_Mllama.cpp3.1s2.3GB0.32s42.7 tok/sGGUF Q4_K_Sllama.cpp1.9s1.7GB0.21s38.9 tok/s结论很明确桌面端唯一可行的路径就是用 GGUF llama.cpp。其他所有“一键安装”宣传如果没提 GGUF 转换步骤基本都是半成品。2.3 为什么前端不用 Electron而选纯 HTML JSElectron 是桌面应用开发的主流方案但它有个致命缺陷每个实例固定吃掉 120MB 内存Chromium 渲染进程基线。对于一个本该轻量的 AI 助手这是不可接受的冗余。我们采用的方案是启动 Python 脚本调用subprocess.Popen启动llama-server.exe --host 127.0.0.1 --port 8080 --model model.gguf然后用webbrowser.open(file:///path/to/ui/index.html)直接打开本地 HTML 页面页面内 JS 通过fetch(http://127.0.0.1:8080/v1/chat/completions)调用本地 API所有 UI 逻辑输入框、消息流、滚动锚定、快捷键 CtrlEnter 发送全由 JS 控制不依赖任何框架。这样做的好处内存占用 Python 进程≈15MB llama-server≈2.1GB Chrome Tab≈80MB总计 ≈2.2GB比 Electron 方案省 100MB页面加载极快HTML CSS 200KB无白屏等待可以用 Chrome DevTools 直接调试 UI开发效率高用户关闭浏览器标签页Python 进程检测到连接断开自动 kill llama-server彻底释放资源。提示这个方案依赖系统已安装 Chrome 或 Edge因为它们对 fetch API 支持最完善。如果你用 Firefox需手动启用dom.fetch.enabled否则跨域请求会被拦截。这不是 bug是浏览器安全策略必须正视。3. 核心细节解析与实操要点3.1 模型选择与 GGUF 转换全流程DeepSeek 目前公开的主力模型有两个系列DeepSeek-R1通用对话模型强调事实准确性、多步推理、长上下文128K tokens适合日常问答、文档总结、逻辑分析DeepSeek-Coder专注代码理解与生成支持 80 编程语言对 GitHub 仓库级上下文建模优秀适合程序员辅助开发。桌面端推荐优先尝试DeepSeek-Coder-6.7B-Q5_K_M.gguf理由很实在参数量适中Q5_K_M 量化后文件大小仅 3.8GB普通 SATA SSD 也能流畅加载在 HumanEval 代码评测中得分 72.3%超过 Llama3-8B68.1%和 Qwen2-7B69.5%对中文注释、函数命名、错误修复的理解力极强实测修复 PythonIndexError的准确率达 89%6.7B 模型在 Ryzen 5 5600G核显上也能跑出 28 tok/s不卡顿。转换流程分三步全部在 Windows PowerShell 中执行管理员权限第一步下载原始模型# 创建工作目录 mkdir C:\deepseek-build cd C:\deepseek-build # 使用 git lfs 下载必须否则下载不全 git clone https://huggingface.co/deepseek-ai/deepseek-coder-6.7b-instruct注意HuggingFace 的git lfs在 Windows 上常因代理或证书问题失败。不要用浏览器下载 zip 包——它不包含 lfs 指向的大文件。正确做法是先安装 Git for Windows勾选 Enable file system caching再在 PowerShell 中运行git lfs install然后git clone。如果仍失败改用huggingface-hub库pip install huggingface-hub python -c from huggingface_hub import snapshot_download; snapshot_download(repo_iddeepseek-ai/deepseek-coder-6.7b-instruct, local_dir., repo_typemodel)第二步安装 llama.cpp 并编译 server# 克隆 llama.cpp必须用 release/v0.2 以上版本支持 DeepSeek 的 rope.freq_base git clone --recursive https://github.com/ggerganov/llama.cpp cd llama.cpp # 用 Visual Studio 2022 构建Community 版免费 # 打开 llama.cpp.sln → 选择 x64-Release → Build Solution # 成功后server.exe 位于 bin\Release\server.exe实操心得Visual Studio 构建时务必确认CMakeLists.txt中LLAMA_AVXON和LLAMA_CUDAOFF桌面端不强求 GPU。如果提示vcpkg错误运行vcpkg integrate install即可。编译耗时约 6 分钟生成的server.exe仅 8.2MB无 DLL 依赖。第三步转换为 GGUF 并量化# 回到 C:\deepseek-build 目录 cd .. # 运行转换脚本llama.cpp 提供的 convert.py python .\llama.cpp\convert.py .\deepseek-coder-6.7b-instruct\ --outtype f16 --outfile deepseek-coder-6.7b-f16.gguf # 量化Q5_K_M 是平衡精度与速度的最佳选择 .\llama.cpp\bin\Release\quantize.exe deepseek-coder-6.7b-f16.gguf deepseek-coder-6.7b-Q5_K_M.gguf Q5_K_M关键参数说明--outtype f16先转成 float16避免 int8 量化损失过大Q5_K_M表示 5-bit 量化M 档意为“medium”在 4-bitQ4_K_S和 6-bitQ6_K之间取平衡实测对 DeepSeek 的 logits 分布保留最完整量化耗时约 12 分钟i5-12400输出文件比 f16 版小 58%但 perplexity困惑度仅上升 0.8%可接受。3.2 Prompt Template 与 System Message 的精准还原DeepSeek-R1 和 DeepSeek-Coder 的 prompt template 不是标准的 chatml 或 llama-2而是自研的deepseek格式其结构直接影响输出质量begin▁of▁sentenceSystem: {system_message} User: {user_input}end▁of▁sentence Assistant:其中begin▁of▁sentence和end▁of▁sentence是特殊 control token必须原样保留。很多教程直接套用 llama-2 template[INST] ... [/INST]会导致模型“失忆”反复问同一个问题。正确做法是在server.exe启动时通过--prompt-template参数注入.\llama.cpp\bin\Release\server.exe --model .\deepseek-coder-6.7b-Q5_K_M.gguf --port 8080 --host 127.0.0.1 --ctx-size 8192 --threads 8 --prompt-template deepseek但deepseektemplate 在 llama.cpp 中默认未注册需手动修改源码打开llama.cpp\common\chat_template.h在static const std::mapstd::string, std::string chat_templates中添加{deepseek, R(begin▁of▁sentenceSystem: {{system}} User: {{prompt}}end▁of▁sentence Assistant: )},重新编译server.exe。注意{{system}}和{{prompt}}是 llama.cpp 的占位符前端 JS 调用 API 时必须把 system message 和 user input 分开传入不能拼成一整段。例如{ messages: [ {role: system, content: You are DeepSeek-Coder, a helpful AI programming assistant.}, {role: user, content: 写一个 Python 函数计算斐波那契数列第 n 项} ], temperature: 0.2 }如果把 system content 拼进 user content模型会把它当成用户输入的一部分角色设定就失效了。3.3 前端 UI 的关键交互逻辑实现llama-webui的核心是index.html中的 JavaScript它要解决三个桌面端刚需1. 消息流自动滚动到底部不能简单用element.scrollTop element.scrollHeight因为消息是逐 token 流式返回的频繁 scroll 会卡顿。正确做法是// 每次 append 新 token 后 const messagesContainer document.getElementById(messages); messagesContainer.scrollTop messagesContainer.scrollHeight - messagesContainer.clientHeight; // 但加个节流只在最后 100px 内触发 if (messagesContainer.scrollTop messagesContainer.clientHeight messagesContainer.scrollHeight - 100) { messagesContainer.scrollTop messagesContainer.scrollHeight; }2. CtrlEnter 发送ShiftEnter 换行inputElement.addEventListener(keydown, (e) { if (e.key Enter !e.shiftKey) { e.preventDefault(); sendMessage(); } else if (e.key Enter e.shiftKey) { // 允许换行不阻止默认行为 } });3. 响应式布局适配不同屏幕桌面端常见宽度是 1366x768 到 2560x1440UI 必须 fluid使用flexbox布局左侧聊天区flex: 1右侧模型选择器width: 240px字体大小用clamp(1rem, 2.5vw, 1.25rem)确保小屏不挤、大屏不空消息气泡用max-width: 80ch字符数避免超长代码行撑爆容器。实操心得我最初用vh单位做高度结果在多显示器环境下任务栏位置不同导致100vh计算错误。后来改用calc(100vh - 80px)80px 是标题栏输入框固定高度绝对可靠。还有个坑Chrome 在 Windows 上默认禁用fetch的keepalive导致页面关闭时 API 请求可能被中断。解决方案是在beforeunload事件中用navigator.sendBeacon()发送终止信号通知后端清理 session。4. 实操过程与核心环节实现4.1 完整打包流程从零生成一个双击即用的 .exe目标生成DeepSeek-Desktop-v1.0.exe包含server.exe、model.gguf、index.html及所有静态资源用户双击后自动启动服务并打开浏览器。步骤 1准备资源目录结构C:\deepseek-pack\ ├── launcher.py # 主启动脚本 ├── llama-server.exe # 编译好的 llama.cpp server ├── deepseek-coder-6.7b-Q5_K_M.gguf └── ui\ ├── index.html ├── style.css └── script.js步骤 2编写 launcher.pyimport os import sys import subprocess import webbrowser import time import signal import atexit # 获取资源路径PyInstaller 打包后为 _MEIPASS if getattr(sys, frozen, False): base_path sys._MEIPASS else: base_path os.path.dirname(os.path.abspath(__file__)) server_exe os.path.join(base_path, llama-server.exe) model_path os.path.join(base_path, deepseek-coder-6.7b-Q5_K_M.gguf) ui_path os.path.join(base_path, ui, index.html) # 启动 server server_proc subprocess.Popen([ server_exe, --model, model_path, --port, 8080, --host, 127.0.0.1, --ctx-size, 8192, --threads, 8, --prompt-template, deepseek ], creationflagssubprocess.CREATE_NO_WINDOW) # 等待 server 启动最多 10 秒 for _ in range(10): try: import requests requests.get(http://127.0.0.1:8080/health, timeout1) break except: time.sleep(1) else: print(Server failed to start!) sys.exit(1) # 打开 UI webbrowser.open(ffile:///{os.path.abspath(ui_path)}) # 注册退出清理 def cleanup(): if server_proc.poll() is None: server_proc.terminate() server_proc.wait(timeout5) atexit.register(cleanup) # 保持主进程运行防止闪退 try: while True: time.sleep(3600) # 每小时检查一次 except KeyboardInterrupt: pass步骤 3用 PyInstaller 打包pip install pyinstaller # 打包命令关键参数说明 pyinstaller ^ --onefile ^ --windowed ^ --add-binary llama-server.exe;. ^ --add-binary deepseek-coder-6.7b-Q5_K_M.gguf;. ^ --add-data ui;ui ^ --icon icon.ico ^ --name DeepSeek-Desktop-v1.0 ^ launcher.py参数详解--onefile打成单个 exe符合“一键安装”预期--windowed不显示 DOS 窗口干净--add-binary把llama-server.exe和.gguf文件直接嵌入 exe运行时解压到临时目录--add-data把整个ui文件夹复制过去--icon替换默认图标提升专业感ico 文件需 256x256 和 48x48 两个尺寸。打包后dist\DeepSeek-Desktop-v1.0.exe大小约 128MB含 3.8GB 模型压缩后约 110MB首次运行会解压模型到%TEMP%\MEIxxxxx\后续启动直接读取速度极快。4.2 Windows 系统兼容性专项优化桌面端最大的坑不是技术而是 Windows 的“人性化”设计1. UAC 权限与路径写入server.exe需要写日志、缓存 KV cache但默认安装路径如C:\Program Files受 UAC 保护。解决方案启动时检测是否在Program Files如果是自动将--cache-capacity设置为内存模式--cache-type ram避免磁盘写入日志路径强制指向%APPDATA%\DeepSeek-Desktop\logs\该目录用户有完全权限。2. 防火墙弹窗拦截Windows Defender 防火墙会把server.exe当作未知网络服务弹窗询问“是否允许应用通过防火墙”。这会打断用户体验。解决方法在打包前用netsh命令预注册防火墙规则需管理员权限netsh advfirewall firewall add rule nameDeepSeek Desktop Server dirin actionallow programC:\path\to\DeepSeek-Desktop-v1.0.exe enableyes但普通用户没权限执行。所以我们在launcher.py中加降级逻辑如果netsh失败改用--host 127.0.0.1只监听本地回环彻底规避防火墙。3. 多显示器 DPI 缩放Windows 10/11 默认开启 DPI 缩放Chrome 标签页可能显示模糊。解决方案在index.htmlhead中加入meta nameviewport contentwidthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalableno stylebody { -webkit-font-smoothing: antialiased; }/style更彻底的方法用chrome.exe --force-device-scale-factor1启动但需用户安装 Chrome。我们选择前者覆盖 95% 场景。4.3 模型热替换与多模型管理机制一个真正的桌面助手不能只绑死一个模型。我们设计了轻量级模型切换在ui\index.html右上角加一个下拉菜单select idmodel-select选项为DeepSeek-Coder-6.7B默认DeepSeek-R1-7B通用对话DeepSeek-Coder-33B需 32GB 内存切换时前端 JS 发送POST /v1/models/load请求携带新模型路径server.exe收到后卸载当前模型加载新模型返回{status: success, model: xxx}整个过程不重启服务聊天记录保留毫秒级切换。实现原理llama.cpp 的server模块支持load_model和unload_modelRPC但默认未暴露 HTTP 接口。需修改llama.cpp\examples\server\server.cpp在handle_load_model函数中解析 JSON body 的filename字段调用llama_backend_init()和llama_model_load_from_file()返回 success/fail 状态。注意模型热替换有内存限制。unload_model不会立即释放所有内存部分 tensor cache 仍驻留所以33B模型加载前必须确保物理内存 ≥ 36GB。我们在前端加了内存检测navigator.deviceMemory返回 GB 数如果 16禁用33B选项并提示“建议升级内存”。5. 常见问题与排查技巧实录5.1 启动失败黑窗口一闪而过这是最常见问题90% 由路径错误或依赖缺失导致。排查步骤用 CMD 替代双击右键DeepSeek-Desktop-v1.0.exe→ “打开文件位置” → Shift右键 → “在此处打开 Powershell 窗口” → 输入.\DeepSeek-Desktop-v1.0.exe观察报错FileNotFoundError: [Errno 2] No such file or directory: llama-server.exe→ PyInstaller 打包时--add-binary路径写错检查launcher.py中base_path是否正确ImportError: DLL load failed→ Visual C Redistributable 未安装去微软官网下载vc_redist.x64.exe安装OSError: [WinError 193] %1 is not a valid Win32 application→llama-server.exe是 32 位但系统是 64 位重新用 VS2022 x64 构建。终极方案在launcher.py开头加日志捕获import traceback try: # 主逻辑 pass except Exception as e: with open(os.path.join(os.getenv(TEMP), deepseek-error.log), a) as f: f.write(traceback.format_exc()) input(Error occurred, press Enter to exit...)用户遇到问题直接去%TEMP%找 log我们就能精准定位。5.2 对话卡死输入后无响应CPU 占用 100%这通常不是模型问题而是 prompt template 或 stop token 配置错误。现象特征输入后server.exe进程 CPU 持续 100%但无 token 输出查看server.exe控制台最后一行是llama_print_timings:但没后续用 curl 测试curl http://127.0.0.1:8080/health返回 200证明服务活着。根因与修复DeepSeek 模型的 stop token 是end▁of▁sentence但 llama.cpp 默认 stop token 是/s。必须在 API 请求中显式指定{ stop: [end▁of▁sentence], messages: [...] }如果前端 JS 没传stop字段模型会一直生成直到达到--ctx-size上限8192然后硬截断造成卡死假象。验证方法用 Postman 发送 raw JSON 请求带上stop字段看是否立刻返回。如果 OK说明前端漏传如果仍卡检查--prompt-template是否生效在 server 控制台看是否打印Using chat template: deepseek。5.3 中文乱码回答全是方块或问号这是 Windows 控制台编码的经典坑。原因server.exe默认用CP437IBM 拉丁字符集而中文是 UTF-8PowerShell 默认chcp 936GBK但subprocess.Popen启动时未指定encodingutf-8。修复在launcher.py中启动server.exe时加encodingutf-8server_proc subprocess.Popen([...], encodingutf-8, ...)同时在server.cpp中找到llama_server_context::log函数把fprintf(stderr, ...)改为fwprintf(stderr, ...)并确保setlocale(LC_ALL, )已调用。实操心得我曾花 3 小时 debug 这个乱码最后发现是server.exe编译时没加/utf-8编译器开关。VS2022 项目属性 → Configuration Properties → General → Character Set → Use Unicode Character Set必须勾选。5.4 模型加载慢等待超过 30 秒不是硬盘慢而是 GGUF 文件的metadata解析耗时。优化手段在server.exe启动参数中加--no-mmap禁用内存映射改用传统 fread对 SATA SSD 更友好用--no numa避免 NUMA 节点调度开销桌面端单 CPU无需 NUMA最有效的是预生成model.bin缓存。llama.cpp 支持--save-model首次加载后它会把解析后的 tensor 结构存为二进制缓存下次启动直接读速度提升 5 倍。我们在launcher.py中加逻辑cache_path os.path.join(os.getenv(LOCALAPPDATA), DeepSeek-Desktop, cache, model.bin) if os.path.exists(cache_path): subprocess.Popen([... , --model, cache_path]) else: # 首次加载加 --save-model subprocess.Popen([... , --save-model, cache_path])5.5 多轮对话丢失上下文用户抱怨“问完第一个问题再问‘上面说的’模型就不知道指的是什么”。真相llama.cpp 的server模式默认不维护 conversation history每次请求都是 stateless必须在前端 JS 中把历史消息数组messages完整传给 API不能只传最新一条。正确调用// 维护全局 messages 数组 let messages [ {role: system, content: You are DeepSeek-Coder...}, {role: user, content: 写个冒泡排序}, {role: assistant, content: def bubble_sort...} ]; // 下一次请求把整个数组传过去 fetch(http://127.0.0.1:8080/v1/chat/completions, { method: POST, headers: {Content-Type: application/json}, body: JSON.stringify({ messages: messages.concat([{role: user, content: 优化成快速排序}]), stop: [end▁of▁sentence] }) });注意messages数组长度不能无限增长否则超出--ctx-size。我们在前端加了自动裁剪当messages.length 20删除最老的 user/assistant pair保留 system message 和最近 10 轮。6. 进阶扩展让桌面版真正融入你的工作流6.1 与 VS Code 深度集成一键调用 DeepSeek 补全VS Code 的 Custom Editor API 允许我们把 DeepSeek 做成内置面板。创建extension.tsexport function activate(context: vscode.ExtensionContext) { const panel vscode.window.createWebviewPanel( deepseek, DeepSeek Assistant, vscode.ViewColumn.Two, { enableScripts: true, retainContextWhenHidden: true } ); panel.webview.html getWebviewContent(); // 加载本地 index.html panel.webview.onDidReceiveMessage(handleMessage); } function handleMessage(message: any) { if (message.command getSelection) { const editor vscode.window.activeTextEditor; const selection editor?.selection
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

云MES落地四大硬核关卡:协议穿透、报工闭环、云边容错与数据验真 2026/9/26 9:52:19

云MES落地四大硬核关卡:协议穿透、报工闭环、云边容错与数据验真

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
数据结构课程代码包实战指南:从编译到对拍验证 2026/9/26 9:52:18

数据结构课程代码包实战指南:从编译到对拍验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
E2E自动化测试为何比手动可靠?Playwright落地与CI集成实践 2026/9/26 9:52:18

E2E自动化测试为何比手动可靠?Playwright落地与CI集成实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
【报错笔记】安装ClaudeCode遇到“因为在此系统上禁止运行脚本”:PowerShell执行策略与TaoToken配置排查 2026/9/26 9:52:17

【报错笔记】安装ClaudeCode遇到“因为在此系统上禁止运行脚本”:PowerShell执行策略与TaoToken配置排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
OpenAI Codex 代码生成实战指南:用 TaoToken 统一 Key 打通 CLI 与 IDE 配置 2026/9/26 9:52:15

OpenAI Codex 代码生成实战指南:用 TaoToken 统一 Key 打通 CLI 与 IDE 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Atlas 300V NPU推理卡实战:从PyTorch到OM部署YOLOv5全流程 2026/9/26 9:52:09

Atlas 300V NPU推理卡实战:从PyTorch到OM部署YOLOv5全流程

最近技术群里高频出现两句话:一句是“atlas部署yolo怎么搞”,另一句是“atlas 300v 24g 是运算加速卡吗”。这两个问题其实是一体的——大家拿不准这张卡到底能干什么、跟平时用的显卡是不是一回事,于是连部署路径也一起怀疑了。我前后在Atla…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉