Skip to content

arch(goal): 对比调研 OpenCode v2.2.x 官方原生 /goal 与本地定制特征演进 #25

Open

Description

@antigravity-atg

背景与调研说明

OpenCode 已升级至 v2.2.1(桌面端已至 v2.2.2)。在官方 PR #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

  • 2026-10-30:完成 OpenCode 官方 v2.2.x 与本地自研特征的全面对比调研,撤回一切未授权的本地配置写入,本 Issue 作为后续演进决策的讨论根据。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions