This commit is contained in:
G30 2026-10-05 13:46:10 -04:00 • committed by GitHub
commit 83c2440a81
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 5 deletions

View file

@ -2749,7 +2749,11 @@ async def process_chat_payload(request, form_data, user, metadata, model):
if note_files:
files = [*(files or []), *note_files]
if skill_ids or use_builtin_tools:
use_skill_tools = use_builtin_tools and (model.get('info', {}).get('meta', {}).get('builtinTools') or {}).get(
'skills', True
)
if skill_ids or use_skill_tools:
from open_webui.models.skills import Skills as SkillsModel
from open_webui.utils.terminals import (
format_terminal_skill_context,
@ -2762,7 +2766,7 @@ async def process_chat_payload(request, form_data, user, metadata, model):
db_skill_ids = [sid for sid in skill_ids if not sid.startswith(terminal_skill_prefix)]
terminal_skill_ids = [sid for sid in skill_ids if sid.startswith(terminal_skill_prefix)]
if use_builtin_tools:
if use_skill_tools:
accessible_skills = {s.id: s for s in await SkillsModel.get_skills(user_id=user.id)}
db_skill_ids = sorted(accessible_skills)
else:
@ -2775,7 +2779,7 @@ async def process_chat_payload(request, form_data, user, metadata, model):
skill_manifest = ''
for skill in available_skills:
if skill.id in mentioned_skill_ids or not use_builtin_tools:
if skill.id in mentioned_skill_ids or not use_skill_tools:
form_data['messages'] = add_or_update_system_message(
f'<skill name="{skill.name}">\n{skill.content}\n</skill>',
form_data['messages'],
@ -2796,7 +2800,7 @@ async def process_chat_payload(request, form_data, user, metadata, model):
listed_terminal_skills = listed if isinstance(listed, list) else []
if terminal_id and use_builtin_tools:
if terminal_id and use_skill_tools:
terminal_skills = listed_terminal_skills
elif terminal_skill_ids:
terminal_skill_map = {skill['id']: skill for skill in listed_terminal_skills}
@ -2804,7 +2808,7 @@ async def process_chat_payload(request, form_data, user, metadata, model):
for skill in terminal_skills:
sid = skill['id']
if sid in mentioned_skill_ids or not use_builtin_tools:
if sid in mentioned_skill_ids or not use_skill_tools:
skill_name = unquote(sid.removeprefix(terminal_skill_prefix))
loaded = await get_terminal_skill(request, user.model_dump(), metadata, skill_name, extra_params)
if loaded:

View file

@ -73,6 +73,10 @@
subagents: {
label: $i18n.t('settings.admin.models.builtinTools.subagents.label'),
description: $i18n.t('settings.admin.models.builtinTools.subagents.description')
},
skills: {
label: $i18n.t('settings.admin.models.builtinTools.skills.label'),
description: $i18n.t('settings.admin.models.builtinTools.skills.description')
}
};

View file

@ -2616,6 +2616,8 @@
"settings.admin.models.builtinTools.notes.label": "Notes",
"settings.admin.models.builtinTools.notifications.description": "Send notifications to configured webhook targets",
"settings.admin.models.builtinTools.notifications.label": "Notifications",
"settings.admin.models.builtinTools.skills.description": "Find and load skill instructions on demand",
"settings.admin.models.builtinTools.skills.label": "Skills",
"settings.admin.models.builtinTools.subagents.description": "Delegate focused work to parallel sub-agents",
"settings.admin.models.builtinTools.subagents.label": "Sub-agents",
"settings.admin.models.builtinTools.tasks.description": "Break down complex requests into trackable steps",