Improve data skill routing and tool organization

This commit is contained in:
武阳
2026-05-06 21:46:09 +08:00
parent 4d3981cccd
commit 1aafc0fce7
16 changed files with 1342 additions and 955 deletions
+17 -5
View File
@@ -144,6 +144,17 @@ class AgentRuntimeTests(unittest.TestCase):
self.assertEqual(child_model.model, 'child-model')
self.assertEqual(sorted(child_tools), ['grep_search', 'read_file'])
def test_builtin_child_model_alias_inherits_non_claude_parent_model(self) -> None:
agent = LocalCodingAgent(
model_config=ModelConfig(model='xiaomi/mimo-v2.5-pro'),
runtime_config=AgentRuntimeConfig(cwd=Path.cwd()),
)
agent_def = agent._resolve_agent_definition({'subagent_type': 'Explore'})
child_model = agent._resolve_child_model_config({}, agent_def)
self.assertEqual(agent_def.model, 'haiku')
self.assertEqual(child_model.model, 'xiaomi/mimo-v2.5-pro')
def test_openai_client_parses_tool_calls(self) -> None:
responses = [
{
@@ -322,9 +333,9 @@ class AgentRuntimeTests(unittest.TestCase):
self.assertEqual(result.stop_reason, 'user_review_required')
self.assertEqual(result.tool_calls, 1)
self.assertIn('本轮已暂停', result.final_output)
self.assertIn('先确认边界', result.final_output)
self.assertIn('goal_id', result.final_output)
self.assertIn('计划提示', result.final_output)
self.assertIn('下一步', result.final_output)
self.assertIn('建议先生成 10 条单轮', result.final_output)
review_messages = [
entry
@@ -333,7 +344,7 @@ class AgentRuntimeTests(unittest.TestCase):
and entry.get('stop_reason') == 'user_review_required'
]
self.assertEqual(len(review_messages), 1)
self.assertIn('数据生成目标', str(review_messages[0].get('content', '')))
self.assertIn('生成目标', str(review_messages[0].get('content', '')))
self.assertTrue(
any(event.get('type') == 'user_review_required' for event in result.events)
)
@@ -416,8 +427,9 @@ class AgentRuntimeTests(unittest.TestCase):
result = agent.run('Prepare data generation plan')
self.assertEqual(result.stop_reason, 'user_review_required')
self.assertIn('据生成计划', result.final_output)
self.assertIn('只补充生成参', result.final_output)
self.assertIn('plan_id', result.final_output)
self.assertNotIn('target_definitions', result.final_output)
review_messages = [
entry
for entry in result.transcript
@@ -425,7 +437,7 @@ class AgentRuntimeTests(unittest.TestCase):
and entry.get('stop_reason') == 'user_review_required'
]
self.assertEqual(len(review_messages), 1)
self.assertIn('据生成计划', str(review_messages[0].get('content', '')))
self.assertIn('生成参', str(review_messages[0].get('content', '')))
def test_write_tool_is_blocked_without_permission(self) -> None:
with tempfile.TemporaryDirectory() as tmp_dir: