feat(app): 移除内置agents并添加CORS支持和技能上传优化
移除了agents/registry.json中的所有内置agents配置,将agents数组清空。 为web应用添加了CORS中间件支持,允许指定的前端地址跨域访问。 重构了技能上传功能,增加了LLM重写机制,自动规范化上传的技能格式。 新增了工具名称提取逻辑,从技能正文中自动识别Required Tools段落。 更新了技能学习候选者和草稿的载荷结构,添加评估报告统计信息。 修改了意图路由技能的说明,改进任务状态管理逻辑。
This commit is contained in:
@ -102,6 +102,58 @@ tools:
|
||||
assert [spec.name for spec in selected] == ["memory", "terminal", "search_files"]
|
||||
|
||||
|
||||
def test_tool_assembler_uses_required_tools_section_when_frontmatter_omits_tools(tmp_path: Path) -> None:
|
||||
skill_dir = tmp_path / "skills" / "docker-debug"
|
||||
skill_dir.mkdir(parents=True)
|
||||
(skill_dir / "SKILL.md").write_text(
|
||||
"""---
|
||||
name: docker-debug
|
||||
description: Debug Docker issues.
|
||||
---
|
||||
|
||||
# Docker Debug
|
||||
|
||||
## Overview
|
||||
|
||||
Debug Docker issues.
|
||||
|
||||
## Required Tools
|
||||
|
||||
- `terminal`
|
||||
- `search_files`
|
||||
|
||||
## Workflow
|
||||
|
||||
Inspect logs and search related files.
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
registry = ToolRegistry()
|
||||
registry.register(DummyTool("memory", toolset="memory", always_available=True))
|
||||
registry.register(DummyTool("terminal", toolset="shell"))
|
||||
registry.register(DummyTool("search_files", toolset="file"))
|
||||
registry.register(DummyTool("echo", toolset="debug"))
|
||||
|
||||
assembler = ToolAssembler(retriever=StaticRetriever())
|
||||
loader = SkillsLoader(tmp_path)
|
||||
record = loader.get_skill_record("docker-debug")
|
||||
assert record is not None
|
||||
assert record.tool_hints == ["terminal", "search_files"]
|
||||
|
||||
selected = asyncio.run(
|
||||
assembler.assemble(
|
||||
task_description="排查 Docker 容器日志",
|
||||
registry=registry,
|
||||
skills_loader=loader,
|
||||
activated_skills=[SkillContext(name="docker-debug", content="", tool_hints=record.tool_hints)],
|
||||
top_k=1,
|
||||
)
|
||||
)
|
||||
|
||||
assert [spec.name for spec in selected] == ["memory", "terminal", "search_files", "echo"]
|
||||
|
||||
|
||||
def test_embedding_fallback_can_return_all_or_top_k() -> None:
|
||||
candidates = [{"name": f"tool_{index}", "description": "", "input_schema": "{}"} for index in range(3)]
|
||||
retriever = EmbeddingRetriever(api_key_env="MISSING_EMBEDDING_KEY", api_base_env="MISSING_EMBEDDING_BASE")
|
||||
|
||||
Reference in New Issue
Block a user