Aude Code

aude-team(7)

NAME

aude-team — 由 aude 会话组成的团队

DESCRIPTION

本手册页写给把工作委派给 aude(1) 子智能体的模型。它假定有一个工具在新的 shell 中运行每条命令,并且不提供标准输入。该工具会在一段时间后停止每条命令。

  • 子智能体有一个名称、一份记录和一份实录。因为它们在其宿主退出后仍然保留,所以该名称在 remove 之前一直有效。
  • 列表行显示工作的状态:waiting、working、done 或 failed。
  • 只有 wait 会阻塞,最长为 --limit。 start 和 send 在宿主收到该轮次时返回。 interrupt 在轮次结束时返回。其他命令立即返回。
  • 轮次的预算和等待的时限是不同的时间。用 start 或 send 给每个轮次设置较长的预算。给每个 wait 设置一个时限,它要短于你的工具允许一条命令运行的时间。

SUBAGENTS

start name 在仓库中创建 git 工作树 .aude/worktrees/<name>,其分支为 name。 git 会忽略 .aude。 remove 会移除该工作树和该分支。由人启动的会话不是子智能体。不带目标的 wait 不会等待这种会话。

当子智能体有轮次时,它的宿主保持运行。宿主在最后一个轮次之后退出。下一次 send 会启动一个继续该对话的新宿主。

在某个轮次运行期间你发送的文本会加入该轮次。其他轮次在队列中等待,并且不消耗它们的预算。预算用完时,宿主会像 interrupt 一样中断该轮次。

只有当任务要求模型提交时,模型才会提交。 git-merge(1) 只接受提交。告诉每个子智能体提交它的工作。

attach 会打印最后一个轮次的全部内容。若要得到简短的回答,就给每个子智能体一个报告文件的绝对路径,该文件位于仓库中的 .aude 之下。然后读取该文件。

WHAT TO RUN

目的 运行
了解它是否已完成 ,并使用较短的时限。 退出码 9 表示它尚未完成。退出码 1 表示它已失败。
了解它是否卡住 。 如果 working 列表行上的 quiet= 在两次等待中一直增大,它就卡住了。
查看它做了什么 。 阅读列表行上的 commits= 和 dirty=。
中断轮次
改变方向 ,然后 send
布置更多工作 。 新的轮次在当前轮次之后运行。
继续一个已完成的子智能体
在其他子智能体的基础上构建 --on
查看团队
清理

EXAMPLES

有三个模块是桩代码。测试已经存在。每个任务文件都告诉子智能体要提交。

aude start tokenize --harness claude --budget 15m </path/to/tasks/tokenize.md
aude start count    --harness claude --budget 15m </path/to/tasks/count.md
aude start report   --harness claude --budget 15m </path/to/tasks/report.md
aude wait --limit 90s              # exit 9: not yet, so run it again
echo 'Also add a module docstring, and commit.' |
  aude send tokenize --budget 5m
aude wait tokenize --limit 90s
aude attach count                  # the last turn of count
git merge tokenize count report
python3 -m unittest discover -s tests
aude remove tokenize count report

remove 之后,下一次运行可以使用相同的名称。

下面的命令让 ‘report’ 在 ‘tokenize’ 和 ‘count’ 的基础上构建:

aude start report --harness claude --budget 15m --on tokenize count \
  </path/to/tasks/report.md

‘report’ 会等待。当 ‘tokenize’ 和 ‘count’ 完成后,它的宿主先合并它们,然后运行任务。

退出码 0 表示轮次没有出错。它并不表示任务是正确的。阅读 ‘commits=’ 和 ‘dirty=’ 以及最后的回答。然后运行测试。

FAILURE

  • 出错的轮次以 ‘exit=1’ 失败。 sessions --json 会显示该错误。
  • 当预算或 interrupt 结束一个轮次时,该轮次以 ‘exit=9’ 失败。它所做的修改保留在工作树中。
  • 如果宿主停止,列表行显示 ‘exit=5’ 和 failed。 send 会启动一个新的宿主。
  • 如果宿主无法启动,则 start 或 send 以宿主的退出码退出。它会打印一行。退出码 3、4 或 5 来自框架,64 表示未知的 --agent。
  • 所指定的子智能体失败时,带 --on 的子智能体以 ‘exit=1’ 失败,所指定的子智能体被移除时以 8 失败,出现合并冲突时以 64 失败。此时不会运行任何轮次。对所指定的子智能体执行 interrupt,结果相同。 修复所指定的子智能体。然后用 send 再次发送该任务。宿主会先进行合并。
  • 在以下情况以 64 退出:子智能体处于 waiting 或 working 状态,工作树中有未提交或未跟踪的文件,或分支尚未合并。该子智能体和排在它之后的目标都会保留。把构建输出加入 .gitignore。

轮次失败之后,队列中的下一个轮次会运行。 send 也可以发送新的轮次。

SEE ALSO

aude(1), git-merge(1), git-worktree(1)

CAVEATS

子智能体名称最多 32 个字符:ASCII 小写字母、数字,以及它们之间的单个连字符。因为分支使用相同的名称,所以分支名不能采用 ‘feat/<name>’ 的形式。

要放弃一个失败的子智能体,先把它的分支移到你的 HEAD。然后清理它的工作树:

git -C .aude/worktrees/<name> reset --hard "$(git rev-parse HEAD)"
git -C .aude/worktrees/<name> clean -fd
aude remove <name>

对处于 waiting 状态的子智能体,在它的 --on 子智能体完成、失败或被移除之前,你不能中断或移除它。

在 git 仓库中运行 start。

因为子智能体在它的工作树的顶层运行,所以 start 的 --agent 指定的是那里已提交的智能体文件。