背景
#146 的 form-mode elicitation 先行交付。ACP URL mode 不能只把 URL 做成普通可点击链接或在可被 Agent/模型读取的 WebView 中打开。
目标
在客户端具备经过平台验证的安全外部导航链路后,实现并广告:
{ "elicitation": { "form": {}, "url": {} } }
必须满足的 ACP 安全契约
- 展示完整 URL,突出 host,并在导航前取得用户明确同意。
- 不预取、不自动打开 URL。
- 在 Agent 与模型无法检查页面或用户输入的安全上下文中打开。
- 对 punycode / 可疑或歧义域名提示风险。
accept 仅表示用户同意打开,不能误报为外部流程完成。
- 处理 agent 发来的
elicitation/complete:仅对同一连接的、已知且尚未完成的 opaque elicitationId 生效;未知或重复 ID 必须忽略。
- URL 及完成回调不得把凭据、token 或网页内容写进模型上下文、日志、配置或同步数据。
验证
- 五个平台的真实安全打开路径验证。
- 完整 URL + host + 二次确认 UI smoke。
- 未确认不打开;确认后返回
accept 且省略 content。
- cancel / decline 正确响应。
- unknown / duplicate completion ID 被忽略。
- 没有 URL capability 时收到 URL request 必须得到
-32602 Invalid params。
关联
背景
#146 的 form-mode elicitation 先行交付。ACP URL mode 不能只把 URL 做成普通可点击链接或在可被 Agent/模型读取的 WebView 中打开。
目标
在客户端具备经过平台验证的安全外部导航链路后,实现并广告:
{ "elicitation": { "form": {}, "url": {} } }必须满足的 ACP 安全契约
accept仅表示用户同意打开,不能误报为外部流程完成。elicitation/complete:仅对同一连接的、已知且尚未完成的 opaqueelicitationId生效;未知或重复 ID 必须忽略。验证
accept且省略content。-32602 Invalid params。关联