mirror of
https://github.com/affaan-m/ECC.git
synced 2026-10-26 18:35:05 +00:00
fix(commands): address Santa Loop review feedback
(cherry picked from commit 3a0e3313d5)
This commit is contained in:
1 parent
4aa28ccac5
commit
f7c6809bd7
3 files changed
+14
-9
No files matched your search
@@ -169,8 +169,8 @@ Result: [PUSHED / ESCALATED TO USER]
|
||||
## 注意事項
|
||||
|
||||
- レビュアー A(Claude Opus)は常に実行されます — ツール環境に関係なく、少なくとも1つの強力なレビュアーが保証されます。
|
||||
- レビュアー Bの目標はモデル多様性です。GPT-5.4またはGemini 2.5 Proは真の独立性を提供します — 異なる学習データ、異なるバイアス、異なる死角。Claudeのみのフォールバックでもコンテキスト分離による価値はありますが、モデル多様性は失われます。
|
||||
- 利用可能な最も強力なモデルが使用されます:レビュアー AにはOpus、レビュアー BにはGPT-5.4またはGemini 2.5 Pro。
|
||||
- レビュアー Bの目標はモデル多様性です。選択したバックエンドが報告する実際のモデルとプロバイダーを記録してください。Claudeのみのフォールバックはコンテキストを分離しますが、モデル多様性は失われます。
|
||||
- レビュアー AにはOpusを使用します。レビュアー BのCodexは設定されたモデル、またはCLIのデフォルトを使用します。
|
||||
- 外部レビュアーはレビュー中のリポジトリ変更を防ぐため、`--sandbox read-only`(Codex)で実行されます。
|
||||
- 各ラウンドで新しいレビュアーを使用することで、以前の発見に対するアンカリングバイアスを防ぎます。
|
||||
- ルーブリックは最も重要な入力です。レビュアーがゴム印承認をしたり、主観的なスタイルの問題をフラグに立てる場合は、ルーブリックを厳格化してください。
|
||||
|
||||
@@ -173,8 +173,8 @@ Result: [PUSHED / ESCALATED TO USER]
|
||||
## 备注
|
||||
|
||||
* 评审者 A(Claude Opus)始终运行——无论工具如何,保证至少有一个强大的评审者。
|
||||
* 模型多样性是评审者 B 的目标。GPT-5.4 或 Gemini 2.5 Pro 提供真正的独立性——不同的训练数据、不同的偏见、不同的盲点。仅 Claude 的回退通过上下文隔离仍然提供价值,但失去了模型多样性。
|
||||
* 使用最强可用模型:Opus 用于评审者 A,GPT-5.4 或 Gemini 2.5 Pro 用于评审者 B。
|
||||
* 模型多样性是评审者 B 的目标。记录所选 backend 报告的实际模型和 provider。仅 Claude 的回退仍提供上下文隔离,但失去了模型多样性。
|
||||
* 评审者 A 使用 Opus;评审者 B 的 Codex 使用已配置的模型或 CLI 默认值。
|
||||
* 外部评审者使用 `--sandbox read-only`(Codex)运行,以防止审查期间仓库发生变异。
|
||||
* 每轮使用全新的评审者可以防止先前发现导致的锚定偏差。
|
||||
* 评分标准是最重要的输入。如果评审者盖章通过或标记主观风格问题,请收紧评分标准。
|
||||
|
||||
@@ -40,8 +40,7 @@ function runCodexExample(commandPath, configuredModel) {
|
||||
try {
|
||||
const promptFile = path.join(tempRoot, 'prompt.md');
|
||||
fs.writeFileSync(promptFile, 'Independent review only.');
|
||||
fs.writeFileSync(path.join(tempRoot, 'codex'), `#!${process.execPath}
|
||||
const fs = require('fs');
|
||||
fs.writeFileSync(path.join(tempRoot, 'codex.js'), `const fs = require('fs');
|
||||
const args = process.argv.slice(2);
|
||||
const modelFlag = args.findIndex(arg => arg === '-m' || arg === '--model');
|
||||
const model = modelFlag < 0 ? process.env.ECC_TEST_CONFIGURED_MODEL : args[modelFlag + 1];
|
||||
@@ -50,11 +49,13 @@ if (model !== process.env.ECC_TEST_CONFIGURED_MODEL) {
|
||||
process.exit(1);
|
||||
}
|
||||
console.log(JSON.stringify({ args, model, prompt: fs.readFileSync(0, 'utf8') }));
|
||||
`, { mode: 0o755 });
|
||||
const result = spawnSync('bash', ['-c', invocation[0]], {
|
||||
`);
|
||||
fs.writeFileSync(path.join(tempRoot, 'codex'), '#!/bin/sh\nexec "$ECC_TEST_NODE" "$0.js" "$@"\n', { mode: 0o755 });
|
||||
// Ignore exported functions and startup scripts so CLI dispatch stays inside the fixture.
|
||||
const result = spawnSync('bash', ['-p', '-c', invocation[0]], {
|
||||
cwd: tempRoot,
|
||||
env: { ...process.env, PATH: `${tempRoot}${path.delimiter}${process.env.PATH}`,
|
||||
PROMPT_FILE: promptFile, ECC_TEST_CONFIGURED_MODEL: configuredModel },
|
||||
PROMPT_FILE: promptFile, ECC_TEST_CONFIGURED_MODEL: configuredModel, ECC_TEST_NODE: process.execPath },
|
||||
encoding: 'utf8', timeout: 10000,
|
||||
});
|
||||
assert.strictEqual(result.status, 0, result.stderr);
|
||||
@@ -67,6 +68,10 @@ console.log(JSON.stringify({ args, model, prompt: fs.readFileSync(0, 'utf8') }))
|
||||
console.log('\n=== Testing Santa Loop Codex model selection (stub CLI) ===\n');
|
||||
|
||||
for (const commandPath of commands) {
|
||||
test(`${commandPath} has no obsolete fixed-model promise`, () => {
|
||||
const source = fs.readFileSync(path.join(repoRoot, commandPath), 'utf8');
|
||||
assert.ok(!/gpt-5\.4/i.test(source), 'Codex model selection must agree throughout the command');
|
||||
});
|
||||
for (const model of ['account-default', 'configured-review-model']) {
|
||||
test(`${commandPath} respects ${model} and preserves review inputs`, () => {
|
||||
const result = runCodexExample(commandPath, model);
|
||||
|
||||
Reference in new issue
Block a user