深入解析 Continue SDK 的 ListAssistants200ResponseInner 数据模型:在 Continue Hub IDE API 中消费 Assistant 列表 深入解析 Continue SDK 的 ListAssistants200ResponseInner 数据模型在 Continue Hub IDE API 中消费 Assistant 列表【免费下载链接】continueopen-source coding agent项目地址: https://gitcode.com/GitHub_Trending/co/continue导读ListAssistants200ResponseInner是 Continue 开源编码助手open-source coding agent项目 continue-sdk 中Continue Hub IDE API的响应数据模型之一用于描述GET /ide/list-assistants接口返回的单个 Agent助手条目。本篇指南以该模型的 OpenAPI 定义、Python 客户端源码与测试用例为依据系统讲解其 7 个字段的语义与 JSON 映射关系、嵌套的配置加载结果结构以及如何在 Python SDK 中完成反序列化与序列化帮助你在接入 Continue Hub 时正确解析、展示与使用 Agent 列表。一、模型在 Continue 生态中的位置Continue 是一个开源编码助手项目其 IDE 扩展VS Code 与 JetBrains需要从 Continue Hub 服务端拉取可用的 AssistantAgent列表及其完整配置。这个能力由Continue Hub IDE API提供API 基线地址为https://api.continue.dev本地开发时也可使用http://localhost:3001这些端点由 packages/continue-sdk/openapi.yaml 定义并据此生成多语言 SDK。在 packages/continue-sdk/openapi.yaml 中GET /ide/list-assistants的 200 响应是一个数组数组中每个元素即为ListAssistants200ResponseInner模型它返回用户可用的全部 Agent 列表携带完整配置、图标和其他 IDE 展示与使用所需的元数据该端点会执行一次全量刷新包括对配置进行unrolling展开/扁平化以及解析 secrets请求时可通过两个可选查询参数进行控制alwaysUseProxy是否始终使用 Continue 托管的模型代理取值true/false与organizationId组织作用域不传时返回个人 Agent认证方式为 Bearer 认证apiKeyAuth。在生成的客户端中该方法位于DefaultApi.list_assistants()其返回类型为List[ListAssistants200ResponseInner]状态码映射为200成功、401认证失败、404用户不存在参见 default_api.py 与 DefaultApi.md。二、字段总览7 个属性的完整语义依据 ListAssistants200ResponseInner.md 的属性表并结合 OpenAPI 定义 openapi.yaml该模型包含 3 个必填字段与 4 个可选字段字段类型是否必填说明config_resultconfigResultListAssistants200ResponseInnerConfigResult是该 Agent 的配置加载结果含展开后的配置、加载中断标记与错误列表owner_slugownerSlugstr是拥有该 Agent 的用户或组织的 Slugpackage_slugpackageSlugstr是Agent 包的 Slugicon_urliconUrlstr可选Agent 图标的预签名 URLon_prem_proxy_urlonPremProxyUrlstr可选组织使用本地on-premises代理时的代理 URLuse_on_prem_proxyuseOnPremProxybool可选组织是否使用本地代理raw_yamlrawYamlstr可选Agent 的原始 YAML 配置说明表格中括号内为JSON 字段名alias。该 SDK 遵循 camelCase 的 JSON 命名而 Python 属性使用 snake_case二者由 Pydantic 的alias机制完成映射。必填字段的校验逻辑在 Python 模型 list_assistants200_response_inner.py 中必填字段由类型注解决定无默认值可选字段均带有defaultNone且类型为Optionalconfig_result必须是ListAssistants200ResponseInnerConfigResult实例owner_slug、package_slug使用StrictStr强制要求字符串类型传入非字符串会触发校验错误四个可选字段都允许None。TypeScript 版本的接口定义同样将configResult、ownerSlug、packageSlug设为必填并提供了instanceOfListAssistants200ResponseInner运行时校验函数见 ListAssistants200ResponseInner.ts。三、嵌套模型配置加载结果config_resultconfig_result是本模型中最关键的嵌套结构独立成模型ListAssistants200ResponseInnerConfigResult其属性表见 ListAssistants200ResponseInnerConfigResult.md字段类型是否必填说明configobject是展开unrolled后的 Agent 配置config_load_interruptedconfigLoadInterruptedbool是配置加载是否被中断errorsList[str]可选配置加载过程中发生的任何错误在 OpenAPI 定义中config被标记为nullable: trueerrors同样可空openapi.yaml对应 Python 模型中config: Optional[Dict[str, Any]]、errors: Optional[List[StrictStr]]而config_load_interrupted为StrictBoollist_assistants200_response_inner_config_result.py。这一嵌套结构的设计意图可以从端点描述中读出list_assistants会做全量刷新 配置 unrolling secrets 解析见 default_api.py因此响应不仅要携带 Agent 元信息还要带上这份配置到底加载得怎么样了的诊断结果config承载最终可用的展开配置config_load_interrupted标记加载过程是否被打断例如超时或资源限制客户端可据此决定是否降级展示errors给出加载期间的具体错误信息便于排查。四、JSON 与 Python 对象的双向转换该模型由 OpenAPI Generator 基于 Pydantic v2 生成围绕 JSON 提供了四个核心方法list_assistants200_response_inner.pyfrom openapi_client.models.list_assistants200_response_inner import ListAssistants200ResponseInner # TODO update the JSON string below json {} # create an instance of ListAssistants200ResponseInner from a JSON string list_assistants200_response_inner_instance ListAssistants200ResponseInner.from_json(json) # print the JSON string representation of the object print(ListAssistants200ResponseInner.to_json()) # convert the object into a dict list_assistants200_response_inner_dict list_assistants200_response_inner_instance.to_dict() # create an instance of ListAssistants200ResponseInner from a dict list_assistants200_response_inner_from_dict ListAssistants200ResponseInner.from_dict(list_assistants200_response_inner_dict)各方法的行为要点from_json(json_str)先将 JSON 字符串json.loads为字典再委托给from_dictfrom_dict(obj)对configResult递归调用ListAssistants200ResponseInnerConfigResult.from_dict其余字段按 JSON 别名ownerSlug、packageSlug、iconUrl、onPremProxyUrl、useOnPremProxy、rawYaml直接取值to_dict()使用by_aliasTrue输出 camelCase 键名并保证configResult通过其自身的to_dict()递归序列化同时只对初始化时显式设置为None的可空字段输出None值exclude_noneTrue其余未设置字段会被省略to_str()/to_json()分别输出带别名的格式化字符串与 JSON 字符串。在真实调用场景中from_dict并不需要你手写——SDK 的DefaultApi.list_assistants()返回的响应对象会自动完成反序列化。你可以这样消费import openapi_client from openapi_client.rest import ApiException from pprint import pprint # The client must configure the authentication and authorization parameters # in accordance with the API server security policy. configuration openapi_client.Configuration( access_token os.environ[BEARER_TOKEN] ) with openapi_client.ApiClient(configuration) as api_client: api_instance openapi_client.DefaultApi(api_client) # 可选始终使用 Continue 托管代理按组织作用域过滤 # always_use_proxy true # organization_id org_example try: api_response api_instance.list_assistants() for assistant in api_response: # 必填元信息 print(assistant.owner_slug, assistant.package_slug) # 嵌套配置加载结果 if assistant.config_result is not None: print(interrupted:, assistant.config_result.config_load_interrupted) print(errors:, assistant.config_result.errors) # 可选元信息 print(icon:, assistant.icon_url, raw_yaml:, assistant.raw_yaml) except Exception as e: print(Exception when calling DefaultApi-list_assistants: %s\n % e)五、字段在真实响应中的典型形态综合 OpenAPI 定义与测试存根test_list_assistants200_response_inner.py一份典型的 200 响应元素如下{ configResult: { config: { name: my-agent, description: Example agent, model: gpt-4o, prompt: You are a helpful coding assistant. }, configLoadInterrupted: false, errors: null }, ownerSlug: alice, packageSlug: code-reviewer, iconUrl: https://cdn.continue.dev/icons/xxx.png, onPremProxyUrl: null, useOnPremProxy: false, rawYaml: name: my-agent\nmodel: gpt-4o\nprompt: You are a helpful coding assistant. }字段间的配合逻辑可以归纳为ownerSlugpackageSlug共同构成 Agent 的全局唯一标识对应GET /ide/get-assistant/{ownerSlug}/{packageSlug}的单条查询端点见 DefaultApi.mdiconUrl用于 IDE 列表中的头像展示onPremProxyUrl与useOnPremProxy描述组织级代理链路rawYaml保留 Agent 的原始配置文本供高级用户查看或本地复制configResult则给出服务端展开后的最终配置与加载诊断。六、模型的生成来源与工程约束需要特别指出ListAssistants200ResponseInner不是手写的业务类而是由 OpenAPI Generator 从 packages/continue-sdk/openapi.yaml 自动生成的Python 与 TypeScript 两套 SDK 同源同构Python 实现packages/continue-sdk/python/api/openapi_client/models/list_assistants200_response_inner.pyTypeScript 实现packages/continue-sdk/typescript/api/src/models/ListAssistants200ResponseInner.ts。因此存在两条工程约定不要手工修改生成文件。所有模型文件的头部均标注 Do not edit the class manually如 list_assistants200_response_inner.py。如需调整字段应修改openapi.yaml中的 schema 后重新生成。Pydantic v2 语义。模型基于BaseModelConfigDict(populate_by_nameTrue, validate_assignmentTrue)构建list_assistants200_response_inner.py即既可按 JSON 别名configResult也可按 Python 属性名config_result赋值赋值时会实时校验类型。序列化时默认输出 camelCase 别名这正是文档属性名与 JSON 键名不同的根因。七、小结与使用建议ListAssistants200ResponseInner是 Continue Hub IDE API 中 Agent 列表响应的最小组成单元理解它能帮你在 IDE 扩展或自研工具中正确解析与渲染GET /ide/list-assistants的返回值通过configResult感知配置加载是否被中断、存在哪些错误从而做出合理的降级提示利用ownerSlugpackageSlug的组合唯一标识 Agent并配合get_assistant端点实现按需刷新单条配置避免频繁全量拉取。进一步阅读端点完整定义见 DefaultApi.mdAPI 服务描述见 openapi.yamlTypeScript 侧对等接口见 ListAssistants200ResponseInner.ts单元测试存根见 test_list_assistants200_response_inner.py。【免费下载链接】continueopen-source coding agent项目地址: https://gitcode.com/GitHub_Trending/co/continue创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考