Skip to content

安装与快速开始

学完你能做什么

  • ✅ 在 5 分钟内完成 DCP 插件安装
  • ✅ 配置插件并验证安装成功
  • ✅ 看到首次自动修剪的效果

你现在的困境

用 OpenCode 久了,对话越来越长:

  • AI 重复读取同一个文件多次
  • 工具调用的错误信息占满上下文
  • 每次对话都要消耗大量 Token
  • 对话越长,AI 响应越慢

你希望能自动清理对话中的冗余内容,但不想手动操作。

核心思路

DCP(Dynamic Context Pruning) 是 OpenCode 插件,自动移除对话历史中的冗余工具调用,降低 Token 消耗。

它的工作方式:

  1. 自动检测:每次发送消息前,自动分析对话历史
  2. 智能清理:移除重复的工具调用、过期错误、被覆盖的写入
  3. AI 驱动:AI 可以主动调用 discardextract 工具优化上下文
  4. 透明可控:通过 /dcp 命令查看修剪统计,手动触发清理

核心优势

  • 零成本:自动策略无需 LLM 调用
  • 零配置:安装即用,默认配置已优化
  • 零风险:只修改发送给 LLM 的上下文,对话历史不受影响

🎒 开始前的准备

开始安装前,请确认:

  • [ ] 已安装 OpenCode(支持插件功能)
  • [ ] 知道如何编辑 OpenCode 配置文件
  • [ ] 了解基本的 JSONC 语法(支持注释的 JSON)

重要提示

DCP 会修改发送给 LLM 的上下文内容,但不会影响你的对话历史。你可以随时在配置中禁用插件。

跟我做

第 1 步:编辑 OpenCode 配置文件

为什么 需要在 OpenCode 配置中声明 DCP 插件,这样 OpenCode 启动时会自动加载。

打开你的 OpenCode 配置文件 opencode.jsonc,在 plugin 字段中添加 DCP:

jsonc
// opencode.jsonc
{
    "plugin": ["@tarquinen/opencode-dcp@latest"],
}

你应该看到:配置文件中已经有其他插件(如果有),在数组末尾添加 DCP 即可。

提示

使用 @latest 标签,OpenCode 每次启动时会自动检查并获取最新版本。

第 2 步:重启 OpenCode

为什么 插件配置修改后需要重启才能生效。

完全关闭 OpenCode,然后重新启动。

你应该看到:OpenCode 正常启动,没有报错信息。

第 3 步:验证插件安装

为什么 确认 DCP 插件已正确加载,并查看默认配置。

在 OpenCode 对话中输入:

/dcp

你应该看到:DCP 命令帮助信息,说明插件已成功安装。

╭───────────────────────────────────────────────────────────╮
│                      DCP Commands                         │
╰───────────────────────────────────────────────────────────╯

  /dcp context      Show token usage breakdown for current session
  /dcp stats        Show DCP pruning statistics
  /dcp sweep [n]    Prune tools since last user message, or last n tools

第 4 步:查看默认配置

为什么 了解 DCP 的默认配置,确认插件是否按预期工作。

DCP 会在首次运行时自动创建配置文件:

bash
# 查看全局配置文件
cat ~/.config/opencode/dcp.jsonc

你应该看到:配置文件已创建,初始只包含 $schema 字段:

jsonc
{
    "$schema": "https://raw.githubusercontent.com/Opencode-DCP/opencode-dynamic-context-pruning/master/dcp.schema.json"
}

配置文件初始只包含 $schema 字段,其他所有配置项使用代码中的默认值,无需手动配置即可使用。

默认配置说明

DCP 的代码默认值如下(无需写入配置文件):

  • deduplication:自动去重,移除重复的工具调用
  • purgeErrors:自动清理 4 回合前的错误工具输入
  • discard/extract:AI 可调用的修剪工具
  • pruneNotification:显示详细修剪通知

如果你需要自定义配置,可以手动添加这些字段。详细配置说明见配置全解

第 5 步:体验自动修剪效果

为什么 实际使用 DCP,查看自动修剪的效果。

