背景
为了调研 MCP 在 windows 上如何使用本地的命令执行一些操作而实现自动化的过程,在 B 站视频的指导下,进行相应填坑过程,最终运行起来,并实现 github 自动化编程并提交代码的过程。
B 站 Cline 视频演示
Cline
Cline 是一款 Visual Studio Code (VSCode) 的开源 AI 编程辅助插件,主要用于通过人工智能增强开发者的编码体验,帮助自动化和加速软件开发流程。它不仅限于代码补全,而是作为一个智能代理(agent),能够理解项目上下文、执行复杂任务并与开发环境交互。以下是 Cline 的主要用途和功能:
自动化编程任务:
-
Cline 可以通过自然语言指令执行复杂的编程任务,例如创建新文件、编辑现有代码、运行终端命令等。例如,你可以要求它“创建一个 Spring Boot 应用”或“修复某个 bug”,它会分解任务并逐步完成。
代码生成与优化:
-
它能根据用户需求生成代码模板、优化现有代码或进行大规模重构。Cline 还能分析代码结构,自动修复语法错误、缺少的导入等常见问题。
实时调试与运行时交互:
-
Cline 支持与运行时环境交互,例如启动本地 Web 服务器、检查页面渲染、捕获控制台日志或修复运行时错误。它甚至可以通过无头浏览器模拟用户操作(如点击、输入)来调试前端问题。
多模型支持与灵活性:
-
Cline 支持多种 AI 模型(如 Anthropic 的 Claude 3.5 Sonnet、OpenAI 的 GPT-4、Google Gemini、DeepSeek R1 等),并允许用户根据任务需求切换模型。它还支持本地模型(如通过 LM Studio 或 Ollama),提供隐私和成本控制。
版本控制与安全:
-
Cline 提供工作区快照功能,每次 AI 操作后自动保存状态,允许用户随时查看更改差异或回滚到之前版本。每次文件修改或命令执行都需要用户批准,确保安全性和可控性。
项目上下文理解:
-
通过分析文件结构、源代码 AST 和正则搜索,Cline 能快速适应大型复杂项目,提供精准的建议和修改。它还能通过 .clinerules 文件或自定义指令遵循项目特定的编码规范。
终端命令执行:
-
利用 VSCode 的终端集成,Cline 可以执行安装包、运行测试、部署应用等命令,并根据输出动态调整后续操作。
多语言和框架支持:
-
Cline 支持多种编程语言和框架,尤其对主流框架(如 Spring Boot、Next.js)有较好的支持。用户可以用自然语言描述需求,Cline 会生成相应的代码结构。
增强系统管理员工作:
-
对于系统管理员,Cline(及其分支 Roo Code)可通过自然语言生成和优化 PowerShell 或 Bash 脚本,自动化 CLI 任务。
成本透明与管理:
-
Cline 实时跟踪 API 使用的 token 数量和成本,帮助用户优化模型选择和控制开支。
Cline 安装 github MCP 常见问题
如何安装
在 cline 的插件管理里面搜索
github 源码地址:
https://github.com/modelcontextprotocol/modelcontextprotocol
cline_mcp_settings.json 配置
安装后在 Installed 中可以看到该服务的提供的服务,安装完后,需要我们来配置一个服务 json,B 站课程里面要求改写的地方注意改写,实测不改写在 powershell 里面也不会有啥问题,UP 主估计是在 cmd 控制台下出现的问题。
下面的 autoApprove 是自动授权的一种操作,若不添加,AI 无论操作以下哪种行为都要求我们来授权,比较麻烦,我全勾了。
open router 模型配置
openrouter 的地址:OpenRouter
注意 cline 的模型自动换成 sonnet
这估计不是 bug,而是故意而为,要时刻注意模型是否被切换
VS code 报 Shell Integration Unavailable 问题
知乎一篇帖子写得很全,下面来补补坑
-
第一个坑是 powershell 如何安装 7 的命令,这个往往会因为网络问题无法处理安装,你需要配置下 http_proxy,https_proxy ,另外 microsoft.com 默认不会被转发,你需要将其手动追加,这是个关键 地方,否则下面的命令无法执行
PS C:\Users\Administrator> winget install --id Microsoft.PowerShell --source winget
尝试更新源失败: winget
执行此命令时发生意外错误:
InternetOpenUrl() failed.
0x80072eff : unknown error
PS C:\Users\Administrator> winget install --id Microsoft.PowerShell --source winget
尝试更新源失败: winget
执行此命令时发生意外错误:
InternetOpenUrl() failed.
0x80072eff : unknown error
https://zhuanlan.zhihu.com/p/25724740375(升级 shell)
Powershell 如何被 vscode 默认调用
在C盘搜索pwsh.exe,查看新的PowerShell装哪了(此时默认的PowerShell还是旧版的),我的是在C:\Program Files\PowerShell\7\pwsh.exe
下。然后,在VS Code中按Ctrl + Shift + P
,输入并选择 Preferences: Open User Settings (JSON),打开用户设置文件,搜索 terminal.integrated,我不经常用 vscode,所以配置是空的,我直接输入以下内容即可:
{"terminal.external.windowsExec": "C:\\Program Files\\PowerShell\\7\\pwsh.exe","terminal.integrated.defaultProfile.windows": "PowerShell 7","terminal.integrated.profiles.windows": {"PowerShell 7":{"path": "C:\\Program Files\\PowerShell\\7\\pwsh.exe","args": []}},
}
除了 json 配置外,也有 UI 配置
在VS Code中按Ctrl + Shift + P
,输入并选择 Preferences: Open User Settings
Powershell 7 无法升级
需要将 microsoft.com 以 domain-suffix 增加到 clash rules 中去
-
powershell 的命令 pwsh,不是 powershell,所以你在资源目录里面直接输入 powershell 还是 5 版本,如想找到 pwsh.exe 配置 pycharm terminal,可以用 everthing 搜索 pwsh.exe
查看 powershell 的版本号命令
$PSVersionTable.PSVersion #这个比较难记
host # 这个比较好记
Pycharm 更换 powershell 7 后如何自动切换环境?
powershell 7 支持你开启时,执行一些脚本,powershell 5 不清楚是如何适配的,但是 7 需要配置 ps1 文件,并且开启可执行脚本的命令
. : 无法加载文件 C:\Users\Administrator\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本。有关详细信
息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 3
+ . 'C:\Users\Administrator\Documents\WindowsPowerShell\profile.ps1'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo : SecurityError: (:) [],PSSecurityException+ FullyQualifiedErrorId : UnauthorizedAccess
profile.ps1 内容(网上可找)
#region conda initialize
# !! Contents within this block are managed by 'conda init' !!
If (Test-Path "C:\Users\Administrator\anaconda3\Scripts\conda.exe") {(& "C:\Users\Administrator\anaconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | ?{$_} | Invoke-Expression
}
#endregion
Microsoft.PowerShell_profile.ps1,因为在此系统上禁止运行脚本
解决方案
解决Win11报错:Microsoft.PowerShell_profile.ps1,因为在此系统上禁止运行脚 本。_profile.ps1,因为在此系统上禁止运行脚本-CSDN博客
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser