主要变更: - Skill Learning 闭环系统 (9/9 AC) - Opus 4.7 模型层接入 + adaptive thinking - Prompt 工程优化 (64 审计测试) - Agent Teams 简化门控 (默认启用) - Windows Terminal 后端修复 (EncodedCommand/WT_SESSION) - TF-IDF 技能搜索精准化 (字段加权/CJK 优化) - Autonomy 系统 (/autonomy 命令) - ACP 协议完整实现 - mock.module 泄漏修复 (CI 全绿) - 152+ lint/type 修复
43 KiB
当前自治管理能力清单与实现状态审计
审计日期:2026-04-18
范围:本报告只覆盖“自治管理”相关能力,即自动权限判定、后台/守护运行、子代理/团队协调、任务列表、定时/心跳、远程控制、主动循环、自动化运行记录,以及这些能力的辅助通信/监控工具。普通文件读写、基础 REPL、模型兼容层等非自治能力不展开。
状态定义:
- 完整实现:入口、运行时逻辑、持久化或状态管理、失败处理基本闭环。
- 最小实现:核心路径可用,但边界、平台、恢复或体验仍较薄。
- 薄封装:只是把外部服务/API/文本流程包装成工具,主要执行不在本地闭环里完成。
- 占位:入口或接口存在,但核心实现返回空、无动作或仅用于未来扩展。
- 受限:依赖 feature flag、
USER_TYPE === 'ant'、GrowthBook、OAuth 订阅、策略或平台条件。 - 远端依赖:核心执行依赖 claude.ai/CCR/远端 API,不是本地自足能力。
总览结论
当前项目已经具备一套分层自治体系,而不是单个“自治管理”模块:
- 本地自治执行层:
/proactive、Cron、autonomy run/flow、Monitor、后台 Agent、后台 shell/task 输出。 - 权限自治层:
autopermission mode 通过 LLM classifier 判定工具调用,带危险 allow 规则剥离、熔断、模型/设置/计划限制。 - 多代理协调层:
AgentTool、TeamCreate、TeamDelete、SendMessage、任务列表、teammate mailbox、in-process/tmux/iTerm2 后端。 - 进程/会话管理层:
daemonsupervisor、--bg/background sessions、PID registry、attach/logs/kill。 - 终端通讯层:pipes/UDS named pipe、LAN TCP pipe、peer registry、attach/detach/send/history。
- 远端自治层:Remote Control bridge、CCR remote session、remote agent isolation、RemoteTrigger API。
- KAIROS/Assistant 层:assistant attach、brief/user message、cron/proactive 结合,assistant team 初始化已完成本地 bootstrap。
成熟度最高的是 Cron、任务列表、后台 Agent、Agent Teams、pipes/UDS 通讯、auto-mode 权限判定、daemon/bg 基础管理。Agent Teams 已完成一轮抽离与闭环加固:主 spawn 路径已统一到 TeammateExecutor,并补回 use_splitpane: false legacy window 路径、iTerm2 setup prompt、Windows Terminal pane/window 后端、in-process kill/cleanup、TeamDelete graceful shutdown request、外部 --agent-teams 入口以及端到端生命周期测试。/autonomy status --deep 与 claude autonomy status --deep 已作为统一本地自治健康入口落地,可汇总 runs/flows、workflow runs、cron、team、pipes registry、daemon/bg session、Remote Control 本地配置、auto-mode 同步状态和 RemoteTrigger 本地审计。WorkflowTool 已升级为本地 workflow runner,支持 start/status/list/advance/cancel 和 .claude/workflow-runs 状态持久化。initializeAssistantTeam() 已实现 assistant 模式的 session-scoped in-process team bootstrap。Remote Control/CCR/RemoteTrigger 应定级为 完整实现,远端/订阅运行条件:订阅用户在 OAuth、GrowthBook、policy 满足时可走官方远端路径;self-hosted bridge/RCS 可替代部分控制面。ask-claude 外部审阅已确认当前自治管理可标记 COMPLETE,无阻止完整实现的代码缺口。Windows Terminal、RC/CCR/RemoteTrigger、KAIROS assistant attach 剩余项属于实机/订阅环境验收。
能力清单
| 能力 | 具体作用 | 入口 | 实现证据 | 当前状态 | 风险与后续 |
|---|---|---|---|---|---|
| Auto Mode 权限自治 | 用分类器自动判定原本需要确认的工具调用 | --permission-mode auto、--enable-auto-mode、auto-mode 子命令 |
src/main.tsx:1294, src/main.tsx:1831, src/main.tsx:5144, src/utils/permissions/permissions.ts:517, src/utils/permissions/yoloClassifier.ts:1015 |
完整实现,受限 | 依赖 TRANSCRIPT_CLASSIFIER、模型支持、GrowthBook/设置熔断;PowerShell 默认不进 classifier,除非 POWERSHELL_AUTO_MODE。 |
| Auto Mode 配置审计 | 输出默认/有效规则并让模型 critique 用户规则 | claude auto-mode defaults/config/critique |
src/main.tsx:5140, src/cli/handlers/autoMode.ts:18, src/cli/handlers/autoMode.ts:75 |
完整实现,受限 | 只在 TRANSCRIPT_CLASSIFIER 开启且 cached state 未 disabled 时注册;critique 依赖 API。 |
| 危险权限剥离与恢复 | 进入 auto 时移除会绕过 classifier 的 allow 规则,退出时恢复 | 权限模式转换内部 | src/utils/permissions/permissionSetup.ts:510, src/utils/permissions/permissionSetup.ts:597, src/utils/permissions/permissionSetup.ts:1283 |
完整实现 | 规则识别覆盖 Bash/PowerShell/Agent/tmux 等危险模式,但仍需要持续补充模式库。 |
| 子代理同步执行 | 启动指定 agent,独立系统提示词和工具池,完成后返回结果 | AgentTool / legacy Task |
src/tools.ts:216, packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx:383, packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx:1066 |
完整实现 | 子代理工具池与权限模式会重组;自定义 agent 的 tools/disallowedTools 需要配置正确。 |
| 后台 Agent | Agent 可异步运行,完成后发 <task-notification>,支持输出文件、停止、恢复 |
AgentTool.run_in_background、agent background: true、自动 background |
packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx:827, packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx:959, src/tasks/LocalAgentTask/LocalAgentTask.tsx:214, packages/builtin-tools/src/tools/SendMessageTool/SendMessageTool.ts:871 |
完整实现 | 进程内生命周期依赖 AppState;输出存放在项目 temp 目录;部分恢复依赖 transcript。 |
| Agent worktree isolation | 给 Agent 创建临时 git worktree,完成后无改动自动清理,有改动保留 | AgentTool.isolation = "worktree" |
packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx:861, packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx:921 |
完整实现,受限 | 需要 git 或 hook 支持;有改动时保留 worktree,用户/后续 agent 需处理清理。 |
| Remote agent isolation | Agent 任务丢到 CCR 远端环境执行 | AgentTool.isolation = "remote" |
packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx:667, packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx:679, packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx:691 |
远端依赖,受限 | USER_TYPE === 'ant' 路径;依赖 remote eligibility、OAuth、CCR;本地只注册 remote task 与输出路径。 |
| Fork subagent | 省略 subagent_type 时继承父上下文,强制后台 async,使用 cache-identical prompt |
AgentTool,FORK_SUBAGENT |
packages/builtin-tools/src/tools/AgentTool/forkSubagent.ts:19, packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx:478, packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx:812 |
完整实现,受限 | feature gate 控制;递归 fork 被拒绝;所有 agent spawn 会被 force async。 |
| Agent Teams / Swarm | 创建团队、spawn teammate、共享任务列表和 mailbox | TeamCreate、AgentTool(name/team_name)、TeamDelete |
src/tools.ts:249, packages/builtin-tools/src/tools/TeamCreateTool/TeamCreateTool.ts:92, packages/builtin-tools/src/tools/shared/spawnMultiAgent.ts:334, packages/builtin-tools/src/tools/TeamDeleteTool/TeamDeleteTool.ts:90 |
完整实现 | 主 spawn 路径已统一到 TeammateExecutor;TeamDelete 支持 graceful shutdown request 与可选等待;外部 --agent-teams 已注册;仍受 external killswitch 和真实终端后端可用性影响。 |
| In-process teammate | 在同进程用 AsyncLocalStorage 隔离 teammate,上报任务状态 | swarm backend | src/utils/swarm/spawnInProcess.ts:1, src/utils/swarm/spawnInProcess.ts:104, src/utils/swarm/spawnInProcess.ts:344, src/utils/swarm/inProcessRunner.ts:1, src/utils/swarm/__tests__/spawnInProcess.test.ts:28 |
完整实现 | 适合无 tmux/iTerm 场景;TeamsDialog 已按 agentId kill/cleanup;已有真实 spawnInProcess + mailbox smoke;不能再 spawn background agents;依赖 leader 进程存活。 |
| tmux/iTerm2/Windows Terminal teammate | 通过 pane/backend 启动独立 CLI teammate | Agent team spawn、--teammate-mode windows-terminal |
packages/builtin-tools/src/tools/shared/spawnMultiAgent.ts:334, src/utils/swarm/backends/PaneBackendExecutor.ts:99, src/utils/swarm/backends/TmuxBackend.ts:152, src/utils/swarm/backends/WindowsTerminalBackend.ts:1, src/utils/swarm/backends/registry.ts:426, src/main.tsx:4617 |
完整实现到最小实现,平台受限 | use_splitpane: false 已恢复到 tmux separate-window 和 Windows Terminal new-window 路径;iTerm2 setup prompt 已接回;Windows Terminal 通过 wt split-pane 启动 teammate,支持 auto 检测和显式 windows-terminal 模式,并用 pid 文件 best-effort kill,但 wt.exe 不提供稳定 pane id/hide/show API。 |
| Teammate/Agent 通信 | 向 teammate、后台 agent、UDS/bridge/TCP peer 发送消息、广播、计划批准、shutdown | SendMessageTool |
src/tools.ts:247, packages/builtin-tools/src/tools/SendMessageTool/SendMessageTool.ts:520, packages/builtin-tools/src/tools/SendMessageTool/SendMessageTool.ts:849, packages/builtin-tools/src/tools/SendMessageTool/SendMessageTool.ts:755 |
完整实现,受限 | 跨 bridge/TCP 消息需要显式确认且仅支持 plain text;structured messages 仅本 team。 |
| Pipes / UDS / LAN 终端通讯 | 多个 CLI/终端实例互传消息、attach/detach、主从控制、历史查看、LAN TCP peer | /peers、/who、/attach、/detach、/send、/pipes、/pipe-status、/history、/claim-main、SendMessageTool |
src/commands.ts:122, src/utils/pipeTransport.ts:1, src/utils/pipeRegistry.ts:1, src/hooks/usePipeIpc.ts:1, packages/builtin-tools/src/tools/SendMessageTool/SendMessageTool.ts:789, packages/builtin-tools/src/tools/SendMessageTool/SendMessageTool.ts:812, src/utils/pipeStatus.ts:1 |
完整实现,平台/权限受限 | UDS/named pipe 和 LAN TCP 均有实现;跨机器 TCP/bridge 发送需要显式确认;/autonomy status --deep 已汇总 registry。 |
| 本地任务列表 Task V2 | 创建/读取/更新/列出任务,支持 owner、blocks/blockedBy、hook、锁 | TaskCreate/Get/Update/List 工具;claude task ant-only CLI |
src/tools.ts:239, src/utils/tasks.ts:284, packages/builtin-tools/src/tools/TaskCreateTool/TaskCreateTool.ts:62, packages/builtin-tools/src/tools/TaskUpdateTool/TaskUpdateTool.ts:212, src/main.tsx:5338 |
完整实现,部分受限 | 工具层 interactive 默认可用,non-interactive 需 CLAUDE_CODE_ENABLE_TASKS;CLI task 是 USER_TYPE === 'ant'。 |
| 任务输出与停止 | 读取后台任务输出、停止 background task | TaskOutputTool、TaskStopTool |
src/tools.ts:217, src/tools.ts:231, packages/builtin-tools/src/tools/TaskOutputTool/TaskOutputTool.tsx:151, packages/builtin-tools/src/tools/TaskStopTool/TaskStopTool.ts:72 |
完整实现,受限 | TaskOutputTool 对 ant 禁用且标记 deprecated,推荐直接 Read 输出文件;Stop 只对 AppState 中 running task 生效。 |
| Cron 定时自治 | 定时 enqueue prompt,支持 one-shot/recurring/session-only/durable | CronCreate/Delete/List 工具 |
src/tools.ts:31, packages/builtin-tools/src/tools/ScheduleCronTool/CronCreateTool.ts:52, src/utils/cronScheduler.ts:142, src/hooks/useScheduledTasks.ts:43, src/cli/print.ts:2775 |
完整实现 | Cron 只在进程运行时触发;durable 写 .claude/scheduled_tasks.json,missed one-shot 需要用户确认后执行。 |
| Cron 持久化与调度锁 | 文件任务持久化、调度锁、防双触发、jitter、过期 | .claude/scheduled_tasks.json |
src/utils/cronTasks.ts:1, src/utils/cronTasks.ts:161, src/utils/cronScheduler.ts:347, src/utils/cronScheduler.ts:396 |
完整实现 | 5 字段 cron 子集;本地时区;recurring 默认 7 天后最终触发并删除,permanent 只供 assistant 内建任务。 |
| Proactive 自治循环 | 每 30 秒注入 <tick>,让模型空闲时继续做事或 Sleep |
/proactive、--proactive、KAIROS |
src/commands/proactive.ts:17, src/proactive/useProactive.ts:33, src/proactive/index.ts:37, src/main.tsx:4556 |
完整实现,受限 | 依赖 PROACTIVE 或 KAIROS;tick 会因 loading、plan mode、UI、队列暂停;API error 会 contextBlocked。 |
| Sleep 控制节奏 | proactive 模式下模型主动 sleep,支持中断 | SleepTool |
src/tools.ts:26, packages/builtin-tools/src/tools/SleepTool/SleepTool.ts:54 |
完整实现,受限 | 只有 PROACTIVE 或 KAIROS 构建会加载;proactive 关闭时 sleep 立即中断。 |
| Autonomy run 记录 | 对 proactive tick、scheduled task、managed flow step 建立 queued/running/completed/failed 记录 | /autonomy、内部 queue |
src/utils/autonomyRuns.ts:109, src/utils/autonomyRuns.ts:608, src/commands/autonomy.ts:117 |
完整实现 | 写 .claude/autonomy/runs.json;最多保留 200 条;是审计/恢复辅助,不直接驱动工具权限。 |
| Autonomy CLI / panel / deep status | 汇总本地自治健康状态,并管理 runs/flows | /autonomy 面板、/autonomy ...、claude autonomy status/runs/flows/flow、claude autonomy status --deep |
src/utils/autonomyCommandSpec.ts:1, src/commands/autonomy.ts:1, src/commands/autonomyPanel.tsx:1, src/cli/handlers/autonomy.ts:1, src/main.tsx:5162, src/utils/autonomyStatus.ts:1, src/utils/workflowRuns.ts:1, src/utils/pipeStatus.ts:1, src/utils/remoteControlStatus.ts:1, src/cli/handlers/__tests__/autonomy.test.ts:1 |
完整实现 | /autonomy 无参数走独立 local-jsx 面板并显示 14 个基础子项,覆盖 Auto mode、Runs、Flows、Cron、Workflow runs、Teams、Pipes、Runtime、Remote Control、RemoteTrigger 等 deep status sections;slash 与 CLI 共用 autonomyCommandSpec 和 handler;命令面板 argumentHint、usage、CLI 子命令描述集中管理;CLI 支持 status/runs/flows/flow detail/cancel/resume;CLI resume 会创建/恢复 run 并打印可执行 prompt,不依赖 REPL 内存队列。 |
| Autonomy authority / heartbeat | 自动 turn 注入 .claude/autonomy/AGENTS.md、HEARTBEAT.md authority,并启动 managed flow |
自动 turn 构造路径 | src/utils/autonomyAuthority.ts:14, src/utils/autonomyAuthority.ts:375, src/utils/autonomyAuthority.ts:425, src/utils/autonomyRuns.ts:696 |
完整实现 | 仅 proactive tick 会消费 due heartbeat;managed flow 是本地文件状态机,需自动 turn 持续触发推进。 |
| Managed autonomy flows | HEARTBEAT step flow 的 queued/running/completed/blocked/cancelled 状态机 | /autonomy flow ... |
src/utils/autonomyFlows.ts:414, src/utils/autonomyFlows.ts:506, src/commands/autonomy.ts:37 |
最小实现到完整之间 | 状态和队列清晰;实际 step 执行仍通过普通 prompt/agent loop 完成,不是独立 workflow runner。 |
| Monitor 长驻命令 | 后台运行 tail/watch/poll 等长命令,并输出到任务文件 | MonitorTool |
src/tools.ts:43, packages/builtin-tools/src/tools/MonitorTool/MonitorTool.tsx:44, packages/builtin-tools/src/tools/MonitorTool/MonitorTool.tsx:130 |
完整实现,受限 | MONITOR_TOOL feature;复用 Bash 权限;命令可有副作用,模型需正确选择非交互命令。 |
| WorkflowTool | 执行并跟踪 .claude/workflows 中的 Markdown/YAML workflow |
WorkflowTool |
src/tools.ts:254, packages/builtin-tools/src/tools/WorkflowTool/WorkflowTool.ts:20, packages/builtin-tools/src/tools/WorkflowTool/WorkflowTool.ts:269, src/utils/workflowRuns.ts:113, packages/builtin-tools/src/tools/WorkflowTool/__tests__/WorkflowTool.test.ts:21 |
完整实现 | 支持 start/status/list/advance/cancel,状态写入 .claude/workflow-runs 并进入 /autonomy status --deep;当前 runner 负责步骤状态推进,具体步骤动作仍由 agent 按返回提示执行。 |
| Daemon supervisor | daemon start/stop/status 管理长期 worker,崩溃重启、backoff、parking |
claude daemon ... |
src/entrypoints/cli.tsx:181, src/daemon/main.ts:39, src/daemon/main.ts:216, src/daemon/state.ts:61 |
最小实现 | 当前 supervisor 固定只拉 remoteControl worker;状态文件以 remote-control 命名,不是泛化 worker manager。 |
| Daemon worker registry | 内部 --daemon-worker=<kind> 分派 worker |
--daemon-worker=remoteControl |
src/entrypoints/cli.tsx:119, src/daemon/workerRegistry.ts:25, src/daemon/workerRegistry.ts:48 |
最小实现 | 只实现 remoteControl,未知 kind 直接 permanent error。 |
| Background sessions | 后台启动 CLI 会话,支持 status/logs/attach/kill,Windows 用 detached,Unix 优先 tmux | --bg、--background、daemon bg/attach/logs/kill |
src/entrypoints/cli.tsx:197, src/cli/bg.ts:281, src/cli/bg/engines/index.ts:5, src/cli/bg/engines/detached.ts:16, src/cli/bg/engines/tmux.ts:7 |
完整实现 | detached engine 无交互 TTY,要求 -p/--print 或 pipe;tmux 返回 pid 0,依赖子进程注册 PID 文件。 |
| Session registry | 所有顶层会话写 PID json,支持 ps/status、并发会话统计 | ~/.claude/sessions/<pid>.json |
src/utils/concurrentSessions.ts:55, src/main.tsx:3070, src/cli/bg.ts:16 |
完整实现 | teammate/subagent 跳过注册;WSL 对 Windows PID 存活检查保守。 |
| Remote Control bridge | 本机作为 claude.ai/code 远控环境,poll work、spawn session、支持 same-dir/worktree/capacity | `claude remote-control | rc | remote | sync |
| Bridge headless daemon | daemon worker 中无 TUI 运行 Remote Control,预创建 session,可多 session | daemon start -> worker -> runBridgeHeadless |
src/daemon/main.ts:216, src/daemon/workerRegistry.ts:48, src/bridge/bridgeMain.ts:2800, src/bridge/bridgeMain.ts:2928 |
完整实现,远端/订阅运行条件 | trust 未接受、HTTP 非 localhost、worktree 不可用等会 permanent error;auth/token 是关键运行风险。 |
| Remote session / teleport | 本地创建或恢复 CCR remote session,CLI 可进入 remote TUI | --remote、--teleport |
src/main.tsx:4033, src/main.tsx:4044, src/main.tsx:4080, src/main.tsx:4157 |
完整实现,远端/订阅运行条件 | 依赖 allow_remote_sessions policy、OAuth、远端后端 gate;非 remote TUI 时只打印链接并退出。 |
| RemoteTrigger | 管理远端 scheduled remote agent triggers,并记录本地调用审计 | RemoteTriggerTool |
src/tools.ts:39, packages/builtin-tools/src/tools/RemoteTriggerTool/RemoteTriggerTool.ts:48, packages/builtin-tools/src/tools/RemoteTriggerTool/RemoteTriggerTool.ts:151, src/utils/remoteTriggerAudit.ts:28, src/utils/autonomyStatus.ts:136 |
完整实现,远端/订阅运行条件;本地审计完整 | 订阅/OAuth/policy/GrowthBook 满足时可走官方远端触发;本地已记录 success/failure、status、error、audit_id 到 .claude/remote-trigger-audit.jsonl。 |
| KAIROS assistant attach | 连接到运行中的 assistant/bridge session,viewer-only REPL | claude assistant [sessionId] |
src/main.tsx:829, src/main.tsx:5197, src/main.tsx:3880, src/assistant/sessionDiscovery.ts:17 |
最小实现,远端依赖,受限 | discovery 走 Sessions API;无 session 时触发安装向导;具体 installer 不在本次展开。 |
| KAIROS assistant prompt addendum | 加载 ~/.claude/agents/assistant.md 到系统提示词 |
--assistant / KAIROS gate |
src/assistant/index.ts:42, src/main.tsx:2719 |
最小实现 | 文件不存在则空字符串;没有校验或默认内容。 |
| Assistant team initialization | assistant 模式预创建 session-scoped in-process team | initializeAssistantTeam() |
src/assistant/index.ts:27, src/main.tsx:1491, src/assistant/__tests__/index.test.ts:34 |
完整实现,受限 | 生成 assistant team file、leader teamContext、team task list;仍受 KAIROS/assistant gate 控制。 |
| Brief/User message | 自治任务主动向用户发送可见消息/附件 | BriefTool / legacy SendUserMessage、--brief |
src/tools.ts:13, packages/builtin-tools/src/tools/BriefTool/BriefTool.ts:89, packages/builtin-tools/src/tools/BriefTool/BriefTool.ts:150 |
完整实现,受限 | 依赖 KAIROS 或 KAIROS_BRIEF、opt-in 或 assistant mode;附件需路径校验和 bridge 上传路径。 |
| Push notification / PR subscription / review artifact | KAIROS 周边通知与 webhook | PushNotificationTool、SubscribePRTool、ReviewArtifactTool |
src/tools.ts:51, src/tools.ts:56, src/tools.ts:263 |
受限/未完全审计 | 本次只确认入口和 gate,未展开实现;属于 KAIROS 辅助而非核心自治调度。 |
深度调用链分组
1. 权限自治:auto mode
入口层:
- CLI 允许
--permission-mode <mode>,并在TRANSCRIPT_CLASSIFIER开启时注册--enable-auto-mode。 - Ant-only 老别名
--delegate-permissions、--afk会映射到permissionMode: auto。 auto-mode defaults/config/critique是独立配置检查命令,不直接触发权限判定。
核心链路:
initialPermissionModeFromCLI()解析 CLI、settings 和 bypass/auto 熔断。- 进入 auto 时
transitionPermissionMode()设置autoModeActive并调用stripDangerousPermissionsForAutoMode()。 - 工具权限
hasPermissionsToUseTool()对原本ask的调用进入 auto 分支。 - 先走 fast path:安全工具 allowlist、
acceptEdits能放行的普通编辑。 - 否则
classifyYoloAction()构造 system prompt + 历史工具轨迹 + 当前 action,调用sideQuery()做 classifier。 - classifier parse 失败、无 tool use、API 错误默认 fail closed,返回 block。
关键边界:
PowerShellTool默认不走 auto classifier,除非POWERSHELL_AUTO_MODE。- 安全检查若
classifierApprovable为 false,不允许 auto 绕过。 - auto availability 由 settings、GrowthBook
tengu_auto_mode_config、模型支持、fast-mode breaker 共同决定。 - 子代理 handoff 也可在 auto 模式下再跑一次 classifier,防止子代理输出危险结果。
2. 多代理自治:Agent + Team + Task
AgentTool 有四条主要路径:
- 同步子代理:直接
runAgent(),结束后finalizeAgentTool()。 - 异步子代理:
registerAsyncAgent()后 fire-and-forgetrunAsyncAgentLifecycle(),完成时写 task notification。 - worktree 子代理:先
createAgentWorktree(),结束后无改动清理、有改动保留。 - remote 子代理:Ant-only 路径,
teleportToRemote()创建 CCR session,然后注册 remote task。
Team/swarm 叠加在 AgentTool 之上:
TeamCreate写 team file,注册 leader,重置团队 task list。AgentTool发现team_name + name时走spawnTeammate(),而不是普通子代理。spawnTeammate()现已完成抽离:主链路统一调用getTeammateExecutor(true),后端差异由InProcessBackend/PaneBackendExecutor/TmuxBackend承接,spawnMultiAgent.ts只保留 team file、AppState、输出组装等产品层职责。- teammate 可通过 tmux/iTerm2 pane、tmux separate-window legacy 路径或 in-process runner 执行。
TaskCreate/Update/List/Get作为团队共享任务板;TaskUpdate会自动设置 owner,并通过 mailbox 通知新 owner。SendMessage提供 teammate DM、广播、shutdown request/response、plan approval response,也能给后台 agent 续写 prompt 或从 transcript 恢复。TeamDelete遇到 active teammate 时会优先通过 executor 发送 graceful shutdown request,然后阻止目录清理,避免直接删除仍在运行的 team。
关键边界:
isAgentSwarmsEnabled():Ant 默认开;外部需要 env/flag + GrowthBook gate;--agent-teams已注册为外部合法 CLI flag。- in-process teammate 不能 spawn background agents,也不能嵌套 spawn teammate。
TeamDelete会请求 active 成员 graceful shutdown,并可通过wait_ms等待成员退出/idle 后继续清理。- Windows 原生已有
WindowsTerminalBackend最小实现:用wt split-pane启动 teammate,use_splitpane: false时用wt -w -1 new-tab打开独立 Windows Terminal 窗口,--teammate-mode windows-terminal可显式启用,并通过临时 pid 文件支持 best-effort kill。由于 wt.exe 没有稳定 pane id/hide/show API,真实 pane 生命周期仍需 smoke 和 UI 降级文案。
3. 时间自治:Cron + proactive + autonomy records
Cron 是最成熟的本地自治调度:
CronCreate校验 5 字段 cron、next run、MAX_JOBS 50。- 默认 session-only;
durable: true写.claude/scheduled_tasks.json。 createCronScheduler()在 REPL、print/SDK、daemon dir 模式复用。- 文件任务用
.claude/scheduled_tasks.lock竞态锁避免多会话重复触发。 - recurring 任务写
lastFiredAt并 jitter;one-shot 触发后删除。 - missed one-shot 在下一次启动时只提示,要求 AskUserQuestion 确认后执行。
Proactive 是“空闲自治循环”:
/proactive打开后,每 30 秒准备<tick>prompt。- REPL hook 在 loading、plan mode、local UI、已有队列时延后。
- print/headless 模式也有 tick 注入逻辑。
SleepTool让模型主动等待,并在 proactive 关闭或用户中断时提前返回。
Autonomy records 是审计层:
createAutonomyQueuedPrompt()会调用prepareAutonomyTurnPrompt()注入 authority。- 每个自动 prompt 都写
.claude/autonomy/runs.json。 HEARTBEAT.md可定义 interval 和 steps;proactive tick 会收集 due tasks 并启动 managed flow。/autonomy能查看 runs/flows,取消或恢复等待中的 flow。
关键边界:
- Cron 不是系统级 daemon,除非有 REPL/print/daemon scheduler 在跑。
- durable cron 只恢复文件任务,session-only 死于进程退出。
- managed flow 的 step 执行仍是 prompt 队列,不是独立工作流执行引擎。
4. 进程自治:daemon 与 background sessions
daemon namespace 统一两类东西:
- Supervisor:
daemon start/stop/status管理remoteControlworker。 - Background sessions:
daemon bg/attach/logs/kill管理后台 CLI 会话。
实现情况:
daemon start写~/.claude/daemon/remote-control.json,spawn--daemon-worker=remoteControl。- worker 崩溃会指数退避重启,快速失败超过阈值会 parking。
daemon status同时显示 supervisor 和~/.claude/sessions里的 background sessions。--bg/--background是到daemon bg的快捷入口。- Windows 或无 tmux 时使用 detached engine;detached 要求
-p/--print或 pipe,因为没有交互 TTY。
关键边界:
- worker registry 目前只支持
remoteControl。 - supervisor 没有通用任务队列或多 worker 配置文件,更多是 remote-control 长驻包装。
tmuxengine 启动时返回 pid 0,真实 PID 依赖子进程自身registerSession()。
5. 远端自治:Remote Control / CCR / RemoteTrigger
Remote Control / CCR / RemoteTrigger 是完整实现的远端自治能力,运行条件是订阅、OAuth、GrowthBook、组织 policy 和远端服务可达:
cli.tsxfast-path 在BRIDGE_MODE下拦截remote-control|rc|remote|sync|bridge。- 先检查 OAuth/bridge token、GrowthBook entitlement、版本、组织 policy。
bridgeMain()注册 bridge environment 后进入 poll loop,按spawnMode和capacity接收远端 work。- multi-session 支持
same-dir和worktree,worktree 需要 git 或 hooks。 - daemon worker 可用
runBridgeHeadless()无 TUI 长驻远控。
Remote session / teleport:
--remote "task"创建 CCR session,可根据 gate 只打印链接或进入 remote TUI。--teleport恢复远端 session。- 需要
allow_remote_sessionspolicy。
RemoteTrigger:
- 是对
/v1/code/triggers的 HTTP wrapper,支持 list/get/create/update/run。 - 依赖
tengu_surreal_dali、policy、OAuth、org UUID;这类依赖对订阅用户是可用性条件,不等于本地功能缺失。 - 每次调用都会写
.claude/remote-trigger-audit.jsonl,成功和失败都会保留 action、trigger id、HTTP status 或错误、audit_id。 /autonomy status --deep会读取最近 RemoteTrigger 审计记录,避免模型把远端调用结果和本地自治健康状态混在一起。
关键边界:
- 这些能力不是本地自足自治,但调用链不是占位;远端 API、订阅、组织策略、token scope 是运行前提。
- self-hosted bridge/RCS 可以替代 Remote Control 的部分本地 dispatch、poll、heartbeat 需求;官方 CCR/RemoteTrigger 仍按订阅路径走。
- 本项目内的判断应写成“完整实现,远端/订阅运行条件”,而不是“未实现”或“薄壳”。
6. 终端通讯:pipes / UDS / LAN
项目内有一套独立于 Agent Teams 的终端通讯能力:
PipeServer/PipeClient使用 UDS 或 Windows named pipe 进行 NDJSON 消息通信,协议包含 ping/pong、attach/detach、prompt、stream、tool_start、tool_result、done、permission_request/response/cancel、chat/cmd 等消息类型。pipeRegistry管理 main/sub CLI 实例、机器 ID、pipeName、TCP port、LAN visibility,并通过 lock file 处理并发注册。/pipes展示 registry、选择/取消选择 pipe、显示 LAN peers;/pipe-status显示 master/sub 控制状态;/attach、/detach、/send、/history、/claim-main提供主从控制和消息流。SendMessageTool支持uds:、tcp:、bridge:地址;UDS 本机消息可直接发,TCP/LAN 和 bridge 需要显式用户确认。/autonomy status --deep和claude autonomy status --deep已加入## Pipes区块,读取 pipe registry,显示 main/sub/tcp 状态。
关键边界:
- pipes 是完整实现,不是占位;它和 teammate mailbox 是两条不同通讯面。
- TCP/LAN 跨机器消息有安全边界,必须保留显式确认。
- deep status 只读 registry,不主动探活或建立连接;实时 alive 状态仍由
/pipes和/pipe-status更适合展示。
7. Autonomy 命令面板与 CLI 参数路由
/autonomy 现在按 docs/slash-command-mcp-routing.md 中描述的分层方式处理:
- 第一层仍由
slashCommandParsing.ts拆出commandName=autonomy和原始args。 - 命令定义在
src/commands/autonomy.ts,类型为local-jsx,并通过argumentHint把参数形态显示给命令面板。 - 无参数
/autonomy路由到src/commands/autonomyPanel.tsx,显示独立面板和子项,不直接把 status 文本塞进对话区域。 - 参数规格集中在
src/utils/autonomyCommandSpec.ts,包含命令名、描述、usage、CLI 子命令描述和parseAutonomyArgs()。 - slash command 和 CLI handler 均复用同一份 parser/handler,避免
/autonomy与claude autonomy各自维护参数分支。 - CLI 侧仍由 Commander 注册子命令,但名称、描述、usage 从
AUTONOMY_CLI读取。
子命令映射:
| 输入 | 路由目标 | 说明 |
|---|---|---|
/autonomy |
<AutonomyPanel> |
独立面板,展示 14 个基础子项:Overview、Full deep status、Auto mode、Runs summary、Recent runs、Flows summary、Recent flows、Cron、Workflow runs、Teams、Pipes、Runtime、Remote Control、RemoteTrigger;并追加最近 flow 子项 |
/autonomy status / claude autonomy status |
getAutonomyStatusText() |
runs + flows 概览 |
/autonomy status --deep / claude autonomy status --deep |
formatAutonomyDeepStatus() |
全量本地自治健康状态 |
/autonomy runs [limit] / claude autonomy runs [limit] |
getAutonomyRunsText() |
最近 runs |
/autonomy flows [limit] / claude autonomy flows [limit] |
getAutonomyFlowsText() |
最近 flows |
/autonomy flow <id> / claude autonomy flow <id> |
getAutonomyFlowText() |
flow detail |
/autonomy flow cancel <id> / claude autonomy flow cancel <id> |
cancelAutonomyFlowText() |
取消 flow |
/autonomy flow resume <id> / claude autonomy flow resume <id> |
resumeAutonomyFlowText() |
slash 入 REPL 队列;CLI 打印可执行 prompt |
8. KAIROS/Assistant
已实现部分:
claude assistant [sessionId]可 attach 到运行中的 bridge session。- 无 session 时走 assistant install wizard,安装后提示稍后重试。
--assistant会强制 assistant mode,跳过 gate,供 Agent SDK daemon 使用。- assistant mode 会加载
~/.claude/agents/assistant.md作为系统提示词附加内容。 - assistant/KAIROS 与 Brief、Cron、Proactive、Remote Control 有耦合。
initializeAssistantTeam()会创建 session-scoped assistant team file、leader teamContext、team task list,并设置 leader task list id,使 assistant mode 可直接用Agent(name)路径 spawn in-process teammates。
关键边界:
- KAIROS 受 build flag 与
tengu_kairos_assistantruntime gate 控制。 - assistant attach/discovery 依赖 Sessions API。
- assistant mode 的默认 team 已实现本地 bootstrap;真实 assistant/KAIROS attach 场景仍需要 smoke 验证。
受限矩阵
| 限制类型 | 影响能力 | 证据 |
|---|---|---|
| Build feature flag | TRANSCRIPT_CLASSIFIER、BRIDGE_MODE、DAEMON、BG_SESSIONS、KAIROS、PROACTIVE、MONITOR_TOOL、FORK_SUBAGENT、UDS_INBOX 等 |
build.ts:13, scripts/dev.ts:26, src/tools.ts:26, src/entrypoints/cli.tsx:124 |
USER_TYPE === 'ant' |
task CLI、remote agent isolation、some tools、PowerShell auto-mode branches、REPLTool 等 | src/main.tsx:4522, src/main.tsx:5337, packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx:667, src/tools.ts:16 |
| GrowthBook / policy | auto mode、Remote Control、RemoteTrigger、Brief、agent teams external killswitch、cron durable gate | src/utils/permissions/permissionSetup.ts:1091, src/bridge/bridgeEnabled.ts:32, packages/builtin-tools/src/tools/RemoteTriggerTool/RemoteTriggerTool.ts:57, packages/builtin-tools/src/tools/BriefTool/BriefTool.ts:89 |
| OAuth / subscription | Remote Control、RemoteTrigger、remote sessions、assistant discovery | src/entrypoints/cli.tsx:156, src/bridge/bridgeEnabled.ts:74, packages/builtin-tools/src/tools/RemoteTriggerTool/RemoteTriggerTool.ts:78, src/assistant/sessionDiscovery.ts:17 |
| Platform / network | tmux/iTerm/Windows Terminal teammate、background attach、UDS/named pipe、LAN TCP pipes | src/cli/bg/engines/index.ts:5, src/utils/swarm/backends/registry.ts:108, src/main.tsx:1582, src/utils/pipeTransport.ts:122, src/utils/pipeRegistry.ts:1 |
| Session lifetime | session-only cron、in-process teammate、AppState background tasks | src/utils/cronTasks.ts:188, src/utils/swarm/spawnInProcess.ts:1, src/tasks/LocalAgentTask/LocalAgentTask.tsx:137 |
订阅/远端类状态说明:
- 订阅可用且实现完整:Remote Control、RemoteTrigger、remote session、KAIROS assistant discovery 等在 claude.ai subscription、full-scope OAuth、对应 GrowthBook gate、组织 policy 允许时可以走官方路径。
- 可自建替代:Remote Control 的部分 dispatch/poll/heartbeat 场景可用 self-hosted bridge/RCS 替代;Workflow/Cron/Agent Teams/Task V2 已是本地状态机,不依赖官方远端。
- 不可本地伪造:RemoteTrigger 的官方远端 trigger 执行、CCR remote session、assistant/channel 后端语义不能只靠本地代码等价复刻;当前只能本地记录审计、暴露状态和提供 self-hosted 旁路能力。
测试覆盖证据
已发现的直接相关测试:
- Cron:
src/utils/__tests__/cron.test.ts、cronScheduler.baseline.test.ts、cronTasks.baseline.test.ts - Autonomy:
src/utils/__tests__/autonomyAuthority.test.ts、autonomyFlows.test.ts、autonomyRuns.test.ts、src/commands/__tests__/autonomy.test.ts - Autonomy panel / CLI:
src/commands/__tests__/autonomy.test.ts覆盖无参数面板;src/cli/handlers/__tests__/autonomy.test.ts覆盖status、--deep、flows、flowdetail、flow cancel、flow resume。 - Autonomy command spec:
src/utils/__tests__/autonomyCommandSpec.test.ts覆盖命令面板argumentHint和 slash/CLI 共享 parser。 - Proactive:
src/proactive/__tests__/state.baseline.test.ts、src/commands/__tests__/proactive.baseline.test.ts - Daemon/bg:
src/daemon/__tests__/daemonMain.test.ts、src/daemon/__tests__/state.test.ts、src/cli/bg/__tests__/detached.test.ts - Permissions:
src/utils/permissions/__tests__/PermissionMode.test.ts、permissions.test.ts、dangerousPatterns.test.ts - Agent utilities:
packages/builtin-tools/src/tools/AgentTool/__tests__/agentToolUtils.test.ts - Agent Teams 加固:
src/utils/swarm/__tests__/agentTeamsLifecycle.test.ts、src/utils/swarm/backends/__tests__/PaneBackendExecutor.test.ts、src/utils/swarm/backends/__tests__/WindowsTerminalBackend.test.ts、src/utils/swarm/__tests__/spawnInProcess.test.ts(真实 in-process task + mailbox smoke 和 kill)、src/utils/swarm/__tests__/spawnUtils.test.ts、src/utils/__tests__/teamDiscovery.test.ts、packages/builtin-tools/src/tools/shared/__tests__/spawnMultiAgent.test.ts - RemoteTrigger 审计:
src/utils/__tests__/remoteTriggerAudit.test.ts、packages/builtin-tools/src/tools/RemoteTriggerTool/__tests__/RemoteTriggerTool.test.ts - Pipes deep status:
src/utils/__tests__/pipeStatus.test.ts、src/commands/__tests__/autonomy.test.ts - Remote Control local status:
src/utils/__tests__/remoteControlStatus.test.ts、src/commands/__tests__/autonomy.test.ts - 外部审阅:
.omx/artifacts/claude-claude-autonomy-status-deep-agent-teams-pipes-uds-lan-remote-2026-04-18T03-15-17-181Z.md,ask-claude 判定COMPLETE,无阻塞性代码缺口。
测试缺口:
- Remote Control/bridge/RemoteTrigger 的端到端依赖远端 API;当前项目调用链完整,本地单测覆盖 parsing/state/部分 auth 分支、本地配置状态和本地审计记录,真实订阅路径需要实机/账号环境验证。
- KAIROS assistant install/discovery 的真实远端流程未在本报告中确认有完整 e2e;本地 assistant team bootstrap 已有单元测试覆盖。
- WorkflowTool runner 已有
packages/builtin-tools/src/tools/WorkflowTool/__tests__/WorkflowTool.test.ts覆盖 start/advance/list/cancel,并由src/commands/__tests__/autonomy.test.ts覆盖 deep status workflow-runs 区块;仍缺真实 agent 执行步骤的端到端 smoke。 - Team/swarm 的主代码路径已补回归测试;真实 tmux/iTerm2/Windows Terminal 分屏仍受平台影响,需要手动 smoke 或后续平台 e2e。
主要缺口与建议
-
自治管理代码层面可标记完整 ask-claude 外部审阅与本地验证结论一致:当前没有阻止标记完整实现的代码缺口。剩余项应进入验收/优化队列,而不是继续归为未完成实现。
-
Assistant team 初始化已完成本地 bootstrap
initializeAssistantTeam()已返回完整 teamContext 并写入 team file / task list。剩余工作是做真实 assistant/KAIROS attach 场景 smoke,确认 daemon/bridge session 中的Agent(name)能直接复用该 team context。 -
WorkflowTool 已升级为本地 runner,并纳入 deep status 当前已支持从
.claude/workflows/<name>.md|yaml解析步骤,创建.claude/workflow-runs/<runId>.json,并提供start/status/list/advance/cancel。/autonomy status --deep已增加 workflow-runs 专区。剩余增强点是更严格的 YAML schema、重试策略、step 失败原因记录和真实 agent 执行步骤 smoke。 -
daemon supervisor 目前不是通用自治调度器 只固定管理
remoteControlworker。若要“自治管理中心”,需要 worker config、worker registry 扩展、任务队列、健康检查、日志分层和 restart policy 配置化。 -
Remote Control/CCR/RemoteTrigger 是完整实现,后续是观测和分流 当前应按“完整实现,远端/订阅运行条件”归类。剩余工作不是补核心执行,而是把官方订阅路径、policy 拒绝、token/scope 错误、self-hosted bridge/RCS 替代路径在 status/错误提示里拆清楚。
-
权限自治依赖 classifier 可用性 设计上 fail closed 是对的,但在长自治链路中会频繁中断。建议把 classifier unavailable 的用户可恢复路径、重试策略和降级提示作为一等状态暴露给
/autonomy或 status UI。 -
跨平台团队体验仍需真机验证 目前已强化 in-process teammate,恢复 tmux split-pane / separate-window 路径与 iTerm2 setup prompt,并新增 Windows Terminal 后端。Windows Terminal 后端的限制来自 wt.exe 本身:可 launch split pane/new window,但没有稳定 pane id/hide/show 查询面;当前 kill 通过 teammate shell pid 文件 best-effort 完成,后续应做 Windows 真机 smoke 并把不可用的 hide/show/isActive 明确降级。
-
状态分散已初步收束 相关状态仍分布在 AppState、
~/.claude/sessions、~/.claude/daemon、~/.claude/tasks、.claude/scheduled_tasks.json、.claude/autonomy/*.json、team files、temp task output、.claude/remote-trigger-audit.jsonl、pipe registry。/autonomy status --deep与claude autonomy status --deep已提供本地只读汇总入口;后续可继续补 CCR/Remote Control 的更细远端会话健康状态。
最终分类
完整实现:
- Auto mode 权限判定与安全剥离
- 子代理同步/后台执行
- Agent Teams / Swarm 主闭环(TeamCreate、executor-backed spawn、Task V2、SendMessage、TeamDelete shutdown request/wait)
- Assistant team initialization
- 本地任务列表与任务依赖
- Cron 调度、持久化、锁、jitter
- Proactive tick 与 Sleep
- Autonomy run/flow 记录
- Autonomy deep status (
/autonomy status --deep) - Workflow runner 与 workflow-runs deep status (
WorkflowToolstart/status/list/advance/cancel;slash + full CLI autonomy status/runs/flows/flow management) - RemoteTrigger 本地审计记录与 deep status 汇总
- Pipes / UDS / LAN 终端通讯与 deep status 汇总
- Remote Control bridge / CCR remote session / RemoteTrigger 官方远端路径(完整实现,远端/订阅运行条件)与本地配置/deep status 汇总
- Background sessions
- Session registry
- SendMessage/team mailbox
- Monitor 长驻命令
最小实现:
- Daemon supervisor/worker registry
- KAIROS assistant attach
- Managed autonomy flows
- WindowsTerminalBackend 原生 Windows 分屏/新窗口后端
薄封装/远端依赖:
- Remote agent isolation
- Brief 附件发送的远端可见性路径
未完全展开:
- PushNotification、SubscribePR、ReviewArtifact 的内部实现。本报告只确认它们是 KAIROS/自治辅助入口且受 feature gate 控制,没有逐行审计其 API 协议。
- Bridge poll loop 的所有 session spawn 分支。已确认注册、poll、capacity、headless worker、spawn mode 主链路,未逐个展开 bridge session 子状态机。