配置与 Agent 启动
aw.yaml 保存 Agent 入口、启用的 Provider 和运行数据位置。
模型账号仍使用 Agent 自己的配置。首次配置先完成安装。
生成配置
沿用安装页的变量。config init 不覆盖已有文件;修改配置见下一节。
aw config init --prefix "$AW_PREFIX" \
--config "$AW_HOME/aw.yaml" --state-dir "$AW_HOME/state" \
--qoder "$AW_QODER"
| 需要的能力 | 在生成命令中增加 |
|---|---|
| 只启动 Agent | 不增加 Provider 参数 |
| 工具输出压缩 | --provider tokenless |
| 工具安全检查 | --provider sec-core --socket /run/agent-sec-core/daemon.sock |
| 安全检查和压缩 | --provider sec-core+tokenless --socket /run/agent-sec-core/daemon.sock |
先安装所选 Provider;生成器会填入程序路径和校验信息。
修改已有配置
通过重启生效的修改,应先退出使用这份配置的 Agent,并用原配置停止服务再编辑。 支持热更新的实例可对策略字段使用下述空闲更新流程。配置文件不会被自动监听。
aw stop --config "$AW_HOME/aw.yaml"
cp "$AW_HOME/aw.yaml" "$AW_HOME/aw.yaml.bak"
aw config show --config "$AW_HOME/aw.yaml"
可以直接编辑 YAML,也可以用 aw config 增删 Provider 和 Hook。
文件与父目录应属于当前用户,且不能被其他用户写入;配置编辑器要求绝对路径,
不接受符号链接。show 会显示配置中的私有值,分享输出前请自行删去敏感内容。
aw config validate --config "$AW_HOME/aw.yaml"
aw run --config "$AW_HOME/aw.yaml" --agent qoder
校验成功会打印 configuration valid。它检查字段和引用,实际程序是否可用会在启动时检查。
YAML 中的路径须写成真实绝对路径,AW 不展开 $HOME 等变量。
完整编辑命令和自定义规则示例见配置工具参考。
为 Hook 步骤选择工具
在已有步骤上设置 match.tools,限定哪些工具会调用其 Provider。
已声明 security Provider,以及使用 qoder 和 openclaw Adapter 的 Agent
目标时,以下事件片段检查 Qoder 的 Bash 和 OpenClaw 的 exec;其他工具跳过扫描步骤。
tool.before:
enabled: true
required: true
match: {tools: ["*"]}
steps:
- id: scan-code
provider: security
operation: scan_code
match: {tools: ["native:qoder:Bash", "native:openclaw:exec"]}
effects: [observe, block]
on_error: block
事件和步骤选择器必须同时匹配。任一层省略选择器或使用 ["*"] 时,该层选择
全部工具。标准名称 bash、file_read、file_write 匹配 Adapter 规范化的工具名;
精确的 native:<adapter>:<name> 使用 Adapter ID 和 Adapter 保留的
event.tool.native_name,区分大小写。每个 native 选择器的 Adapter ID 都须出现在
spec.agents[*].adapter 中。校验采用全部已配置目标的 Adapter 并集,因此声明了
Qoder 和 OpenClaw 后,两者的选择器可以共用事件或步骤。列表须非空且无重复,
* 必须单独使用;不支持正则或 glob 模式。
OpenClaw 在 tool.after 的 event.tool.name 中将 bash 规范化为 exec、apply-patch
规范化为 apply_patch、cron 规范化为 automations;event.tool.native_name
保留回调传入的名称。结果替换与完成观察分别回调时,AW 从替换快照恢复已保存的
原始名称。独立的完成事件使用其自身回调传入的名称。
启动时,AW 仅排除事件与步骤选择器交集确定无法匹配当前 Adapter 的步骤。 例如,同一配置中的 QwenPaw 专属步骤,不会让 Qoder SDK 启动时准备该 Provider 或要求对应效果能力。配置结构、引用和选择器拼写仍对整个文件校验;通配符以及 无法确定的标准名/原生名交集继续严格检查能力。剩余步骤共同决定 Provider 准备、 原生路由及末尾结果替换顺序。
已准入但未匹配当前工具的步骤记录 kind: skipped,不调用 Provider。其他步骤保留原有顺序和选择
条件,观察或压缩步骤仍可继续执行。启动时仍检查 Provider 准备和配置。
原生权限提示和拒绝继续生效。sec-core 的输入映射须另行配置,见安全检查。
设置 Agent 退出宽限期
应用的退出处理需要更多时间关闭请求和 SDK 客户端时,在所选 Agent 的配置中设置
spec.agents.<target>.shutdown_grace_ms。该值为 1 到 120000 毫秒的整数,
省略时保留默认 2000 毫秒。例如,shutdown_grace_ms: 15000 从前台 launcher
首次向自有 Agent 进程组转发外部退出信号起,给予该组 15 秒宽限期;宽限期结束后,
AW 开始强制清理。重复退出信号不会重新开始计时。转发信号前的等待与最终进程清理
耗时不计入该区间,因此该字段不是整个退出操作的总期限。
该设置不改变内部 readiness 或生命周期失败时强制清理前的两秒宽限期。Agent 自然
退出后,立即开始清理其遗留子进程。它也不改变 aw stop 的服务退出行为,或通过
aw agent connect 接入的独立启动 Agent 的生命周期。
应用仍需停止接收新请求、排空工作并关闭 SDK 客户端。增加此宽限期不会自动完成这些 操作,也不保证 SDK 清理成功完成。请协调应用期限、容器或监督器的退出预算与该值, 并在实际部署镜像中验证退出行为。
修改仅对新启动的 launcher 生效,策略更新不能改变该字段。旧版 AW 二进制会拒绝 包含此字段的配置。回退前删除该字段,并按恢复后的默认两秒安排退出流程。
比较策略修改
准备独立的候选文件,与现有配置比较:
aw validate --config next.yaml --against current.yaml
两份文件都经过完整校验,只允许 Provider、事件和默认事件预算变化。
Agent 入口、原生调度、服务路径、审计、观测和元数据必须相同。
成功打印 policy update scope valid; runtime activation is not checked。
比较不运行 Provider、不修改文件、不检查原生就绪,也不更新运行中的 Agent。
启用稳定桥接的实例可使用下述显式空闲更新;其他实例使用前述停止、编辑、启动流程。
原有 aw validate --config FILE 继续打印 configuration valid。
两个验证入口还会按每个已声明 target 列出事件与步骤选择器无法重叠的已启用步骤。
例如 target sdk: projected out tool.after/app-result (tool selectors do not overlap)
表示该步骤不会对 sdk 执行。应据此核对共享配置的预期安全覆盖;有意配置的跨 target
选择仍然合法,无法静态判断的原生别名保留适用。
aw config validate --json 在诊断非空时输出 result.projected_out_steps,
每项包含 target、event 和 step_id;--quiet 隐藏人类可读的提示行。
使用 --against 时,诊断描述候选配置。离线投影不会生成运行时审计事件或调用 Provider。
aw config validate 与 aw validate 等价,支持 --against 和相对文件路径,
不执行编辑器的所有权检查。独立 aw-package 命令及其更严格的编辑器验证已删除。
初始化、查看和编辑继续使用 aw config init、aw config show 与编辑命令;
这些动作的文件安全检查并不意味着 aw config validate 替代了已删除的严格验证器。
注册原生 Hook
对于支持持久原生注册的 Agent,使用 aw agent connect --config FILE --agent TARGET,
并提供所需的原生选项,例如 Hermes 的 --native-profile。它沿用既有 Adapter 注册
和支持性检查,不安装 Agent 或软件包。旧的 aw install --config FILE --agent TARGET
语法仍兼容;与 --prefix 或 --bundle 混用会被拒绝。
更新预热实例
普通受管 Qoder SDK 1.0.56 / Worker 1.1.78 和 QwenPaw 2.2.2.post1 /
AgentScope 2.0.10 App worker 通过 aw run --config aw.yaml --agent TARGET
支持显式空闲更新,保留严格 Post、受管 MCP 和私有执行租约。每个新 Query 或 Agent reply
取得一份不可变策略快照。Qoder 必须完整关闭 Query 后再更新;复用的 QwenPaw Agent
在下一轮 reply 取得新快照。公共工厂 API 无需修改。启动策略持续生效,直到更新成功。
受管 Qoder startDaemon() 和 QwenPaw App startup 在首个任务前确认就绪,预热 worker
可在任何 Query 或 reply 开始前接入用户 Hook。每个任务先登记占用,再读取策略快照。
Claude SDK、Pi 接入仍属规划;其他普通 Adapter 继续使用启动时的策略。
| Adapter / 模式 | 首任务前就绪条件 | 安全更新边界 | 入口 / 选择方式 |
|---|---|---|---|
| 普通 Qoder SDK | 受管 startDaemon() 确认就绪;不使用显式 daemon 时,须在 30 秒启动期限内初始化 createQuery() | 所有 Query 完整关闭且清理结束;下一 Query 取得快照 | aw run;aw update --agent TARGET [--instance ID] |
| 普通 QwenPaw App | 受管 App startup 确认就绪 | 所有 reply 及清理结束;下一 reply 取得快照 | aw run;同一更新命令 |
| 受限 Qoder TUI / Qoder SDK / QwenPaw App | 原生稳定桥接确认就绪;SDK 要求显式 daemon 及已初始化受管 Query | 确认原生请求空闲,包含回调及后台清理 | 已有 aw run --reloadable;同一更新命令 |
| 外部启动的 Qoder TUI / QwenPaw App | 首请求前 attach,原生桥接确认成功 | 已有受限请求空闲合同 | 已有 aw agent connect --pid PID;同一更新命令;--remove 卸载 |
| 普通 Claude SDK / Pi | 已有启动就绪,运行时更新接入待实现 | worker 生命周期内固定策略,修改需重启 | aw run;暂不支持运行时更新 |
| 普通 Qoder CLI / OpenClaw / Hermes / AgentScope SDK | 这些启动模式尚无运行时更新桥接 | 固定启动策略,修改需重启 | aw run;暂不支持运行时更新 |
普通 Qoder SDK、QwenPaw 更新保留严格 Post、受管 MCP 和私有租约;受限模式沿用已有
能力限制。Qoder worker 若要等待用户流量后才创建 Query,应在启动时调用受管
startDaemon()。不使用显式 daemon 的 Query 从工厂预留开始占用实例,须完整关闭后再更新。
公共更新操作通过 --agent 和 --instance 选择已有实例。PID 启动接入继续由
aw agent connect 和已有 aw install --pid ... [--remove] 兼容入口提供,两种更新路径
均保留进程关联和存活检查。便捷选择器 aw update --pid 延后,与各 Adapter 的更新支持
独立。此表只描述空闲策略更新;通用 Hook 支持仍见能力矩阵。
独立的受限桥接路径继续可用:
aw run --config "$AW_HOME/aw.yaml" --agent qoder --reloadable
该路径支持固定版本 Qoder 1.1.73 TUI、QwenPaw App 和 Qoder SDK,沿用稳定回调行为,
不提供 resident 严格 Post 或私有执行租约。QwenPaw 按原生接入参考初始化
QWENPAW_WORKING_DIR。外部启动的原生进程使用下方安装流程;此命令不能改造
尚未支持更新的普通 worker。
启动或连接后,继续编辑同一份 aw.yaml。在另一个终端显式应用其中的完整期望策略:
aw update --config "$AW_HOME/aw.yaml" --agent qoder
AW 记录该配置路径已经连接的服务身份。编辑或原子替换文件不会改变连接、重启 Agent
或自动激活策略。busy、验证失败或冲突时,旧策略继续生效;文件保留期望修改,供显式重试。
保持启动字段不变,通过 aw service status --config 查看当前生效版本。
这些命令应使用相同的文件路径和运行时目录。
普通 Qoder SDK/QwenPaw 启动也会保存该连接。只读容器须提供绝对路径、可写的
XDG_RUNTIME_DIR,目录属于启动用户且权限为 0700,启动、更新、状态与停止命令
共用该目录。AW 在 $XDG_RUNTIME_DIR/aw/connections 写入私有元数据;未设置时使用
/tmp/aw-UID/connections。AW 专用运行时挂载保留到 worker 和服务停止后再清理。
连接记录不保存 Provider 凭据。
qoder-sdk 目标使用相同更新流程;目标配置名为 sdk 时,选择 --agent sdk。
所有受管 Query 共用实例策略。普通模式中,任一未关闭 Query 都保持 busy,包含
模型轮次之间的空闲。受限 --reloadable 模式中,请求、后台任务清理和 Query 关闭
期间保持 busy,直到原生清理完成。原服务仍在运行时,使用已修改的文件重新启动会被拒绝。
再次启动前,先关闭 Worker 并停止该服务。
仍支持独立候选文件:aw update --config aw.yaml --agent qoder --policy next.yaml。
此形式应用 next.yaml,不改写任何文件。之后若使用单文件更新,先将完整期望策略写入
aw.yaml;AW 不会将一次更新按补丁自动合并。
命令选择该目标唯一的存活实例,并读取当前策略版本。这个版本仍用于乐观并发校验:
若另一个更新先完成,本次返回冲突,不会自动重试。没有匹配实例时报错;多个匹配实例时
要求补充 --instance ID。--agent 选择根实例,可与 --instance 求交限定目标。
任务子作用域不能单独更新。通过 aw status --config "$AW_HOME/aw.yaml" 查询实例 ID 和版本。
选择范围包括未就绪和未启用热更新的实例,不会在忙碌实例旁边默默选择一个空闲实例。
需要显式选择实例或接入外部管控时:
aw update --socket "$AW_SOCKET" --instance "$AW_INSTANCE" \
--policy next.yaml --expected-revision "$AW_POLICY_REVISION"
--socket 替代 --config;--instance 也可用于消除 --agent 的多实例歧义。
--expected-revision 可选,在调用方需要指定前置版本时覆盖查询到的版本。冲突不自动重试。
成功返回实际激活的 policy_revision、前版本、审计 key、preparation_ms 和 activation_ms。
命令不修改配置、不重启原生宿主,也不会启动服务。保存的连接使 aw update、
aw status 和 aw stop 在策略编辑后仍访问原服务。该服务存活时,用已编辑文件再次
启动实例会在创建新 daemon 前被拒绝;请更新已有实例,或先停止服务再用
编辑后的配置启动。新 binding 初始使用服务默认策略;native attach 在报告成功前
应用当前期望策略。
受限 --reloadable 模式下,生命周期确认缺失或无法取得激活计划时,tool.before 会阻断。
成功取得计划后,每个步骤仍使用配置的 report/block 错误策略。
普通 resident worker 在任务准备和私有租约申请前取得占用,直到原生回调、MCP、 严格 Post、子 scope 和私有租约全部清理后释放。快照或确认失败会阻止派发; 清理状态无法确认时保持 busy,直到 worker 退出。
活跃 Agent 请求(含没有工具执行的模型等待)返回 busy,旧策略保持生效,更新不排队,
之后也不会自动应用。准备失败、版本冲突和不支持的原生策略同样保留旧策略。
若 Host 提交后终态审计持久化失败,AW 阻止后续派发并停止服务;重启服务和 worker 后再接收任务。
超时无法确定是否已经生效时,先查询实际版本再派发工作。管控侧必须独占分配实例,并将
更新与 Session 派发串行化;成功确认不等于预留下一条请求。同一 App 的多个 Session 共用
实例策略,任一活跃请求都会阻止切换。
预热容器时先初始化受管 Qoder daemon 或 QwenPaw App,再将 Hook 可执行文件与配置放到
容器内的最终路径。暂停任务派发,通过原配置关联的同一 AW 服务应用完整策略,更新成功后
再派发首个任务。后续更新沿用该流程,等待所有任务和清理结束后由管控侧发起。
更新命令不等待排空、不排队重试;管控侧选择执行容器,AW 此处不新增远程路由或跨 namespace
接管能力。模型账号、原生 Agent 定义由框架自己的
Session 配置处理;通过 AW 修改这些字段仍需另起实例。Qoder 原生工具 Hook 使用顺序执行时,AW 目标也须设置 qoder.sequential: true,以保留相同调度。
Qoder 的 Stop 不等于空闲,须等
原生 idle_prompt 通知。受限 QwenPaw 桥接在正常耗尽流后释放请求/工具占用;确认完成前提前关闭流、取消或异常退出
无法确认原生清理完成,因此保留 busy。AW 在原生清理完成后交付最终响应及终结错误/中断片段,
因此正常返回的结构化工具错误不会阻止后续更新;无法确定结束时
使用新实例。
本 Preview 已有 CLI 接入回归和固定版本 AgentScope middleware 回归。原生清单还要求 独立校验和固定的 Qoder 1.1.73 TUI 启动及派发前空闲切换用例。必需的 QwenPaw App HTTP 测试 使用确定性本地模型和真实 shell/read_file 工具,验证同一进程在成功及结构化错误结果后的多次策略切换。完整的托管 Qoder TUI 工具轮次采纳仍需独立验收。
选择 Agent
一个配置可以保存多个目标,--agent 选择 spec.agents 中的名称。
生成器目前支持 Qoder 和 OpenClaw;QwenPaw、Hermes 及 SDK 应用使用
原生接入参考。
| Agent | 当前要求 | 使用入口 |
|---|---|---|
| Qoder | CLI 1.1.64 或更新版本,原生 Hook 可用 | 交互或 print |
| OpenClaw | 2026.9.6,已初始化原生配置和状态目录 | 新启动的 Gateway |
| QwenPaw | 2.2.2.post1,AgentScope 2.0.10 | App/API |
| Hermes | 使用兼容版本及安装步骤 | 本地 chat |
| AgentScope、Pi、Claude SDK | 需要在应用中显式接线 | SDK 接入参考 |
Qoder
从希望它操作的目录启动。-- 后面的参数交给 Qoder。
aw run --config "$AW_HOME/aw.yaml" --agent qoder
aw run --config "$AW_HOME/aw.yaml" --agent qoder -- -p 'Read the current directory with a tool.'
已有附加设置文件时,使用 AW 的 --native-settings /absolute/qoder.settings.json。
AW 会保留原有设置并加入本次回调。
OpenClaw
先停止使用同一原生 profile 的 Gateway。将变量改为已有安装和 profile 的绝对路径。
export AW_NODE=/absolute/path/to/node
export AW_OPENCLAW=/absolute/path/to/openclaw.mjs
export AW_OPENCLAW_CONFIG=/absolute/path/to/openclaw.json
export AW_OPENCLAW_STATE=/absolute/path/to/openclaw-state
aw config init --prefix "$AW_PREFIX" \
--config "$AW_HOME/openclaw.yaml" --state-dir "$AW_HOME/openclaw-aw-state" \
--node "$AW_NODE" --openclaw "$AW_OPENCLAW"
aw run --config "$AW_HOME/openclaw.yaml" --agent openclaw \
--native-settings "$AW_OPENCLAW_CONFIG" --native-state-dir "$AW_OPENCLAW_STATE"
等待 AW openclaw native hooks ready 后,通过连接该 Gateway 的客户端使用。
需要压缩或安全检查时,在生成配置时增加上表参数。agent --local 会绕过这个 Gateway。
添加自己的规则
简单规则可以从 stdin 读取工具事件,向 stdout 输出 JSON true 或 false。
配置决定命中时观察还是阻断。执行故障由 on_error 处理,安全检查通常选 block。
按布尔规则教程准备脚本并验证允许和阻断两种情况。
Pi / Claude 常驻目标沿用同一配置格式,按 SDK worker 说明 选择常驻入口及公共工厂。
普通受管 Qoder SDK Query 各自持有子 scope;daemon 退出时排空所属 Query 和原始回调。
普通 QwenPaw App 启动为每个受管 Agent reply 分配任务 scope。工具私有环境需要显式接入原生执行 helper。显式空闲更新为下一轮 reply 选择新策略;--reloadable 保留独立的受限路径。
所需工厂及生命周期边界见原生接入说明。
接入已启动的原生进程
容器控制器可以照常启动 Qoder 1.1.73 TUI 或 QwenPaw 2.2.2.post1 / AgentScope 2.0.10 App,在派发首个请求前安装 AW。进程、终端和生命周期仍由控制器 管理。启动时记录 PID,在安装成功前保持请求派发暂停。
这些精确版本既是当前 Preview attach/update 路径允许的支持集合,也是实际验收版本。
尚未建立更宽的兼容范围;普通 aw run 的 Qoder 最低版本要求不代表此路径的支持范围。
扩展版本前,需要验证原生加载确认、完整请求空闲和移除契约。
| 原生入口 | 当前 Preview 的 attach/update 支持 |
|---|---|
| Qoder TUI | 支持 1.1.73;输入前通过 ConfigChange 确认,请求后等待原生 idle-prompt 确认 |
Qoder 单次 -p / --print 执行 | 普通 aw run 支持 print;attach/update 不接纳此模式 |
| Qoder 常驻 headless 输入 | 尚未接纳或验收;需要单独验证输入前 readiness、多次请求及请求结束/空闲边界 |
QwenPaw app | 支持 2.2.2.post1 / AgentScope 2.0.10;它是 HTTP 后端,可通过 API 无界面使用,无须打开 UI |
| QwenPaw ACP / TUI | 不支持;固定版本的 TUI 使用 ACP 子进程,不经过 App 的 HTTP 插件管理端点 |
QwenPaw desktop | 不是受支持的 attach 目标;它通过 python -m qwenpaw 启动独立 App,其入口及进程归属尚未纳入本版直接 qwenpaw app 的验收 |
容器预热时,使用已初始化的 profile 和 loopback 监听直接启动 qwenpaw app。
真实 attach 验收通过 HTTP 请求执行,无须桌面或浏览器会话。
Qoder SDK 的 startDaemon() 及其 Worker/session 控制是独立于 TUI 的入口。
PID attach 不提供每个 session 的策略隔离;SDK daemon 需要单独验证原生生命周期和隔离能力。
已支持的 QwenPaw App 版本也不代表旧版本兼容。
aw agent connect --config current.yaml --agent TARGET --pid "$NATIVE_PID"
aw update --config current.yaml --agent TARGET
aw agent connect --config current.yaml --agent TARGET --pid "$NATIVE_PID" --remove
aw install --config ... --agent ... --pid ... [--remove] 保留为相同操作的兼容入口。
分阶段增加 Hook 时,直接编辑同一份完整期望配置,保留已有 Provider 和步骤。
现有 aw config add-provider 和 aw config add-hook 支持 --definition,
用法见配置工具参考。
这些操作属于离线编辑;验证文件后,在空闲时显式执行 aw update 激活。
无须单独维护启动配置副本。之后用相同路径重新 attach 时,会先应用文件中的当前期望策略,
再报告连接成功。初始化工具当前生成 Qoder/OpenClaw 配置;
QwenPaw 目标按上方链接的原生集成参考准备。
连接命令在获得原生确认后返回实例、当前策略版本和进程身份。后续策略
变更复用 reloadable aw run 的 update 命令。--remove 检查完整的原生请求和
工具执行边界;忙碌时返回错误,保留保护且不排队。移除保留原生进程、无关 Hook 和
用户配置修改。移除期间也应暂停请求派发。普通 aw run 和 Hermes 安装保持现有行为。
每个预热进程使用独占的原生配置作用域。AW 与 Agent 必须处于同一用户、PID 和
mount namespace。所选原生配置目录必须是规范路径、归该用户所有且权限为 0700。
已发现的共享进程和重复挂载会被拒绝;控制器也必须阻止其他进程后续进入同一作用域。
- Qoder 使用
HOME/.qoder/settings.json,启动时不传--settings、自定义配置目录 或禁用 Hook 的选项。AW 读取运行中进程的环境和参数,合并所属配置组,并在用户 输入前通过原生ConfigChange确认加载。已有 settings 必须是同用户的普通文件, 且不允许组或其他用户写入。文件原先不存在时由 AW 创建,移除后保留空的原生配置 文档。工作目录信任和原生权限仍由 Qoder 决定。 - QwenPaw 使用运行中 App 已初始化的
QWENPAW_WORKING_DIR。App 应监听127.0.0.1;AW 验证所选 PID 拥有该端口。原生插件 API 安装带私有描述文件的 现有 AW middleware,必须收到该 App 的确认;仅 HTTP 成功不足以表示接入成功。 首版不支持单独托管的 runtime。 同环境中的其他 App 也应在初始环境中显式设置绝对路径的QWENPAW_WORKING_DIR。当原生.env加载可能决定 peer 的配置目录或 HOME 展开结果时,AW 会报告该 PID 并拒绝挂载。当前不存在.env仍无法确认启动时 使用的目录;请使用显式 profile 重启该 peer,或先停止它再挂载。
QwenPaw 还要求与 AW 处于相同的 network namespace。已安装插件目录缺失时, detach 会查询原生运行时状态。确认插件不存在后允许清理;插件仍加载或状态端点 不可用时,保留所有权、暂存插件和桥接文件用于重试。仍加载时先恢复原有插件目录, 或在 API 恢复后重试 detach,成功后再继续派发请求。
首次挂载要求进程处于首请求前的空闲状态。桥接建立之前已经执行的工作无法由 AW
重建。请先移除挂载,再停止外部进程;首版不监督该进程,也不运行自动挂载回收器。
移除失败时保留所有权记录和桥接文件,可用相同命令显式重试。原生插件被替换或
服务代次改变时拒绝操作并要求检查,避免删除其他所有者的资源。
Qoder 回滚同样等待原生移除确认。取消或安装失败后若无法确认卸载,AW 保留所有权和
桥接文件,待原生回调恢复后通过 --remove 重试。将 AW 配置组移动到其他 Hook 事件
会被视为所有权编辑,移除前应恢复原配置组。
安装进程终止后遗留的未加锁空所有权记录,可由 connect 复用或通过 --remove 清除;
不会抢占仍在运行的安装进程持有的锁。强制终止不提供事务恢复保证:SIGKILL 可能留下
本地暂存文件;成功收到 Bind 回复后、记录持久化前中断,也可能留下未记录的服务绑定。
这种情况下,应由所属 supervisor 退出受影响的服务并清理其私有状态。
正常取消或安装失败仍执行回滚;本 Preview 尚无崩溃恢复日志或自动垃圾回收器。
服务并发预算
Pi/Claude 常驻客户端跨 execution 保留会话,已完成 Hook 状态会回收。资源准入独立于历史调用数:
spec:
daemon:
limits:
bindings: 64
events: 128
calls: 64
connections: 128
invocations_per_binding: 256
以上为默认值,省略字段保留默认,各字段接受 1..4096 整数。bindings 包含宿主及准备中、空闲、 排空中的客户端;events 为 live Hook event;calls 为活动 Provider 调用;connections 为全部 活动服务连接,包含控制 RPC;invocations_per_binding 为单个常驻客户端活动的模型工具调用数。 共享连接额度用满后,额外 16 条连接只接纳控制/清理请求。过载拒绝新准入,已完成工作释放容量。 Pi/Claude 常驻模式没有累计工具次数配额, 旧入口保留原累计关联限制。
aw status --config aw.yaml 的 resources.limits、resources.usage、peak_invocations_per_binding、 admission_rejections 和 rejection_reasons 展示容量、用量、峰值与拒绝原因。根据实际负载选择 并发数,审计磁盘和 SDK 历史另设保留策略。修改 daemon limits 后先排空客户端再重启服务。 CLI/daemon 升级或回退同样先排空、停止后一起更换:wire v1alpha7 拒绝旧活动会话,配置和 Provider 协议版本保持不变。