]> git.giacomolli.uk - onechat/blobdiff - README.rst
Give each subagent its own prompt cache key
[onechat] / README.rst
index 39a1eff5af5ba4ee89d541dd0dbc961d5a7264d0..7712c0ec5a8ce05dfee6836587403dbf34e02fdd 100644 (file)
@@ -82,9 +82,12 @@ running turn, the line ``/stop NAME`` stops the subagent NAME, and
 Ctrl-D ends the client. The client shows the replies, the tool calls,
 and the first lines of each tool result as they happen. It also shows
 each message that the user sends from another client, with the client as
 Ctrl-D ends the client. The client shows the replies, the tool calls,
 and the first lines of each tool result as they happen. It also shows
 each message that the user sends from another client, with the client as
-a mark, such as ``[telegram] text``. The daemon is the only process that
-uses the token file while it runs, so ``onechat login`` and ``onechat
-probe`` refuse to start until it stops.
+a mark, such as ``[telegram] text``. When a subagent starts, the client
+shows ``[NAME] started``, and it shows the whole report of the subagent,
+which starts with ``[NAME]``, but not the tool calls of the subagent.
+The daemon is the only process that uses the token file while it runs,
+so ``onechat login`` and ``onechat probe`` refuse to start until it
+stops.
 
 The agent runs commands with bash as the user in its working directory,
 with no sandbox. It has the rights of the user, also on the token file.
 
 The agent runs commands with bash as the user in its working directory,
 with no sandbox. It has the rights of the user, also on the token file.
@@ -102,7 +105,10 @@ its tool calls, and a finished one goes on from its log, and its reply
 comes back in the same way. When the user stops a subagent, the chat
 gets a note, and the report of the subagent is logged, but it starts no
 turn. Each model call of a subagent has the name in the ``agent`` field
 comes back in the same way. When the user stops a subagent, the chat
 gets a note, and the report of the subagent is logged, but it starts no
 turn. Each model call of a subagent has the name in the ``agent`` field
-of ``agent/usage.jsonl``.
+of ``agent/usage.jsonl``. ``agent/work.json`` holds the names of the
+running subagents. A subagent that runs when the daemon stops goes on at
+the next start: the chat gets the note that the daemon restarted, and
+the subagent gets the same note and goes on from its log.
 
 ``agent/config.json`` holds the settings of the agent. The first start
 writes it with the defaults and a random ID. Do not change the ID: the
 
 ``agent/config.json`` holds the settings of the agent. The first start
 writes it with the defaults and a random ID. Do not change the ID: the
@@ -153,9 +159,11 @@ characters, with their Markdown as Telegram formats: bold, italic,
 strikethrough, code, code blocks, links, and headings as bold text. When
 Telegram refuses the formats of a part, the bot sends the part again as
 plain text. Each error goes as a short message in plain text. It shows
 strikethrough, code, code blocks, links, and headings as bold text. When
 Telegram refuses the formats of a part, the bot sends the part again as
 plain text. Each error goes as a short message in plain text. It shows
-the typing action while a turn runs. It does not send the tool calls. It
-sends each message that the user types in the terminal client, with the
-mark ``[terminal]``.
+the typing action while a turn runs. It does not send the tool calls.
+For a subagent it sends only ``[NAME] started`` and ``[NAME] finished``,
+``[NAME] stopped``, or ``[NAME] failed``, because the reply of the agent
+carries the content of the report. It sends each message that the user
+types in the terminal client, with the mark ``[terminal]``.
 
 ``agent/telegram-offset.json`` holds the ID of the next update. The bot
 moves it past an update only after the message is durable in the log, so
 
 ``agent/telegram-offset.json`` holds the ID of the next update. The bot
 moves it past an update only after the message is durable in the log, so