diff --git a/Plugin/unraid/Tools/ai_chat_worker.php b/Plugin/unraid/Tools/ai_chat_worker.php index 7587e62..4097bd5 100644 --- a/Plugin/unraid/Tools/ai_chat_worker.php +++ b/Plugin/unraid/Tools/ai_chat_worker.php @@ -228,6 +228,11 @@ $tRetrieve = 0.0; // machine has become a varaverk one, which does not hold web_search, so asking about Varaverk // never reaches the internet even with the box ticked. $webAsked = ($webArg ?? '') === '1'; +// Whether results were actually attached, as opposed to merely asked for. The chat prompt states +// flatly that this profile cannot look anything up — true of this machine, and false of the web +// the moment a search succeeds. Told both at once, the model believed the prohibition and +// deflected a question while holding six relevant sources. +$webHave = false; if ($webAsked && $can('web_search')) { require_once dirname(__DIR__) . '/include/ai_web.php'; $tw = microtime(true); @@ -238,6 +243,7 @@ if ($webAsked && $can('web_search')) { (int)((microtime(true) - $tw) * 1000))); if (($web['ok'] ?? false) && $web['results']) { + $webHave = true; $context .= vv_ai_web_context($web['results'], 0); foreach ($web['results'] as $r) { // path carries the URL so the existing citation wiring keeps working unchanged; url @@ -501,12 +507,27 @@ if ($profile === 'chat') { . "THE SAME RULE COVERS RUNTIME STATE, NOT JUST DOCUMENTATION. You have no logs, no " . "run records, no health checks and no way to inspect anything. Asked how a run " . "went, whether something is working, when it last ran, or what an error means, the " - . "only honest answer is that you cannot see it in this mode. You have no tools and " - . "cannot look anything up: never write that you are checking, reading, fetching or " - . "looking through logs, and never narrate an inspection you are not performing. " + . "only honest answer is that you cannot see it in this mode. You cannot inspect this " + . "machine at all: never write that you are checking, reading, fetching or looking " + . "through its logs, and never narrate an inspection you are not performing. " . "Guessing an outcome is worse here than anywhere else, because a run that 'went " . "fine' is exactly the answer that stops someone looking — and you would be right " . "by luck or wrong invisibly, with no way for them to tell which.\n\n" + . "WHAT THE RULE DOES NOT COVER. It is about THIS installation — its scripts, its " + . "settings, its state. It is not about the wider world. Unraid the product, Linux, " + . "Docker, ZFS, a game, a piece of hardware, what version of something was released: " + . "these are ordinary questions and you answer them normally. A question that merely " + . "mentions a technology this installation happens to use is not a question about " + . "this installation. Deflecting one of those to the Varaverk Assistant is wrong " + . "twice over — it is unhelpful, and that profile reads this installation's own " + . "documents and so knows even less about the outside world than you do.\n\n" + . ($webHave + ? "A web search ran for this question and the results are in the passages. Use " + . "them. They are the one thing you can look up, so the rule above about not " + . "narrating inspections does not apply to them — it is about this machine. " + . "Answering \"I cannot look that up\" while holding search results is the one " + . "answer that is plainly wrong.\n\n" + : "") . "Everything else is ordinary conversation. Talk like a knowledgeable colleague, be " . "warm and direct, follow a tangent if it is interesting, and use your general " . "knowledge freely — Linux, scripting, hardware, whatever comes up. The restriction "