CopilotForXcode扩展开发API变更日志:版本迁移指南
【免费下载链接】CopilotForXcode The missing GitHub Copilot, Codeium and ChatGPT Xcode Source Editor Extension 项目地址: https://gitcode.***/gh_mirrors/co/CopilotForXcode
CopilotForXcode是一个为Xcode提供GitHub Copilot、Codeium和ChatGPT支持的源代码编辑器扩展。随着版本迭代,API接口和功能实现发生了显著变化,本文档将详细说明从旧版本迁移到最新版所需的关键步骤和注意事项。
版本迁移概览
CopilotForXcode的API变更主要集中在服务架构、权限管理和功能模块三个方面。以下是两个重要版本的迁移说明:
版本2.4.0核心变更
版本2.4.0引入了多模型支持架构,重构了Chat和Embedding模型的配置管理方式。主要变更文件:Core/Sources/ServiceUpdateMigration/MigrateTo240.swift
版本1.3.5核心变更
版本1.3.5重构了GitHub Copilot服务的文件结构和权限管理。主要变更文件:Core/Sources/ServiceUpdateMigration/MigrateTo135.swift
从1.3.5版本迁移
文件结构变更
版本1.3.5将GitHub Copilot服务文件从根目录移动到专用子目录,需要执行以下迁移步骤:
// 移动undefined文件夹到GitHub Copilot/support目录
let undefinedFolderURL = urls.applicationSupportURL.appendingPath***ponent("undefined")
if isUndefinedExisted, isUndefinedADirectory.boolValue {
try FileManager.default.moveItem(
at: undefinedFolderURL,
to: urls.supportURL.appendingPath***ponent("undefined")
)
}
权限设置更新
新版本要求将可执行文件权限设置为755:
// 设置可执行文件权限
try FileManager.default.setAttributes(
[.posixPermissions: 0o755],
ofItemAtPath: copilotFolderURL.path
)
相关实现:Core/Sources/ServiceUpdateMigration/MigrateTo135.swift
从2.4.0版本迁移
多模型架构迁移
版本2.4.0引入了ChatModel和EmbeddingModel结构体,支持多模型配置:
// 创建OpenAI聊天模型
let openAI = ChatModel(
id: chatModelOpenAIId,
name: "OpenAI",
format: .openAI,
info: .init(
apiKeyName: openAIAPIKeyName,
baseURL: defaults.deprecatedValue(for: \.openAIBaseURL),
maxTokens: openAIModel?.maxToken ?? defaults.deprecatedValue(for: \.chatGPTMaxToken),
modelName: openAIModel?.rawValue ?? defaults.deprecatedValue(for: \.chatGPTModel)
)
)
相关实现:Core/Sources/ServiceUpdateMigration/MigrateTo240.swift
API密钥管理变更
版本2.4.0将API密钥存储从UserDefaults迁移到Keychain:
// 迁移API密钥到Keychain
let openAIAPIKey = defaults.deprecatedValue(for: \.openAIAPIKey)
if !openAIAPIKey.isEmpty {
try keychain.update(openAIAPIKey, key: openAIAPIKeyName)
}
默认模型设置
设置默认聊天模型和嵌入模型:
// 设置默认聊天模型
defaults.set({
if defaults.deprecatedValue(for: \.chatFeatureProvider) == .azureOpenAI {
return chatModelAzureOpenAIId
}
return chatModelOpenAIId
}(), for: \.defaultChatFeatureChatModelId)
迁移工具和资源
开发指南
完整的开发说明请参考:DEVELOPMENT.md
测试计划
迁移后应运行测试计划验证功能:TestPlan.xctestplan
权限配置
迁移后需要重新配置辅助功能权限,路径:
常见问题解决
权限问题
如果遇到权限错误,请检查以下文件的权限设置:
- GitHub Copilot可执行文件:Tool/Sources/GitHubCopilotService/
- ExtensionService:ExtensionService/
API密钥迁移失败
如果API密钥迁移失败,可手动添加到Keychain:Core/Sources/Keychain/Keychain.swift
总结
CopilotForXcode的API变更旨在提高扩展性和安全性。迁移过程中需重点关注:
- 文件结构调整
- 权限设置更新
- 多模型架构适配
- API密钥管理
完整的迁移实现代码可在以下目录找到:Core/Sources/ServiceUpdateMigration/
迁移完成后,请参考官方文档进行功能验证:README.md
【免费下载链接】CopilotForXcode The missing GitHub Copilot, Codeium and ChatGPT Xcode Source Editor Extension 项目地址: https://gitcode.***/gh_mirrors/co/CopilotForXcode