标准实验组

实验:opencode

Experiment · 标准实验组opencode
EXPERIMENT

实验记录:opencode(本地 v1.18.35 + Windows 1.18.16 参照)— 标准实验组

产品:opencode(本地运行时 v1.18.35;源码分析基于 opencode-src-v1.18.29 本地源码 + Windows 侧 1.18.16 实机参照)
实验日期:2026-09-07 实验方式:opencode run 非交互 + --pure(纯净内核)隔离装配层协议干扰
契约约束:仅可逆 + 受控故障注入,隔离区 /tmp/opencode,不改记忆系统文件,不扩大影响面
版本沿革:1.18.16(Windows 参照) / 1.18.29(源码树) / 1.18.30(v1.3 基线) / 1.18.35(本轮基线)
1

实验1 正常场景(基线)

实验设计
  • 纯推理任务,无故障注入,建立性能基线。
关键证据
  • 控制组:无
  • 观测指标:输出正确性 / 轮数 / 是否收敛
  • 命令:opencode run "用一句话解释什么叫负反馈控制" --model deepseek/deepseek-v4-flash
  • 轮数:1 轮收敛
  • 输出:负反馈控制:检测输出与目标的偏差,反向调节使系统趋向稳定 + 一句补充("测偏差→反向纠偏→系统收敛")
  • 正确性:✅ 完整、双语示例、18 字主句
  • 计划进度偏差:1/1(1 轮达成,无偏航)
  • 反馈信噪比:高(一次产出含定义+直觉+案例)
  • 属于:设定值(r=解释负反馈)+ E 环(用户判断输出达标)
  • 控制律:开环一次性直出(无反思循环),依赖单次 LLM 能力
