prevalentWare/opencode-goal-plugin
OpenCode goal plugin for Codex-style goal mode, /goal slash commands, persistent objectives, and AI coding agent focus.
OpenCode Goal Plugin – 保持 AI 编码代理专注于长期任务
是什么 – 为 OpenCode AI 编码环境添加 目标模式 的插件。用户可以启动一个持久的 /goal <目标>,该目标在 OpenCode UI(TUI、桌面、网页)中持续存在,并在会话压缩后依然保留。目标会显示在侧边栏中,可在会话空闲时自动继续,且只有当代理提供完成的明确证据或阻塞信息时才能关闭。
主要功能
/goal斜杠命令(创建、查看、编辑、暂停、恢复、清除)—— 在所有 OpenCode 前端中均有效。- 侧边栏指示器,显示状态、已用时长、Token 使用量和目标内容。
- 代理端工具:
get_goal、list_all_goals、create_goal、set_goal、update_goal、clear_goal等。 - 每会话的持久状态存储在
$XDG_DATA_HOME/opencode-goal-plugin/goals.json(仅所有者权限,原子写入)。 - 在
session.idle/session.status时自动继续,带有安全限制(Token 预算、时间预算、无进展检测、最大自动轮次)。 - 计划模式安全:从 plan 代理创建的目标将被暂停,除非用户明确允许,否则无法自动继续。
- 通过 OpenCode 的插件配置文件,可配置选项(自动继续、预算、最大轮次、受限代理等)。
安装
- 对于 OpenCode 1(稳定版):
将包名添加到opencode plugin @prevalentware/opencode-goal-plugin # 项目本地 # 或全局安装 opencode plugin -g @prevalentware/opencode-goal-pluginopencode.json和tui.json的plugin数组中。 - 对于 OpenCode 2(测试版):
将条目放入{ "plugins": [ { "package": "@prevalentware/opencode-goal-plugin", "options": { "auto_continue": true } } ] }opencode.json(服务器)和~/.config/opencode/cli.json(UI)中。
典型工作流
- 启动目标:
/goal 审查前端并把可见的 UI 文本翻译成西班牙语 - 代理执行任务,侧边栏持续显示进度。
- 当目标完成时,代理调用
update_goal并设置status: "complete",同时提供证据(例如测试结果、PR 链接)。 - 若无法达成目标,代理调用
update_goal并设置status: "unmet"及阻塞描述。 - 可随时使用
/goal pause、/goal resume、/goal clear暂停、恢复或清除目标。
配置亮点
auto_continue(默认为 true)—— 允许插件在会话空闲时继续向代理发送提示。max_auto_turns(默认为 25)—— 限制自动继续提示的最大执行次数。default_token_budget—— 可选的 Token 限制,用于新目标。restricted_agents(默认为"plan")—— 被视为仅计划用途的代理;来自它们的目标将从暂停状态开始。allow_goal_execution_from_plan—— 设为true可禁用计划模式限制(不推荐)。
安全机制
- 预算限制—— 当 Token 或时间预算耗尽时停止目标。
- 无进展检测—— 在可配置的低输出继续轮次后,目标将被暂停。
- 计划模式防护—— 防止计划会话无声转变为执行会话。
状态持久化
目标数据存储在 XDG 数据目录下的 JSON 文件中(或 ~/.local/share/...),以所有者专用权限原子写入。崩溃后,将保留之前或新的完整状态,实现可靠恢复。
开发与发布
该仓库使用 bun 进行构建和测试,并通过 GitHub Actions 实现自动发布到 npm,采用可信发布机制。包导出独立模块:服务器钩子(./dist/server.js)和 TUI UI(./src/tui.ts)。
总结 – 如果你使用 OpenCode 进行数小时的重构、迁移或测试修复任务,并希望 AI 始终专注于单一、可审计的目标,OpenCode Goal Plugin 提供了一种轻量、可配置的解决方案。
相关
- 项目
- 项目
- 项目
- 项目
- 项目