Agents
Ein Agent ist ein Arbeiter mit einer Rolle, zum Beispiel ein Programmierer, ein Autor oder ein Designer. Jeder Agent hat seine eigenen Anweisungen, seine eigenen Sessions und sein eigenes Langzeitgedächtnis. Agents geben sich gegenseitig Arbeit. So bleibt jeder bei seiner eigenen Aufgabe.
Diese Seite zeigt die Arten von Agents und die Routen unter /v1/agents. Jede Route nimmt ein User-Token oder das Session-Cookie an. Siehe Authentifizierung.
Drei Arten von Agents
| Art | Besitzer | Lebt | Wofür er da ist |
|---|---|---|---|
main |
Ein Member | So lange wie das Member | Handelt für die Person. Macht einfache Arbeit selbst und gibt Arbeit ab. |
persistent |
Ein Member, die Organisation oder ein anderer Agent | Bis du ihn archivierst | Ein dauerhafter Arbeiter mit einer Rolle. Er lernt mit der Zeit aus seiner Arbeit. |
session |
Eine Session | So lange wie die Session, der er gehört | Ein Helfer für einen Arbeitsstrang. Er behält seinen Kontext in dieser Session. |
Jedes Member hat genau einen Main Agent (Haupt-Agent). OpenBot erstellt ihn, wenn er zum ersten Mal gebraucht wird. Eine Session, die du ohne Agent erstellst, gehört deinem Main Agent.
Ein neuer Main Agent hat kein Model. Setze sein model, bevor du eine Session ohne eigenes Model erstellst. Siehe Models.
Ein Session Agent ist “fast dauerhaft”. Ein Agent startet ihn während der Arbeit mit einem Werkzeug. Der Session Agent behält seinen Kontext, solange seine Session besteht. So kann der Agent ihm viele Male Arbeit geben. Wenn du die Session löschst, werden auch ihre Session Agents archiviert. Du kannst einen nützlichen Session Agent zu einem dauerhaften Agent machen.
Ein Agent kann auch selbst dauerhafte Agents besitzen. Siehe Agents, die Agents besitzen.
Jede Session gehört zu einem Agent. Siehe Sessions. Wie Agents sich gegenseitig Arbeit geben, steht unter Delegation.
Keine Grenzen, die ein Agent kennt
Agents haben keine Liste von Dingen, die sie tun dürfen. Ein Agent probiert es einfach. Wenn er zum ersten Mal etwas Neues versucht, zum Beispiel einen Agent erstellen oder ein App-Werkzeug aufrufen, entscheidet die Stelle über ihm. Siehe Requests. Die Entscheidungen werden gespeichert. So wachsen die Grenzen jedes Agents aus echter Arbeit.
Einen Agent erstellen
curl -H "Authorization: Bearer $OPENBOT_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"Programmer","role":"Writes and reviews TypeScript code","instructions":"Write small, tested changes. Explain each change in one short paragraph."}' \ https://api.example.com/v1/agents| Feld | Bedeutung |
|---|---|
name |
Pflicht. Ein kurzer Name. OpenBot entfernt Leerzeichen am Anfang und Ende. Der Rest muss 1 bis 100 Zeichen haben. |
role |
Pflicht. Was der Agent tut, in einer Zeile. Andere Agents lesen sie, um Arbeiter auszuwählen. |
instructions |
Pflicht. Die dauerhaften Anweisungen des Agents, wie eine Stellenbeschreibung. |
model |
Optional. Das Model der Sessions dieses Agents, wenn eine Session kein eigenes wählt. |
planApproval |
Optional. Wie die Pläne dieses Agents erlaubt werden. Siehe Plan-Modus. |
shared |
Optional. true erstellt einen Agent der Organisation, den jedes Member nutzen kann. |
agent |
Optional. Die ID des Agents, dem der neue Agent gehört. Du kannst es nicht zusammen mit shared nutzen. |
OpenBot antwortet mit 201 und dem Agent:
{ "id": "agt_5c0e…", "kind": "persistent", "owner": { "_tag": "Member", "userId": "u-1" }, "name": "Programmer", "role": "Writes and reviews TypeScript code", "instructions": "Write small, tested changes. …", "archived": false, "revision": 0, "createdAt": 1792486800000, "updatedAt": 1792486800000}owner ist Member, Organization, Session oder Agent. Ein gemeinsamer Agent arbeitet mit den Berechtigungen und App-Verbindungen des Members, das ihn nutzt. Er arbeitet nie mit denen der Person, die ihn erstellt hat.
Agents auflisten, lesen und ändern
GET /v1/agents listet deinen Main Agent, deine eigenen Agents und die gemeinsamen Agents auf, die du nutzen darfst. Füge ?archived=false hinzu, um archivierte Agents auszublenden. Füge ?session=<id> hinzu, um die Session Agents einer Session aufzulisten. Füge ?agent=<id> hinzu, um die Agents aufzulisten, die einem Agent gehören.
GET /v1/agents/:agentId gibt einen Agent zurück.
curl -X PATCH -H "Authorization: Bearer $OPENBOT_TOKEN" \ -H "Content-Type: application/json" \ -d '{"expected":0,"instructions":"Write small changes with tests first."}' \ https://api.example.com/v1/agents/$AGENTexpected ist die aktuelle revision. Du kannst name (mit denselben Regeln wie oben), role, instructions, model (sende null, um es zu entfernen) und archived ändern. Den Main Agent kann man nicht archivieren. Wenn du einen Agent archivierst, archiviert OpenBot auch jeden Agent, der ihm gehört, und die Agents darunter. Wenn du die Archivierung aufhebst, kommt nur dieser eine Agent zurück.
Einen Session Agent dauerhaft machen
curl -H "Authorization: Bearer $OPENBOT_TOKEN" \ -H "Content-Type: application/json" \ -d '{"expected":3}' \ https://api.example.com/v1/agents/$AGENT/promoteDer Session Agent wird ein dauerhafter Agent des Members. Sende agent mit der ID eines Agents, um diesen Agent zu seinem Besitzer zu machen. OpenBot fügt auch die dauerhaften Einträge seines Session-Memorys zu seinem Agent-Memory hinzu.
Ein Agent kann einen Session Agent seiner eigenen Session mit dem Werkzeug openbot_promote_agent dauerhaft machen. Dann gehört er diesem Agent.
Agents, die Agents besitzen
Ein Agent kann dauerhafte Agents besitzen. So kann ein Agent sein eigenes Team bauen, und jedes Teammitglied behält sein eigenes Gedächtnis.
- Ein Agent erstellt einen Agent, der ihm gehört, mit dem Werkzeug
openbot_create_agent. Eine Person erstellt einen mitPOST /v1/agentsund dem Feldagent. - Ein Agent, den ein anderer Agent mit einem Werkzeug erstellt, also ein dauerhafter Agent oder ein Session Agent, bekommt das
modeldes Agents, der ihn erstellt. Der Aufruf des Werkzeugs kann ein anderesmodelnennen. - Der Besitzer ist
{ "_tag": "Agent", "agent": "<owner ID>", "userId": "<member>" }.userIdist das Member an der Spitze des Besitzer-Baums. Es istnull, wenn die Organisation den obersten Agent besitzt. - Ein Agent kann den Agents, die ihm gehören, ohne Request Arbeit geben.
- Die Besitzer-Kette eines Agents geht über seine Besitzer nach oben bis zu einem Main Agent und dann bis zur Person. Zum Beispiel: Person → Main → Worker → Scout. Requests eines Agents gehen diese Kette hinauf, auch wenn eine Person direkt mit dem Agent arbeitet. Siehe Requests.
- In der Kette ist der Besitzer eines Agents eines Members oder eines gemeinsamen Agents der Main Agent der Person, die mit ihm arbeitet.
Was ein Agent in jedem Turn weiß
OpenBot fügt diese Dinge zu den Anweisungen jedes Turns hinzu:
- den Namen, die Rolle und die Anweisungen des Agents,
- die Person, mit der er gerade arbeitet, mit ihrem Namen und ihrer Member-ID. In einem Channel ist es die Person, die die Nachricht des Turns geschrieben hat,
- Regeln zum Datenschutz: Was der Agent von einer Person gelernt hat, kann privat sein. Darum sagt er einer anderen Person nur, was klar geteilt ist,
- bei einer Session mit Arbeit von einem anderen Agent: wie er das Ergebnis zurückschickt,
- die aktiven Einträge seines Agent-Memorys.
Berechtigungen
| Berechtigung | Damit kannst du |
|---|---|
agents.read |
Agents lesen, mit ihrem Memory, ihren Rules und Grants. |
agents.write |
Agents erstellen und ändern, mit ihrem Memory, ihren Rules und Grants. |
agents.delegate |
Einem Agent Arbeit geben, von einem Client oder von einem anderen Agent aus. |
Deine eigenen Agents liegen unter deinem Member-Schlüssel. Gemeinsame Agents liegen unter openbot.org.<org>.agent. Members dürfen gemeinsame Agents lesen und nutzen. Administratoren dürfen sie auch ändern. Siehe Berechtigungen.
Fehler
| Status | Fehler | Wann |
|---|---|---|
400 |
AgentInvalid |
Die Änderung ist nicht erlaubt, zum Beispiel einen Main Agent archivieren. |
403 |
PermissionDenied |
Du darfst den Agent lesen, aber nicht ändern oder nutzen. |
404 |
AgentNotFound |
Es gibt keinen Agent mit dieser ID, den du lesen darfst. |
409 |
AgentConflict |
expected ist veraltet. Lies den Agent neu und versuche es noch einmal. |
503 |
AgentStorageUnavailable |
OpenBot erreicht seine Datenbank nicht. |