feat: ModelScope Provider 半引导登录与 Token 获取流程 (#433)#434
feat: ModelScope Provider 半引导登录与 Token 获取流程 (#433)#434phantom5099 merged 5 commits into1024XEngineer:mainfrom
Conversation
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
|
@xgopilot 严格review此次pr |
|
/code 提高测试覆盖率到95 |
结果已按你的要求补测并提升本次 PR 变更覆盖率到 95% 以上,相关提交已推送到当前 PR 分支 本次改动
验证结果
未做事项
|
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Cai-Tang-www <106404101+Cai-Tang-www@users.noreply.github.com>
|
/review |
|
/simplify |
完成情况已按触发评论要求完成:先检查历史评论,再修复值得修复的问题,并使用 已处理项
验证已执行:
提交与推送
未执行项
|
|
/review |
| guide.Step = modelScopeGuideStepLogin | ||
| case modelScopeGuideStepLogin: | ||
| guide.Step = modelScopeGuideStepToken | ||
| case modelScopeGuideStepToken: |
There was a problem hiding this comment.
handleModelScopeGuideOpenResultMsg 在 modelScopeGuideStepToken 分支中会无条件推进到 modelScopeGuideStepPasteToken。这会破坏认证失败回退链路:handleModelScopeGuideSubmitResultMsg 在 auth/permission 错误时把步骤设回 modelScopeGuideStepToken 并打开 modelScopeAuthURL,但打开完成后这里会直接跳到“粘贴 Token”。建议按 msg.Target 决定是否推进(仅当成功打开 modelScopeTokenURL 时进入 PasteToken,打开 modelScopeAuthURL 时保持在 Token)。
|
/simplify |
完成情况已按触发要求完成:先读取评论日志并处理值得修复的问题,再调用 处理结果
提交与推送
未执行项
|
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Cai-Tang-www <106404101+Cai-Tang-www@users.noreply.github.com>
1. 背景与目标
1.1 背景
当前用户在配置 ModelScope provider 时,需要自行完成以下路径摸索:
这会导致首次配置成本高、失败路径不清晰,且容易中途退出。
1.2 目标
在不代替用户执行实名/登录/验证码流程的前提下,提供 ModelScope 半引导流程:
/provider直接进入引导2. 需求映射
/provider -> 选择 modelscope -> 半引导 -> token 回填 -> 校验 -> 切换成功3. 方案与实现
3.1 配置层(builtin provider)
新增内置
modelscopeprovider:name:modelscopedriver:openaicompatbase_url:https://api-inference.modelscope.cn/v1model:Qwen/Qwen2.5-7B-Instructapi_key_env:MODELSCOPE_API_KEY涉及:
internal/config/provider.gointernal/config/defaults_test.gointernal/config/provider_test.gointernal/config/state/service_test.go3.2 TUI 交互层(半引导状态机)
在 provider picker 选择
modelscope时:MODELSCOPE_API_KEY(进程环境或用户环境)=> 保持原有切换行为ModelScope Guide引导态引导步骤:
~/.neocode/modelscope-guide.html(不存在则降级到登录页)https://www.modelscope.cn/https://www.modelscope.cn/my/access/token校验与回退:
https://www.modelscope.cn/my/settings/account涉及:
internal/tui/core/app/app.gointernal/tui/core/app/commands.gointernal/tui/core/app/update.gointernal/tui/core/app/view.gointernal/tui/state/ui_state.goupdate_test.go、view_test.go、state_test.go3.3 基础能力(跨平台打开资源)
新增统一打开外部资源能力(URL/本地 HTML):
cmd /c startopenxdg-open并包含输入归一化与安全校验:
http/https/fileURL涉及:
internal/tui/infra/open_resource.gointernal/tui/infra/open_resource_test.go3.4 文档更新
涉及:
docs/guides/modelscope-provider-setup.mddocs/guides/configuration.mddocs/guides/adding-providers.mdREADME.md4. 职责边界与安全性
5. 测试与验证
已执行(聚焦本次改动路径):
go test ./internal/config -run "ModelScope|DefaultProviders|DefaultProvidersIncludesBuiltinProviders|LoaderRejectsCustomProviderNameConflictingWithBuiltin"go test ./internal/config/state -run "ListProviderOptionsUsesCatalogModels"go test ./internal/tui/infra -run "OpenResource|NormalizeOpenResourceTarget"go test ./internal/tui/core/app -run "ModelScope|UpdatePickerProviderAndModelEnter|RenderPickerProviderAndFileMode"go test ./internal/tui/state -run "TestPanelAndPickerConstants"说明:
internal/config全量中存在历史无关用例偶发权限报错(fsyncDirectory),本 PR 采用定向测试集验证改动闭环。6. 兼容性与回归影响
modelscope且缺少 token 时进入新引导7. 回滚策略
若引导流程在特定平台异常,可快速回退:
modelscopeguide picker 分支(pickerModelScopeGuide)8. Checklist
modelscopeprovider/provider选择后自动进入半引导(缺 token 场景)