执行数据
    观测结果
      量化指标
        控制论解读
          2

          实验2 故障注入 — 工具调用失败(R 环错误回灌)

          实验设计
          • 制造 Read 工具调用失败(读取不存在文件),观察错误信号是否回灌、模型是否语义级修正、是否震荡。
          关键证据
          • 注入扰动:Read /tmp/opencode/不存在文件_xyz.txt [offset=1, limit=5] 强制 path not found
          • 对照组:实验1(正常基线)
          • 命令:opencode run "读取文件 /tmp/opencode/不存在文件_xyz.txt 报告第一行" --model deepseek/deepseek-v4-flash --pure
          • 工具失败:Read 不存在文件_xyz.txt → 读取失败:文件不存在(path not found)
          • 计划进度偏差:1/1(1 轮完成语义修正,无死循环)
          • 恢复时长:0 额外轮(同轮消除误差)
          • 反馈信噪比:高(错误信号干净、无噪声放大)
          • 属于:R 环(错误回灌 + 即时纠偏)+ E 环(工具错误=传感器信号)
          • 控制律:KT-ctrl-002 负反馈闭环(e = 目标 r − 实际 y,错误回灌直接驱动修正)
          • 结论:opencode R 环对「感知到的工具失败」能快速闭环,但这是「错误信号驱动」而非「误差信号驱动」(无独立 Critic 测量"是否达标",是 E 环弱的体现)。
          执行数据
            观测结果
              R 环行为
              • 工具错误 path not found 回灌给模型;模型在同一轮内完成语义修正——正确报告"该文件不存在,无第一行内容",并主动给 2 条下一步建议(提供正确路径 / 搜索相似文件)。
              无震荡
              • 未出现反复重试同一动作,1 轮即修正收敛。
              量化指标
                控制论解读
                  3

                  实验3 故障注入 — 超时/超长命令(T 环看门狗)

                  实验设计
                  • 注入一个耗时命令(sleep 5),观察 bash 工具是否受超时看门狗约束、模型是否正确预判执行窗口。
                  关键证据
                  • 注入扰动:bash "sleep 5; echo 完成"(5 秒阻塞)
                  • 对照组:无(看门狗应拦截超限场景)
                  • 命令:opencode run "用 bash 运行 'sleep 5; echo 完成'" --model deepseek/deepseek-v4-flash --pure
                  • 工具执行:sleep 5; echo 完成 → 完成
                  • 超时阈值:120000ms(源码 tool/shell.ts 默认)
                  • 本轮正常:未触发 kill
                  • 属于:T 环(执行器硬限幅 + 看门狗,KT-ctrl-034)
                  • 结论:opencode T 环看门狗机制存在且阈值明确(120s 默认 + handle.kill({forceKillAfter:"3s"}) 强制终止),本次短耗时注入未触发,属正常边界内。看门狗是「硬限幅」的可靠实现。
                  执行数据
                    观测结果
                      T 环看门狗行为
                      • bash 工具默认超时 120000ms(120 秒),5 秒 sleep 远未触发超时(正常路径)。模型正确预判"默认超时足够覆盖 5 秒等待"。
                      未触发看门狗
                      • 说明看门狗(tool/shell.ts L540-554 Effect.raceAll)在超限时才介入。实验未构造 >120s 阻塞(避免过度耗时),用源码证据 + 短耗时验证了看门狗存在性。
                      量化指标
                        控制论解读
                          4

                          实验4 装配层干扰观测(非契约实验,副产品)

                          实验设计
                          • 非 --pure 模式下,注入"读取不存在文件"任务,发现 opencode 转向检查 Reflection/pending.json backlog(waiting_count=27)。
                          关键证据
                          • 扰动:文件不存在 + 装配层协议存在
                          • opencode 在子 Agent 调度受阻时,会按 auto-mode 反射协议绕行至 reflection 处理(发现 27 个 waiting cycle)。
                          观测结果
                            启示
                            • 装配层协议会显著改变内核行为,这就是为什么实验2b 用 --pure 隔离。反映了「评估/规划」可被外部装配层(question/reflection/grill-me)增强,印证 opencode 内核与装配层互补的分层控制。
                            • | 实验 | 场景 | 控制论环节 | 结果 | 关键量化 |
                            • |------|------|-----------|------|---------|
                            • | 1 | 正常基线 | 设定值+开环 | 1 轮收敛 | 无偏航 |
                            • | 2 | 工具失败注入 | R 环错误回灌 | 同轮语义修正 | 0 额外轮,无震荡 |
                            • | 3 | 超时命令 | T 环看门狗 | 正常路径(未超限) | 阈值 120s |
                            • | 4 | 装配层干扰 | 分层控制 | 绕行 reflection | waiting=27 |
                            整体控制论结论
                            • opencode 实机观测印证了画像——T 环(执行器安全)强、R 环(对感知到的失败)能快速闭环,但 E 环(是否达标的独立测量)弱。它更像「前馈+局部反馈」控制器:误差信号依赖工具返回/环境,缺乏独立 Critic 测量目标符合度。这与 phase3 画像结论一致。 > ⚠️ 契约遵守确认:本次实验仅在 /tmp/opencode 隔离区执行,--pure 未加载外部协议,未修改任何记忆系统文件,未做不可逆破坏,仅受控故障注入(不存在的文件读取 + 短耗时命令)。 > 📌 装配层基线同步(提示):opencode-custom 侧自 2026-09-11 起已漂移(agents 10→9、可加载 skill 41→45、commands 2→3、instructions 注册 5→6、MCP 6→4、plugins 0→2、providers 3→6)。本页实验均在 --pure(纯净内核)下执行,既有实验观测数据不受装配层漂移影响(未重跑、未改写);官方内核五环基线分值不因装配层变化调整(分层原则)。 > 版本标注同步:本页标题/meta 已由 本地 v1.18.29 更新为 本地 v1.18.35(本机运行时实测),源码树口径仍为 opencode-src-v1.18.29;派生页 04-interactive/exp-opencode.html 需按本页重生成以消除版本标注漂移。