每步延迟: 深度/云库秒回时保证行棋节奏(计入 thinking_time); 油猴 v1.7.0, bot 加 --move-delay

This commit is contained in:
AwesomeXiangQi committed 2026-09-13 14:36:30 +08:00
1 parent 1ed6a176cb
commit adf3abb5fc
2 files changed
+39 -4

No files matched your search

+11
View File
@@ -50,6 +50,7 @@ class OnlineBot:
self.thinking = False
self.game_over = False
self.first_deadline = None
self.last_move_at = 0.0
self._ack = 0
self._send_lock = asyncio.Lock()
@@ -199,6 +200,14 @@ class OnlineBot:
fen = fen_from_moves(self.moves)
t0 = asyncio.get_event_loop().time()
# 每步最小间隔(深度/云库秒回时保持节奏)
if self.args.move_delay:
gap = self.args.move_delay - (t0 - self.last_move_at)
if gap > 0:
log.info('[game] 行棋节奏延迟 %.1fs', gap)
await asyncio.sleep(gap)
if self.game_over or not self.is_my_turn():
return
mv = score = None
source = 'engine'
@@ -215,6 +224,7 @@ class OnlineBot:
site_mv = ucci_to_site(mv)
self.moves.append(mv)
self.last_move_at = asyncio.get_event_loop().time()
think_ms = int((asyncio.get_event_loop().time() - t0) * 1000)
log.info('[game] %s: %s → %s %s %dms', source, mv, site_mv, score, think_ms)
self.emit('g_v2.move', {'game_id': self.game_id, 'move': site_mv,
@@ -244,6 +254,7 @@ def main():
p.add_argument('--hash', type=int, default=256, help='哈希表 MB')
p.add_argument('--config', default='10/2', help='匹配时制 总分钟/加秒')
p.add_argument('--first-delay', type=int, default=0, help='红方首步延迟秒(实际=此值+5)')
p.add_argument('--move-delay', type=float, default=1.0, help='每步最小间隔秒(深度/云库秒回时保持节奏)')
p.add_argument('--cloud-min-score', type=int, default=15, help='云库采纳阈值(厘兵)')
p.add_argument('--no-cloud', action='store_true', help='禁用云库')
args = p.parse_args()