## 背景与调研说明 OpenCode 已升级至 `v2.2.1`(桌面端已至 `v2.2.2`)。在官方 PR [#59437](https://github.com/anomalyco/opencode/pull/59437) 中,官方正式将 `/goal <objective>` 吸收为核心能力(基于 Session Runner 原生 `idle` 钩子、内置 Reviewer 自动裁判、停滞检测与 TUI/桌面端原生状态药丸)。 本 Issue 对比梳理本地现有特征(`opencode-goal-pipeline`、`auto-continue-harness.js`、`opencode-agy-shim`、CLI 自定义插件)与官方 `v2.2.x` 原生机制的差异,评估哪些能力已被官方原生覆盖可考虑退役、哪些定制能力仍需保留。 --- ## 现有外挂/定制特征与官方 v2.2.x 原生对比 | 模块 / 特征 | 本地现有外挂实现 | 官方 v2.2.x 原生实现 (PR #59437) | 对比与演进建议 | | :--- | :--- | :--- | :--- | | **1. `/goal` 长任务持续自治** | 历史使用 `@prevalentware/opencode-goal-plugin` 与外挂继续逻辑,依赖外部 Prompt 塞入 | 官方内置 `/goal <objective>`、`pause`、`resume`、`clear`;在 Runner `idle` 边界单链路续跑,复用上下文缓存 | **官方已完全覆盖**:官方具备内置裁判模型(`ctx.session.generate`)、连续 3 轮无工具调用/相同理由停滞熔断(Stall Detection)、50 轮强制硬上限及 30 分钟后台超时保护,体验优于外部脚本注入 | | **2. TUI / 桌面端 Goal 状态呈现** | 依赖外挂 `prompt-footer-nocost`,在 `cli.json` 中配置 `-opencode.prompt.footer` 强行覆盖官方 footer | TUI 原生在 Prompt 下方展示 `◎ goal`、`◎ goal paused`、`◎ goal met`;桌面端通过内置 GUI 插件以 `ComposerPill`(药丸菜单)呈现 | **存在冲突**:本地 `cli.json` 屏蔽官方 footer 会导致官方原生 `/goal` 状态药丸在 TUI 无法正常渲染。若拥抱官方 footer,需评估是否还要保留本地自制的 `prompt-footer-nocost` | | **3. 多模型故障三级降级 (Fallback)** | `plugins/auto-continue-harness.js`:拦截子会话,在 401/429/5xx 时动态按备选链重试同会话 | 官方支持原生重试(`SessionHooks.retry`)与 `variant-fallbacks`,但主要针对 Provider 重试,暂无本地跨渠道自定义降级链 | **建议保留或精简**:本地 `auto-continue-harness.js` 的主要价值已从早期 goal 续跑收敛为「多模型跨渠道降级(Word Opus -> Sonnet -> GPT-6.1)」,若仍需要特定子 Agent 自动切渠道,该降级逻辑暂不可完全废弃 | | **4. AGY 调度拦截与流水线记账** | `~/.gemini/antigravity/bin/opencode`(包装 shim)拦截 `opencode run`,预创建会话并写入 `opencode-pipeline.json` 供 AGY sidecar 展示 | 官方 `opencode run` 支持原生 `--session`、`--title`、`--agent`,无外部 JSON 账本机制 | **视看板需求而定**:若仍需要 AGY 桌面端副屏的「OpenCode 调度流水线」可视化看板,需保留 shim 记账;若仅终端调用,shim 并非必需 | | **5. 辅助 CLI 插件** | `ctrl-c-revert`(中断回滚)、`turn-count`(轮数统计) | 官方未内置此类特定微交互插件 | **互不干扰**:属于用户个人偏好的独立辅助插件,不影响主干运行 | --- ## 哪些配置与规则可以考虑更新(待定决策) 1. **`cli.json` 与 TUI Footer**: - 当前配置:`-opencode.prompt.footer` + `prompt-footer-nocost`。 - 影响:屏蔽了官方原生 Prompt Footer,导致看不到官方 `/goal` 的实时运行状态和后台 Shell 状态。 - 建议:评估是否恢复官方原生 footer,或修改 `prompt-footer-nocost` 兼容官方 `goal` 状态。 2. **`AGENTS.md` 与 `team-dual-goal` 文档描述**: - 当前明确写了 `auto-continue-harness.js` 负责降级与续跑。 - 建议:将 `/goal` 权责拆开——长任务持续自治全面推荐使用官方原生 `/goal`,`auto-continue-harness.js` 仅定位为底层的「渠道故障降级拦截器」。 3. **桌面端 GUI 补丁全面退役**: - 之前在 `v2.1.4` 注入的 `app.asar` 本地补丁已失效,当前已是纯净官方 `v2.2.2`。 - 建议:无需再维护针对 `app.asar` 的本地打包脚本(如 `opencode-taskboard` / `manage.py`),拥抱官方 2.2+ 的内置扩展机制。 --- ## Decision Log - [x] **2026-10-30**:完成 OpenCode 官方 v2.2.x 与本地自研特征的全面对比调研,撤回一切未授权的本地配置写入,本 Issue 作为后续演进决策的讨论根据。
Activity