Parent doc: ACP Client And Project-Local Servers
Issue index: ACP Client Project-Local Servers Issues
为 Agentao 在 ACP 模式下补齐自由文本用户输入能力,并将其定义为一个明确的 ACP extension method,而不是伪装成标准 ACP method。
_agentao.cn/ask_user methodask_user() 桥接agentao/acp/protocol.pyagentao/acp/transport.py_agentao.cn/ask_user 是 Agentao 私有 ACP extension methodsession/ask_useragentao/ask_userext/agentao/ask_user
是因为它们都不符合 ACP 扩展方法的命名约定或容易被误解为标准 method_agentao.cn/ask_user 的原因:
_ 开头,符合 ACP 扩展命名约束agentao.cn 作为命名空间,冲突风险低建议:
{
"jsonrpc": "2.0",
"id": "srv_123",
"method": "_agentao.cn/ask_user",
"params": {
"sessionId": "sess_xxx",
"question": "Please provide branch name"
}
}
建议成功结果:
{
"outcome": "answered",
"text": "feature/acp-client"
}
建议取消结果:
{
"outcome": "cancelled"
}
ACPTransport.ask_user(question) 调用 _agentao.cn/ask_useranswered -> 返回 textcancelled / error / disconnect / malformed result -> 返回保守 sentinel建议 sentinel:
"(user unavailable)"避免抛异常炸掉整轮执行。
需要在 ACP initialize 结果中显式声明支持的扩展,避免 client 误判。
具体字段形态可在实现时根据 ACP ext schema 定稿,但原则是:
_agentao.cn/ask_usermax_iterations 不做 ACP extension method原因:
ask_user_agentao.cn/ask_user request 发送正确answered 结果映射为返回文本cancelled 结果映射为 sentinelask_user 不再抛 NotImplementedErroron_max_iterations 扩展