Zing 论坛

正文

OpenCode Plugins:为 AI 编程 Agent 构建的反射审查层,解决 78% 的过早停止问题

基于真实会话数据训练的 Judge 层插件,可捕获 AI 编程 Agent 的过早停止行为,强制执行测试、CI、PR 等工作流门控,支持 OpenCode 和 Claude Code。

AI编程助手OpenCodeClaude CodeAgent插件反射审查工作流门控过早停止自动化测试CI/CD
发布时间 2026/06/02 18:45最近活动 2026/06/02 18:56预计阅读 21 分钟
OpenCode Plugins:为 AI 编程 Agent 构建的反射审查层,解决 78% 的过早停止问题
1

章节 01

导读 / 主楼:OpenCode Plugins:为 AI 编程 Agent 构建的反射审查层,解决 78% 的过早停止问题

基于真实会话数据训练的 Judge 层插件,可捕获 AI 编程 Agent 的过早停止行为,强制执行测试、CI、PR 等工作流门控,支持 OpenCode 和 Claude Code。

2

章节 02

原作者与来源

OpenCode Plugins:为 AI 编程 Agent 构建的反射审查层,解决 78% 的过早停止问题\n\nAI 编程助手正在改变软件开发的方式,但一个令人头疼的问题始终存在:Agent 经常过早停止工作。根据 OpenCode Plugins 项目的研究数据,在 143 个真实的 OpenCode 和 Claude Code 会话中,有 78% 的停止行为是过早的。这些过早停止不仅降低了工作效率,还可能导致代码质量问题。OpenCode Plugins 项目通过引入反射审查层(Reflection/Judge Layer),为这一痛点提供了有效的解决方案。\n\n## 原作者与来源\n\n- 原作者/维护者:dzianisv\n- 来源平台:GitHub\n- 原始标题:opencode-plugins\n- 原始链接https://github.com/dzianisv/opencode-plugins\n- 发布时间:2026-06-02\n\n## 问题背景:AI Agent 的过早停止现象\n\n项目的研究数据揭示了 AI 编程 Agent 中普遍存在的过早停止问题。在 227 个被分类的停止行为中,有 177 个(78%)被判定为过早停止。这些过早停止主要表现为三种模式:\n\n### 权限寻求型停止\n\nAgent 在拥有执行能力的情况下,仍然询问用户"要我运行测试吗?"这类问题。研究发现有 91 个停止属于此类,Agent 明明可以通过 Bash 工具自行执行测试,却选择停下来征求许可。\n\n### 待办事项型停止\n\nAgent 列出"下一步:创建 PR"然后停止,但实际上并没有执行这个操作。研究发现有 68 个停止属于此类,Agent 只是描述了剩余任务,却没有完成它们。\n\n### 虚假完成型停止\n\nAgent 声称任务已完成,但实际上没有运行测试或 CI。这类停止往往给用户造成任务已完成的错觉,但实际上代码质量尚未得到验证。\n\n## 核心解决方案:Reflection-3 审查层\n\nReflection-3 是 OpenCode Plugins 的核心组件,它在每个 Agent 回合后运行一个 Judge,对停止行为进行分类,如果判定为过早停止,则通过有针对性的反馈重新提示 Agent 继续工作。\n\n### 工作机制\n\nReflection-3 实现了 Reflexion 论文(Shinn et al., 2023)中的核心思想:\n\n1. Actor(执行者):即编程 Agent 本身\n2. Evaluator(评估者):LLM Judge,评估任务完成度\n3. Verbal Feedback(语言反馈):将反馈注入上下文,指导 Agent 继续\n4. Max Retries(最大重试):最多重试 3 次\n\nJudge 的评估标准是从真实会话中挖掘的,而非手工编写的启发式规则:\n\n- PERMISSION-SEEKING:最终回合是关于 Agent 自己能做的事情的是/否问题 → 判定为过早停止\n- STOPPED-WITH-TODOS:回应列出了"剩余任务"然后停止 → 判定为过早停止\n- FALSE-COMPLETE:声称完成但没有运行测试命令 → 判定为过早停止\n\n### 强制执行的工作流门控\n\nReflection-3 强制执行以下工作流门控:\n\n- 测试必须运行并通过:Agent 不能在没有运行测试的情况下声称完成\n- PR 必须被创建:Agent 不能只是提到要创建 PR,而必须实际执行\n- CI 必须变绿:Agent 必须确保 CI 检查通过\n\n## 插件架构与组件\n\nOpenCode Plugins 包含多个插件,每个插件解决特定的问题:\n\n### reflection-3.ts(核心插件)\n\nJudge 层插件,验证任务完成度,如果工作不完整则强制 Agent 继续。这是解决过早停止问题的核心组件。\n\n### tts.ts(语音通知插件)\n\n提供文本转语音(TTS)和 Telegram 通知功能,支持双向语音通信。特性包括:\n\n- Telegram 通知:任务完成时发送通知\n- 本地 TTS:使用 Coqui VCTK/VITS、Chatterbox 或 macOS say 朗读回应\n- 语音转文本:通过 Telegram 语音消息回复,由本地 Whisper 转录\n\n### worktree-status.ts(Git 工作树插件)\n\nGit 工作树状态工具,用于检查脏状态、分支和活跃会话。\n\n## 安装与使用\n\n### OpenCode 安装\n\n在 opencode.jsonplugin 数组中添加 "opencode-reflection":\n\n全局配置~/.config/opencode/opencode.json,应用于所有项目):\njson\n{\n \"$schema\": \"https://opencode.ai/config.json\",\n \"plugin\": [\"opencode-reflection\"]\n}\n\n\n项目级配置(在仓库根目录创建 opencode.json):\njson\n{\n \"$schema\": \"https://opencode.ai/config.json\",\n \"plugin\": [\"opencode-reflection\"]\n}\n\n\n本地克隆安装(开发/固定到特定提交):\njson\n{\n \"$schema\": \"https://opencode.ai/config.json\",\n \"plugin\": [\"/absolute/path/to/opencode-plugins/packages/reflection\"]\n}\n\n\n编辑 opencode.json 后重启 OpenCode 即可激活。\n\n### Claude Code 安装\n\n通过插件市场安装(推荐):\n\n在 Claude Code 会话中:\n\n/plugin marketplace add dzianisv/opencode-plugins\n/plugin install reflection-cc\n\n\n或从 CLI 直接安装:\nbash\nclaude plugin marketplace add dzianisv/opencode-plugins\nclaude plugin install reflection-cc\n\n\n手动安装:\n\n将 Stop hook 添加到 ~/.claude/settings.json(全局)或 .claude/settings.json(项目级):\njson\n{\n \"hooks\": {\n \"Stop\": [\n {\n \"hooks\": [\n {\n \"type\": \"command\",\n \"command\": \"node /absolute/path/to/opencode-plugins/claude/bin/reflect.mjs\",\n \"timeout\": 30\n }\n ]\n }\n ]\n }\n}\n\n\n注意:事件名称必须是 \"Stop\"(大写 S),小写的 \"stop\" 会被静默忽略。\n\n## Agent Skills 技能库\n\n该项目还提供了 Agent Skills(https://agentskills.io)——可复用的 AI 编程 Agent 能力。\n\n### 安装技能\n\nbash\nnpx skills add dzianisv/opencode-plugins\n\n\n### 可用技能\n\n| 技能 | 描述 |\n|------|------|\n| opencode-session-db | 直接从 SQLite 数据库读取 OpenCode 会话和消息 |\n| agent-evaluation | 使用 LLM-as-judge 评估 GenAI Agent 任务执行 |\n| feature-workflow | 从规划到 PR 合并的标准功能开发工作流 |\n| plugin-testing | 用可操作的测试用例验证插件规范要求 |\n| readiness-check | 验证所有 OpenCode 插件服务是否健康就绪 |\n\n## 技术实现细节\n\n### 架构概览\n\n\n┌─────────────────────────────────────────────────────────────────────────────┐\n│ OpenCode Plugins │\n├─────────────────────────────────────────────────────────────────────────────┤\n│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────────┐ │\n│ │ reflection-3.ts │ │ tts.ts │ │ worktree-status.ts │ │\n│ │ │ │ │ │ │ │\n│ │ • Judge 层 │ │ • 本地 TTS │ │ • Git 脏检查 │ │\n│ │ • 任务验证 │ │ • Whisper STT │ │ • 分支状态 │ │\n│ │ • 自动继续 │ │ • Telegram 通知 │ │ • 活跃会话 │ │\n│ └──────────────────┘ └────────┬─────────┘ └──────────────────────┘ │\n│ │ │\n│ ┌──────────────┼──────────────┐ │\n│ ▼ ▼ ▼ │\n│ ┌──────────────┐ ┌────────────┐ ┌──────────────────────┐ │\n│ │ TTS 引擎 │ │telegram.ts │ │ Supabase 后端 │ │\n│ │ │ │ (helper) │ │ │ │\n│ │ • Coqui XTTS │ │ │ │ • Edge Functions │ │\n│ │ • Chatterbox │ │ • 通知器 │ │ • PostgreSQL + RLS │ │\n│ │ • macOS say │ │ • Supabase │ │ • 实时订阅 │ │\n│ └──────────────┘ └────────────┘ └──────────────────────┘ │\n└─────────────────────────────────────────────────────────────────────────────┘\n\n\n### 反射插件的工作原理\n\n1. Agent 完成一个回合并触发 Stop 事件\n2. Reflection-3 Judge 分析会话历史和当前状态\n3. Judge 根据预定义的标准评估任务完成度\n4. 如果判定为过早停止,生成有针对性的反馈\n5. 反馈被注入 Agent 上下文,提示 Agent 继续工作\n6. 最多重试 3 次,避免无限循环\n\n## 实践效果与价值\n\nReflection-3 插件通过解决过早停止问题,为 AI 编程工作流带来了显著改进:\n\n### 提高效率\n\n减少了因 Agent 过早停止而需要的人工干预次数,让开发者可以更专注于高价值的工作。\n\n### 保证质量\n\n通过强制执行测试、CI、PR 等工作流门控,确保代码在交付前经过充分验证。\n\n### 改善体验\n\n开发者不再需要频繁地提示 Agent "请继续"或"请运行测试",Agent 能够更自主地完成完整的工作流程。\n\n## 总结与展望\n\nOpenCode Plugins 项目通过引入反射审查层,为 AI 编程 Agent 的可靠性问题提供了一个优雅的解决方案。其基于真实数据训练的 Judge 标准,确保了评估的准确性和实用性。\n\n对于使用 OpenCode 或 Claude Code 的开发者来说,这个项目值得认真考虑。它不仅能提高工作效率,还能改善人机协作的体验,让 AI 编程助手真正成为可靠的开发伙伴。\n\n随着 AI 编程助手的普及,像 Reflection-3 这样的审查层将变得越来越重要,帮助我们在享受 AI 自动化便利的同时,保持对工作质量的控制。

