oclaw/tests/test_session_auto_title.py
oliver 9f4fa3d319 fix(chat): harden session auto-title and keep a single no-tool LLM call
- Add session_auto_title prompts, finalize_auto_title (reject prose, truncate, fallback).
- Third-round naming: one model.chat(system, user) with empty tools; reuse executor.model.
- Extend worker title tests for garbage model output.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-06 15:19:22 +08:00

27 lines
1,019 B
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from __future__ import annotations
from oclaw.runtime.session_auto_title import AUTO_TITLE_CHAR_MAX, finalize_auto_title, should_reject_auto_title
def test_should_reject_long_prose() -> None:
blob = "您好!我是 Claude Code,一个软件工程助手。" + "x" * 80
assert should_reject_auto_title(blob) is True
def test_should_reject_claude_code_intro() -> None:
assert should_reject_auto_title("Hello! I am Claude Code, a software engineering assistant.") is True
def test_should_accept_short_title() -> None:
assert should_reject_auto_title("告警查询配置") is False
def test_finalize_truncates_fallback() -> None:
long_fb = "一二三四五六七八九十11121314151617181920"
out = finalize_auto_title(raw="x" * 100, fallback=long_fb)
assert len(out) == AUTO_TITLE_CHAR_MAX
assert out == long_fb[:AUTO_TITLE_CHAR_MAX]
def test_finalize_uses_model_when_sane() -> None:
assert finalize_auto_title(raw=" 网管同步 ", fallback="fallback") == "网管同步"