Reject reasoning text in session titles
This commit is contained in:
@@ -22,6 +22,7 @@ from backend.api.server import (
|
||||
AgentState,
|
||||
create_app,
|
||||
_bash_bg_manager,
|
||||
_clean_session_title,
|
||||
_derive_initial_session_title,
|
||||
_ensure_session_title,
|
||||
_generate_session_title,
|
||||
@@ -860,6 +861,35 @@ class GuiServerTests(unittest.TestCase):
|
||||
|
||||
self.assertIsNone(_read_session_title(directory, session_id))
|
||||
|
||||
def test_invalid_llm_title_is_not_preserved_as_previous_title(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
root = Path(d)
|
||||
_, state = _build_client(root)
|
||||
session_id = 'invalid-llm-title'
|
||||
directory = state.account_paths('alice')['sessions']
|
||||
agent = state.agent_for('alice', session_id)
|
||||
|
||||
_save_in_progress_session(
|
||||
directory=directory,
|
||||
agent=agent,
|
||||
session_id=session_id,
|
||||
prompt='帮我生成一批地图导航测试数据。',
|
||||
)
|
||||
stored = load_agent_session(session_id, directory=directory)
|
||||
save_agent_session(
|
||||
replace(
|
||||
stored,
|
||||
session_metadata={
|
||||
**(stored.session_metadata or {}),
|
||||
'title': '<think>**Generating short title',
|
||||
'title_source': 'llm',
|
||||
},
|
||||
),
|
||||
directory=directory,
|
||||
)
|
||||
|
||||
self.assertIsNone(_read_session_title(directory, session_id))
|
||||
|
||||
def test_session_title_refines_first_message_title_after_run(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
root = Path(d)
|
||||
@@ -960,6 +990,20 @@ class GuiServerTests(unittest.TestCase):
|
||||
self.assertEqual(config.base_url, 'http://model.mify.ai.srv/v1')
|
||||
client.complete.assert_called_once()
|
||||
|
||||
def test_clean_session_title_rejects_reasoning_leak(self) -> None:
|
||||
self.assertIsNone(_clean_session_title('<think>**Generating short title'))
|
||||
self.assertIsNone(
|
||||
_clean_session_title(
|
||||
'<think>reasoning</think>\nGenerating short Chinese title'
|
||||
)
|
||||
)
|
||||
|
||||
def test_clean_session_title_strips_markdown_and_prefix(self) -> None:
|
||||
self.assertEqual(
|
||||
_clean_session_title('**标题:地图导航测试数据。**'),
|
||||
'地图导航测试数据',
|
||||
)
|
||||
|
||||
def test_clear_runtime_state(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
client, _ = _build_client(Path(d))
|
||||
|
||||
Reference in New Issue
Block a user