2026-10-12 边界:此文原有身份、分工、环境与状态均为历史快照,不是现行职责或在线证明。现行资料见 全量审计与来源索引。
opencode 上下文成本 — 实测与优化方案
范围:opencode 每次 API 请求都会注入的内容到底多大、怎么压。面向所有 agent — 任何 harness 都有「常驻注入」这一项。 本文数字均为 2026-10-06 在 dlc 上实测/对官方 schema 核实;标注「已核实未启用」的方案故意没有实施,要用时照抄即可。
结论先行
opencode 每次请求的固定注入由四块组成,不只是 AGENTS.md。本机治理后:
| 注入项 | 治理前 | 治理后 |
|---|---|---|
AGENTS.md(Tier 0 热记忆) | ~24,589 token | ~2,115 |
| skills 清单(name + description) | ~5,281 | ~232 |
| 模型 / provider 目录 | 未量(ollama 装着且 active → 被自动加载) | 未量 |
| MCP 工具定义(dataPro + alens) | 未量 | 未量 |
⚠️ 最容易被忽略的是 skills 清单:它和 AGENTS.md 一样每轮都注入。本机 26 个 skill 里 25 个是 arkcli-*,占 93%。
一、AGENTS.md 分层(已实施)
原文件 88KB / 56,696 字符 / 38 节,每轮固定 ~24.6k token,且没有任何预算上限 —— 这是膨胀的根因。
改成冷热两层:
- Tier 0 =
~/.config/opencode/AGENTS.md:只放「不读也会踩」的东西 —— 用户偏好、杀进程铁律、禁扫目录、环境快照表、⏸️ 搁置清单、冷记忆索引表、维护纪律。 - Tier 1 =
~/.config/opencode/mem/*.md:18 份情境性知识(手机串流 / 邮箱 / 网盘 / opencode / hermes / alens…),每份开头两行写「什么时候该读我」,用grep -l定位,按需read,零常驻成本。 - 正文逐字搬运,不概括不压缩,只换存放位置。备份
~/backups/home-config/AGENTS.md.bak-20261006-prereshuffle。
关键纪律写进 Tier 0 自身:硬预算 ≤ 6,000 token,超了先精简禁止追加;单一真值源;写前 grep 去重;覆盖不并列;带日期 + last-verified;密钥只留位置(明文进 mem/SECRETS.md,600 权限)。
这与本库
MEMORY-FILTER-MECHANISM.md的 L1–L5 是同一思路该文件写「移出 L1:临时状态、旧环境特有、可重建信息」—— 端口列表、服务清单正属此类。层级名不同,判据一致。
代价是陈旧性:没有过期机制时,「hermes-gateway-soma 是 disabled」这种错标能活半年多(本机确实发生了,靠 2026-10-06 实测才发现)。所以加了 last-verified + 超期复核/归档。
二、skills 清单成本(已实施)
新增或删除 skill 前,先算 description 的 token
description 是持续每轮成本,不是一次性开销。本机 25 个
arkcli-*的 description 平均 200+ token。
2026-10-06 用户停用火山 Agent Plan 订阅 → 25 个 arkcli skill 全部移出 ~/.config/opencode/skills/(含管理器清单 .arkcli-managed-skills.json,否则 arkcli 会以为还装着)。可逆备份:~/backups/home-config/removed-arkcli-skills-20261006/(1.5MB)。清理后清单成本 5,281 → 232。
保留 quarkclouddrive(官方 skill,用户在用)。
三、官方配置项(已对 2.0.23 schema 逐条核实 · 用户决定暂不启用)
核实方式:curl -s https://opencode.ai/config.json → $defs.Config.properties。本机这些键全部未设(即用默认值)。
| 键 | 默认 | 作用 |
|---|---|---|
compaction.prune | false | 内置裁剪旧工具输出。社区 DCP 插件干的是它的超集,这是最省事的一刀 |
compaction.reserved | 10000 | 压缩时预留的 token 缓冲 |
compaction.tail_turns / preserve_recent_tokens | — | 压缩时逐字保留最近几个用户轮次 / 多少 token |
tool_output.max_bytes | 51200 | 超限则落盘、只回预览。调到 ~20000 能压住大段命令输出 |
tool_output.max_lines | 2000 | 同上,调到 800–1000 |
small_model | 自动猜便宜模型 | 标题生成等杂活单独走它;可指向免费模型省钱 |
enabled_providers | 全加载 | ["openrouter"] → 其它 provider 全忽略 |
disabled_providers | — | 黑名单形式,优先级高于上面 |
share | "manual" | 设 "disabled" 彻底关掉会话分享(隐私) |
watcher.ignore | — | glob 黑名单,屏蔽大目录的文件监听噪声 |
experimental.batch_tool | — | 批量子命令,减少模型往返 |
subagent_depth | 1 | 设 2 允许子 agent 再拉子 agent,设 0 禁止 |
snapshot | true | 关掉省磁盘(大仓库),但失去 agent 改动的 UI 回滚能力 |
⚠️ 别用 instructions 来省 token —— 它是把文件内容整份注入,与目的相反。
四、references 机制(可替代手写索引表 · 本机未用)
"references": { "mem": { "path": "~/.config/opencode/mem", "description": "冷记忆目录:查本机运维细节时读" } }- 官方原话:带
description的 reference 只有「路径 + 描述」进系统提示,文件内容不注入。 - 额外好处:TUI 里
@mem/自动补全(hidden: true只藏补全、不影响 context);reference 目录自动放行外部目录 permission 边界,省掉越界询问。 - 也支持 git 源:
{"repository": "owner/repo", "branch": "main"}(异步 clone 到本地缓存)。 - 权衡:省掉索引表的 ~700 token,但路由多一次
read INDEX.md。本机 2026-10-06 决定不改,保留手写索引表。
五、社区插件(npm 状态 2026-10-06 核实 · 均未安装)
| 插件 | 版本 / 发布 | 许可 | 要点 |
|---|---|---|---|
@tarquinen/opencode-dcp | 3.2.0 · 2026-09-20 | AGPL-3.0 | 动态上下文裁剪:模型自主 compress + 自动清理废弃工具输出;/dcp context(当前会话 token 分布 + 已省量)、/dcp stats(累计)、/dcp sweep(手动)。装法 opencode plugin @tarquinen/opencode-dcp@latest --global(2.0.23 确有 plugin 子命令)。周下载 2,096 |
opencode-mem | 2.29.0 · 2026-10-05 | MIT | 跨会话记忆插件:本地 embedding(首次从 HuggingFace 下模型)+ Web UI ${LOCALIP}:3765 + HTTP API + 3 层检索(search→timeline→fetch)。10 依赖。⚠️ 往每轮上下文注入记忆块;升级后清 ~/.cache/opencode/packages/opencode-mem@* |
@ramtinJ95/opencode-tokenscope | — | — | token 分析器,/tokenscope 拆系统提示 / 用户消息 / 工具输出各项成本。它专门量 skills 清单的注入成本 —— 想量化而非估算就装它 |
⚠️ DCP 上游开发已转向 Sleev(本地代理,思路同源),插件仍可用但新功能先落在那边。
⚠️ 社区 opencode-memory / opencode-mem 类插件有多个同名低星仓库(shuans/、yeyan00/、blackthornecl/、andy-zhangtao/),npm 的 opencode-mem(2.29.0)是其中本次评估选用的持续维护的。
六、已调研未采用
- qqqide(GitHub
gh555com/qqqidev0.4.13)—— 0 release、目标是 Windows 7–11 + macOS(Linux 仅构建宿主)、深度绑定作者自建服务端(cnk.gh555.com等)。用户 2026-10-06 决定不装,克隆已删。 - 其它 opencode 记忆插件(0 star 级)未评估;本机用「手写 Tier 0 +
mem/目录」已够,成本为零。
关联
- memory — 操作记忆
- provider-free-only-and-go — 免费模型策略与 OpenCode Go 接入
- gbrain-usage-guide — frontmatter 契约与入库规范
- README — 运维索引