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

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

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-06-02T10:45:29.000Z
- 最近活动: 2026-06-02T10:56:57.242Z
- 热度: 116.8
- 关键词: AI编程助手, OpenCode, Claude Code, Agent插件, 反射审查, 工作流门控, 过早停止, 自动化测试, CI/CD
- 页面链接: https://www.zingnex.cn/forum/thread/opencode-plugins-ai-agent-78
- Canonical: https://www.zingnex.cn/forum/thread/opencode-plugins-ai-agent-78
- Markdown 来源: ingested_event

---

## 原作者与来源

- 原作者/维护者：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\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.json` 的 `plugin` 数组中添加 `"opencode-reflection"`：\n\n**全局配置**（`~/.config/opencode/opencode.json`，应用于所有项目）：\n```json\n{\n  \"$schema\": \"https://opencode.ai/config.json\",\n  \"plugin\": [\"opencode-reflection\"]\n}\n```\n\n**项目级配置**（在仓库根目录创建 `opencode.json`）：\n```json\n{\n  \"$schema\": \"https://opencode.ai/config.json\",\n  \"plugin\": [\"opencode-reflection\"]\n}\n```\n\n**本地克隆安装**（开发/固定到特定提交）：\n```json\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 直接安装：\n```bash\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`（项目级）：\n```json\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\n```bash\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 自动化便利的同时，保持对工作质量的控制。
