Einer der schwierigsten Teile beim Bau eines Agenten-Harnesses ist die Konstruktion seines Aktionsraums.
Claude agiert durch Tool Calling, aber es gibt eine Reihe von Möglichkeiten, wie Tools in der Claude-API mit Primitiven wie Bash, Skills und neuerdings Code Execution konstruiert werden können (lies mehr über programmatisches Tool Calling in der Claude-API in @RLanceMartins neuem Artikel).
Angesichts all dieser Optionen: Wie gestaltest du die Tools deines Agenten? Brauchst du nur ein Tool wie Code Execution oder Bash? Was wäre, wenn du 50 Tools hättest, eines für jeden Anwendungsfall, auf den dein Agent stoßen könnte?
Um mich in die Lage des Modells zu versetzen, stelle ich mir gerne vor, ein schwieriges Matheproblem zu bekommen. Welche Tools würdest du wollen, um es zu lösen? Es würde von deinen eigenen Fähigkeiten abhängen!
Papier wäre das Minimum, aber du wärst durch manuelle Berechnungen eingeschränkt. Ein Taschenrechner wäre besser, aber du müsstest wissen, wie man die erweiterten Optionen bedient. Die schnellste und leistungsstärkste Option wäre ein Computer, aber du müsstest wissen, wie man ihn zum Schreiben und Ausführen von Code nutzt.
Das ist ein nützlicher Rahmen für die Gestaltung deines Agenten. Du möchtest ihm Tools geben, die auf seine eigenen Fähigkeiten zugeschnitten sind. Aber woher weißt du, was diese Fähigkeiten sind? Du achtest darauf, liest seine Ausgaben, experimentierst. Du lernst, wie ein Agent zu sehen.
Hier sind einige Lektionen, die wir gelernt haben, indem wir Claude beim Bau von Claude Code beobachtet haben.
Verbesserung der Elicitation & des AskUserQuestion-Tools

