Skip to content
    ↑↓ select↵ openesc close
    Just-Silver

    Goal

    @justsilver/opencode-goal-plugin·v0.9.0·Tools & Commands

    Codex/OMP-style persistent goals for OpenCode V2: /goal command + goal tool + idle auto-continuation + evidence-based completion + blocked/budget guards

    GitHub stars

    1

    Monthly installs

    2,711

    1.1k in 7 days

    Composite score

    43.5

    Multi-signal model

    Last commit

    4 days ago

    2026-10-01

    Install and configure

    opencode.json

    Writes to this project's opencode.json — applies to this repository only.

    opencode.json

    {
      "$schema": "https://opencode.ai/config.json",
      "plugin": ["@justsilver/opencode-goal-plugin@0.9.0"]
    }

    OpenCode loads npm dependencies through its embedded runtime on startup and caches them locally — no manual global install needed.

    给 OpenCode V2 加持久目标:说一次目标,它记住、自己接着干,完成时拿证据说话。

    安装

    在 opencode.json(c) 的 plugins 里加一行。全局配置是 ~/.config/opencode/opencode.json,也可以在项目根目录放 opencode.json / opencode.jsonc:

    {
      "plugins": ["@justsilver/opencode-goal-plugin"]
    }
    

    带参数(可用键见配置项):

    {
      "plugins": [
        {
          "package": "@justsilver/opencode-goal-plugin",
          "options": {
            "token_budget": 200000,
            "debug": false
          }
        }
      ]
    }
    
    • 要钉住版本(可复现,代价是不再显示有新版):"plugins": ["@justsilver/opencode-goal-plugin@0.2.0"]
    • 本地目录 / git 安装(改代码即热重载、用未发布的提交)见 CONTRIBUTING.md。

    用法

    在会话里输入:

    命令 作用
    /goal <目标> 直接设定目标:逐字保存 + 起一轮,不询问、不转发给模型;已有未完成目标时不覆盖
    /goal(或 /goal-status) 查看当前目标与进度
    /goal-pause 暂停
    /goal-resume 恢复并立刻激活(仅在会话空闲、且预算还够时;预算已用尽会拒绝并提示改用 /goal-budget 提高预算)
    /goal-clear 清除目标
    /goal-budget <正整数|none> 改当前目标的 token 预算(none/0/off 取消预算、不限);把预算从「已用尽」改回可用时会一并激活
    /goal-rebuild <新目标> 重建当前目标的正文:只换目标内容,状态、预算与用量记账全保留(不会唤醒模型)

    回执显示:命令结果以 TUI toast 浮条呈现(右上角、自动消失、不打断操作)——不写入对话历史,因此不消耗额外 token、也不污染模型上下文;只有你正看着该会话的窗口会提示。目标停摆(预算用尽 / 用量受限 / 受阻)改用会话内的合成提示(session.synthetic:模型与人都看得到、留在转录里),这类事件罕见且必须让人看到——代价是它会唤醒一轮收尾(让模型简短总结,而不是静默停住)。两者都需要 OpenCode V2 的 TUI(插件自带界面入口,随包自动加载,无需额外配置);无 TUI 时命令照常生效,停摆提示仍写入会话。

    设定后目标会在多轮之间持续:一轮结束、空闲时自动接着干,直到完成、暂停、受阻或超出预算。

    • 完成要拿证据:模型必须核对当前状态,才敢说「完成」。
    • 受阻 / 预算 / 用量到达时目标会停下并给出回执(留在转录里,不会像 toast 那样消失):受阻 / 用量受限用 /goal-resume 恢复;预算用尽要先用 /goal-budget 提高预算(或 none 取消),否则 /goal-resume 会拒绝——因为恢复了下一轮末也会立刻再停。
    • 恢复只在空闲时激活:会话正在跑时不插队投递(否则会把续跑触发插进当前轮),改为本轮结束后自然续跑。
    • 自动续跑有计数:/goal-status 会显示「自动续跑 N 次」,每次续跑的回执带 #N。
    • 界面文案默认跟随系统语言,可用配置项 language 切换。

    配置项

    键 默认 说明
    token_budget 无 新目标的默认 token 预算
    max_goal_token_budget 无 允许的最大预算
    max_objective_chars 4000 目标注入提示词的截断阈值(超过仍保留全文,模型可完整取回)
    blocked_threshold 3 连续阻塞多少轮算「卡住」
    empty_threshold 3 连续空转多少轮算「空转」
    reconcile_guard_minutes 5 启动兜底保护窗(分钟)
    restricted_agents ["plan"] 受限 agent(拒改写目标 / 续跑)
    disabled_tools ["question"] goal active 期间从模型工具表移除的工具名;设 [] 关闭
    command_name goal 主命令名;状态控制是派生命令 <name>-status / -pause / -resume / -clear
    debug_command_name goal-debug 调试命令名
    debug true 注册只读调试工具 goal_debug(设 false 可让模型工具表保持干净)
    language 跟随系统 面向用户文案的语言,"zh-CN" 或 "en"(缺省用系统 locale 探测)

    disabled_tools 默认移除 question:它是阻塞式交互工具,一旦调用会挂起执行直到你回复,而 goal 的自动续跑只在轮末注入,于是 goal 会被无限期停摆。goal active 时模型改为:能自行合理假设就继续,确实需要外部输入则走 goal(op "block")(连续几轮后进入「受阻」)。移除只作用于当次模型请求、不落库;goal 暂停 / 受阻 / 完成后 question 自动恢复。


    源码与反馈:https://github.com/Just-Silver/opencode-goal-plugin

    Similar plugins