<div class="page-header only-word">
        <div class="content flex-center " style="">
        <div class="container">
            <header class="post-header">
        <h1 class="post-title" style="">用billion-context与OpenViking提升DeepSeek Harness的上下文效率</h1>
        <div class="post-metas">
                            <span>最后更新于 2026-10-14</span>
                                    <a href="https://moecat.cc/author/nicocat/">
                    <span class="meta-author">
                        <img alt='nicocat' src='https://weavatar.com/avatar/1aeca73a20d6fea54d81269e6bc00175745e013f9a221a1ccd9492e2ff726287?s=24&#038;d=mm&#038;r=g' srcset='https://weavatar.com/avatar/1aeca73a20d6fea54d81269e6bc00175745e013f9a221a1ccd9492e2ff726287?s=48&#038;d=mm&#038;r=g 2x' class='avatar avatar-24 photo avatar-small' height='24' width='24' loading='lazy' decoding='async'/>                        nicocat                    </span>
                </a>
                                <span>12 次阅读</span>
                            </div>
    </header>
            </div>
    </div>
</div>
<h2 class="wp-block-heading">这是什么？</h2>



<h3 class="wp-block-heading">什么是billion-context？</h3>



<p class="wp-block-paragraph">billion-context是一个开源项目，长编程会话会把上下文撑爆，而billion-context旨在通过模型驱动，智能压缩那些不重要的上下文信息，比如日志和无关的源码等，保持agent注意力的同时为你节省不必要的token消耗。</p>



<div class="block-ghcard">
    <div class="github-card">
        <a href="https://github.com/ranxianglei/billion-context" target="_blank" rel="noopener">
            <header class="repo-name">
                <span class="title-text">
                    <i class="icon gh-repo"></i>
                    billion-context                </span>
            </header>

                            <div class="repo-desc">
                    A context-compression plugin for small context windows (a 100K context is enough), token savings (5x fewer tokens), and month-long single sessions (billions of tokens).上下文压缩插件，兼顾小窗口(100k上下文足矣)省token(省5倍token)和超长会话(数月级别几十亿token单会话)。billion-context is all you need                </div>
            
            <div class="repo-meta">
                                    <span class="lang">
                        <span class="dot" style="background-color: #999;"></span>
                        TypeScript                    </span>
                
                <span class="stars">
                    <i class="icon gh-star"></i>
                    1328                </span>

                <span class="forks">
                    <i class="icon gh-fork"></i>
                    112                </span>

                                    <span class="license">
                        <i class="icon gh-license"></i>
                        other                    </span>
                            </div>
        </a>
    </div>
</div>


<h3 class="wp-block-heading">什么是openviking？</h3>



<p class="wp-block-paragraph">openviking是一个面向agent的全局共享数据库，它可以在会话间让agent共享部分记忆，包括编码习惯，环境事实以及各种规则怪谈等。</p>



<div class="block-ghcard">
    <div class="github-card">
        <a href="https://github.com/volcengine/OpenViking" target="_blank" rel="noopener">
            <header class="repo-name">
                <span class="title-text">
                    <i class="icon gh-repo"></i>
                    OpenViking                </span>
            </header>

                            <div class="repo-desc">
                    Self-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.                </div>
            
            <div class="repo-meta">
                                    <span class="lang">
                        <span class="dot" style="background-color: #999;"></span>
                        Python                    </span>
                
                <span class="stars">
                    <i class="icon gh-star"></i>
                    39990                </span>

                <span class="forks">
                    <i class="icon gh-fork"></i>
                    3183                </span>

                                    <span class="license">
                        <i class="icon gh-license"></i>
                        agpl-3.0                    </span>
                            </div>
        </a>
    </div>
</div>


<h2 class="wp-block-heading">为什么需要这两个插件？</h2>



<p class="wp-block-paragraph">搭配使用这两个插件可以避免在各个会话间重复赘述各种不必要的内容，<br>比如环境有哪些可用工具以及有哪些操作不允许等全局共享的规则，这一项通过openviking实现，<br>而billion-context避免的则是同一上下文间不必要的重复赘述，<br>对话的默认模式是每一条对话都会附加前面所堆积的整个上下文，billion-context通过ai驱动的上下文压缩，筛去冗余的无效信息，可以极大的优化上下文的利用率。<br>实测在项目的持续改进接力中上下文占用始终维持在20%以内，且同一上下文内持续推进没有明显的上下文丢失情况。<br>在跨上下文对话中，agent会自动搜索相关的环境信息和操作文档，避免了冗余的工具核实和问答，能直接快进到实操。</p>