Beim Bau des AskUserQuestion-Tools war unser Ziel, Claudes Fähigkeit, Fragen zu stellen (oft als Elicitation bezeichnet), zu verbessern.
Obwohl Claude Fragen einfach im Klartext stellen konnte, stellten wir fest, dass die Beantwortung dieser Fragen unnötig viel Zeit in Anspruch nahm. Wie könnten wir diese Reibung verringern und die Kommunikationsbandbreite zwischen dem Benutzer und Claude erhöhen?
Versuch #1 – Bearbeiten des ExitPlanTool
Das erste, was wir versuchten, war, dem ExitPlanTool einen Parameter hinzuzufügen, um ein Array von Fragen zusammen mit dem Plan zu haben. Das war am einfachsten zu implementieren, aber es verwirrte Claude, weil wir gleichzeitig nach einem Plan und einer Reihe von Fragen zum Plan fragten. Was wäre, wenn die Antworten des Benutzers dem widersprachen, was der Plan sagte? Müsste Claude das ExitPlanTool zweimal aufrufen? Wir brauchten einen anderen Ansatz.
(du kannst mehr darüber lesen, warum wir ein ExitPlanTool erstellt haben, in unserem Beitrag über Prompt Caching
Versuch #2 – Ändern des Ausgabeformats
Als Nächstes versuchten wir, Claudes Ausgabeanweisungen zu ändern, um ein leicht modifiziertes Markdown-Format zu liefern, das es zum Stellen von Fragen verwenden konnte. Zum Beispiel konnten wir es bitten, eine Liste von Aufzählungspunkten mit Alternativen in Klammern auszugeben. Wir konnten diese Frage dann als UI für den Benutzer parsen und formatieren.
Obwohl dies die allgemeinste Änderung war, die wir vornehmen konnten, und Claude sogar ganz gut darin schien, dies auszugeben, war es nicht garantiert. Claude würde zusätzliche Sätze anhängen, Optionen weglassen oder ein völlig anderes Format verwenden.
Versuch #3 – Das AskUserQuestion-Tool

Schließlich entschieden wir uns für die Erstellung eines Tools, das Claude jederzeit aufrufen konnte, aber es wurde besonders dazu aufgefordert, dies im Planmodus zu tun. Wenn das Tool ausgelöst wurde, zeigten wir ein Modal an, um die Fragen anzuzeigen, und blockierten die Schleife des Agenten, bis der Benutzer antwortete.
Dieses Tool erlaubte es uns, Claude nach einer strukturierten Ausgabe zu fragen, und half uns sicherzustellen, dass Claude dem Benutzer mehrere Optionen gab. Es gab den Benutzern auch Möglichkeiten, diese Funktionalität zu kombinieren, zum Beispiel durch Aufruf im Agent SDK oder durch Verweise darauf in Skills.
Am wichtigsten war, dass Claude dieses Tool gerne aufzurufen schien und wir fanden, dass seine Ausgaben gut funktionierten. Selbst das am besten gestaltete Tool funktioniert nicht, wenn Claude nicht versteht, wie man es aufruft.
Ist dies die endgültige Form der Elicitation in Claude Code? Wir sind uns nicht sicher. Wie du im nächsten Beispiel sehen wirst, was für ein Modell funktioniert, ist möglicherweise nicht das Beste für ein anderes.
Aktualisierung mit Fähigkeiten – Tasks & Todos

Als wir Claude Code zum ersten Mal starteten, wurde uns klar, dass das Modell eine Todo-Liste brauchte, um auf Kurs zu bleiben. Todos konnten zu Beginn geschrieben und abgehakt werden, während das Modell arbeitete. Dazu gaben wir Claude das TodoWrite-Tool, das Todos schreiben oder aktualisieren und dem Benutzer anzeigen konnte.
Aber selbst dann sahen wir oft, dass Claude vergaß, was es zu tun hatte. Um uns anzupassen, fügten wir alle 5 Durchläufe Systemerinnerungen ein, die Claude an sein Ziel erinnerten.
Aber als die Modelle besser wurden, brauchten sie nicht nur keine Erinnerung an die Todo-Liste, sondern empfanden sie möglicherweise als einschränkend. Das Senden von Erinnerungen an die Todo-Liste ließ Claude denken, dass es sich an die Liste halten müsse, anstatt sie zu ändern. Wir sahen auch, dass Opus 4.5 viel besser im Umgang mit Subagenten wurde, aber wie konnten Subagenten eine gemeinsame Todo-Liste koordinieren?
Als wir das sahen, ersetzten wir TodoWrite durch das Task-Tool (lies mehr über Tasks hier). Während es bei Todos darum ging, das Modell auf Kurs zu halten, ging es bei Tasks mehr darum, Agenten bei der Kommunikation untereinander zu helfen. Tasks konnten Abhängigkeiten enthalten, Updates über Subagenten hinweg teilen, und das Modell konnte sie ändern und löschen.
Mit zunehmenden Modellfähigkeiten könnten die Tools, die deine Modelle einst brauchten, sie jetzt einschränken. Es ist wichtig, ständig frühere Annahmen darüber, welche Tools benötigt werden, zu überdenken. Aus diesem Grund ist es auch nützlich, sich auf eine kleine Menge von Modellen zu beschränken, die ein ziemlich ähnliches Fähigkeitsprofil haben.
Entwerfen einer Suchoberfläche
Ein besonders wichtiger Satz von Tools für Claude sind die Suchtools, die verwendet werden können, um seinen eigenen Kontext aufzubauen.
Als Claude Code zum ersten Mal herauskam, verwendeten wir eine RAG-Vektordatenbank, um Kontext für Claude zu finden. Obwohl RAG leistungsstark und schnell war, erforderte es Indizierung und Einrichtung und konnte in einer Vielzahl von Umgebungen fragil sein. Noch wichtiger war, dass Claude diesen Kontext bekam, anstatt ihn selbst zu finden.
Aber wenn Claude im Web suchen konnte, warum nicht in deiner Codebasis? Indem wir Claude ein Grep-Tool gaben, konnten wir es Dateien durchsuchen und selbst Kontext aufbauen lassen.
Dies ist ein Muster, das wir gesehen haben: Je schlauer Claude wird, desto besser wird es darin, seinen Kontext aufzubauen, wenn es die richtigen Tools bekommt.
Als wir Agent Skills einführten, formalisierten wir die Idee der progressiven Offenlegung, die es Agenten ermöglicht, durch Erkundung schrittweise relevanten Kontext zu entdecken.
Claude konnte Skill-Dateien lesen, und diese Dateien konnten dann auf andere Dateien verweisen, die das Modell rekursiv lesen konnte. Tatsächlich ist eine häufige Verwendung von Skills, Claude weitere Suchfähigkeiten hinzuzufügen, wie ihm Anweisungen zur Nutzung einer API oder zum Abfragen einer Datenbank zu geben.
Im Laufe eines Jahres entwickelte sich Claude von der Unfähigkeit, seinen eigenen Kontext aufzubauen, hin zur Fähigkeit, verschachtelte Suchen über mehrere Dateiebenen hinweg durchzuführen, um den genauen benötigten Kontext zu finden.
Progressive Offenlegung ist heute eine gängige Technik, die wir verwenden, um neue Funktionalität hinzuzufügen, ohne ein Tool hinzuzufügen.
Progressive Offenlegung – Der Claude Code Guide Agent
Claude Code hat derzeit etwa 20 Tools, und wir fragen uns ständig, ob wir alle brauchen. Die Hürde, ein neues Tool hinzuzufügen, ist hoch, weil dies dem Modell eine weitere Option zum Nachdenken gibt.
Zum Beispiel bemerkten wir, dass Claude nicht genug darüber wusste, wie man Claude Code verwendet. Wenn du es fragtest, wie man einen MCP hinzufügt oder was ein Slash-Befehl tut, konnte es nicht antworten.
Wir hätten all diese Informationen in den System-Prompt packen können, aber da Benutzer selten danach fragten, hätte das Kontextverfall verursacht und Claudes Hauptaufgabe beeinträchtigt: Code schreiben.
Stattdessen versuchten wir eine Form der progressiven Offenlegung. Wir gaben Claude einen Link zu seiner Dokumentation, den es dann laden konnte, um nach weiteren Informationen zu suchen. Das funktionierte, aber wir stellten fest, dass Claude viele Ergebnisse in den Kontext lud, um die richtige Antwort zu finden, obwohl eigentlich nur die Antwort nötig war.
Also bauten wir den Claude Code Guide Subagenten, den Claude aufzurufen aufgefordert wird, wenn du nach ihm selbst fragst. Der Subagent hat umfangreiche Anweisungen, wie man die Dokumentation gut durchsucht und was zurückgegeben werden soll.
Obwohl das nicht perfekt ist – Claude kann immer noch verwirrt werden, wenn du es fragst, wie es sich selbst einrichtet –, ist es viel besser als früher! Wir konnten Dinge zu Claudes Aktionsraum hinzufügen, ohne ein Tool hinzuzufügen.
Eine Kunst, keine Wissenschaft
Wenn du auf eine Reihe starrer Regeln gehofft hast, wie du deine Tools bauen sollst, ist dieser Leitfaden leider nicht das Richtige. Das Entwerfen der Tools für deine Modelle ist ebenso eine Kunst wie eine Wissenschaft. Es hängt stark vom verwendeten Modell, dem Ziel des Agenten und der Umgebung ab, in der er arbeitet.
Experimentiere oft, lies deine Ausgaben, probiere neue Dinge aus. Sieh wie ein Agent.