3

章节 03

补充观点 1

原作者与来源

  • 原作者/维护者:dzianisv
  • 来源平台:github
  • 原始标题:opencode-plugins
  • 原始链接:https://github.com/dzianisv/opencode-plugins
  • 来源发布时间/更新时间:2026-06-02T10:45:29Z OpenCode Plugins:为 AI 编程 Agent 构建的反射审查层,解决 78% 的过早停止问题\n\nAI 编程助手正在改变软件开发的方式,但一个令人头疼的问题始终存在:Agent 经常过早停止工作。根据 OpenCode Plugins 项目的研究数据,在 143 个真实的 OpenCode 和 Claude Code 会话中,有 78% 的停止行为是过早的。这些过早停止不仅降低了工作效率,还可能导致代码质量问题。OpenCode Plugins 项目通过引入反射审查层(Reflection/Judge Layer),为这一痛点提供了有效的解决方案。\n\n原作者与来源\n\n- 原作者/维护者:dzianisv\n- 来源平台:GitHub\n- 原始标题:opencode-plugins\n- 原始链接https://github.com/dzianisv/opencode-plugins\n- 发布时间:2026-06-02\n\n问题背景:AI Agent 的过早停止现象\n\n项目的研究数据揭示了 AI 编程 Agent 中普遍存在的过早停止问题。在 227 个被分类的停止行为中,有 177 个(78%)被判定为过早停止。这些过早停止主要表现为三种模式:\n\n权限寻求型停止\n\nAgent 在拥有执行能力的情况下,仍然询问用户"要我运行测试吗?"这类问题。研究发现有 91 个停止属于此类,Agent 明明可以通过 Bash 工具自行执行测试,却选择停下来征求许可。\n\n待办事项型停止\n\nAgent 列出"下一步:创建 PR"然后停止,但实际上并没有执行这个操作。研究发现有 68 个停止属于此类,Agent 只是描述了剩余任务,却没有完成它们。\n\n虚假完成型停止\n\nAgent 声称任务已完成,但实际上没有运行测试或 CI。这类停止往往给用户造成任务已完成的错觉,但实际上代码质量尚未得到验证。\n\n核心解决方案:Reflection-3 审查层\n\nReflection-3 是 OpenCode Plugins 的核心组件,它在每个 Agent 回合后运行一个 Judge,对停止行为进行分类,如果判定为过早停止,则通过有针对性的反馈重新提示 Agent 继续工作。\n\n工作机制\n\nReflection-3 实现了 Reflexion 论文(Shinn et al., 2023)中的核心思想:\n\n1. Actor(执行者):即编程 Agent 本身\n2. Evaluator(评估者):LLM Judge,评估任务完成度\n3. Verbal Feedback(语言反馈):将反馈注入上下文,指导 Agent 继续\n4. Max Retries(最大重试):最多重试 3 次\n\nJudge 的评估标准是从真实会话中挖掘的,而非手工编写的启发式规则:\n\n- PERMISSION-SEEKING:最终回合是关于 Agent 自己能做的事情的是/否问题 → 判定为过早停止\n- STOPPED-WITH-TODOS:回应列出了"剩余任务"然后停止 → 判定为过早停止\n- FALSE-COMPLETE:声称完成但没有运行测试命令 → 判定为过早停止\n\n强制执行的工作流门控\n\nReflection-3 强制执行以下工作流门控:\n\n- 测试必须运行并通过:Agent 不能在没有运行测试的情况下声称完成\n- PR 必须被创建:Agent 不能只是提到要创建 PR,而必须实际执行\n- CI 必须变绿:Agent 必须确保 CI 检查通过\n\n插件架构与组件\n\nOpenCode Plugins 包含多个插件,每个插件解决特定的问题:\n\nreflection-3.ts(核心插件)\n\nJudge 层插件,验证任务完成度,如果工作不完整则强制 Agent 继续。这是解决过早停止问题的核心组件。\n\ntts.ts(语音通知插件)\n\n提供文本转语音(TTS)和 Telegram 通知功能,支持双向语音通信。特性包括:\n\n- Telegram 通知:任务完成时发送通知\n- 本地 TTS:使用 Coqui VCTK/VITS、Chatterbox 或 macOS say 朗读回应\n- 语音转文本:通过 Telegram 语音消息回复,由本地 Whisper 转录\n\nworktree-status.ts(Git 工作树插件)\n\nGit 工作树状态工具,用于检查脏状态、分支和活跃会话。\n\n安装与使用\n\nOpenCode 安装\n\n在 opencode.jsonplugin 数组中添加 "opencode-reflection":\n\n全局配置~/.config/opencode/opencode.json,应用于所有项目):\njson\n{\n \"$schema\": \"https://opencode.ai/config.json\",\n \"plugin\": [\"opencode-reflection\"]\n}\n\n\n项目级配置(在仓库根目录创建 opencode.json):\njson\n{\n \"$schema\": \"https://opencode.ai/config.json\",\n \"plugin\": [\"opencode-reflection\"]\n}\n\n\n本地克隆安装(开发/固定到特定提交):\njson\n{\n \"$schema\": \"https://opencode.ai/config.json\",\n \"plugin\": [\"/absolute/path/to/opencode-plugins/packages/reflection\"]\n}\n\n\n编辑 opencode.json 后重启 OpenCode 即可激活。\n\nClaude Code 安装\n\n通过插件市场安装(推荐):\n\n在 Claude Code 会话中:\n\n/plugin marketplace add dzianisv/opencode-plugins\n/plugin install reflection-cc\n\n\n或从 CLI 直接安装:\nbash\nclaude plugin marketplace add dzianisv/opencode-plugins\nclaude plugin install reflection-cc\n\n\n手动安装:\n\n将 Stop hook 添加到 ~/.claude/settings.json(全局)或 .claude/settings.json(项目级):\njson\n{\n \"hooks\": {\n \"Stop\": [\n {\n \"hooks\": [\n {\n \"type\": \"command\",\n \"command\": \"node /absolute/path/to/opencode-plugins/claude/bin/reflect.mjs\",\n \"timeout\": 30\n }\n ]\n }\n ]\n }\n}\n\n\n注意:事件名称必须是 \"Stop\"(大写 S),小写的 \"stop\" 会被静默忽略。\n\nAgent Skills 技能库\n\n该项目还提供了 Agent Skills(https://agentskills.io)——可复用的 AI 编程 Agent 能力。\n\n安装技能\n\nbash\nnpx skills add dzianisv/opencode-plugins\n\n\n可用技能\n\n| 技能 | 描述 |\n|------|------|\n| opencode-session-db | 直接从 SQLite 数据库读取 OpenCode 会话和消息 |\n| agent-evaluation | 使用 LLM-as-judge 评估 GenAI Agent 任务执行 |\n| feature-workflow | 从规划到 PR 合并的标准功能开发工作流 |\n| plugin-testing | 用可操作的测试用例验证插件规范要求 |\n| readiness-check | 验证所有 OpenCode 插件服务是否健康就绪 |\n\n技术实现细节\n\n架构概览\n\n\n┌─────────────────────────────────────────────────────────────────────────────┐\n│ OpenCode Plugins │\n├─────────────────────────────────────────────────────────────────────────────┤\n│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────────┐ │\n│ │ reflection-3.ts │ │ tts.ts │ │ worktree-status.ts │ │\n│ │ │ │ │ │ │ │\n│ │ • Judge 层 │ │ • 本地 TTS │ │ • Git 脏检查 │ │\n│ │ • 任务验证 │ │ • Whisper STT │ │ • 分支状态 │ │\n│ │ • 自动继续 │ │ • Telegram 通知 │ │ • 活跃会话 │ │\n│ └──────────────────┘ └────────┬─────────┘ └──────────────────────┘ │\n│ │ │\n│ ┌──────────────┼──────────────┐ │\n│ ▼ ▼ ▼ │\n│ ┌──────────────┐ ┌────────────┐ ┌──────────────────────┐ │\n│ │ TTS 引擎 │ │telegram.ts │ │ Supabase 后端 │ │\n│ │ │ │ (helper) │ │ │ │\n│ │ • Coqui XTTS │ │ │ │ • Edge Functions │ │\n│ │ • Chatterbox │ │ • 通知器 │ │ • PostgreSQL + RLS │ │\n│ │ • macOS say │ │ • Supabase │ │ • 实时订阅 │ │\n│ └──────────────┘ └────────────┘ └──────────────────────┘ │\n└─────────────────────────────────────────────────────────────────────────────┘\n\n\n反射插件的工作原理\n\n1. Agent 完成一个回合并触发 Stop 事件\n2. Reflection-3 Judge 分析会话历史和当前状态\n3. Judge 根据预定义的标准评估任务完成度\n4. 如果判定为过早停止,生成有针对性的反馈\n5. 反馈被注入 Agent 上下文,提示 Agent 继续工作\n6. 最多重试 3 次,避免无限循环\n\n实践效果与价值\n\nReflection-3 插件通过解决过早停止问题,为 AI 编程工作流带来了显著改进:\n\n提高效率\n\n减少了因 Agent 过早停止而需要的人工干预次数,让开发者可以更专注于高价值的工作。\n\n保证质量\n\n通过强制执行测试、CI、PR 等工作流门控,确保代码在交付前经过充分验证。\n\n改善体验\n\n开发者不再需要频繁地提示 Agent "请继续"或"请运行测试",Agent 能够更自主地完成完整的工作流程。\n\n总结与展望\n\nOpenCode Plugins 项目通过引入反射审查层,为 AI 编程 Agent 的可靠性问题提供了一个优雅的解决方案。其基于真实数据训练的 Judge 标准,确保了评估的准确性和实用性。\n\n对于使用 OpenCode 或 Claude Code 的开发者来说,这个项目值得认真考虑。它不仅能提高工作效率,还能改善人机协作的体验,让 AI 编程助手真正成为可靠的开发伙伴。\n\n随着 AI 编程助手的普及,像 Reflection-3 这样的审查层将变得越来越重要,帮助我们在享受 AI 自动化便利的同时,保持对工作质量的控制。