Describe the bug
- 代理设置 API 不统一:不同 ChatModel 实现类的代理设置方式不一致,缺少统一的代理配置 API,导致多供应商智能体开发时配置困扰。
- MarkdownSkillParser 无法解析多行 description:使用
| > 格式的多行文本描述时解析失败,导致无法直接安装 GitHub 上提供的 skill 文件。
To Reproduce
问题一:代理设置不统一
// DashScopeChatModel 和 OpenAIChatModel - 可通过 OkHttpTransport 设置代理
val model = DashScopeChatModel.builder()
.apiKey(provider.apiKey)
.modelName(modelName)
.stream(streamingEnabled)
.httpTransport(OkHttpTransport(HttpTransportConfig.builder().also {
if (provider.proxyEnabled) {
if (provider.proxyType == AgentProxyType.HTTP.id) {
it.proxy(ProxyConfig.http(provider.proxyHost, provider.proxyPort))
} else {
it.proxy(ProxyConfig.socks5(provider.proxyHost, provider.proxyPort))
}
}
}.build()))
.endpointType(resolveDashScopeEndpoint(settings))
.defaultOptions(defaultOptions)
.baseUrl(provider.baseUrl)
.formatter(formatter)
.build()
// AnthropicChatModel - 内部支持代理但未暴露给调用者
// 无法直接设置,需要重写类
// GeminiChatModel - 通过 clientOptions 设置
// OllamaChatModel - 通过 HttpTransport 设置
问题二:MarkdownSkillParser 解析失败
# GitHub 上提供的 skill 文件格式
name: example_skill
description: |
This is a multi-line
description that should
work properly
执行安装时解析失败,需手动将 | > 改为单行文本。
Expected behavior
-
统一代理设置 API:所有 ChatModel 实现类应提供统一的代理设置方式,例如:
- 统一的
ProxyOptions 配置类
- 或在 Builder 中提供一致的
proxy() 方法
-
正确解析多行 YAML:MarkdownSkillParser 应能正确解析标准 YAML 的多行文本格式(| 和 > 块标量)。
Error messages
问题一:尝试重写 AnthropicChatModel 时因 JDK 版本不一致导致编译/运行错误:
AnthropicChatFormatter 依赖的 JDK 版本与项目 JDK 版本不兼容
问题二:MarkdownSkillParser 解析多行 description 时丢失格式或解析失败。
Additional context
临时解决方案:
-
代理问题:因无法统一设置,需为不同模型分别处理代理配置。
-
MarkdownSkillParser 重写:使用 SnakeYAML 替代原有解析器:
static Map<String, String> parse(String yamlContent) {
Map<String, String> result = new LinkedHashMap<>();
Yaml yaml = new Yaml();
Map map = yaml.loadAs(yamlContent, Map.class);
map.forEach((key, value) ->
result.put(String.valueOf(key), String.valueOf(value))
);
return result;
}
建议改进:
- 抽象统一的
Transport 或 ClientOptions 接口,支持代理、超时等通用配置
- 修复 MarkdownSkillParser 对 YAML 块标量(
|、>)的支持
Describe the bug
| >格式的多行文本描述时解析失败,导致无法直接安装 GitHub 上提供的 skill 文件。To Reproduce
问题一:代理设置不统一
问题二:MarkdownSkillParser 解析失败
执行安装时解析失败,需手动将
| >改为单行文本。Expected behavior
统一代理设置 API:所有 ChatModel 实现类应提供统一的代理设置方式,例如:
ProxyOptions配置类proxy()方法正确解析多行 YAML:MarkdownSkillParser 应能正确解析标准 YAML 的多行文本格式(
|和>块标量)。Error messages
问题一:尝试重写 AnthropicChatModel 时因 JDK 版本不一致导致编译/运行错误:
问题二:MarkdownSkillParser 解析多行 description 时丢失格式或解析失败。
Additional context
临时解决方案:
代理问题:因无法统一设置,需为不同模型分别处理代理配置。
MarkdownSkillParser 重写:使用 SnakeYAML 替代原有解析器:
建议改进:
Transport或ClientOptions接口,支持代理、超时等通用配置|、>)的支持