<h2 class="wp-block-heading">如何安装？</h2>



<h3 class="wp-block-heading">billion-context安装方法</h3>



<p class="wp-block-paragraph">使用图形客户端的用户直接在插件页中点击添加插件，输入<code>billion-context</code>点击确认安装即可。</p>



<p class="wp-block-paragraph">或者使用webui的用户参考：<a href="https://github.com/ranxianglei/billion-context/blob/master/README.zh-CN.md" target="_blank" rel="nofollow noopener noreferrer">https://github.com/ranxianglei/billion-context/blob/master/README.zh-CN.md</a></p>



<h4 class="wp-block-heading">关于配置</h4>



<p class="wp-block-paragraph">如果你用的模型也和我家deepseek一样，支持夸张的1000000上下文，而不是区区128k，那么建议将billion-context的上下文阈值从默认的50000提升至200000或者更多，你可以在deepseek harness UI的设置栏中找到它，也可以直接改配置文件里的<code>compress.nudgeGrowthTokens</code>，根据你的项目大小来调整即可，过小的上下文在面对大项目时会频繁丢失信息，而过大的上下文则会强化你的账单数值。</p>



<h3 class="wp-block-heading">openviking安装方法</h3>



<p class="wp-block-paragraph">参考官方文档<a href="https://docs.openviking.ai/zh/getting-started/02-quickstart" target="_blank" rel="noopener nofollow">https://docs.openviking.ai/zh/getting-started/02-quickstart</a></p>



<p class="wp-block-paragraph">或者以下简易本地部署教程：</p>



<p class="wp-block-paragraph">首先你需要在你的工作站上准备uv：<a href="https://docs.astral.sh/uv/getting-started/installation/#installation-methods" target="_blank" rel="noopener nofollow">https://docs.astral.sh/uv/getting-started/installation/#installation-methods</a><br>以及ollama：<a href="https://ollama.com/download" target="_blank" rel="noopener nofollow">https://ollama.com/download</a>（如果你需要高质量的本地向量化功能）</p>



<p class="wp-block-paragraph">接着执行以下命令快速安装：</p>



<h4 class="wp-block-heading">安装本地服务器</h4>



<pre class="wp-block-code"><code class="language-bash">uv tool install openviking --upgrade
openviking-server init
openviking-server doctor
openviking-server</code></pre>



<p class="wp-block-paragraph">使用openviking-server init会进入一个配置向导：</p>



<p class="wp-block-paragraph">第一条是Choose setup mode，选择Step-by-step setup为详细的配置引导，Recommended local setup是根据设备配置以及环境信息自动配置，Manual为手动编辑配置文件，这里我选的是Step-by-step setup</p>



<h5 class="wp-block-heading">Embedding</h5>



<p class="wp-block-paragraph">该选项有三个可用，分别是Cloud API（在线服务），Local via Ollama（使用Ollama本地向量化），Lightweight CPU embedding（使用CPU本地向量化）<br>它们分别对应着不同质量的上下文记忆，按需选择即可<br>如果你选择Local via Ollama，那么根据自己的GPU显存来选择不同体积的Embedding模型即可（实测Qwen3-Embedding 8B (1024d, ~4.7 GB)正常运行占用约7GB显存），当然它们的体积也一定程度上决定了向量的质量，不过边际增益递减，选择合适的即可<br></p>



<div class="block-notice">
    <i class="icon warning fa-icon-solid fa-warning"></i>
    <span>有Fake-ip代理的建议提前下载好模型导入，或者关掉代理下载<br>Ollama有SSRF检查，安装引导如果检测到对应的模型不存在会开始下载，这时候下载会导致引导退出</span>
</div>


<p class="wp-block-paragraph">使用如下命令可以提前准备好要用的模型（关掉fake-ip）：</p>



<pre class="wp-block-code"><code>ollama pull qwen3-embedding:8b
ollama pull guoxuter/ov_intent_analysis_sft:v7_q8</code></pre>



