claude-evolve 1.5.29 → 1.5.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/claude-evolve-edit +22 -6
- package/bin/claude-evolve-worker +3 -1
- package/lib/ai-cli.sh +5 -0
- package/lib/config.sh +4 -3
- package/package.json +1 -1
package/bin/claude-evolve-edit
CHANGED
|
@@ -40,6 +40,7 @@ SELECTORS:
|
|
|
40
40
|
pending Target all candidates with pending status
|
|
41
41
|
running Target all candidates with running status
|
|
42
42
|
skipped Target all candidates with skipped status
|
|
43
|
+
0perf Target all candidates with 0 performance score
|
|
43
44
|
|
|
44
45
|
ACTIONS:
|
|
45
46
|
failed Mark candidates as failed (keeps scores)
|
|
@@ -50,6 +51,7 @@ ACTIONS:
|
|
|
50
51
|
failed-retry2 Mark candidates for retry attempt 2 (bug fixing)
|
|
51
52
|
failed-retry3 Mark candidates for retry attempt 3 (bug fixing)
|
|
52
53
|
reboot Reset completely (delete .py files, clear scores, set pending)
|
|
54
|
+
reset Same as reboot (synonym)
|
|
53
55
|
delete Delete candidates from CSV and remove .py files (asks confirmation)
|
|
54
56
|
|
|
55
57
|
EXAMPLES:
|
|
@@ -62,6 +64,8 @@ EXAMPLES:
|
|
|
62
64
|
claude-evolve edit complete failed # Mark all complete as failed for re-run
|
|
63
65
|
claude-evolve edit all pending # Mark everything as pending for re-run
|
|
64
66
|
claude-evolve edit gen02 reboot # Full reset of gen02 (delete files + clear data)
|
|
67
|
+
claude-evolve edit gen02 reset # Same as reboot (synonym)
|
|
68
|
+
claude-evolve edit 0perf pending # Reset all candidates with 0 performance
|
|
65
69
|
claude-evolve edit gen02 delete # Delete gen02 from CSV and remove .py files
|
|
66
70
|
|
|
67
71
|
DESCRIPTION:
|
|
@@ -112,16 +116,16 @@ if ! validate_config; then
|
|
|
112
116
|
fi
|
|
113
117
|
|
|
114
118
|
# Validate selector format
|
|
115
|
-
if [[ "$SELECTOR" != "all" && ! "$SELECTOR" =~ ^gen[0-9]+$ && "$SELECTOR" != "failed" && "$SELECTOR" != "complete" && "$SELECTOR" != "pending" && "$SELECTOR" != "running" && "$SELECTOR" != "skipped" ]]; then
|
|
116
|
-
echo "[ERROR] Selector must be 'all', 'genXX' (e.g., gen01), or status ('failed', 'complete', 'pending', 'running', 'skipped')" >&2
|
|
119
|
+
if [[ "$SELECTOR" != "all" && ! "$SELECTOR" =~ ^gen[0-9]+$ && "$SELECTOR" != "failed" && "$SELECTOR" != "complete" && "$SELECTOR" != "pending" && "$SELECTOR" != "running" && "$SELECTOR" != "skipped" && "$SELECTOR" != "0perf" ]]; then
|
|
120
|
+
echo "[ERROR] Selector must be 'all', 'genXX' (e.g., gen01), or status ('failed', 'complete', 'pending', 'running', 'skipped', '0perf')" >&2
|
|
117
121
|
exit 1
|
|
118
122
|
fi
|
|
119
123
|
|
|
120
124
|
# Validate action
|
|
121
125
|
case "$ACTION" in
|
|
122
|
-
failed|complete|pending|skipped|failed-retry1|failed-retry2|failed-retry3|reboot|delete) ;;
|
|
126
|
+
failed|complete|pending|skipped|failed-retry1|failed-retry2|failed-retry3|reboot|reset|delete) ;;
|
|
123
127
|
*)
|
|
124
|
-
echo "[ERROR] Action must be one of: failed, complete, pending, skipped, failed-retry1, failed-retry2, failed-retry3, reboot, delete" >&2
|
|
128
|
+
echo "[ERROR] Action must be one of: failed, complete, pending, skipped, failed-retry1, failed-retry2, failed-retry3, reboot, reset, delete" >&2
|
|
125
129
|
exit 1
|
|
126
130
|
;;
|
|
127
131
|
esac
|
|
@@ -213,12 +217,16 @@ try:
|
|
|
213
217
|
elif selector.startswith('gen') and '-' in candidate_id:
|
|
214
218
|
# Generation selector (e.g., gen01, gen02)
|
|
215
219
|
matches = candidate_id.startswith(selector + '-')
|
|
216
|
-
elif selector in ['failed', 'complete', 'pending', 'running', 'skipped']:
|
|
220
|
+
elif selector in ['failed', 'complete', 'pending', 'running', 'skipped', '0perf']:
|
|
217
221
|
# Status selector
|
|
218
222
|
if selector == 'pending':
|
|
219
223
|
matches = current_status == '' or current_status == 'pending'
|
|
220
224
|
elif selector == 'failed':
|
|
221
225
|
matches = current_status.startswith('failed')
|
|
226
|
+
elif selector == '0perf':
|
|
227
|
+
# Select candidates with performance == 0
|
|
228
|
+
performance = row[3] if len(row) > 3 else ''
|
|
229
|
+
matches = performance == '0' or performance == '0.0'
|
|
222
230
|
else:
|
|
223
231
|
matches = current_status == selector
|
|
224
232
|
|
|
@@ -367,6 +375,10 @@ try:
|
|
|
367
375
|
matches = current_status.startswith('failed')
|
|
368
376
|
elif selector == 'skipped':
|
|
369
377
|
matches = current_status == 'skipped'
|
|
378
|
+
elif selector == '0perf':
|
|
379
|
+
# Select candidates with performance == 0
|
|
380
|
+
performance = row[3] if len(row) > 3 else ''
|
|
381
|
+
matches = performance == '0' or performance == '0.0'
|
|
370
382
|
else:
|
|
371
383
|
matches = current_status == selector
|
|
372
384
|
|
|
@@ -487,6 +499,10 @@ with EvolutionCSV('$FULL_CSV_PATH') as csv:
|
|
|
487
499
|
matches = current_status.startswith('failed')
|
|
488
500
|
elif selector == 'skipped':
|
|
489
501
|
matches = current_status == 'skipped'
|
|
502
|
+
elif selector == '0perf':
|
|
503
|
+
# Select candidates with performance == 0
|
|
504
|
+
performance = row[3] if len(row) > 3 else ''
|
|
505
|
+
matches = performance == '0' or performance == '0.0'
|
|
490
506
|
else:
|
|
491
507
|
matches = current_status == selector
|
|
492
508
|
|
|
@@ -544,7 +560,7 @@ case "$ACTION" in
|
|
|
544
560
|
failed-retry3)
|
|
545
561
|
update_candidates_status "$SELECTOR" "failed-retry3" "false"
|
|
546
562
|
;;
|
|
547
|
-
reboot)
|
|
563
|
+
reboot|reset)
|
|
548
564
|
echo "[INFO] Performing full reboot of '$SELECTOR'..."
|
|
549
565
|
delete_evolution_files "$SELECTOR"
|
|
550
566
|
update_candidates_status "$SELECTOR" "" "true" # Clear scores and set pending
|
package/bin/claude-evolve-worker
CHANGED
|
@@ -260,11 +260,13 @@ with EvolutionCSV('$FULL_CSV_PATH') as csv:
|
|
|
260
260
|
# Use relative path for AI prompt
|
|
261
261
|
local target_basename=$(basename "$target_file")
|
|
262
262
|
local evolution_prompt="Modify the algorithm in $target_basename based on this description: $description
|
|
263
|
-
|
|
263
|
+
|
|
264
264
|
The modification should be substantial and follow the description exactly. Make sure the algorithm still follows all interface requirements and can run properly.
|
|
265
265
|
|
|
266
266
|
Important: Make meaningful changes that match the description. Don't just add comments or make trivial adjustments.
|
|
267
267
|
|
|
268
|
+
CRITICAL: If you do not know how to implement what was asked for, or if the requested change is unclear or not feasible, you MUST refuse to make any changes. DO NOT modify the code if you are uncertain about the implementation. Simply respond that you cannot implement the requested change and explain why. It is better to refuse than to make incorrect or random changes.
|
|
269
|
+
|
|
268
270
|
CRITICAL: Do NOT use any git commands (git add, git commit, git reset, etc.). Only modify the file directly."
|
|
269
271
|
|
|
270
272
|
if [[ "$is_baseline" != "true" ]]; then
|
package/lib/ai-cli.sh
CHANGED
|
@@ -81,6 +81,11 @@ $prompt"
|
|
|
81
81
|
ai_output=$(timeout 300 opencode -m openrouter/z-ai/glm-4.6 run "$prompt" 2>&1)
|
|
82
82
|
local ai_exit_code=$?
|
|
83
83
|
;;
|
|
84
|
+
deepseek)
|
|
85
|
+
local ai_output
|
|
86
|
+
ai_output=$(timeout 300 opencode -m openrouter/deepseek/deepseek-v3.1-terminus run "$prompt" 2>&1)
|
|
87
|
+
local ai_exit_code=$?
|
|
88
|
+
;;
|
|
84
89
|
*)
|
|
85
90
|
echo "[ERROR] Unknown model: $model_name" >&2
|
|
86
91
|
return 1
|
package/lib/config.sh
CHANGED
|
@@ -54,8 +54,8 @@ DEFAULT_MAX_RETRIES=3
|
|
|
54
54
|
DEFAULT_MEMORY_LIMIT_MB=12288
|
|
55
55
|
|
|
56
56
|
# Default LLM CLI configuration - use simple variables instead of arrays
|
|
57
|
-
DEFAULT_LLM_RUN="sonnet gpt5 cursor-sonnet glm"
|
|
58
|
-
DEFAULT_LLM_IDEATE="gemini sonnet-think sonnet-think gpt5high sonnet-think o3high"
|
|
57
|
+
DEFAULT_LLM_RUN="sonnet gpt5 cursor-sonnet glm deepseek"
|
|
58
|
+
DEFAULT_LLM_IDEATE="gemini sonnet-think sonnet-think gpt5high sonnet-think o3high glm"
|
|
59
59
|
|
|
60
60
|
# Load configuration from config file
|
|
61
61
|
load_config() {
|
|
@@ -109,6 +109,7 @@ load_config() {
|
|
|
109
109
|
LLM_CLI_cursor_sonnet='cursor-agent sonnet -p "{{PROMPT}}"'
|
|
110
110
|
LLM_CLI_cursor_opus='cursor-agent opus -p "{{PROMPT}}"'
|
|
111
111
|
LLM_CLI_glm='opencode -m openrouter/z-ai/glm-4.6 run "{{PROMPT}}"'
|
|
112
|
+
LLM_CLI_deepseek='opencode -m openrouter/deepseek/deepseek-v3.1-terminus run "{{PROMPT}}"'
|
|
112
113
|
LLM_RUN="$DEFAULT_LLM_RUN"
|
|
113
114
|
LLM_IDEATE="$DEFAULT_LLM_IDEATE"
|
|
114
115
|
|
|
@@ -328,7 +329,7 @@ show_config() {
|
|
|
328
329
|
echo " Memory limit: ${MEMORY_LIMIT_MB}MB"
|
|
329
330
|
echo " LLM configuration:"
|
|
330
331
|
# Show LLM configurations using dynamic variable names
|
|
331
|
-
for model in gpt5high o3high codex gemini opus opus_think sonnet sonnet_think cursor_sonnet cursor_opus glm; do
|
|
332
|
+
for model in gpt5high o3high codex gemini opus opus_think sonnet sonnet_think cursor_sonnet cursor_opus glm deepseek; do
|
|
332
333
|
var_name="LLM_CLI_${model}"
|
|
333
334
|
var_value=$(eval echo "\$$var_name")
|
|
334
335
|
if [[ -n "$var_value" ]]; then
|