Active Context Pruning (ACP) 所有可配置参数的完整参考手册。
ACP 从最多三层配置文件中读取(后加载的覆盖先加载的):
| 层级 | 路径 | 作用范围 |
|---|---|---|
| 全局 | ~/.config/opencode/acp.jsonc |
所有会话 |
| 配置目录 | $OPENCODE_CONFIG_DIR/acp.jsonc |
该配置目录下的所有会话 |
| 项目 | .opencode/acp.jsonc(从当前目录向上搜索) |
仅当前项目 |
提示: 在配置文件中添加
"$schema": "https://raw.githubusercontent.com/ranxianglei/opencode-acp/master/dcp.schema.json"可获得 IDE 自动补全。
状态说明:ACTIVE = 当前生效 | DEPRECATED = 保留向后兼容,计划移除(在此之前可能仍生效) | EXPERIMENTAL = 可能变更
- 类型:
boolean - 默认值:
true - 状态: ACTIVE
- 说明: 主开关。设为
false可完全禁用 ACP。
- 类型:
boolean - 默认值:
true - 状态: ACTIVE
- 说明: 启动时自动检查并安装 ACP 更新,跟踪安装时所用的 dist-tag/规范(
opencode-acp@stable跟随stable标签;^1.14.0等范围规范跟随latest)。版本锁定的规范永不更新。
- 类型:
boolean - 默认值:
false - 状态: ACTIVE
- 说明: 启用调试模式。设为
true时,ACP 在每次压缩后发送聊天通知,显示块详情,并将logLevel置为debug(INFO/DEBUG 日志与按请求的上下文快照,~/.config/opencode/logs/acp/)。设为true时此开关优先于logLevel。
- 类型:
"debug" | "info" | "warn" | "error" | "silent" - 默认值:
"info" - 状态: ACTIVE
- 说明: 文件日志详细级别(
~/.config/opencode/logs/acp/daily/<日期>.log)。默认info:默认落盘决策级事件(压缩提示决策、转换摘要、自动更新检查、模型切换等)。warn/error减少输出;silent完全关闭文件日志;debug额外启用按请求的上下文快照与详细转储。debug: true时忽略此配置。
-
类型:
string -
默认值: 未设置 —
$XDG_DATA_HOME/opencode/storage/plugin/acp(即~/.local/share/opencode/storage/plugin/acp) -
状态: ACTIVE
-
说明: 会话状态文件(
{sessionId}.json,含压缩块、提示状态、token 统计)的持久化目录。路径语义:- 绝对路径 → 原样使用
~/~/...→ 相对于主目录展开- 相对路径 → 相对于项目目录(opencode 启动目录)解析
目录不存在时会自动创建。若设置了此项、但会话状态文件仍位于默认位置,ACP 会记录一条 WARN(每会话一次)而不会自动迁移——如需保留会话历史,请手动移动该文件。
- 类型:
"off" | "minimal" | "detailed" - 默认值:
"off" - 状态: ACTIVE
- 说明: 压缩通知的详细程度。
"off"— 不显示通知"minimal"— 简短的一行摘要"detailed"— 完整块详情(主题、token 数量、范围)
- 类型:
"chat" | "toast" - 默认值:
"toast" - 状态: ACTIVE
- 说明: 压缩通知的投递方式。
"toast"— 瞬时弹窗提示(推荐;非阻塞)"chat"— 注入为聊天消息(部分 provider 拒绝空消息时可能冻结会话)
- 类型:
string[] - 默认值:
[] - 状态: ACTIVE
- 说明: 需保护文件内容的 Glob 匹配模式。当模型读取匹配这些模式的文件时,工具输出会被注入到压缩摘要中,而非被压缩。示例:
["**/*.env", "**/secrets.json"]
控制 ACP 斜杠命令(/acp context、/acp stats 等)。
- 类型:
boolean - 默认值:
true - 状态: ACTIVE
- 说明: 启用或禁用所有
/acp斜杠命令。
- 类型:
string[] - 默认值:
["task", "skill", "todowrite", "todoread", "compress", "decompress", "batch", "plan_enter", "plan_exit", "write", "edit"] - 状态: ACTIVE
- 说明: 这些工具的输出受保护,不会被压缩。受保护工具的输出完整保留在可见上下文中。显式数组会替换默认值(设
[]表示不保护任何工具)。
- 类型:
boolean - 默认值:
true - 状态: ACTIVE
- 说明: 允许 ACP 在子代理(sub-agent)会话中运行。开启后,子代理会话获得完整的压缩、nudge 和上下文管理能力。设为
false可将 ACP 限制在主会话中。 - 迁移: v1.14.13 从
experimental.allowSubAgents(默认false)移至顶层allowSubAgents(默认true)。旧的experimental.allowSubAgents仍可读取以保持向后兼容 —— 顶层优先。
实验性功能,可能变更或移除。
- 类型:
boolean - 默认值:
false - 状态: EXPERIMENTAL
- 说明: 启用从
~/.config/opencode/acp-prompts/加载自定义 prompt 覆盖。
核心压缩行为。
- 类型:
"ask" | "allow" | "deny" - 默认值:
"allow" - 状态: ACTIVE
- 说明:
compress工具的权限级别。"allow"— 自动批准压缩调用"ask"— 每次压缩前提示用户确认"deny"— 阻止所有压缩调用
- 类型:
boolean - 默认值:
true - 状态: ACTIVE
- 说明: 在聊天 UI 中显示压缩状态指示。
- 类型:
boolean - 默认值:
true - 状态: ACTIVE
- 说明: 将摘要缓冲区指引注入系统 prompt,帮助模型了解现有块及其覆盖范围。
- 类型:
boolean - 默认值:
false - 状态: ACTIVE(可选开启)
- 说明: 启用 MICRO/EPISODE 压缩候选。为
true时,nudge 与acp_status显示预先校验、可批量提交的压缩候选(MICRO = 单条大消息或完整工具事务;EPISODE = 相邻小单元构成的历史片段),而非原始可压缩范围。候选通过与compress工具相同的执行校验路径,列表中的目标均可直接提交。为false(默认)时保持传统的范围列表行为。
- 类型:
number | \${number}%`` - 默认值:
"55%" - 状态: ACTIVE
- 说明: 上下文使用率上限(以模型上下文窗口的百分比或绝对 token 数表示)。超过此值时,ACP 提示模型进行压缩。示例:
"55%"或100000。
- 类型:
number | \${number}%`` - 默认值:
"80%" - 状态: DEPRECATED
- 说明: 已废弃——计划移除。 轮次/迭代提醒 nudge 的上下文使用率下限。使用率降至此值以下时,ACP 停止注入这些提醒(当限制无法换算为具体数值时同样停止,例如模型上下文窗口未知时的
"X%")。增长 nudge 由minNudgeContextPercent单独控制。在此之前仍然生效;移除时,轮次/迭代提醒 nudge 的下限门控将随之取消(新配置应依赖增长 nudge 体系)。
- 类型:
Record<string, number | \${number}%`>` - 默认值:
undefined - 状态: ACTIVE
- 说明: 按模型覆盖
maxContextLimit。以模型 ID 为键。示例:{"gpt-4": 80000, "claude-3-opus": "50%"}
- 类型:
Record<string, number | \${number}%`>` - 默认值:
undefined - 状态: DEPRECATED
- 说明: 已废弃——将与
minContextLimit一同移除。 按模型覆盖minContextLimit。在此之前仍然生效。
- 类型:
number - 默认值:
128000 - 状态: ACTIVE
- 说明: 当模型上下文窗口未知时使用的回退窗口(绝对 token 数)——例如未声明 limit 的自定义 provider、从未学到 limit 的 headless spawn+resume 会话,或模型切换使旧 limit 失效后的短暂窗口。驱动所有百分比阈值(
maxContextLimit/minContextLimit)、紧急 nudge 覆盖、批量清理 GC 与 in-flight 工具输出截断。已知真实模型 limit 时始终优先,按模型覆盖(modelMaxLimits/modelMinLimits)同样优先。设为0可禁用回退(旧行为:学到 limit 前无安全网)。
- 类型:
number - 默认值:
5 - 状态: ACTIVE
- 说明: nudge 注入之间的最小轮数间隔。防止每轮都打扰模型。
- 类型:
number - 默认值:
5 - 状态: ACTIVE
- 说明: 增长触发型 nudge 的上下文使用率下限(占模型上下文窗口的百分比):增长 nudge 要求上下文使用率达到或超过此百分比(此外还需满足增长阈值)。超过上限(
maxContextLimit)与 98% 紧急覆盖的 nudge 不受此下限约束。若模型上下文窗口未知,则无法计算该下限,增长 nudge 回退为仅按增长触发的行为。轮次/迭代提醒 nudge 由minContextLimit控制,而非此字段。默认值刻意设低:在默认nudgeGrowthTokens(50K)下,5% 下限对典型工作周期不生效,仅在非常大的(≥2M 级)窗口上才生效——更高的默认值(如 15%)会在 ≥400K 窗口上生效,并推高大型窗口模型上每个压缩周期的工作区间。设为0可完全禁用该下限,或调高(如 15–30%)使增长 nudge 等待更大的窗口占用比例。可通过compress.providers按 provider / 按模型细化(issue #344)。
- 类型:
Record<string, ProviderOverrides>,其中ProviderOverrides = Partial<CompressOverridableConfig> & { models?: Record<string, Partial<CompressOverridableConfig>> }(两级均所有字段可选) - 默认值:
undefined - 状态: ACTIVE
- 说明: 对所有可调 compress 字段的嵌套按 provider / 按模型覆盖,逐字段按 模型 > provider > 全局 级联解析(与姊妹项目 billion-context-pi 一致,issue #344)。深层仅在该字段被显式设置时才覆盖——未设置的字段不会清空浅层取值;
0/false是显式值,而非“未设置”。未知的 provider/model id 回退到全局值。百分比与"X%"限额按当前激活模型的上下文窗口换算。在三个配置文件层(全局 → 配置目录 → 项目)之间,该映射按 provider/model 键深度合并——项目层可以只细化某个 provider 而不清掉低层配置的其他 provider。 - 可覆盖字段:
maxContextLimit、emergencyThresholdPercent、minNudgeContextPercent、nudgeFrequency、iterationNudgeThreshold、toolOutputNudgeThreshold、nudgeGrowthTokens、minNudgeGrowthRatio、minNudgeGrowthFloor、nudgeForce、protectedTools、showCompression、summaryBuffer、protectTags、protectUserMessages、maxSummaryLengthHard、minCompressRange、maxVisibleSegments、keepEmbedMaxChars、lastSegmentSoftBlock、preserveRecentMessages、preserveRecentTokens、preserveLastUserMessage、reasoning(嵌套对象,字段级)。 - 不可覆盖:
permission(会话级,在得知模型信息前已固定)、已废弃的minContextLimit/modelMinLimits系列、扁平modelMaxLimits/modelMinLimits映射自身、以及providers本身。modelMaxLimits本身未废弃 —— 仍完全支持(仅优先级被超越)。maxContextLimit在嵌套层设置时的优先级为 嵌套覆盖 >modelMaxLimits扁平映射 > 全局。在此设置的protectedTools影响压缩工具与 nudge 侧逻辑;系统提示词中的受保护工具列表(在提示词构建时生成,早于模型信息可用)始终反映全局值。
{
"compress": {
"maxContextLimit": "55%",
"minNudgeContextPercent": 5,
"nudgeGrowthTokens": 50000,
"providers": {
"anthropic": {
"minNudgeContextPercent": 8,
"nudgeForce": "strong",
"models": {
"claude-sonnet-4-6": {
"minNudgeContextPercent": 30,
"maxContextLimit": "70%",
"nudgeGrowthTokens": 20000,
},
},
},
},
},
}此例中,对 anthropic/claude-sonnet-4-6:下限为 30%,超限(over-max)区间从窗口的 70% 开始(而非全局 55%,即更大的工作区间),增长阈值为 20K,nudge 语气为 strong(继承自 provider 层)。其他 Anthropic 模型获得 8% 下限与 strong 语气,但保留全局的区间与 50K 增长阈值;其余全部使用纯全局值。provider 键为 provider id,model 键为模型 id(取自当前激活会话上报的标识,如 anthropic、claude-sonnet-4-6)。
- 类型:
number - 默认值:
50000(固定值) - 状态: ACTIVE
- 说明: nudge 增长阈值。当上下文自上次 nudge 以来增长超过此 token 数时,ACP 触发 nudge。默认值为固定值,所有模型上下文窗口大小一致(此前按窗口百分比缩放——v1.14.23 移除,因会导致小窗口模型 nudge 频率约 4 倍偏高)。
- 类型:
number - 默认值:
undefined - 状态: ACTIVE
- 说明: 专门针对工具输出的 nudge token 阈值。当工具输出超过此值时,定向 nudge 建议压缩工具输出。
- 类型:
number - 默认值:
15 - 状态: ACTIVE
- 说明: 当自上次用户消息以来积累了此数量的消息时,注入迭代 nudge(表示无用户交互的长工具调用链)。
- 类型:
"strong" | "soft" - 默认值:
"soft" - 状态: ACTIVE
- 说明: nudge 的语气。
"soft"— 信息性,让模型自行决定"strong"— 更紧迫,强调上下文溢出风险
- 类型:
string[] - 默认值:
["skill", "compress"] - 状态: ACTIVE
- 说明: 这些工具的输出会从压缩范围中软过滤。与
commands.protectedTools(硬保护)不同,这些工具的输出从可压缩范围中排除,但其内容仍可在摘要中被引用。显式数组会替换默认值。
注意:
"compress"无论用户配置如何,都会被强制追加到此列表 — 压缩工具调用绝不能丢失。
- 类型:
boolean - 默认值:
false - 状态: ACTIVE
- 说明: 设为
true时,<protect>...</protect>标签包裹的内容受保护,不被压缩。
- 类型:
boolean - 默认值:
false - 状态: ACTIVE
- 说明: 设为
true时,所有用户消息受保护,不被压缩(不仅仅是最后一条)。
- 类型:
number - 默认值:
20000 - 状态: ACTIVE
- 说明: 摘要长度的硬限制(字符数)。摘要超过此长度的压缩调用会被拒绝。
- 类型:
number - 默认值:
5000 - 状态: ACTIVE
- 说明: 压缩范围的最小估算 token 数。小于此值的范围会从推荐列表中过滤掉(不值得压缩)。
- 类型:
number - 默认值:
0.45 - 状态: ACTIVE
- 说明: 用于计算 nudge 增长下限的
nudgeGrowthTokens比例。值越大 = nudge 频率越低。
- 类型:
number - 默认值:
5000 - 状态: ACTIVE
- 说明: nudge 增长阈值的最小 token 数。实际阈值为
max(此值, minNudgeGrowthRatio × nudgeGrowthTokens)。
- 类型:
number | \${number}%`` - 默认值:
"98%" - 状态: ACTIVE
- 说明: 触发"紧急"模式的上下文使用率阈值。超过此值时,ACP 覆盖所有保护过滤器,强制 nudge 模型立即压缩。
- 类型:
number - 默认值:
50 - 状态: ACTIVE
- 说明: 系统 prompt 中分段指引显示的最大可见上下文分段数。
- 类型:
number - 默认值:
2000 - 状态: ACTIVE
- 说明: 在压缩摘要中使用
[[KEEP:mNNNNN]]标记时,每条消息嵌入的最大字符数。
- 类型:
boolean - 默认值:
true - 状态: ACTIVE
- 说明: 设为
true时,最后一个可见分段(最新消息)被视为软块 — 从压缩推荐中排除,但可通过dangerous: true覆盖。
- 类型:
number - 默认值:
5 - 状态: ACTIVE
- 说明: 保护最近 N 条消息不被压缩。这些消息会从可压缩范围中软过滤。设为
0可禁用。
- 类型:
number - 默认值:
5000 - 状态: ACTIVE
- 说明: 近期消息保护的 token 预算。除了最近 N 条消息外,ACP 还保护此 token 预算内的消息(从最近消息向后扩展)。设为
0可禁用。
- 类型:
boolean - 默认值:
true - 状态: ACTIVE
- 说明: 始终保护最近一条用户消息不被压缩,无论
preserveRecentMessages或preserveRecentTokens如何设置。
- 类型:
object { drop?: boolean; threshold?: number } - 默认值:
{ "drop": true, "threshold": 2048 } - 状态: ACTIVE (#368)
- 说明: 控制从历史
compress工具调用中丢弃超大 reasoning(思考)部分。compress调用被硬排除在压缩之外,其思考内容会随每次请求原样重发,形成无法回收的上下文底座。本 pass 在请求时(从不修改持久化历史)移除已关闭轮次中 reasoning 总长超过threshold的 compress 消息的思考部分。活跃轮(最后一条真实用户消息及之后)永不触碰。 - 字段:
drop(boolean,默认true)— 总开关;false完全禁用本 pass。threshold(number,字符数,默认2048)— 单条思考大小门:消息 reasoning 总长必须严格大于该值才丢弃。小思考保留;长度不跨消息累计。0表示丢弃所有非空 reasoning(仅零长 reasoning 幸免)。
- **按 provider/model 覆盖(字段级,走
compress.providerscascade):
{
"compress": {
"reasoning": { "drop": true, "threshold": 2048 },
"providers": {
"my-gateway": { "reasoning": { "drop": false } },
"anthropic": {
"reasoning": { "threshold": 8000 },
"models": { "claude-opus-4-5": { "reasoning": { "threshold": 16000 } } },
},
},
},
}解析顺序:model 级 reasoning > provider 级 reasoning > 全局 compress.reasoning,逐字段生效(深层只覆盖显式设置的字段)。provider/model id 取自当前请求的模型标识。
- 类型:
number - 默认值:
32768 - 状态: ACTIVE
- 说明: 上下文预算守卫为模型补全预留的 token 数。守卫估算请求输入大小,若超过
window - completionReserveTokens,则确定性地截断(随后清除)旧的可压缩工具输出直至达标——摘要、受保护工具、首条用户消息和最近 3 条消息永不被改动。默认32768覆盖 opencode 对未声明limit.output模型的32000max_tokens回退值。只有当模型的上下文窗口已知时守卫才生效(opencode.json 中声明的limit.context,或目录条目)。绝对值(数字)compress.maxContextLimit不会启用守卫——它是软性的提示阈值,而非后端的真实限制。
注意: GC 截断模块(
gc/truncate.ts)已在 v1.14.4 中移除。剩余的gc字段用于块生成追踪和批量清理(块合并)。旧配置文件中的这些字段仍然有效。
- 类型:
"truncate" - 默认值:
"truncate" - 状态: DEPRECATED
- 说明: 历史上用于选择 GC 算法。只实现过
"truncate"。现为 no-op — 仅为配置兼容性保留。
- 类型:
number - 默认值:
5 - 状态: ACTIVE
- 说明: 压缩块在从
"young"(新生代)提升为"old"(老生代)之前,必须存活的消息变换周期数。老生代块有资格被gc/merge.ts批量合并。
- 类型:
number - 默认值:
9007199254740991(Number.MAX_SAFE_INTEGER) - 状态: DEPRECATED
- 说明: 历史上控制基于块年龄的去激活。已设为无穷大 — 实际禁用。仅为配置兼容性保留。
- 类型:
number - 默认值:
3000 - 状态: ACTIVE
- 说明: 当批量清理将多个老生代块合并为更高层级的块时,合并后摘要的最大长度(字符数)。
- 类型:
number | \${number}%`` - 默认值:
"100%" - 状态: ACTIVE
- 说明: 触发紧急工具输出截断的上下文使用率阈值。当上下文达到此级别时,最大的工具输出会被截断(保留 2000 字符前缀 + 后缀)以释放空间。设为
"200%"或更高可实际禁用。摘要永远不会被截断。
批量清理将多个老生代块合并为更高层级的块。
- 类型:
number | \${number}%`` - 默认值:
"55%" - 状态: ACTIVE
- 说明: 低优先级批量清理的上下文使用率阈值。达到此级别时,批量清理开始考虑合并老生代块。
- 类型:
number | \${number}%`` - 默认值:
"75%" - 状态: ACTIVE
- 说明: 中优先级批量清理阈值。
- 类型:
number | \${number}%`` - 默认值:
"90%" - 状态: ACTIVE
- 说明: 强制批量清理阈值。达到此级别时,批量清理激进地合并所有符合条件的块。
压缩后质量评估。在每次压缩后运行,验证摘要质量。
- 类型:
boolean - 默认值:
false - 状态: ACTIVE
- 说明: 启用压缩后质量评估。设为
true时,ACP 根据质量指标评估每个压缩摘要。失败仅记录日志,不阻止压缩(非阻塞)。
- 类型:
string - 默认值:
"rouge-recall-v1" - 状态: ACTIVE
- 说明: 使用的质量门控算法。目前仅支持
"rouge-recall-v1"。
- 类型:
object - 状态: ACTIVE
- 说明: 算法特定参数。见下文。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
layer1MinChars |
number | 200 | 摘要的最小长度(字符) |
layer1MinRetentionPct |
number | 5.0 | 最小内容保留百分比 |
layer2MaxRougeF1 |
number | 0.05 | ROUGE-1 F1 分数"过于相似"检测的最大值 |
layer2MaxTop20Recall |
number | 0.20 | 质量检查的最大 top-20 关键词召回率 |
消息过滤器在 ACP 处理之前,从可见上下文中剥离或去重第三方插件注入的内容(例如 oh-my-opencode 的 system reminder、上下文转储、任务指令)。被过滤的内容不会获得消息引用(message ref),也不会计入上下文使用量或压缩触发阈值。
自 v1.14.8 起,ACP 内置了 5 个 oh-my-opencode(OMO)过滤器,全部默认启用:
| 过滤器 | 版本 | 行为 |
|---|---|---|
omo-system-reminder |
1.3.0 | 保留最近 2 条 OMO <system-reminder> 消息;更早的会剥离 <system-reminder> 块和 <!-- OMO_INTERNAL_INITIATOR --> 标记,但保留你的实际用户内容 |
omo-context |
1.0.0 | 只保留最新的 OMO [CONTEXT] 注入;丢弃更早的重复项 |
omo-task-directive |
1.0.0 | 只保留最新的 OMO TASK: / ## TASK 指令;丢弃更早的 |
omo-todo-continuation |
1.0.0 | 只保留最新的 OMO TODO CONTINUATION 指令;丢弃更早的 |
omo-mode-injection |
1.1.0 | 剥离开头的模式块(<ultrawork-mode>、[search-mode] 等),保留用户内容 |
- 类型:
boolean - 默认值:
true - 状态: ACTIVE
- 说明: 主开关。设为
false时不运行任何过滤器。
- 类型:
object—Record<filterName, { enabled: boolean; keepLast?: number }> - 默认值: 所有内置过滤器启用
- 状态: ACTIVE
- 说明: 按过滤器配置。
enabled单独开关某个过滤器;keepLast(仅去重类过滤器)设置保留最近多少条匹配消息——默认1,omo-system-reminder除外(默认2)。
示例:
{
"messageFilters": {
"enabled": true,
"filters": {
"omo-system-reminder": { "enabled": true, "keepLast": 2 },
"omo-context": { "enabled": true },
"omo-task-directive": { "enabled": true },
"omo-todo-continuation": { "enabled": true },
"omo-mode-injection": { "enabled": true },
},
},
}{
"compress": {
"maxContextLimit": "45%",
"minContextLimit": "35%",
"preserveRecentMessages": 3,
"preserveRecentTokens": 2000,
"nudgeFrequency": 3,
},
}{
"compress": {
"maxContextLimit": "70%",
"minContextLimit": "60%",
"preserveRecentMessages": 15,
"preserveRecentTokens": 10000,
"nudgeFrequency": 8,
"protectedTools": ["skill", "bash", "read", "grep", "glob"],
},
}{}{
"compress": {
"modelMaxLimits": {
"gpt-4o": 80000,
"claude-3.5-sonnet": "60%",
"gemini-1.5-pro": 150000,
},
"modelMinLimits": {
"gpt-4o": 60000,
"claude-3.5-sonnet": "50%",
},
},
}{
"compress": {
"minNudgeContextPercent": 5,
"providers": {
"anthropic": {
"minNudgeContextPercent": 8,
"models": {
"claude-sonnet-4-6": { "minNudgeContextPercent": 30 },
"claude-haiku-4-5": { "minNudgeContextPercent": 0 },
},
},
},
},
}下限按 模型 > provider > 全局 逐字段解析。0 表示为该模型禁用下限——适用于小窗口模型,仅靠增长阈值触发即可。
同样的级联适用于所有可调字段,而不仅是下限——例如给某个重度使用的模型设置更紧的增长阈值与更低的超限区间,而同 provider 的其他模型保持全局配置:
{
"compress": {
"providers": {
"anthropic": {
"models": {
"claude-sonnet-4-6": {
"nudgeGrowthTokens": 20000,
"maxContextLimit": "40%",
},
},
},
},
},
}完整可覆盖字段列表见 compress.providers 参考节。
{
"protectedFilePatterns": [
"**/*.env",
"**/*.pem",
"**/*.key",
"**/credentials.json",
"**/secrets.*",
],
}5 个内置 OMO 过滤器默认开启(见 messageFilters)。可以保留更多最近的 system-reminder、单独禁用某个过滤器,或整体关闭:
{
"messageFilters": {
"enabled": true,
"filters": {
// 保留最近 3 条 OMO system-reminder(默认 2 条)
"omo-system-reminder": { "enabled": true, "keepLast": 3 },
// 只禁用一个过滤器,其余保持
"omo-task-directive": { "enabled": false },
},
},
}{
// 关闭所有消息过滤器
"messageFilters": { "enabled": false },
}{
// 绝对路径、~ 展开,或相对于项目目录
"storagePath": "~/data/acp-state",
}以下参数存在于旧版本中,现已移除。包含这些参数的配置文件会显示警告提示,但仍可正常工作。
| 参数 | 移除版本 | 替代方案 |
|---|---|---|
strategies.deduplication.* |
PR #206 | 压缩工具自动处理重复 |
strategies.purgeErrors.* |
PR #206 | 压缩工具自动处理错误清理 |
compress.automaticStrategies |
PR #206 | 始终开启;无需配置 |
state.prune.tools |
PR #206 | 仅内部使用;无需配置 |
ACP 在加载时验证配置。未知键和类型不匹配会触发警告提示。有效键定义在 lib/config-validation.ts(VALID_CONFIG_KEYS 集合)中。