skillopt-sleep: harvest checkpoint is keyed by project, so a second --source in the same project skips its unseen sessions
メンテナーはふだん 2 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
Read cycle.py and the state methods last_harvest_for and set_last_harvest, then trace how the selected transcript source reaches the harvest call. The issue names both checkpoint write branches: the no-tasks branch and the normal end of a stateful run. Update checkpoint handling so each source retains its own cursor while existing state can still be read; reproduce with the mock backend and confirm the second codex dry-run finds its previously unseen sessions.
索引モデルが issue の本文から書いたものです。
説明
What happens
skillopt-sleep run stores one harvest checkpoint per project, whatever --source the run used. cycle.py reads state.last_harvest_for(project) before harvesting and calls state.set_last_harvest(project, started) after every stateful run (both the no-tasks branch and the normal end). So when one project is fed from several transcript sources, one night per source, every source after the first only sees sessions newer than the first run's start: its older, never-harvested sessions are skipped for good. Each source is a separate store with its own timestamps, so a single shared cursor cannot be right for all of them.
Repro (mock backend, isolated state, no model calls)
Version: main at 343db229dbd5ddaf9df6b1d5540d8bcdb2604d5c, installed with uv tool install "skillopt @ git+https://github.com/microsoft/SkillOpt", Python 3.14, macOS. --claude-home points the state at a scratch dir; P is an empty scratch project.
T=$(mktemp -d); mkdir -p $T/.claude $T/proj
common="--project $T/proj --scope all --backend mock --claude-home $T/.claude --progress"
skillopt-sleep dry-run $common --source codex # harvest done: sessions=60
skillopt-sleep run $common --source cursor # stateful; sets last_harvest[$T/proj]
skillopt-sleep dry-run $common --source codex # harvest done: sessions=0
(Our Codex sessions are CLI rollouts, so we pass --codex-home pointing at a dir whose archived_sessions/ symlinks ~/.codex/sessions/**/rollout-*.jsonl; see #282.)
The second codex dry-run harvests nothing although no codex session was ever harvested: it inherited the cursor run's checkpoint.
Expected
Each source keeps its own checkpoint.
Suggested fix
Key last_harvest by f"{project}::{transcript_source}" and fall back to the bare project key when reading existing state, or accept several --source values in one run so one checkpoint covers them together.
Workaround we use
A wrapper keeps one cursor per source in its own file and writes it into state.json before each per-source run.
- 主要言語
- Python
- スター
- 18.2k
- フォーク
- 1.7k
- 平均マージ
- 4日 1時間
- マージ済み PR(30日)
- 10
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
microsoft/SkillOpt のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
メンテナーはふだん 2 日以内に返信
-
Clarification on Rollout Timeouts, Inference Concurrency, and Their Impact on SkillOpt Evaluationオープン
難易度 4/5 3〜5日 初心者へのやさしさ 12/100
メンテナーはふだん 2 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 32/100
メンテナーはふだん 2 日以内に返信
-
skillopt-sleep: max_tokens_per_night is defaulted and documented but never enforced対応中かも @Thanatos9404 が今日担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
メンテナーはふだん 2 日以内に返信
-
Same unconfined `predictions/<item_id>` path pattern remains in four benchmark rollouts対応中かも @adongwanai が 7 日前に担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 72/100
メンテナーはふだん 2 日以内に返信
microsoft/SkillOpt の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
WingedGuardian/GENesis-AGI#3375 ·
メンテナーはふだん 1 日以内に返信
-
curriculum documentation quality
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
githubnext/gh-aw-workshop#4601 ·
メンテナーはふだん 1 日以内に返信
-
approved Good First Issue scope: docs
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
hiero-ledger/hiero-sdk-python#2730 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信