Skip to content

feat(delegation): @Agent 提及支持单次委托配置(模型/思考/权限) - #616

Open
asteroida123 wants to merge 1 commit into
xintaofei:mainfrom
asteroida123:codex/agent-mention-config
Open

feat(delegation): @Agent 提及支持单次委托配置(模型/思考/权限)#616
asteroida123 wants to merge 1 commit into
xintaofei:mainfrom
asteroida123:codex/agent-mention-config

Conversation

@asteroida123

Copy link
Copy Markdown
Collaborator

变更说明

现在通过 @Agent 提及时,单次委托只能使用全局默认配置,无法针对某一次委托选择不同的模型、思考等级或权限配置。

本 PR 支持在智能体选择面板中查看当前摘要,并通过按需打开的配置面板修改本次委托配置。未修改时继续使用全局默认配置。

主要改动

前端

  • @Agent mention 支持保存单次委托的配置覆盖;配置随编辑器文档、发送、排队、重排队和队列编辑流程保留。
  • 智能体选择面板展示当前配置摘要,详细配置面板按需加载,不阻塞普通 mention 搜索。
  • 配置面板复用现有 ACP agent options,只展示智能体实际广告的模型、思考模式、权限及其他配置项。
  • 行级修改发送完整的有效配置,避免覆盖全局默认时静默丢失未修改的配置。
  • 配置加载失败时禁止基于不完整基线编辑,并提供重试入口。

后端

  • ACP prompt transport 增加可选的单次 delegation overrides,未设置时保持旧 payload 不变。

  • 当前 turn 使用的单次配置写入 SessionState,turn 完成、取消或断开后清理,避免配置污染后续对话。

  • delegation broker 使用以下优先级:

    per-call > 持久化全局默认 > agent 原生默认

  • 后端统一清理空白的 mode/config 值;空覆盖会回退到全局默认。

  • 保持现有 one-shot delegation 的 task、status、cancel 和结果缓存语义不变,不修改 agent 原生配置文件或环境变量。

兼容性

  • 新字段均为可选字段,旧客户端和未配置的 mention 保持原有行为。
  • 同时覆盖桌面 Tauri transport 和服务器 Web transport。
  • 不引入持续会话,也不改变 delegation task 的生命周期。

测试与检查

  • 前端全量测试:375 个测试文件,5289 个测试通过。
  • Rust delegation broker 测试:124 个通过。
  • Rust delegation settings 测试:10 个通过。
  • server-mode clippy:通过。
  • ESLint:通过。
  • git diff --check:通过。

@agent 委托链路上增加单次(per-call)配置能力:@ 面板 agent 行尾显示
该 agent 全局委托默认的只读摘要与配置入口,点击入口插入 mention 并打开
懒加载的配置面板;修改只作用于本次委托,优先级为
per-call override > 持久化全局默认 > agent 原生默认。

交互契约:
- 普通 @agent 选择 = 纯插入,不回调 onAgentMention、不探测、不带 override;
- 行尾入口(span[role=button],Tab/Enter/Space 可达)携带只读摘要
  (模型 · 模式,稳定 ID),点击才插入并打开 AgentDelegationConfigPopover;
- 探测(describeAgentOptions)只发生在面板打开时,列表渲染零探测、零阻塞;
- 点击已插入的 agent badge 可重开其配置面板(reference 节点 storage 回调);
- 面板初始值继承全局默认,修改时发完整有效配置(后端整体替换、不合并),
  boolean 配置(如 Cline auto_approve)支持 true/false,重置即删除 override;
- 同一 agent 多个 mention 共享一份配置(显式限制,写入测试);
- 队列/重排队/草稿编辑全程保留 override(hydration 时写入恢复出的
  badge,文档为唯一事实来源);popover 每次打开重新拉取全局基线。

后端(one-shot 语义不变,MCP schema 不变):
- ConnectionCommand::Prompt 携带 delegation_overrides,connection loop
  在 turn 开始前写入 SessionState,TurnComplete 随 turn_in_flight 清除,
  断开随状态丢弃;admission gate 保证被拒并发 prompt 无法覆盖活跃值;
- ParentSessionLookup.delegation_override 按请求 agent_type 读取当前
  turn 的覆盖,DelegationRequest.per_call_defaults 兼容旧 payload
  (skip_serializing_if);broker 按三级优先级选值,绝不回写全局配置。

探针路径顺带修复:probe 连接不再注入 codeg-mcp 伴生进程——探测只为读
广告选项,注入使探测额外承担一次 MCP 握手(且在 MCP 同步不稳的适配器
上把整个探测拖成失败)。

基于 upstream/main(含 @-mention 路由帧与 resume_delegation)。
@asteroida123
asteroida123 force-pushed the codex/agent-mention-config branch from 4c127c6 to 7b48123 Compare September 2, 2026 16:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant