pagent
概述
查找一个 Paseo 智能体并读取其对话记录,无需每次都重新发现 Paseo 存储数据的位置。 pagent 只读取:它从不启动、停止、操控或复活智能体,也从不要求守护进程重新加载已关闭的智能体。
调用方式
SKILL=<该技能的基础目录>/pagent.py # harness 会打印基础目录路径
python3 $SKILL 11111111-1111-4111-8111-111111111111 # 头部:状态、工作目录、模型、对话文件路径
python3 $SKILL 11111111 --task # + 用户给出的每一条指令
python3 $SKILL 11111111 -t -n 20 # + 最后 20 轮对话
python3 $SKILL 11111111 -t --full # 轮次不截断
python3 $SKILL "invoice export" # 按标题搜索
python3 $SKILL # 所有智能体,最新的排在前面
查询条件可以是 ID、ID 前缀,或是标题的不区分大小写的子串。匹配到多个结果会打印列表;
恰好匹配一个则打印详情视图。python3 $SKILL --help 打印使用说明。
操作步骤
- 解析智能体。 不带标志运行查询:头部会显示状态、工作目录、模型和对话文件路径。 如果返回列表,说明查询不明确;请使用 ID 或更长的标题片段来缩小范围。
- 读取它被要求做什么。
--task打印用户给出的每一条指令,而不仅仅是第一条。 开头一行标明主题;两轮之后的修正携带决策信息("使用选项 B,但将重试限制保持在三次")。 两者都会打印;harness 的前导和注入的技能体不会打印。 在接手智能体工作时这一点最为重要——请参见ptakeover技能。 - 查看它进展到哪了。
-t -n <turns>打印对话的末尾部分;如果某轮被截断,则加上--full。 在智能体运行时读取是安全的,因为对话记录是只追加的。 - 检查相邻智能体。 工作目录与您相同的智能体可能正在编辑相同的文件。
在假设一个意外的 diff 是您造成之前,请运行
git status。
使用 -t 或 --task 时,如果对话记录缺失,脚本会以非零状态退出。
无声的 0 会被解读为 "智能体什么都没说",这对于接手任务的人来说是错误结论。
数据存储位置
- 智能体元数据:
~/.paseo/agents/<workspace>/<id>.json— 标题、lastStatus(running/idle/ …)、cwd、模型、requiresAttention、时间戳。 - 对话记录: 不在那个文件中。它存储在写入对话的 harness 中,通过
persistence.sessionId键检索:- Claude Code —
<config>/projects/<escaped-cwd>/<sessionId>.jsonl。claude-rotate 每个账户使用一个配置目录,因此可能位于~/.claude下或任何~/.config/claude-rotate/configs/*/下——脚本会全局通配所有这些路径,而不是猜测转义后的路径。 - Codex —
~/.codex/sessions/<y>/<m>/<d>/rollout-<stamp>-<sessionId>.jsonl,一种不同的记录结构(payload.type),解析器能同时处理 Claude 的格式。存档智能体时,rollout 会被移动到平面的~/.codex/archived_sessions/目录。 - Antigravity —
sessionId是一个plugin:{…"conversationId":…}包装器;历史记录位于~/.gemini/antigravity-cli/brain/<conversationId>/.system_generated/logs/transcript_full.jsonl(记录以step_index键标识)。不是conversations/<id>.db,那个是 protobuf 格式。较旧的antigravity-acp提供者的智能体从未写入该日志,因此没有可读的历史记录。
- Claude Code —
与智能体对话、等待智能体
此技能只读取。其余功能:
- 对话:
paseo send <id> "<text>" --behavior steer --no-wait。智能体级别的 CLI 和send_agent_prompt调用默认使用 steering;明确的 behavior 在智能体之外也能工作。当提供者无法接受 steering 时(例如在压缩期间),可以回退到打断。--no-wait在分发后立即返回;它不会将消息排队在轮次之后。 - 勿意外复活智能体:
paseo send会复活存档的智能体,因此请先检查paseo inspect <id> --json中的ArchivedAt。切勿仅仅为了发送报告而复活存档的智能体;请将信息留在其工作产物(TODO、协议或提交)中,或者告知用户。 - 等待:
paseo-notify <id>,然后结束您的轮次——当智能体停止时会收到一条消息。在 paseo 之外:paseo wait <id> --json,在后台运行;从 JSON 中读取status(idle、permission、error、timeout)——所有状态退出码均为 0。切勿使用sleep、Monitor、/loop或轮询paseo ls/logs/inspect来等待。
常见错误
| 错误 | 修正方法 |
|---|---|
| 仅凭最初的请求就接手工作 | --task 也会打印所有后续修正;它们携带决策信息 |
使用 paseo logs 读取关闭或存档的智能体 | 这会强制守护进程重新加载智能体的会话仅仅为了读取;请使用此技能,它只读取文件 |
| 将无声退出解读为 "智能体什么都没说" | 对话记录缺失会以非零状态退出;请检查退出码和头部中的对话文件路径 |
| 向存档的智能体发送报告 | paseo send 会复活它;请先检查 ArchivedAt,并将报告留存在其工作产物中 |
使用 sleep、Monitor、/loop 或重复的 paseo ls/logs/inspect 等待智能体 | 使用 paseo-notify <id> 并结束您的轮次 |
当智能体与您共享 cwd 时,将意外的 diff 当作自己的 | 运行 git status;智能体可能正在编辑相同的文件 |