在 OpenCode 中进行一段对话,让 AI 多次读取同一个文件,或执行一些会失败的工具调用。

你应该看到

  1. 每次发送消息时,DCP 会自动分析对话历史
  2. 如果有重复的工具调用,DCP 会自动清理
  3. AI 响应后,可能会看到修剪通知(取决于 pruneNotification 配置)

示例修剪通知:

▣ DCP | ~12.5K tokens saved total

▣ Pruning (~12.5K tokens)
→ read: src/config.ts
→ write: package.json

输入 /dcp context 查看当前会话的 Token 使用情况:

Session Context Breakdown:
──────────────────────────────────────────────────────────

System         15.2% │████████████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│  25.1K tokens
User            5.1% │████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│   8.4K tokens
Assistant       35.8% │██████████████████████████████████████▒▒▒▒▒▒▒│  59.2K tokens
Tools (45)      43.9% │████████████████████████████████████████████████│  72.6K tokens

──────────────────────────────────────────────────────────

Summary:
  Pruned:          12 tools (~15.2K tokens)
  Current context: ~165.3K tokens
  Without DCP:     ~180.5K tokens

检查点 ✅

完成以上步骤后,你应该:

  • [ ] 已在 opencode.jsonc 中添加 DCP 插件
  • [ ] OpenCode 重启后能正常运行
  • [ ] /dcp 命令显示帮助信息
  • [ ] 配置文件 ~/.config/opencode/dcp.jsonc 已创建
  • [ ] 对话中能看到修剪通知或通过 /dcp context 看到修剪统计

如果某一步失败

  • 检查 opencode.jsonc 语法是否正确(JSONC 格式)
  • 查看 OpenCode 日志是否有插件加载错误
  • 确认 OpenCode 版本支持插件功能

踩坑提醒

问题 1:插件未生效

症状:配置已添加但看不到修剪效果

原因:OpenCode 未重启或配置文件路径错误

解决

  1. 完全关闭 OpenCode 后重新启动
  2. 检查 opencode.jsonc 位置是否正确
  3. 查看日志:~/.config/opencode/logs/dcp/daily/ 目录下的日志文件

问题 2:配置文件未创建

症状~/.config/opencode/dcp.jsonc 不存在

原因:OpenCode 未调用 DCP 插件或配置目录权限问题

解决

  1. 确认 OpenCode 已重启
  2. 手动创建配置目录:mkdir -p ~/.config/opencode
  3. opencode.jsonc 中检查插件名称是否正确:@tarquinen/opencode-dcp@latest

问题 3:修剪通知不显示

症状:没有看到修剪通知,但 /dcp stats 显示有修剪

原因pruneNotification 配置为 "off""minimal"

解决:修改配置文件:

jsonc
"pruneNotification": "detailed"  // 或 "minimal"

本课小结

DCP 插件安装非常简单:

  1. opencode.jsonc 中添加插件
  2. 重启 OpenCode
  3. 使用 /dcp 命令验证安装
  4. 默认配置即可使用,无需额外调整

DCP 默认启用的功能

  • ✅ 自动去重策略(移除重复工具调用)
  • ✅ 清除错误策略(清理过期错误输入)
  • ✅ AI 驱动工具(discardextract
  • ✅ 详细修剪通知

下一步:了解如何自定义配置,调整修剪策略以满足不同场景需求。


下一课预告

下一课我们学习 配置全解

你会学到:

  • 多层级配置系统(全局、环境变量、项目级)
  • 所有配置项的作用和推荐设置
  • 回合保护、受保护工具、受保护文件模式
  • 如何启用/禁用不同的修剪策略

附录:源码参考

点击展开查看源码位置

更新时间:2026-01-23

功能文件路径行号
插件入口index.ts12-102
配置管理lib/config.ts669-794
命令处理lib/commands/help.ts1-40
Token 计算lib/commands/context.ts68-174

关键常量

  • MAX_TOOL_CACHE_SIZE = 1000:工具缓存最大条目数

关键函数

  • Plugin():插件注册和钩子设置
  • getConfig():加载和合并多层级配置
  • handleContextCommand():分析当前会话 Token 使用