feat: default task dependencies to temporary

This commit is contained in:
Mikei386
2026-08-24 15:18:07 +02:00
parent 7978a4ee56
commit 457a311db2
5 changed files with 36 additions and 4 deletions
+8
View File
@@ -52,6 +52,14 @@ still requires current-state inspection, bounded output, verification, versioned
source and recovery documentation. Preserve unrelated user changes and dirty source and recovery documentation. Preserve unrelated user changes and dirty
worktrees. worktrees.
Treat dependencies as transient by default. If the user asks to use, run, test
or try a program, first use an existing executable. If it is unavailable,
obtain only a task-local copy under `/tmp` or the tool's temporary workspace,
use it for the current request, verify the result and remove it afterwards.
Install packages, services, containers or configuration persistently only when
the current request explicitly asks to install, set up or keep them permanently.
When persistence intent is ambiguous, choose the transient path and report it.
For GitHub implementation details, README files, source trees, API routes and For GitHub implementation details, README files, source trees, API routes and
code search, use the official read-only GitHub Repository MCP. Use general web code search, use the official read-only GitHub Repository MCP. Use general web
search for broader public research. Avoid repeated synonymous tool calls and search for broader public research. Avoid repeated synonymous tool calls and
+2
View File
@@ -307,6 +307,8 @@ class AutoToolSelectorTests(unittest.IsolatedAsyncioTestCase):
self.assertIn("direct MUA management or shell tool", result["messages"][0]["content"]) self.assertIn("direct MUA management or shell tool", result["messages"][0]["content"])
self.assertIn("Do not ask the user to enable another tool", result["messages"][0]["content"]) self.assertIn("Do not ask the user to enable another tool", result["messages"][0]["content"])
self.assertIn("start-status-result pattern", result["messages"][0]["content"]) self.assertIn("start-status-result pattern", result["messages"][0]["content"])
self.assertIn("transient-by-default dependency handling", result["messages"][0]["content"])
self.assertIn("task-local copy under /tmp", result["messages"][0]["content"])
self.assertTrue(result["metadata"]["mikeai_long_operator_task"]) self.assertTrue(result["metadata"]["mikeai_long_operator_task"])
async def test_generic_remote_host_file_operation_gets_operator(self): async def test_generic_remote_host_file_operation_gets_operator(self):
+15
View File
@@ -54,6 +54,21 @@ ein höheres, aber weiterhin endliches Ausführungsbudget: 64 Aufrufe insgesamt
und 24 je Werkzeug. Normale Recherche bleibt bei 40 beziehungsweise 12. Das und 24 je Werkzeug. Normale Recherche bleibt bei 40 beziehungsweise 12. Das
ist keine Sonderregel für YouTube, ffmpeg, MUA oder einen bestimmten Server. ist keine Sonderregel für YouTube, ffmpeg, MUA oder einen bestimmten Server.
## Lebensdauer von Hilfsprogrammen
Die Absicht des Benutzers bestimmt die Lebensdauer einer Abhängigkeit:
- **nutzen, ausführen, testen, ausprobieren:** zuerst ein vorhandenes Programm
verwenden; fehlt es, nur eine auftragsbezogene Kopie unter `/tmp` oder im
temporären Arbeitsbereich ablegen und nach der Verifikation entfernen;
- **installieren, einrichten, dauerhaft bereitstellen:** reproduzierbar und
persistent über die versionierte Plattformkonfiguration installieren;
- **unklare Formulierung:** flüchtig bleiben und im Ergebnis offen angeben,
was temporär verwendet wurde.
Diese Regel gilt für alle Clients und Zielsysteme. Sie ist nicht auf FFmpeg,
Downloads oder Unraid beschränkt.
## Community-Bezug ## Community-Bezug
Das folgt dem MCP-Modell: Ein Client verbindet einen vertrauenswürdigen Das folgt dem MCP-Modell: Ein Client verbindet einen vertrauenswürdigen
+2 -2
View File
@@ -205,7 +205,7 @@ ein Download, Transcode oder vergleichbarer Auftrag weder Open WebUI noch Hermes
oder Pi bis zum Prozessende. Die drei Werkzeuge erben dieselbe ausdrücklich oder Pi bis zum Prozessende. Die drei Werkzeuge erben dieselbe ausdrücklich
erteilte Berechtigung wie die uneingeschränkte Shell. erteilte Berechtigung wie die uneingeschränkte Shell.
Auto Tool Selector 4.5 kennzeichnet allgemeine lange Operator-Aufgaben Auto Tool Selector 4.6 kennzeichnet allgemeine lange Operator-Aufgaben
produktunabhängig. Der OpenWebUI-Agentenloop stellt dafür bis zu 64 produktunabhängig. Der OpenWebUI-Agentenloop stellt dafür bis zu 64
Werkzeugausführungen insgesamt und 24 je Werkzeug bereit; normale Aufgaben Werkzeugausführungen insgesamt und 24 je Werkzeug bereit; normale Aufgaben
bleiben bei 40/12. Zusätzlich verlangt der Systemhinweis das generische bleiben bei 40/12. Zusätzlich verlangt der Systemhinweis das generische
@@ -254,7 +254,7 @@ Angebote und sortierte Notebook, Zubehör sowie ein Ersatzteilgerät aus. Das
belegt sowohl die technische Grenze als auch eine brauchbare Synthese; ein belegt sowohl die technische Grenze als auch eine brauchbare Synthese; ein
eBay-spezifischer MCP war nicht erforderlich. eBay-spezifischer MCP war nicht erforderlich.
Auto Tool Selector 4.5 erkennt zusätzlich allgemeine operative Arbeit über Auto Tool Selector 4.6 erkennt zusätzlich allgemeine operative Arbeit über
Fähigkeitsklassen: Eine ausdrückliche Ausführungs- oder Änderungsabsicht in Fähigkeitsklassen: Eine ausdrückliche Ausführungs- oder Änderungsabsicht in
Verbindung mit Host, Dateisystem, Kommando, Dienst, Pfad oder typischen Verbindung mit Host, Dateisystem, Kommando, Dienst, Pfad oder typischen
Kommandozeilenwerkzeugen stellt den Athena Operator bereit. Dadurch benötigen Kommandozeilenwerkzeugen stellt den Athena Operator bereit. Dadurch benötigen
@@ -1,7 +1,7 @@
""" """
title: MikeAI Auto Tool Selector title: MikeAI Auto Tool Selector
author: MikeAI author: MikeAI
version: 4.5.0 version: 4.6.0
description: Keeps broad web access available and adds relevant portable MCP domains without acting as a gate. description: Keeps broad web access available and adds relevant portable MCP domains without acting as a gate.
""" """
@@ -169,7 +169,14 @@ class Filter:
"A missing, disabled or failed specialist tool is not evidence that a service " "A missing, disabled or failed specialist tool is not evidence that a service "
"does not exist. Use an available broad capability such as native web search or " "does not exist. Use an available broad capability such as native web search or "
"the Athena Operator terminal when it can answer the unresolved question. Never " "the Athena Operator terminal when it can answer the unresolved question. Never "
"duplicate an existing backend; integrate or relay it and report any remaining gap." "duplicate an existing backend; integrate or relay it and report any remaining gap. "
"Apply transient-by-default dependency handling: when the user asks to use, run, "
"test or try a program, first use an existing executable; if it is missing, obtain "
"only a task-local copy under /tmp (or the target tool's temporary workspace), use "
"it for this request and remove it after verification. Persist packages, services, "
"containers or configuration only when the current request explicitly says install, "
"set up, configure permanently or otherwise clearly requests persistence. If the "
"wording is ambiguous, keep the dependency transient and state what was done."
) )
if "unraid" in selected and "unraid_admin" in selected and "operator" in selected: if "unraid" in selected and "unraid_admin" in selected and "operator" in selected:
rule += ( rule += (