
先交代一个背景我最近把所有私人项目、代码写作和一部分日常事务都切到了本地模型上主力就是 Qwen 的 27B 级别参数版本代号按官方版本线算是 3.6/3.8。搭配的工作台不是普通的 Web 聊天框而是 Deepseek Harness——一个可以在命令行和桌面端跑起来的智能体操作台把代码、文档、工具调用、插件和技能包全塞进一个可人工干预的工作流里。这套组合跑稳定之后我基本不需要依赖任何在线 API 去处理敏感代码和内部资料数据全程留在本机离线也能干活唯一要花心思的就是把模型、工具链和插件慢慢调顺。如果你现在手里已经有一台内存 64GB 以上的机器或者一台 24GB 显存的单卡设备又不想让代码、文档和对话内容流到外部接口那么这篇操作手册就是照着抄的那种。我尽量把每一步都写清楚包括哪里最容易踩坑、为什么要这样配置、以及我实际跑下来的参数值。全文不涉及任何账号注册和付费链路所有组件都是免费开源的。1. 方案选型为什么是 Qwen 27B 接 Deepseek Harness1.1 本地大模型的三个真正理由很多人问我直接开个在线 API 不就完了为什么非要折腾本地部署。我自己的判断有三条硬理由。第一是代码和文档的隐私边界公司内部的业务逻辑、未公开的技术方案和客户信息一旦发给外部接口就脱离了你的控制而本地模型这件事上数据不出机器。第二是成本结构本地模型是一次性硬件投入之后没有 token 计费长时间挂机跑自动化任务也不心疼。第三是定制空间本地模型可以随便换量化等级、换采样参数、跑 LoRA 微调甚至可以在模型前面加一层工具调用的约束规则这些都是云端接口不愿意开放或者限制严格的能力。1.2 Deepseek Harness 到底是什么、为什么选它当工作台Deepseek Harness 本质上是一个智能体工作台或者说是一个“模型操作外壳”。它本身不包含大模型能力它的职责是帮你把模型输出、工具调用、文件读写、命令执行、提示词流程和各类插件 skill 编排起来。你可以把它理解成一个更开放、更偏向开发者体系的 Claude Code 同类品但它对本地模型的支持更直接——通过 OpenAI 兼容的 API 协议对接 Ollama 或其他本地推理服务中间不需要额外写胶水层。我选它而不是直接在 WebUI 里聊天是因为 Harness 的工作流是结构化的。它能让我提前定义好任务模板比如“读项目 README、扫描 TODO、生成一份带引用的技术方案”这样复杂的任务可以被拆成固定流程反复使用而不是每次重新写提示词。在编码场景下Harness 可以直接读写项目文件、调用终端命令、执行测试反馈循环这一点是普通聊天窗口完全做不到的。1.3 27B 参数量的性价比分析关于参数量我的经验是7B 到 14B 级别的模型在代码生成和长文本推理上表现不稳定经常出现理解偏差而 70B 以上的模型对硬件要求太苛刻推理速度慢单机部署性价比低。27B 刚好卡在了一个甜点区——显存需求可控量化之后单卡 24GB 能跑又能比较流畅地完成代码补全、重构建议和文档生成。Qwen 的 3.6/3.8 系列在 27B 这个规模上的指令遵循能力和中文理解都比较成熟配合 Harness 做工具调用体验已经接近可用级别的云端模型。提示如果只有 16GB 显存也可以考虑 Q4_K_M 量化版本但长上下文下速度下降明显。我的建议是最低 24GB 显存起步否则你会花大量时间等输出。2. 环境准备模型下载、Ollama 部署与量化选择2.1 硬件底线与一套可参考的配置跑 27B 模型的显存要求取决于量化等级和上下文长度我整理了一个实际测试过的对照表供你们参考模型量化显存需求约内存需求推理速度24GB 单卡建议场景Q4_K_M18-20GB32GB25-35 token/s日常代码、文档Q5_K_M22-24GB32GB18-25 token/s代码精度要求高Q6_K27GB 以上48GB12-18 token/s长文本、复杂推理FP16 未量化54GB 以上64GB需要双卡或大显存基本不推荐单机跑我自己的主力配置是 64GB 内存加一张 24GB 的显卡日常跑 Q5_K_M 量化模型全部加载到显存速度稳定在 20 token/s 左右对于交互式编码场景完全够用。如果你们打算同时跑向量模型、OCR 工具和 Harness 本体内存 64GB 会更从容因为 Harness 在跑多轮工具调用时也会占一定的内存。2.2 从镜像站与 ModelScope 拉取 Qwen 3.6/3.8-27B 模型获取模型权重时最省事的方式是直接用 Ollama 拉取这是 Ollama 官方库中已经转换好的格式下载后即可使用不用自己处理权重转换。如果你们在官方库找不到 3.6/3.8 的对应版本或者想精确控制量化等级就需要从 Hugging Face 镜像站或 ModelScope 手动拉取原始权重。Hugging Face 经常直连不稳定所以我习惯走镜像站点。下载模型文件的命令大致是这样# 安装 huggingface_hub 后使用 CLI 下载 huggingface-cli download Qwen/Qwen3.6-27B-Instruct-GGUF --local-dir ./Qwen3.6-27B-GGUF --local-dir-use-symlinks FalseModelScope 那边对国内网络更友好适合整体拉取模型仓库。Qwen 官方在 ModelScope 上同步有权重直接下载对应 GGUF 文件即可。这里要提醒一句下载时尽量选择 GGUF 格式因为 Ollama 刚开始不支持其他格式后期社区才加入了对 GGUF 的原生导入支持GGUF 格式的模型文件也是我目前实测兼容性最好的。下载好之后需要准备一个模型配置文件里面声明模型参数、上下文长度和停止标记这一步在 Ollama 的早期版本里尤其重要因为错误填写的停止标记会导致模型回答不结束、一直生成乱码。后来 Ollama 改进了从 GGUF 读取元数据的能力这部分配置才逐渐简化。2.3 用 Ollama 托管模型与日常验证Ollama 是一个本地模型运行时能把模型加载、显存管理、API 接口全部包好Harness 只需要通过 HTTP 请求就能调用模型。安装 Ollama 后把下载好的 GGUF 模型导入然后启动服务。具体做法是创建一个 Modelfile写入基础模型路径和参数设置再执行导入命令。# 创建 Modelfile FROM ./Qwen3.6-27B-Instruct-Q5_K_M.gguf # 设置上下文长度 PARAMETER num_ctx 8192 # 设置温度 PARAMETER temperature 0.7然后执行ollama create qwen27b -f Modelfile ollama serve ollama run qwen27b 你好用一句话介绍一下你自己我建议你们启动后先用这个最简单的方式验证模型是否正常再接入 Harness。因为如果模型本身有问题后续排查会非常痛苦先确认模型独立可用再进下一步。2.4 本地向量模型与嵌入模型补充Harness 里做知识库问答或者长文档检索时最好配一个本地嵌入模型用来做向量化。这个嵌入模型不用太大常见的做法是跑一个 300M 到 1B 参数的嵌入模型它负责把文本转换成向量Harness 再把向量存到本地数据库里做相似度检索。加载本地向量模型的好处是全文检索都不出机器配合 File system 工具读文件完全离线。我当前用的嵌入模型是 Qwen 社区里一个小体积的 embedding 版本直接通过 Ollama 加载设置好之后在 Harness 配置里指定 embedding 接口即可。这里有一个容易被忽略的细节嵌入模型的维度必须和你选择的知识库向量维度保持一致否则启动时检索会报维度不匹配我在第一次配置时就是因为这个报错花了一晚上排查。3. Deepseek Harness 安装与接入配置实战3.1 安装流程与常见“无法安装”的排查方向Deepseek Harness 的安装方式在不同平台上有差异。Linux 环境一般是通过脚本方式安装Windows 提供了安装包。这里重点说 Linux 的安装。# 下载安装脚本并执行 curl -fsSL https://harness.deepseek.com/install.sh | bash安装完之后命令行输入harness或ds-harness就能启动交互界面。Windows 上如果双击安装包没反应或者提示“无法安装”我遇到过的原因大部分是下面几个一是系统缺少 VC Redistributable 运行库这个是常见的问题因为很多 CLI 工具依赖这个运行库二是杀毒软件拦截了安装脚本里的命令行工具写入导致安装到一半就失败三是安装目录有中文或特殊字符导致权限校验失败。建议安装到纯英文路径下比如C:\tools\harness这个路径比较稳定。有一个实际问题如果你们是内网环境没有外网权限脚本安装方式会卡在下载二进制文件的阶段。需要先在能联网的机器上完整下载安装包然后拷贝到内网机器里离线执行安装脚本或者手动解压配置环境变量。具体离线步骤我在后面单独展开。3.2 Harness 客户端接入本地 Ollama 模型的配置模型跑起来后接下来就是让 Harness 认识它。Harness 支持 OpenAI 兼容的 API 格式而 Ollama 从某个版本开始就提供了 OpenAI 兼容端点地址默认是http://localhost:11434/v1所以我们只要把这个地址告诉 Harness 就行。打开 Harness 的配置文件一般位于用户目录下的.harness/config.yaml修改模型服务地址、模型名称和 API Key本地服务可以随便填。llm: provider: openai_compatible base_url: http://localhost:11434/v1 api_key: local-dummy-key model: qwen27b temperature: 0.2 max_tokens: 4096temperature 设低一点对编码和文档生成有利0.2 是我试过比较稳的值太高容易让模型自由发挥生成一些不存在的函数名。max_tokens 决定了单次回复的上限27B 模型生成速度不算快4096 是一个均衡值既不会让单次回复内容太少也不会因为生成太长而让等待时间失控。配置完成后在 Harness 里随便问一个问题测试连通性。如果返回错误先看 Ollama 服务的端口是否开放、模型名是否写对。我一直建议网络排查用最笨但最有效的方法——先在浏览器里访问http://localhost:11434/v1/models能看到模型列表就说明 API 通了再去检查 Harness 的配置。3.3 离线局域网部署的完整思路把 Harness 部署到内网服务器是很多人问得最多的场景。其实核心思路就一句话把外网依赖全部在能联网的机器上准备好然后整体拷贝到内网。具体流程是这样的先在联网机器上安装好 Ollama 和 Harness把需要的模型通过ollama pull拉下来。注意模型文件默认存储在~/.ollama/models目录整个目录拷贝到内网机器相同位置。Harness 的二进制文件或安装目录同理直接拷贝过去之后在PATH里配置好就能运行。额外依赖的插件和 skill 包也在联网机器上下载好后放进~/.harness/plugins和~/.harness/skills目录。内网服务器如果只有 CPU 没有独立显卡27B 模型跑起来速度会非常慢这种情况我建议换更低的量化版本或者牺牲上下文长度。如果要跑完整能力内网服务器至少需要一张 24GB 显存的 GPU否则只能处理短文本任务。3.4 Windows 下权限报错的修复setnamedsecurityinfow failed这个问题我踩过很深的坑。在 Windows 上让 Harness 的 skill 读取某个文件时报错信息是setnamedsecurityinfow failed (win32)。这个报错的意思是——程序在修改文件或目录的安全描述符时被系统拒绝了通常发生在你从外部拷贝 skill 目录、或者挂载了共享文件夹的时候。出现这个问题的本质是文件的所有权和安全权限不属于当前执行用户Windows 的安全模型默认不允许随意修改安全描述符。解决办法是重置文件权限以管理员身份打开 PowerShell执行以下命令takeown /F C:\Users\你的用户名\.harness\skills /R /D Y icacls C:\Users\你的用户名\.harness\skills /reset /T /C /Qtakeown是强制获取目录所有权icacls /reset把权限恢复成系统默认继承值。执行完可能还有遗留问题那就手动检查技能包内每个文件确认在“安全”选项卡里当前用户有完全控制权限。这个问题在 Linux 上几乎没有Windows 上只要经历了“从压缩包解压到非默认目录再移动”的过程就很容易触发。3.5 代码回退与版本管理机制Harness 在编码模式下改文件不是一个不可逆的操作它内部有一套快照机制。默认情况下Harness 在每次执行文件写入前会把原始文件临时存到.harness/backups目录这样你可以在操作完成后用回收站日志查看哪些文件被改动过。如果 AI 把代码改坏了直接在 Harness 会话里输入回退指令它会对比当前文件和快照文件然后恢复。我建议你们在大规模重构之前先用 git 提交一个新分支因为 Harness 的快照只是在会话级别有效一旦清理会话临时目录快照可能会丢失而 git 分支更可靠。从实际体验来看代码回退这个功能把“AI 写代码”这件事变成了一个可控的迭代过程——先让模型改改完 review不满意就回退改提示词再试。没有回退能力的话AI 改坏代码的恢复成本太高这也是很多人不敢用 AI 改代码的根本原因。4. 让 Harness 更顺手插件与 skill 的组织4.1 编码开发最值得装的插件清单Harness 的插件生态是我觉得它比裸 CLI 工具更值得用的原因。我实际用下来最有用的是这几类一是代码分析相关插件能在模型回答问题前先跑一下静态检查工具把 lint 或者编译错误直接喂给模型这样模型不会瞎猜代码里有什么问题二是提示词优化插件能把用户输入自动扩写成更结构化的指令提升回复质量三是文件系统增强插件让模型能批量处理文件、搜索关键词、统计代码行数等替代了部分 shell 操作。在代码开发场景下我最建议装的插件是 TS 类型检查补丁、Python 静态分析器和 Git 提交信息生成器。它们组合起来的流程是这样的Harness 读完你的改动文件先生成提交建议然后调用静态分析检查一遍把错误信息带到下一步对话里。实测下来能让代码审查和提交的完整度提升不少。4.2 skill 包怎么挂进 Harnessskill 是 Harness 里比插件更上层的“能力包”相当于给模型预设好的职业技能。一个 skill 通常包含一组提示词模板、可执行的脚本和规则说明。比如你挂了一个“综述写作”skillHarness 在接到写综述类任务时会自动按 skill 里的框架执行——先读文献、再提取观点、后生成段落而不是靠模型自己临场发挥。安装 skill 只需要把解压后的目录放到~/.harness/skills/下然后在 Harness 配置文件里声明启用。skills: enabled: - code-review - doc-writer - web-research在离线内网环境下skill 包本身是纯文本和脚本不存在联网依赖所以挂到内网服务器没有任何问题。需要注意的仍然是文件权限问题特别是从 Windows 压缩包里解压出来的 skill要记得先跑一遍icacls重置权限否则读取时容易碰到上一节说的那个报错。4.3 多模态与 OCR 扩展eayocr、qwen image 2.1 本地化文本模型只是底座很多任务其实需要眼睛。Harness 本身支持调用外部工具读取图片信息但需要在本地加一个 OCR 或者多模态模型。我在这套环境里用的是 easyocr它有本地模型文件不需要联网识别和 Harness 的组合方式是通过一个脚本插件Harness 把图片路径传给 easyocr 脚本脚本识别文字后返回文本再交给 Qwen 处理。如果你们想直接输入图片、让模型理解画面内容那就需要多模态模型比如 Qwen 的 image 系列或 VL 系列。qwen image 2.1 在 ComfyUI 里可以单独下载模型文件使用也可以导入到 Ollama 或直接通过 Python 库调用。我的建议是日常 OCR 文字用 easyocr 足够需要理解画面内容时才上多模态模型因为多模态模型占显存更大运行更慢。本地 OCR 的模型文件可以在多个公开镜像站找到下载后放到 easyocr 的模型目录完全离线运行。4.4 提示词优化与上下文管理的实际用法Harness 的原生提示词通常比较简单直接用效果一般但很多提示词优化插件能帮你把“检查这段代码”自动扩写成“作为一个资深后端工程师请从安全性、可维护性、性能三个维度检查以下代码并给出具体修改建议”。同一份代码提示词结构化程度不同输出质量差别巨大。上下文管理也是重头戏。27B 模型的上下文窗口有限我通常设置 8192太长会导致前面的内容被截断。Harness 有两种方式控制上下文一种是对话内输出压缩把早期对话摘要化另一种是文件级引用只把关键片段送进模型而不是整文件。我自己写了一个小技巧让 Harness 在分析大项目时先输出目录树确认要读的文件之后再去读具体文件而不是一上来就扫描整个仓库——这样既能减少 token 消耗也能避免模型被无关信息干扰。5. 配合工具链IDEA、CC Switch 与第三方模型接入5.1 IDEA 里怎么配置 Ollama 本地模型如果你主要用 IntelliJ IDEA 写代码其实不需要每次切到终端去问 Harness。IDEA 官方市场上的 AI 插件大多支持配置 OpenAI 兼容地址所以可以直接填 Ollama 的本地地址。具体操作打开 IDEA 设置找到 AI Assistant 或对应插件配置页把 Base URL 改成http://localhost:11434/v1模型名填qwen27bAPI Key 随便填一长串字符。配置完成后在编辑器里选中代码右键发送到 AI 助手选“解释这一段”“找 Bug”或“补充注释”。这样你在 IDE 里就能用本地模型不切换窗口。唯一要提醒的是IDEA 插件默认的请求格式可能和 Ollama 有细微差异如果报连接失败确认插件是否支持自定义请求头有的话加上Content-Type: application/json一般能解决。5.2 用 CC Switch 在多模型之间快速切换CC Switch 这个工具解决的痛点是在多个 AI 编码客户端之间快速切换模型配置。如果你同时用 Harness、Claude Code 或者其他兼容客户端每个工具都要单独配置一遍模型地址非常麻烦。CC Switch 可以统一管理这些配置文件点一下就能切换回 Qwen 或切到其他 API 兼容的模型。我的使用方式是把本地 Qwen 27B、Minimax 或 GLM 的开放 API 都配进 CC Switch写代码时用本地模型保隐私需要更强泛化能力时点一下切到云端 API。这个工具特别适合那些既想保底隐私、又不完全放弃在线能力的人。配置方式很简单提供模型名称、Base URL、API Key 三个字段就行。5.3 本地免费模型与第三方 API 的混用策略本地免费模型不意味着所有场景都用它。我实测下来的经验是对于代码补全、简单重构、文档生成、正则表达式这类任务本地 Qwen 27B 表现已经很好但涉及到“跨文件架构推理”“大规模迁移”“复杂业务逻辑设计”时本地模型和顶级云端模型的差距还是存在的。所以我的策略是分层使用日常高频低风险操作全部走本地模型零成本、低延迟只有在确认需要深度推理时才切到云端 API 或者让 Harness 调用第三方模型。这样既控制了成本又保证关键任务的质量。Harness 本身支持按会话指定不同模型所以完全可以在一个工作流里先让本地模型做初步分析再让云端模型做最终决策不过后者属于扩展玩法能离线解决的场景尽量不依赖在线接口。6. 常见问题排查实录6.1 模型不更新 / Qwen CodingPlan 不刷新有些用户装了 Qwen 的 CodingPlan 插件后发现模型一直不更新任务列表也不刷新。这个问题的根源通常是插件和本地模型之间的版本不匹配或者插件配置的模型地址指向了旧的快照。解决办法是先检查 Ollama 服务是否正在运行然后进入插件配置页确认模型名是否包含新版本号。如果插件直接读取远程配置但服务器返回被缓存那就需要清掉本地缓存目录通常在用户目录的.qwen-codingplan里删掉缓存文件重新启动插件即可。6.2 卸载 Harness 与插件残留清理卸载这件事比安装还容易出问题。Windows 卸载程序只会删掉主要二进制文件插件、配置、日志、skill 和快照目录会全部留在系统里。要彻底卸载需要手动删除用户目录下的.harness文件夹和注册表条目。Linux 环境下则要检查~/.harness、~/.ollama以及/usr/local/bin下的软链接。我的建议是卸载前先备份~/.harness里的config.yaml和skills目录因为你可能只是重装而不是永久弃用。配置备份好了新安装后几分钟就能恢复原环境不用重新写提示词模板。6.3 性能调优的实操经验把 Qwen 27B 跑顺之后性能调优是一个持续过程。我总结了三件最值得做的事一是把 Ollama 的并发数降低为 1这样能保证每次请求都独占显存带宽避免多线程抢占导致速度变慢二是将num_ctx设置成固定值而不是默认的逐步增长因为每次上下文扩增都会触发重新计算 KV Cache拖慢响应速度三是为 Harness 设置独立的工作目录避免它递归扫描整个用户主目录降低文件操作开销。还有一个容易被忽略的点如果模型输出突然变慢先去看显存。Ollama 在显存不够时会自动把部分层 swap 到内存速度会断崖式下降。这种情况需要在 Modelfile 里显式指定GPU layers的数量把它设置成一个偏大的值强制模型层全部留在显存。具体数值可以通过ollama ps查看当前占用分布再微调。最后再分享一个我很受用的习惯每次改动 Harness 配置或新增 skill我都会先在一个临时目录里跑一遍“测试任务”任务让模型读一个指定的小文件并按要求改写确认整个链路正常后再投入到真实项目中。这套组合的可扩展空间还很大后续可以继续玩 LoRA 微调适配自己项目的代码风格或者把手里的向量知识库越养越大让 Harness 在离线状态下依旧能回答越来越准确的问题。