]> git.giacomolli.uk - onechat/blobdiff - README.rst
Run subagents in the background with spawn
[onechat] / README.rst
index 4bda34e7a09b06332c4726c6f047f31d7ce16cd4..82a8e135a9b4d4b9974f640de3c2a2bef4338572 100644 (file)
@@ -88,6 +88,17 @@ 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.
 
+When the user asks for it, the agent starts subagents for long tasks.
+Each subagent has a name, such as ``GreenOtter``, and runs in the
+background while the agent answers other messages. It gets the view of
+the agent and its task, and it runs its tools as the agent does, in
+``agent/subagents/NAME/work``. A task in a repository gives the path of
+the repository. The steps of a subagent go to its own log in
+``agent/subagents/NAME``, not to the chat, and its final reply comes
+back to the agent as one message that starts with ``[NAME]``. Each model
+call of a subagent has the name in the ``agent`` field of
+``agent/usage.jsonl``.
+
 ``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
 prompt cache key comes from it.
@@ -131,11 +142,14 @@ new messages, so it needs no open port.
 
 The bot reads only the private chat of the owner and ignores all other
 updates. Each text message goes to the agent as a user message, and the
-line ``/stop`` interrupts the running turn. The bot sends the replies as
-plain text, in parts of at most 4096 characters, and each error as a
-short message. 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]``.
+line ``/stop`` interrupts the running turn. The bot sends the replies in
+parts of at most 4096 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 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]``.
 
 ``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
@@ -200,3 +214,6 @@ Format and check all files:
    bin/format
    bin/check
    nix flake check
+
+``bin/check`` and ``nix build`` run a short replay of the synthetic log.
+``nix flake check`` also runs the full replay of 100,000 messages.