self-evolve-framework 1.5.0 → 1.6.1
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/README.md +33 -23
- package/bin/cli.js +24 -67
- package/package.json +1 -1
- package/template/rules/knowledge/README.md +56 -0
- package/template/rules/knowledge/ant-design-vue.mdc +54 -0
- package/template/rules/knowledge/general.mdc +56 -0
- package/template/rules/knowledge/rust.mdc +55 -0
- package/template/rules/knowledge/shadcn-svelte.mdc +64 -0
- package/template/rules/knowledge/svelte.mdc +135 -0
- package/template/rules/knowledge/tailwind.mdc +66 -0
- package/template/rules/knowledge/tauri.mdc +65 -0
- package/template/rules/knowledge/typescript.mdc +41 -0
- package/template/rules/knowledge/vue.mdc +48 -0
- package/template/rules/ponytail.mdc +23 -98
- package/template/rules/self-evolve.mdc +24 -0
- package/template/skills/impeccable/SKILL.md +47 -174
- package/template/skills/skillopt-sleep/SKILL.md +34 -48
- package/template/skills/impeccable/agents/impeccable_asset_producer.toml +0 -92
- package/template/skills/impeccable/agents/impeccable_manual_edit_applier.toml +0 -95
- package/template/skills/impeccable/agents/openai.yaml +0 -4
- package/template/skills/impeccable/reference/adapt.md +0 -311
- package/template/skills/impeccable/reference/animate.md +0 -201
- package/template/skills/impeccable/reference/audit.md +0 -133
- package/template/skills/impeccable/reference/bolder.md +0 -113
- package/template/skills/impeccable/reference/brand.md +0 -108
- package/template/skills/impeccable/reference/clarify.md +0 -288
- package/template/skills/impeccable/reference/codex.md +0 -105
- package/template/skills/impeccable/reference/colorize.md +0 -257
- package/template/skills/impeccable/reference/craft.md +0 -123
- package/template/skills/impeccable/reference/critique.md +0 -790
- package/template/skills/impeccable/reference/delight.md +0 -302
- package/template/skills/impeccable/reference/distill.md +0 -111
- package/template/skills/impeccable/reference/document.md +0 -429
- package/template/skills/impeccable/reference/extract.md +0 -69
- package/template/skills/impeccable/reference/harden.md +0 -347
- package/template/skills/impeccable/reference/hooks.md +0 -90
- package/template/skills/impeccable/reference/init.md +0 -172
- package/template/skills/impeccable/reference/interaction-design.md +0 -189
- package/template/skills/impeccable/reference/layout.md +0 -161
- package/template/skills/impeccable/reference/live.md +0 -720
- package/template/skills/impeccable/reference/onboard.md +0 -234
- package/template/skills/impeccable/reference/optimize.md +0 -258
- package/template/skills/impeccable/reference/overdrive.md +0 -130
- package/template/skills/impeccable/reference/polish.md +0 -241
- package/template/skills/impeccable/reference/product.md +0 -60
- package/template/skills/impeccable/reference/quieter.md +0 -99
- package/template/skills/impeccable/reference/shape.md +0 -165
- package/template/skills/impeccable/reference/typeset.md +0 -279
- package/template/skills/impeccable/scripts/command-metadata.json +0 -94
- package/template/skills/impeccable/scripts/context-signals.mjs +0 -225
- package/template/skills/impeccable/scripts/context.mjs +0 -961
- package/template/skills/impeccable/scripts/critique-storage.mjs +0 -242
- package/template/skills/impeccable/scripts/detect-csp.mjs +0 -198
- package/template/skills/impeccable/scripts/detect.mjs +0 -21
- package/template/skills/impeccable/scripts/detector/browser/injected/index.mjs +0 -1937
- package/template/skills/impeccable/scripts/detector/cli/main.mjs +0 -290
- package/template/skills/impeccable/scripts/detector/design-system.mjs +0 -750
- package/template/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +0 -5138
- package/template/skills/impeccable/scripts/detector/detect-antipatterns.mjs +0 -50
- package/template/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +0 -277
- package/template/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +0 -568
- package/template/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +0 -1015
- package/template/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +0 -234
- package/template/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +0 -189
- package/template/skills/impeccable/scripts/detector/findings.mjs +0 -12
- package/template/skills/impeccable/scripts/detector/node/file-system.mjs +0 -198
- package/template/skills/impeccable/scripts/detector/profile/profiler.mjs +0 -166
- package/template/skills/impeccable/scripts/detector/registry/antipatterns.mjs +0 -448
- package/template/skills/impeccable/scripts/detector/rules/checks.mjs +0 -2671
- package/template/skills/impeccable/scripts/detector/shared/color.mjs +0 -124
- package/template/skills/impeccable/scripts/detector/shared/constants.mjs +0 -101
- package/template/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +0 -148
- package/template/skills/impeccable/scripts/detector/shared/page.mjs +0 -7
- package/template/skills/impeccable/scripts/hook-admin.mjs +0 -661
- package/template/skills/impeccable/scripts/hook-before-edit.mjs +0 -476
- package/template/skills/impeccable/scripts/hook-lib.mjs +0 -1632
- package/template/skills/impeccable/scripts/hook.mjs +0 -61
- package/template/skills/impeccable/scripts/lib/design-parser.mjs +0 -842
- package/template/skills/impeccable/scripts/lib/impeccable-config.mjs +0 -638
- package/template/skills/impeccable/scripts/lib/impeccable-paths.mjs +0 -128
- package/template/skills/impeccable/scripts/lib/is-generated.mjs +0 -69
- package/template/skills/impeccable/scripts/lib/target-args.mjs +0 -42
- package/template/skills/impeccable/scripts/live/browser-script-parts.mjs +0 -49
- package/template/skills/impeccable/scripts/live/completion.mjs +0 -19
- package/template/skills/impeccable/scripts/live/event-validation.mjs +0 -137
- package/template/skills/impeccable/scripts/live/insert-ui.mjs +0 -458
- package/template/skills/impeccable/scripts/live/manual-apply.mjs +0 -939
- package/template/skills/impeccable/scripts/live/manual-edit-routes.mjs +0 -357
- package/template/skills/impeccable/scripts/live/manual-edits-buffer.mjs +0 -152
- package/template/skills/impeccable/scripts/live/session-store.mjs +0 -289
- package/template/skills/impeccable/scripts/live/svelte-component.mjs +0 -826
- package/template/skills/impeccable/scripts/live/sveltekit-adapter.mjs +0 -274
- package/template/skills/impeccable/scripts/live/ui-core.mjs +0 -180
- package/template/skills/impeccable/scripts/live/vocabulary.mjs +0 -36
- package/template/skills/impeccable/scripts/live-accept.mjs +0 -812
- package/template/skills/impeccable/scripts/live-browser-dom.js +0 -146
- package/template/skills/impeccable/scripts/live-browser-session.js +0 -123
- package/template/skills/impeccable/scripts/live-browser.js +0 -11173
- package/template/skills/impeccable/scripts/live-commit-manual-edits.mjs +0 -1241
- package/template/skills/impeccable/scripts/live-complete.mjs +0 -75
- package/template/skills/impeccable/scripts/live-copy-edit-agent.mjs +0 -683
- package/template/skills/impeccable/scripts/live-discard-manual-edits.mjs +0 -51
- package/template/skills/impeccable/scripts/live-inject.mjs +0 -583
- package/template/skills/impeccable/scripts/live-insert.mjs +0 -272
- package/template/skills/impeccable/scripts/live-manual-edit-evidence.mjs +0 -363
- package/template/skills/impeccable/scripts/live-poll.mjs +0 -384
- package/template/skills/impeccable/scripts/live-resume.mjs +0 -94
- package/template/skills/impeccable/scripts/live-server.mjs +0 -1135
- package/template/skills/impeccable/scripts/live-status.mjs +0 -61
- package/template/skills/impeccable/scripts/live-target.mjs +0 -30
- package/template/skills/impeccable/scripts/live-wrap.mjs +0 -894
- package/template/skills/impeccable/scripts/live.mjs +0 -297
- package/template/skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
- package/template/skills/impeccable/scripts/palette.mjs +0 -633
- package/template/skills/impeccable/scripts/pin.mjs +0 -214
- package/template/skills/skillopt-sleep/scripts/python/__init__.py +0 -20
- package/template/skills/skillopt-sleep/scripts/python/__main__.py +0 -343
- package/template/skills/skillopt-sleep/scripts/python/backend.py +0 -1371
- package/template/skills/skillopt-sleep/scripts/python/budget.py +0 -75
- package/template/skills/skillopt-sleep/scripts/python/config.py +0 -162
- package/template/skills/skillopt-sleep/scripts/python/consolidate.py +0 -238
- package/template/skills/skillopt-sleep/scripts/python/cycle.py +0 -291
- package/template/skills/skillopt-sleep/scripts/python/dream.py +0 -138
- package/template/skills/skillopt-sleep/scripts/python/experiments/__init__.py +0 -1
- package/template/skills/skillopt-sleep/scripts/python/experiments/gbrain_bench.py +0 -119
- package/template/skills/skillopt-sleep/scripts/python/experiments/personas.py +0 -86
- package/template/skills/skillopt-sleep/scripts/python/experiments/report.py +0 -132
- package/template/skills/skillopt-sleep/scripts/python/experiments/run_experiment.py +0 -178
- package/template/skills/skillopt-sleep/scripts/python/experiments/run_gbrain.py +0 -209
- package/template/skills/skillopt-sleep/scripts/python/experiments/run_transfer.py +0 -155
- package/template/skills/skillopt-sleep/scripts/python/experiments/sweep.py +0 -164
- package/template/skills/skillopt-sleep/scripts/python/gate.py +0 -50
- package/template/skills/skillopt-sleep/scripts/python/harvest.py +0 -304
- package/template/skills/skillopt-sleep/scripts/python/harvest_codex.py +0 -253
- package/template/skills/skillopt-sleep/scripts/python/harvest_sources.py +0 -41
- package/template/skills/skillopt-sleep/scripts/python/judges.py +0 -84
- package/template/skills/skillopt-sleep/scripts/python/llm_miner.py +0 -134
- package/template/skills/skillopt-sleep/scripts/python/memory.py +0 -129
- package/template/skills/skillopt-sleep/scripts/python/mine.py +0 -312
- package/template/skills/skillopt-sleep/scripts/python/replay.py +0 -146
- package/template/skills/skillopt-sleep/scripts/python/rollout.py +0 -153
- package/template/skills/skillopt-sleep/scripts/python/scheduler.py +0 -138
- package/template/skills/skillopt-sleep/scripts/python/slow_update.py +0 -142
- package/template/skills/skillopt-sleep/scripts/python/staging.py +0 -103
- package/template/skills/skillopt-sleep/scripts/python/state.py +0 -96
- package/template/skills/skillopt-sleep/scripts/python/tasks_file.py +0 -81
- package/template/skills/skillopt-sleep/scripts/python/types.py +0 -146
- package/template/skills/skillopt-sleep/scripts/shell/__init__.py +0 -0
- package/template/skills/skillopt-sleep/scripts/shell/eval_only.py +0 -466
- package/template/skills/skillopt-sleep/scripts/shell/materialize_searchqa.py +0 -148
- package/template/skills/skillopt-sleep/scripts/shell/run_alfworld.sh +0 -60
- package/template/skills/skillopt-sleep/scripts/shell/run_searchqa.sh +0 -40
- package/template/skills/skillopt-sleep/scripts/shell/run_spreadsheetbench.sh +0 -39
- package/template/skills/skillopt-sleep/scripts/shell/train.py +0 -556
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
"""Materialize runnable SearchQA splits from the released ID manifest."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import argparse
|
|
6
|
-
import json
|
|
7
|
-
from collections.abc import Iterable, Mapping
|
|
8
|
-
from pathlib import Path
|
|
9
|
-
|
|
10
|
-
PROJECT_ROOT = Path(__file__).resolve().parent.parent
|
|
11
|
-
SPLITS = ("train", "val", "test")
|
|
12
|
-
REQUIRED_FIELDS = ("question", "context", "answers")
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def parse_args() -> argparse.Namespace:
|
|
16
|
-
parser = argparse.ArgumentParser(description=__doc__)
|
|
17
|
-
parser.add_argument(
|
|
18
|
-
"--manifest-dir",
|
|
19
|
-
type=Path,
|
|
20
|
-
default=PROJECT_ROOT / "data" / "searchqa_id_split",
|
|
21
|
-
help="Directory containing train/val/test ID manifests.",
|
|
22
|
-
)
|
|
23
|
-
parser.add_argument(
|
|
24
|
-
"--output-dir",
|
|
25
|
-
type=Path,
|
|
26
|
-
default=PROJECT_ROOT / "data" / "searchqa_split",
|
|
27
|
-
help="Directory to write runnable train/val/test splits.",
|
|
28
|
-
)
|
|
29
|
-
parser.add_argument(
|
|
30
|
-
"--dataset",
|
|
31
|
-
default="lucadiliello/searchqa",
|
|
32
|
-
help="Hugging Face dataset repository to load.",
|
|
33
|
-
)
|
|
34
|
-
return parser.parse_args()
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def load_manifest_ids(manifest_dir: Path) -> dict[str, list[str]]:
|
|
38
|
-
split_ids = {}
|
|
39
|
-
for split in SPLITS:
|
|
40
|
-
path = manifest_dir / split / "items.json"
|
|
41
|
-
with path.open(encoding="utf-8") as file:
|
|
42
|
-
items = json.load(file)
|
|
43
|
-
split_ids[split] = [str(item["id"]) for item in items]
|
|
44
|
-
return split_ids
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def _iter_dataset_rows(dataset: Mapping[str, Iterable[dict]]) -> Iterable[dict]:
|
|
48
|
-
for source_split in dataset.values():
|
|
49
|
-
yield from source_split
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
def _normalize_row(row: dict) -> dict:
|
|
53
|
-
try:
|
|
54
|
-
key = str(row["key"])
|
|
55
|
-
except KeyError as exc:
|
|
56
|
-
raise ValueError("SearchQA source row is missing required field: key") from exc
|
|
57
|
-
|
|
58
|
-
missing = [field for field in REQUIRED_FIELDS if field not in row]
|
|
59
|
-
if missing:
|
|
60
|
-
raise ValueError(f"SearchQA source row {key!r} is missing required fields: {', '.join(missing)}")
|
|
61
|
-
|
|
62
|
-
return {
|
|
63
|
-
"id": key,
|
|
64
|
-
"question": row["question"],
|
|
65
|
-
"context": row["context"],
|
|
66
|
-
"answers": row["answers"],
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
def materialize_searchqa_splits(
|
|
71
|
-
manifest_dir: Path,
|
|
72
|
-
output_dir: Path,
|
|
73
|
-
dataset: Mapping[str, Iterable[dict]],
|
|
74
|
-
*,
|
|
75
|
-
dataset_name: str,
|
|
76
|
-
) -> dict[str, int]:
|
|
77
|
-
"""Write runnable SearchQA train/val/test splits from a source dataset."""
|
|
78
|
-
manifest_dir = manifest_dir.resolve()
|
|
79
|
-
output_dir = output_dir.resolve()
|
|
80
|
-
split_ids = load_manifest_ids(manifest_dir)
|
|
81
|
-
wanted_ids = {item_id for ids in split_ids.values() for item_id in ids}
|
|
82
|
-
|
|
83
|
-
selected: dict[str, dict] = {}
|
|
84
|
-
duplicate_ids: set[str] = set()
|
|
85
|
-
for row in _iter_dataset_rows(dataset):
|
|
86
|
-
key = str(row.get("key", ""))
|
|
87
|
-
if key not in wanted_ids:
|
|
88
|
-
continue
|
|
89
|
-
if key in selected:
|
|
90
|
-
duplicate_ids.add(key)
|
|
91
|
-
continue
|
|
92
|
-
selected[key] = _normalize_row(row)
|
|
93
|
-
|
|
94
|
-
if duplicate_ids:
|
|
95
|
-
preview = ", ".join(sorted(duplicate_ids)[:5])
|
|
96
|
-
raise ValueError(f"SearchQA source dataset contains duplicate manifest IDs. First IDs: {preview}")
|
|
97
|
-
|
|
98
|
-
missing = sorted(wanted_ids - selected.keys())
|
|
99
|
-
if missing:
|
|
100
|
-
preview = ", ".join(missing[:5])
|
|
101
|
-
raise RuntimeError(f"SearchQA source dataset is missing {len(missing)} manifest IDs. First IDs: {preview}")
|
|
102
|
-
|
|
103
|
-
counts = {}
|
|
104
|
-
for split, ids in split_ids.items():
|
|
105
|
-
items = [selected[item_id] for item_id in ids]
|
|
106
|
-
split_dir = output_dir / split
|
|
107
|
-
split_dir.mkdir(parents=True, exist_ok=True)
|
|
108
|
-
with (split_dir / "items.json").open("w", encoding="utf-8") as file:
|
|
109
|
-
json.dump(items, file, ensure_ascii=False, indent=2)
|
|
110
|
-
counts[split] = len(items)
|
|
111
|
-
|
|
112
|
-
manifest = {
|
|
113
|
-
"source_manifest_dir": str(manifest_dir),
|
|
114
|
-
"source_dataset": dataset_name,
|
|
115
|
-
"counts": counts,
|
|
116
|
-
"item_fields": ["id", *REQUIRED_FIELDS],
|
|
117
|
-
}
|
|
118
|
-
with (output_dir / "split_manifest.json").open("w", encoding="utf-8") as file:
|
|
119
|
-
json.dump(manifest, file, ensure_ascii=False, indent=2)
|
|
120
|
-
|
|
121
|
-
return counts
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
def main() -> None:
|
|
125
|
-
args = parse_args()
|
|
126
|
-
try:
|
|
127
|
-
from datasets import load_dataset
|
|
128
|
-
except ImportError as exc:
|
|
129
|
-
raise SystemExit(
|
|
130
|
-
"Missing dependency 'datasets'. Install it with:\n"
|
|
131
|
-
" python -m pip install 'skillopt[searchqa]'\n"
|
|
132
|
-
"or:\n"
|
|
133
|
-
" python -m pip install datasets"
|
|
134
|
-
) from exc
|
|
135
|
-
|
|
136
|
-
print(f"Loading {args.dataset}...")
|
|
137
|
-
dataset = load_dataset(args.dataset)
|
|
138
|
-
counts = materialize_searchqa_splits(
|
|
139
|
-
args.manifest_dir,
|
|
140
|
-
args.output_dir,
|
|
141
|
-
dataset,
|
|
142
|
-
dataset_name=args.dataset,
|
|
143
|
-
)
|
|
144
|
-
print(f"Wrote SearchQA splits to {args.output_dir.resolve()}: {counts}")
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
if __name__ == "__main__":
|
|
148
|
-
main()
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# ──────────────────────────────────────────────────────────────────────────────
|
|
3
|
-
# SkillOpt — ALFWorld training launch script
|
|
4
|
-
#
|
|
5
|
-
# Prerequisites:
|
|
6
|
-
# pip install -e ".[alfworld]"
|
|
7
|
-
# pip install alfworld[full] && alfworld-download
|
|
8
|
-
#
|
|
9
|
-
# Usage:
|
|
10
|
-
# bash scripts/run_alfworld.sh
|
|
11
|
-
# bash scripts/run_alfworld.sh --num_epochs 2 --edit_budget 6
|
|
12
|
-
# bash scripts/run_alfworld.sh --split_dir /path/to/alfworld_split
|
|
13
|
-
# ──────────────────────────────────────────────────────────────────────────────
|
|
14
|
-
set -euo pipefail
|
|
15
|
-
|
|
16
|
-
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
17
|
-
PROJECT_ROOT="$(dirname "${SCRIPT_DIR}")"
|
|
18
|
-
|
|
19
|
-
export PYTHONPATH="${PROJECT_ROOT}:${PYTHONPATH:-}"
|
|
20
|
-
|
|
21
|
-
# ALFWorld data — uses ~/.cache/alfworld by default
|
|
22
|
-
export ALFWORLD_DATA="${ALFWORLD_DATA:-${HOME}/.cache/alfworld}"
|
|
23
|
-
|
|
24
|
-
if [ ! -d "${ALFWORLD_DATA}/json_2.1.1" ]; then
|
|
25
|
-
echo "ERROR: ALFWorld data not found at ${ALFWORLD_DATA}/json_2.1.1"
|
|
26
|
-
echo ""
|
|
27
|
-
echo "To download ALFWorld data, run:"
|
|
28
|
-
echo " pip install alfworld[full]"
|
|
29
|
-
echo " alfworld-download"
|
|
30
|
-
echo ""
|
|
31
|
-
echo "Or set ALFWORLD_DATA to the directory containing json_2.1.1/"
|
|
32
|
-
exit 1
|
|
33
|
-
fi
|
|
34
|
-
|
|
35
|
-
OPTIMIZER_MODEL="${OPTIMIZER_MODEL:-gpt-5.5}"
|
|
36
|
-
TARGET_MODEL="${TARGET_MODEL:-gpt-5.5}"
|
|
37
|
-
|
|
38
|
-
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
39
|
-
DEFAULT_OUT_ROOT="${PROJECT_ROOT}/outputs/skillopt_alfworld_${TARGET_MODEL}_${TIMESTAMP}"
|
|
40
|
-
|
|
41
|
-
echo "============================================================"
|
|
42
|
-
echo " SkillOpt — ALFWorld Training"
|
|
43
|
-
echo "============================================================"
|
|
44
|
-
echo " Optimizer: ${OPTIMIZER_MODEL}"
|
|
45
|
-
echo " Target: ${TARGET_MODEL}"
|
|
46
|
-
echo " ALFWORLD_DATA: ${ALFWORLD_DATA}"
|
|
47
|
-
echo " Output: ${DEFAULT_OUT_ROOT}"
|
|
48
|
-
echo "============================================================"
|
|
49
|
-
|
|
50
|
-
cd "${PROJECT_ROOT}"
|
|
51
|
-
|
|
52
|
-
python scripts/train.py \
|
|
53
|
-
--config configs/alfworld/default.yaml \
|
|
54
|
-
--optimizer_model "${OPTIMIZER_MODEL}" \
|
|
55
|
-
--target_model "${TARGET_MODEL}" \
|
|
56
|
-
--out_root "${DEFAULT_OUT_ROOT}" \
|
|
57
|
-
"$@"
|
|
58
|
-
|
|
59
|
-
echo ""
|
|
60
|
-
echo "Done! Results saved to: ${DEFAULT_OUT_ROOT}"
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# ──────────────────────────────────────────────────────────────────────────────
|
|
3
|
-
# SkillOpt — SearchQA training launch script
|
|
4
|
-
#
|
|
5
|
-
# Usage:
|
|
6
|
-
# bash scripts/run_searchqa.sh
|
|
7
|
-
# bash scripts/run_searchqa.sh --num_epochs 2 --edit_budget 6
|
|
8
|
-
# bash scripts/run_searchqa.sh --split_dir /path/to/searchqa_split
|
|
9
|
-
# ──────────────────────────────────────────────────────────────────────────────
|
|
10
|
-
set -euo pipefail
|
|
11
|
-
|
|
12
|
-
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
13
|
-
PROJECT_ROOT="$(dirname "${SCRIPT_DIR}")"
|
|
14
|
-
|
|
15
|
-
export PYTHONPATH="${PROJECT_ROOT}:${PYTHONPATH:-}"
|
|
16
|
-
|
|
17
|
-
OPTIMIZER_MODEL="${OPTIMIZER_MODEL:-gpt-5.5}"
|
|
18
|
-
TARGET_MODEL="${TARGET_MODEL:-gpt-5.5}"
|
|
19
|
-
|
|
20
|
-
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
21
|
-
DEFAULT_OUT_ROOT="${PROJECT_ROOT}/outputs/skillopt_searchqa_${TARGET_MODEL}_${TIMESTAMP}"
|
|
22
|
-
|
|
23
|
-
echo "============================================================"
|
|
24
|
-
echo " SkillOpt — SearchQA Training"
|
|
25
|
-
echo "============================================================"
|
|
26
|
-
echo " Optimizer: ${OPTIMIZER_MODEL}"
|
|
27
|
-
echo " Target: ${TARGET_MODEL}"
|
|
28
|
-
echo "============================================================"
|
|
29
|
-
|
|
30
|
-
cd "${PROJECT_ROOT}"
|
|
31
|
-
|
|
32
|
-
python scripts/train.py \
|
|
33
|
-
--config configs/searchqa/default.yaml \
|
|
34
|
-
--optimizer_model "${OPTIMIZER_MODEL}" \
|
|
35
|
-
--target_model "${TARGET_MODEL}" \
|
|
36
|
-
--out_root "${DEFAULT_OUT_ROOT}" \
|
|
37
|
-
"$@"
|
|
38
|
-
|
|
39
|
-
echo ""
|
|
40
|
-
echo "Done! Results saved to: ${DEFAULT_OUT_ROOT}"
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# ──────────────────────────────────────────────────────────────────────────────
|
|
3
|
-
# SkillOpt — SpreadsheetBench training launch script
|
|
4
|
-
#
|
|
5
|
-
# Usage:
|
|
6
|
-
# bash scripts/run_spreadsheetbench.sh --split_dir /path/to/split --data_root /path/to/data
|
|
7
|
-
# bash scripts/run_spreadsheetbench.sh --num_epochs 2 --edit_budget 6
|
|
8
|
-
# ──────────────────────────────────────────────────────────────────────────────
|
|
9
|
-
set -euo pipefail
|
|
10
|
-
|
|
11
|
-
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
12
|
-
PROJECT_ROOT="$(dirname "${SCRIPT_DIR}")"
|
|
13
|
-
|
|
14
|
-
export PYTHONPATH="${PROJECT_ROOT}:${PYTHONPATH:-}"
|
|
15
|
-
|
|
16
|
-
OPTIMIZER_MODEL="${OPTIMIZER_MODEL:-gpt-5.5}"
|
|
17
|
-
TARGET_MODEL="${TARGET_MODEL:-gpt-5.5}"
|
|
18
|
-
|
|
19
|
-
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
20
|
-
DEFAULT_OUT_ROOT="${PROJECT_ROOT}/outputs/skillopt_spreadsheetbench_${TARGET_MODEL}_${TIMESTAMP}"
|
|
21
|
-
|
|
22
|
-
echo "============================================================"
|
|
23
|
-
echo " SkillOpt — SpreadsheetBench Training"
|
|
24
|
-
echo "============================================================"
|
|
25
|
-
echo " Optimizer: ${OPTIMIZER_MODEL}"
|
|
26
|
-
echo " Target: ${TARGET_MODEL}"
|
|
27
|
-
echo "============================================================"
|
|
28
|
-
|
|
29
|
-
cd "${PROJECT_ROOT}"
|
|
30
|
-
|
|
31
|
-
python scripts/train.py \
|
|
32
|
-
--config configs/spreadsheetbench/default.yaml \
|
|
33
|
-
--optimizer_model "${OPTIMIZER_MODEL}" \
|
|
34
|
-
--target_model "${TARGET_MODEL}" \
|
|
35
|
-
--out_root "${DEFAULT_OUT_ROOT}" \
|
|
36
|
-
"$@"
|
|
37
|
-
|
|
38
|
-
echo ""
|
|
39
|
-
echo "Done! Results saved to: ${DEFAULT_OUT_ROOT}"
|