Skip to content

Commit 3a18582

Browse files
committed
1 回の巡回で AI を叩く回数を 6 までにする
区画ごとに AI を 1 回呼ぶので、1 回に見る区画の上限がそのまま「1 回の取り込みで AI を何回叩くか」になる。20 では長すぎた。 1 回が長いほど、途中で起きたことを取り返せない。本番で 7 区画の回が 29 分かかり、 その途中で相手の枠が閉まって、集めたぶんがまるごと消えた。 一周の目安より天井を優先する。目安の日数を超えても回り続けるほうが、 1 回に賭けるより確実に進む。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 14db3e8 commit 3a18582

3 files changed

Lines changed: 24 additions & 7 deletions

File tree

CLAUDE.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -410,8 +410,12 @@ GeoNames 全世界地名辞典 = `geonames`(いずれも 348 言語版・195 か
410410
巡回を消したらその記録も台帳から落とす
411411
- **予定を持っていない巡回はいますぐ走る**(`Sweep.is_due`)。足したばかりの巡回が
412412
それで、「いま」を取り直して比べると必ず未来になり、永遠に走らない
413-
- **区画ごとに AI を 1 回ずつ呼ぶ**(`MAX_PARTITIONS_PER_RUN` で頭打ち)。
414-
まとめて 1 回で聞くと、`{current}` がその区画のぶんだけになる意味が消える
413+
- **区画ごとに AI を 1 回ずつ呼ぶ**(`MAX_PARTITIONS_PER_RUN` で頭打ち。いまは 6)。
414+
まとめて 1 回で聞くと、`{current}` がその区画のぶんだけになる意味が消える。
415+
**一周の目安より天井を優先する** —— 1 回が長いほど、途中で起きたこと
416+
(相手の枠が閉まる、取り込みが詰まる)を取り返せない。本番で 7 区画の回が
417+
29 分かかり、その途中で枠が閉まって集めたぶんがまるごと消えた。
418+
目安の日数を超えても回り続けるほうが、1 回に賭けるより確実に進む
415419
- **どの巡回を起こしたかは `pending_sweep` に控える** —— 取り込みは収集の名前しか
416420
運べない(`GET /v1/collect/fetch?source=…`)ので、素材を作る側がそこを読む
417421
- **誰に頼むかを、名前で外へ出せる**(`app/workers.py` / `Sweep.worker` /

app/collect.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,15 @@
119119
MAX_BEFORE_BODY_CHARS = 4000
120120

121121
# 1 回で見る区画の上限。**区画ごとに AI を 1 回呼ぶ**(素材をその区画のぶんに
122-
# 絞るのが区画の意味なので、まとめて聞くと絞った意味が消える)ため、
123-
# 1 回の取り込みが何十分にもならないようにここで止める
124-
MAX_PARTITIONS_PER_RUN = 20
122+
# 絞るのが区画の意味なので、まとめて聞くと絞った意味が消える)ため、ここが
123+
# そのまま「1 回の取り込みで AI を何回叩くか」になる。
124+
#
125+
# **6 に抑える。** 1 回が長いほど、途中で起きたことを取り返せない ——
126+
# 本番で 7 区画の回が 29 分かかり、その途中で相手の枠が閉まって、
127+
# 集めたぶんがまるごと消えた(いまは区画ごとに振り替えるが、長い回はそれでも
128+
# 枠を読み違える幅が大きい)。**一周の目安より、こちらを優先する** ——
129+
# 目安の日数を超えても回り続けるほうが、1 回に賭けるより確実に進む
130+
MAX_PARTITIONS_PER_RUN = 6
125131

126132
# 割り込み(`Focus`)で名指しできる見出しの数。**名指しは訂正のためのもの**なので、
127133
# 数十件も並べるなら区画を指すほうが早い

tests/test_collect.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -484,15 +484,22 @@ def test_covering_in_a_week_decides_how_many_to_take(self, sample):
484484
# 6 時間ごと・7 日で一周 = 28 回。4 区画なら 1 回 1 区画で足りる
485485
assert rough.per_run(4) == 1
486486
# 区画が増えれば 1 回あたりも増える(手で追いかけなくてよい)
487-
assert rough.per_run(280) == 10
487+
assert rough.per_run(112) == 4
488488
# 直に書いてあればそちらが勝つ
489489
assert deep.per_run(280) == 1
490490

491491
def test_one_run_never_eats_everything(self, sample):
492-
"""区画ごとに AI を 1 回呼ぶので、1 回の取り込みが何十分にもならないように。"""
492+
"""区画ごとに AI を 1 回呼ぶので、ここがそのまま「1 回で AI を何回叩くか」。
493+
494+
**一周の目安より天井を優先する。** 1 回が長いほど、途中で起きたこと
495+
(相手の枠が閉まる、取り込みが詰まる)を取り返せない —— 目安の日数を
496+
超えても回り続けるほうが、1 回に賭けるより確実に進む。
497+
"""
493498
self._two_sweeps()
494499
rough = collect.sweeps_of(collect.get("news"))[0]
500+
# 一周が 7 日で終わらない数でも、天井は崩さない
495501
assert rough.per_run(100_000) == collect.MAX_PARTITIONS_PER_RUN
502+
assert collect.MAX_PARTITIONS_PER_RUN == 6
496503

497504
def test_each_sweep_keeps_its_own_progress(self, sample):
498505
"""ざっとが一周した区画を、じっくりはまだ見ていない、が普通に起きる。"""

0 commit comments

Comments
 (0)