<h5 class="wp-block-heading">VLM</h5>



<p class="wp-block-paragraph">这一步配置用于文档摘要的模型，这里有各种选项，如果你跟我一样使用例如deepseek这样的在线llm，请选择<code>Custom (OpenAI-compatible)</code>并输入以下信息</p>



<pre class="wp-block-code"><code class="language-plaintext">https:&#47;&#47;api.deepseek.com
sk-kentuckycrazythursdayvme50
deepseek-flash</code></pre>



<p class="wp-block-paragraph">以上仅API Key项需要你换成自己的</p>



<p class="wp-block-paragraph">截至deepseek-4.1flash发布，官方仍然使用该模型名称，如果后续有变动还请自行参考官方API文档更换可用的模型名称<br><a href="https://api-docs.deepseek.com/zh-cn/" target="_blank" rel="noopener nofollow">https://api-docs.deepseek.com/zh-cn/</a></p>



<h5 class="wp-block-heading">Query planner</h5>



<p class="wp-block-paragraph">这一项是建议你在本地配置一个精简的决策模型，它会跳过类似闲聊之类的话题，从而避免不必要的资源浪费，这边选默认的即可（我参考配置里换成了社区的guoxuter/ov_intent_analysis_sft:v7_q8，不换也行）</p>



<h5 class="wp-block-heading">Server</h5>



<p class="wp-block-paragraph">这一个是配置服务器的监听地址，根据自己的需要即可，或者选默认的</p>



<h4 class="wp-block-heading">安装deepseek harness客户端</h4>



<p class="wp-block-paragraph">在官方图形客户端的插件页点击添加插件，输入<code>@openviking/dsh-memory-plugin</code>点击确认安装即可。</p>



<p class="wp-block-paragraph">或者使用webui的用户参考官方文档：<a href="https://docs.openviking.ai/zh/agent-integrations/17-dsh" target="_blank" rel="noopener nofollow">https://docs.openviking.ai/zh/agent-integrations/17-dsh</a></p>



<p class="wp-block-paragraph">插件安装完成后自动生效，不需要手动配置服务器地址，如果你使用了自定义的端口且没有自动生效，还请自行参考官方文档或者让你的agent自行解决。</p>



<div class="block-notice">
    <i class="icon warning fa-icon-solid fa-warning"></i>
    <span>使用deepseek等带有<code>思考过程输出</code>的模型时，截至0.4.22版本，有已知造成400故障的bug：openviking在会话压缩/工作记忆更新时会把tool_choice强制指定成具名函数，而思考模式下的deepseek会直接拒绝这种请求。<br>如果你的VLM用的是官方<code>api.deepseek.com</code>端点，在配置文件的vlm段加上<code>reasoning_effort</code>设置为<code>none</code>关掉思考模式就能绕开它；如果走的是不认这个字段的第三方兼容中继，那就只能等上游修复，相关PR目前仍是open且因冲突无法合并。<br>详情：<a href="https://github.com/volcengine/OpenViking/issues/5233" target="_blank" rel="nofollow noopener noreferrer">https://github.com/volcengine/OpenViking/issues/5233</a></span>
</div>


<p class="wp-block-paragraph">最终配置文件参考：</p>



<pre class="wp-block-code"><code>{
  "storage": {
    "workspace": "C:\\Users\\user\\.openviking\\data"
  },
  "embedding": {
    "dense": {
      "provider": "ollama",
      "model": "qwen3-embedding:8b",
      "api_base": "http://localhost:11434/v1",
      "dimension": 1024,
      "input": "text"
    }
  },
  "vlm": {
    "provider": "openai",
    "model": "deepseek-flash",
    "reasoning_effort": "none",
    "api_base": "https://api.deepseek.com",
    "temperature": 0.0,
    "max_retries": 2,
    "api_key": "sk-kentuckycrazythursdayvme50"
  },
  "query_planner": {
    "provider": "litellm",
    "model": "ollama/guoxuter/ov_intent_analysis_sft:v7_q8",
    "api_key": "no-key",
    "api_base": "http://localhost:11434",
    "temperature": 0.0,
    "timeout": 60,
    "extra_request_body": {
      "think": false
    }
  },
  "server": {
    "host": "127.0.0.1",
    "port": 1933
  }
}
</code></pre>
