用Cursor、Trae等AI编程工具,代码库里的敏感信息会被上传到云端吗?我们该如何保护自己,避免泄露风险呢?

在使用像CursorTrae这样的AI编程工具时,确实能帮助我们更精准地获得建议,这主要得益于它们背后的索引代码库,比如Cursor的codebase。

不过,这里也有个隐忧:如果你的项目里有一些生产环境的敏感信息,比如数据库密码或API密钥,这些信息可能会被上传到云端,难免会有泄露的风险吧?

那在使用这些工具的时候,有没有办法避免这些潜在的风险呢?比如说,能不能像.gitignore文件那样,忽略某些不想上传的文件呢?

接下来,我们来聊聊MCP。这是一种既高效又通用的协议,能够让AI安全、快速地访问本地数据。举个例子,我们通过将Sentry接入MCP,成功实现了Sentry监控服务和Cursor助手的无缝集成,达成了对应用崩溃率的智能分析以及对崩溃问题的详细查询,这样大家就能更好地理解MCP的运作方式了。

1. MCP简介

MCP(模型上下文协议)是由Anthropic推出的开放标准,目的是统一大型语言模型(LLM)和外部数据源、工具之间的通信方式。

借助MCP,我们能够构建服务器,让LLM应用可以轻松获取数据和功能。具体来说,MCP服务器能做到以下几点:

  • 通过资源(Resources)暴露数据,就像GET请求的接口,能把信息加载到LLM的上下文中;
  • 通过工具(Tools)提供功能,类似于POST请求的接口,能执行代码或产生其他效果;
  • 通过提示(Prompts)定义交互模式,像一个服务列表,方便查询服务器提供哪些服务以及需要什么参数。

MCP的主要目标就是解决当前AI模型因为数据孤岛而无法充分发挥其潜力的问题。借助MCP,AI应用能够安全地访问并操作本地和远程数据,为AI应用打开了通往万物的通道。

在如今的AI应用开发中,我们常常需要让AI模型和现有的业务系统互动,比如查询数据库、调用监控系统的API、分析日志等。MCP提供了一种标准化的方法,让AI模型能够“看到”外部世界的数据。

2. MCP的核心优势

  • 能力扩展:使AI模型能够超越训练数据的限制,获取实时的外部信息;
  • 标准化接口:提供统一的接口规范,简化服务集成的过程;
  • 安全可控:通过明确的权限管理和访问控制,确保数据安全;
  • 低代码集成:减少编写胶水代码的需求,从而降低开发成本;
  • 实时数据访问:让AI能够基于最新数据做出决策和回应。

3. MCP可以实现的功能举例

以下是一些官方提供的或通过MCP协议实现的服务工具,都是用TypeScript或Python SDK做的,详细信息和更多例子可以查看官方文档:官方文档(https://github.com/modelcontextprotocol/servers)

  • AWS知识库检索 – 使用Bedrock Agent Runtime从AWS知识库中提取信息;
  • Brave搜索 – 利用Brave的搜索API进行网络和本地搜索;
  • EverArt – 使用多种模型生成AI图像;
  • Everything – 参考/测试服务器,包含提示、资源和工具;
  • Fetch – 获取和转换网络内容,提高LLM的使用效率;
  • 文件系统 – 提供可配置访问控制的安全文件操作;
  • Git – 用于读取、搜索和操作Git仓库的工具;
  • GitHub – 仓库管理、文件操作和GitHub API集成;
  • GitLab – GitLab API,支持项目管理;
  • Google Drive – 提供Google Drive文件访问和搜索功能;
  • Google地图 – 提供位置服务、路线指引和地点详情;
  • 记忆系统 – 基于知识图谱的持久化记忆系统;
  • PostgreSQL – 只读数据库访问,具备架构检查功能;
  • Puppeteer – 浏览器自动化和网页抓取;
  • Redis – 与Redis键值存储交互;
  • Sentry – 从 http://Sentry.io 检索和分析问题;
  • Sequential Thinking – 通过思维序列进行动态和反思性问题解决;
  • Slack – 频道管理和消息发送功能;
  • SQLite – 数据库交互和商业智能功能。

4. 以Sentry服务为例的MCP实践

4.1 背景与实现的功能

在我们的项目中,我们选择Sentry作为bug上报的平台。通过接口获取的数据与MCP服务结合,让我们更方便地分析崩溃原因和查询崩溃率等信息。官方提供的示例程序,为我们进一步扩展Sentry功能提供了极好的参考。有了Sentry接入MCP协议,我们只需将bug ID或问题链接提交给Cursor,就能快速获取详细的bug信息及可能的解决方案,这大大提高了问题排查和解决的效率。

此外,我们还将Sentry的统计信息接入系统,赋予Cursor访问各版本崩溃率数据和全版本综合崩溃率数据的权限。AI根据这些数据能够生成直观的对比图表或数据。

为了进一步增强Sentry MCP工具的功能,我们将后端应用性能监控(APM)数据也整合进来了。这样,Cursor就能直接查询到更全面、更丰富的应用信息,全方位提升了数据的可获取性和利用价值。

4.2 Sentry MCP服务组件功能结构

Sentry MCP服务组件的功能结构图如下:

用Cursor、Trae等AI编程工具,代码库里的敏感信息会被上传到云端吗?我们该如何保护自己,避免泄露风险呢?
  • 程序流程 – 程序入口:通过main函数启动程序,接收Sentry和SNS身份验证令牌;- 服务器创建:serve函数创建MCP服务器并注册各种处理程序;- 请求处理:当AI助手发起工具调用请求时,handle_call_tool函数根据工具名称进行请求的路由分发;- 数据获取:专门的处理函数通过外部API获取数据,并将其封装在相应的数据类中;- 响应生成:数据类提供方法将数据转换为所需的格式,返回给AI助手。
  • 主要组件数据类:- SentryIssueData:存储Sentry错误和崩溃信息,包括标题、ID、状态和堆栈跟踪;- SentrySessionStatsData:存储Sentry会话统计数据,如崩溃率、用户数等;- ApkHistoryData:存储APK检测历史数据,包括版本、大小和各组件信息。处理函数:- handle_sentry_issue:获取特定Sentry问题详情;- handle_session_stats:获取会话统计数据,如崩溃率和稳定性指标;- handle_apk_history:获取APK历史数据,包括大小和组件分析。服务器配置:- serve:配置MCP服务器,注册工具、提示和处理程序;- handle_call_tool:分发工具调用请求到相应的处理函数。

4.3 功能实现

MCP协议提供Python、Java、Kotlin等语言的SDK,考虑到Python是最常用的,我们这里用Python SDK来实现。

4.3.1 安装MCP

​​
pip install mcp

4.3.2 功能入口

创建server.py文件作为服务程序的代码文件,下面列出的代码都是在这个文件中。main函数是程序的入口函数:

​
#server.py
def main(auth_token: str, sns_token: str = None):
    async def _run():
        async with mcp.server.stdio.stdio_server() as (read_stream, write_stream):
            server = await serve(auth_token, sns_token)
            await server.run(
                read_stream,
                write_stream,
                InitializationOptions(
                    server_name="sentry",
                    server_versinotallow="0.4.1",
                    capabilities=server.get_capabilities(
                        notification_optinotallow=NotificationOptions(),
                        experimental_capabilities={},
                    ),
                ),
            )

    asyncio.run(_run())

if __name__ == "__main__":
    # 直接调用main函数
    main()

main函数的功能包括:

  • 创建基于标准输入输出的服务器通信通道;
  • serve函数初始化MCP服务器实例;
  • 配置服务器的初始化选项;
  • 启动服务器的运行循环。

4.3.3 服务器实例创建

以下是简化版的serve函数:

​
#server.py
async def serve(auth_token: str, sns_token: str = None) -> Server:
    server = Server("sentry")
    http_client = httpx.AsyncClient(base_url=SENTRY_API_BASE)
    apk_http_client = httpx.AsyncClient(base_url=APK_API_BASE)

    @server.list_prompts()
    async def handle_list_prompts() -> list[types.Prompt]:
        prompts = [
            types.Prompt(
                name="sentry-issue",
                descriptinotallow="通过ID或URL获取Sentry问题详情",
                arguments=[
                ],
            ),
            types.Prompt(
                name="session-stats",
                descriptinotallow="获取Sentry会话统计数据和崩溃率",
                arguments=[
                  
                ],
            ),
             types.Prompt(
                name="apk-history",
                descriptinotallow="获取APK检测历史数据",
                arguments=[]
            )
            
        ]
            
        return prompts

    @server.get_prompt()
    async def handle_get_prompt(
        name: str, arguments: dict[str, str] | None
    ) -> types.GetPromptResult:
        if name == "sentry-issue":
             ...
            return issue_data.to_prompt_result()

        elif name == "session-stats":
            ...
            return stats_data.to_prompt_result()

        elif name == "apk-history":
           ...
            return history_data.to_prompt_result()
        else:
            raise ValueError(f"Unknown prompt: {name}")

    @server.list_tools()
    async def handle_list_tools() -> list[types.Tool]:
        tools = [
            types.Tool(
                name="get_sentry_issue",
                 
            ),
            types.Tool(
                name="get_sentry_session_stats",
               
            ) ,
            types.Tool(
                name="get_apk_history",
             
            )
        ]
        
      
            
        return tools

    @server.call_tool()
    async def handle_call_tool(
        name: str, arguments: dict | None
    ) -> list[types.TextContent | types.ImageContent | types.EmbeddedResource]:
        if name == "get_sentry_issue":
          
            return issue_data.to_tool_result()
        
        elif name == "get_sentry_session_stats":
        
            return stats_data.to_tool_result()
            
        elif name == "get_apk_history":
         
            return history_data.to_tool_result()
        
        else:
            raise ValueError(f"Unknown tool: {name}")

    return server

serve函数是MCP Sentry服务的核心,负责创建、配置并返回一个完整的MCP服务器实例。它通过四个主要组件构建了完整服务:

  • 提示列表:定义可用的查询服务(问题详情、崩溃率统计、APK历史);
  • 提示处理器:执行查询逻辑并返回结果;
  • 工具列表:注册可调用的工具集合;
  • 工具调用处理器:处理具体工具调用并获取数据,整体功能是将Sentry和APK监控系统的复杂API调用封装成结构化接口,便于AI助手获取崩溃报告、稳定性数据和APK分析信息。

4.4 三个查询功能的实现

4.4.1 Sentry问题详情获取功能实现

handle_sentry_issue函数是MCP Sentry服务的核心组件之一,通过问题ID或URL获取Sentry问题的详细信息,包括问题标题、状态、级别、首次和最后出现时间、事件数量,以及最关键的堆栈跟踪信息。下面是获取问题详情的主函数功能:

​
#server.py
asyncdef handle_sentry_issue(
    http_client: httpx.AsyncClient, auth_token: str, issue_id_or_url: str
) -> SentryIssueData:
    try:
        # 提取问题ID
        issue_id = extract_issue_id(issue_id_or_url)

        # 获取问题详情
        response = await http_client.get(
            f"organizations/xxx/issues/{issue_id}/", 
            headers={"Authorization": f"Bearer {auth_token}"}
        )
        if response.status_code == 401:
            raise McpError(
                "Error: Unauthorized. Please check your MCP_SENTRY_AUTH_TOKEN token."
            )
        response.raise_for_status()
        issue_data = response.json()

        # 获取问题哈希值
        hashes_response = await http_client.get(
            f"organizations/xxx/issues/{issue_id}/hashes/",
            headers={"Authorization": f"Bearer {auth_token}"},
        )
        hashes_response.raise_for_status()
        hashes = hashes_response.json()

        ifnot hashes:
            raise McpError("No Sentry events found for this issue")

        # 获取最新事件并生成堆栈跟踪
        latest_event = hashes[0]["latestEvent"]
        stacktrace = create_stacktrace(latest_event)

        # 返回格式化的问题数据
        return SentryIssueData(
            title=issue_data["title"],
            issue_id=issue_id,
            status=issue_data["status"],
            level=issue_data["level"],
            first_seen=issue_data["firstSeen"],
            last_seen=issue_data["lastSeen"],
            count=issue_data["count"],
            stacktrace=stacktrace
        )

    except SentryError as e:
        raise McpError(str(e))
    except httpx.HTTPStatusError as e:
        raise McpError(f"Error fetching Sentry issue: {str(e)}")
    except Exception as e:
        raise McpError(f"An error occurred: {str(e)}")

为了简化使用并确保数据的一致性,我们在最新版本中对环境和项目做了固定配置:

轻松上手!Sentry与MCP集成的实用指南

  • 环境(environment):设定为 [“flavorsOnline_arm64”]
  • 项目 ID(project):设定为 [6]

这样一来,用户在查询的时候就不用每次都重新输入这些参数,省事多了。

4.4.2 获取Sentry会话统计数据的功能实现

handle_session_stats函数是Sentry MCP服务中的另一个重要部分,专门负责提取应用的会话统计数据,比如崩溃率、用户数量、会话时长等。这些指标对于我们监控应用的稳定性、分析版本质量和用户体验都是相当重要的。

​
#server.py
asyncdef handle_session_stats(
    http_client: httpx.AsyncClient, 
    auth_token: str, 
    organization: str,
    field: list[str],
    start: str = None,
    end: str = None,
    environment: list[str] = None,
    stats_period: str = None,
    project: list[int] = None,
    per_page: int = None,
    interval: str = None,
    group_by: list[str] = None,
    order_by: str = None,
    include_totals: int = 1,
    include_series: int = 1,
    query: str = None
) -> SentrySessionStatsData:
    try:
        # 构建查询参数
        params = {"field": field}
        
        if start:
            params["start"] = start
        if end:
            params["end"] = end
        if environment:
            params["environment"] = environment
        if stats_period:
            params["statsPeriod"] = stats_period
        if project:
            params["project"] = project
        if per_page:
            params["per_page"] = per_page
        if interval:
            params["interval"] = interval
        if group_by:
            params["groupBy"] = group_by
        if order_by:
            params["orderBy"] = order_by
        if include_totals isnotNone:
            params["includeTotals"] = include_totals
        if include_series isnotNone:
            params["includeSeries"] = include_series
        if query:
            params["query"] = query
            
        # 发送请求
        response = await http_client.get(
            f"organizations/{organization}/sessions/",
            headers={"Authorization": f"Bearer {auth_token}"},
            params=params
        )
        
        if response.status_code == 401:
            raise McpError(
                "Error: Unauthorized. Please check your MCP_SENTRY_AUTH_TOKEN token."
            )
        
        response.raise_for_status()
        data = response.json()
        
        stats_data = SentrySessionStatsData(
            organizatinotallow=organization,
            start_time=data.get("start", ""),
            end_time=data.get("end", ""),
            intervals=data.get("intervals", []),
            groups=data.get("groups", []),
            query=data.get("query", "")
        )
        report_file_path = generate_crash_rate_html_report(
                    data=stats_data,
                    params=params
                )
                stats_data.report_file_path = report_file_path

        return stats_data
    except httpx.HTTPStatusError as e:
        raise McpError(f"Error fetching Sentry session statistics: {str(e)}")
    except Exception as e:
        raise McpError(f"An error occurred: {str(e)}")
  • 功能亮点:
    – 灵活的查询参数:可以使用多种筛选条件,比如时间范围、环境、项目ID、查询表达式等;
    – 丰富的统计指标:提供多种与会话相关的指标,如会话总数(sum(session))、独立用户数(count_unique(user))、平均会话时长(avg(session.duration))、会话时长分位数(p50/p75/p90/p95/p99/max(session.duration))、用户崩溃率(crash_rate(user))、会话崩溃率(crash_rate(session))、用户崩溃免除率(crash_free_rate(user))、会话崩溃免除率(crash_free_rate(session));
    – 数据系列和汇总:支持时间序列数据和汇总数据,并能生成html文件,方便进行趋势分析和总体评估;
    – 分组与排序:可以对数据进行分组和排序,便于比较不同维度的数据。

通过这些功能,我们能利用cursor监控和分析应用的稳定性,及时发现潜在问题,提供数据支持来提升用户体验和应用质量。

4.4.3 APK检测历史数据获取功能实现

handle_apk_history函数在Sentry MCP服务中负责获取和分析APK的历史检测数据。它能追踪应用各个版本的体积变化、组件大小分布和版本更新情况。

​
#server.py
asyncdef handle_apk_history(
    http_client: httpx.AsyncClient, 
    sns_token: str
) -> ApkHistoryData:
    try:
        response = await http_client.get(
            "getHistory/0",
            headers={"sns_token": sns_token}
        )
        
        if response.status_code == 401:
            raise McpError(
                "Error: Unauthorized. Please check your SNS token."
            )
        
        response.raise_for_status()
        data = response.json()
        
        # 从新的API响应结构中获取数据
    apkData = ApkHistoryData(
            apk_list=data.get("data", {}).get("apkList", []),
            total_count=data.get("data", {}).get("totalCount", 0)
        )
     report_file_path = generate_apk_history_html_report(
                    data=apkData
                )
                apkData.report_file_path = report_file_path


         
        return apkData
    except httpx.HTTPStatusError as e:
        raise McpError(f"Error fetching APK history data: {str(e)}")
    except Exception as e:
        raise McpError(f"An error occurred: {str(e)}")

这些信息来源于我们的应用性能监控(APM)接口,详细展示了APK的相关内容,包括:

  • 基本信息:APK的版本、版本号和名称;
  • 大小详情:APK的总大小与实际下载大小;
  • 组件分析:对APK各个组件(如Assets、Dex、Lib及资源部分)的大小进行分析;
  • 元数据:包括时间戳、文件路径、备注信息和特性描述等。此外,这些数据以结构化形式整合,输出到html文件中,方便后续深入分析和展示。

4.4.4 在cursor中集成

要在cursor的设置中添加MCP服务,选择Type为command,然后在Command中输入python执行程序,保存后就能在cursor对话框中使用。具体的界面如下图所示:

4.4.4 在cursor中集成

在cursor的设置中添加MCP服务,Type选择command,然后在Command中输入python执行程序,保存后,可以在cursor对话框中使用,添加的界面如图所示:

用Cursor、Trae等AI编程工具,代码库里的敏感信息会被上传到云端吗?我们该如何保护自己,避免泄露风险呢?

选择Type时,还有一种是sse(服务器发送事件,Server-Sent Events),这是一种允许服务器实时向客户端推送数据的Web API。它建立了单向的HTTP连接,服务器可以在有新数据时随时发送消息,而客户端只需监听。我们在Sentry MCP中主要使用主动获取数据的方式,所以选择了command命令行。完整的command命令如下:

​​
python3 /Users/xxx/server.py --auth-token xxx sns-token xxx

4.5 效果展示

4.5.1 查询崩溃率数据

通过handle_session_stats函数,我们可以轻松获取应用的崩溃率数据。比如在cursor中输入:帮我查询6.6.0和6.5.0版本最近14天的崩溃率详情,生成的html结果如下:

用Cursor、Trae等AI编程工具,代码库里的敏感信息会被上传到云端吗?我们该如何保护自己,避免泄露风险呢?
用Cursor、Trae等AI编程工具,代码库里的敏感信息会被上传到云端吗?我们该如何保护自己,避免泄露风险呢?

4.5.2 查询bug详情

在cursor中输入:帮我查询这个bug的详细信息644,结果如下:

​​
Sentry问题分析报告
我已经查询到关于您提供的Sentry问题的详细信息。这是一个发生在flavorsOnline_arm64环境中的项目6的错误:
错误概览
错误类型:RemoteServiceException$CannotDeliverBroadcastException
错误描述:can't deliver broadcast
问题ID:644
状态:未解决
严重级别:致命(fatal)
首次出现:2024-10-03 04:36:33
最近出现:2025-03-21 10:44:02
事件计数:18次
堆栈跟踪
错误发生在Android系统的广播传递机制中,堆栈跟踪显示:
ZygoteInit.java:954 in main
RuntimeInit.java:559 in run
Method.java:None in invoke
ActivityThread.java:8395 in main
Looper.java:300 in loop
Looper.java:211 in loopOnce
Handler.java:106 in dispatchMessage
ActivityThread.java:2349 in handleMessage
None:0 in -$$Nest$mthrowRemoteServiceException
ActivityThread.java:2087 in throwRemoteServiceException
崩溃率分析
根据过去7天的会话统计:
崩溃率:约0.0001 (0.01%)
无崩溃率:约0.9999 (99.99%)
总会话数:1,239,555
虽然崩溃率较低,但由于这是一个致命错误,且在近期(3月21日)仍有发生,应该引起关注。
问题分析
错误性质:这是一个与Android广播机制相关的RemoteServiceException,表明应用尝试发送一个广播,但系统无法传递。
可能原因:
广播接收器不存在或已被卸载
目标组件权限问题
系统资源限制导致广播传递失败
特定于arm64架构的问题
影响范围:
错误发生在flavorsOnline_arm64环境
相对较低的崩溃率(0.01%)表明这可能是特定设备或特定条件下才会触发的问题
建议解决方案
防御性编程:
在发送广播前检查接收器是否存在
使用try-catch块包装广播发送代码
错误位置定位:
检查ActivityThread.java:2087处的throwRemoteServiceException方法调用点
找出应用中哪些地方发送了可能触发此异常的广播
设备/版本针对性修复:
由于这个问题仅在arm64架构出现,可以考虑为该架构添加特定的兼容性代码
监控计划:
虽然崩溃率低,但应继续监控,特别是在新版本发布后
由于这个错误是与Android系统广播机制相关的,建议查看应用中所有发送广播的代码,尤其是在6.6.0版本中新增或修改的部分,确保它们都有适当的错误处理机制。
需要我进一步分析这个问题的特定方面吗?

4.5.3 查询应用性能监控(APM)数据

在cursor中输入:帮我查询6.6.0的性能数据,并与6.5.0版本对比。生成的html结果如下:

用Cursor、Trae等AI编程工具,代码库里的敏感信息会被上传到云端吗?我们该如何保护自己,避免泄露风险呢?

从结果中可以看出,通过MCP协议,本地数据得到了充分的利用,为AI访问本地数据提供了可能。这使得AI能够深入挖掘并高效利用这些数据。

5.总结

本文简要介绍了MCP协议。MCP是一种高效而通用的协议,可以让AI安全、快速地访问本地数据。通过Sentry接入MCP的实例,我们成功实现了Sentry监控服务与cursor助手的集成,达成了对应用崩溃率的智能分析以及崩溃问题的详细查询,帮助大家更好地理解MCP的工作原理。

希望本文能帮助读者更深入地了解MCP协议,并熟练掌握将本地数据接入AI的方法。期待这篇技术分享对您了解和运用MCP有所帮助。

零基础入门AI大模型

今天给大家准备了一系列AI大模型的资源,包括入门学习的思维导图、精选的学习书籍手册、视频教程和实战学习的录播视频,免费分享给大家。

1.学习路线图

用Cursor、Trae等AI编程工具,代码库里的敏感信息会被上传到云端吗?我们该如何保护自己,避免泄露风险呢?

第一阶段:从大模型的系统设计入手,讲解主要方法;

第二阶段:通过大模型提示词工程,从Prompts角度更好地发挥模型的作用;

第三阶段:利用阿里云PAI平台进行电商领域虚拟试衣系统的开发;

第四阶段:以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段:在大健康、新零售和新媒体领域进行大模型微调开发;

第六阶段:以SD多模态大模型为主,搭建文生图的小程序案例;

第七阶段:通过星火大模型、文心大模型等成熟大模型构建行业应用。

2.视频教程

虽然网上有很多学习资源,但大多数都不完整。这是我整理的关于大模型的视频教程,涵盖了上面路线图中的每一个知识点,都有配套的视频讲解。

用Cursor、Trae等AI编程工具,代码库里的敏感信息会被上传到云端吗?我们该如何保护自己,避免泄露风险呢?

(视频已经打包在一起,总共300多集,不能一一展开。)

3.技术文档和电子书

这里整理了与大模型相关的PDF书籍、行业报告和文档,总共有几百本,都是行业内最新的资料。

用Cursor、Trae等AI编程工具,代码库里的敏感信息会被上传到云端吗?我们该如何保护自己,避免泄露风险呢?

4.LLM面试题和面经合集

这部分整理了最新的大模型面试题和大厂offer面经的合集。

用Cursor、Trae等AI编程工具,代码库里的敏感信息会被上传到云端吗?我们该如何保护自己,避免泄露风险呢?

学会后的收获:

• 可实现基于大模型的全栈工程(前端、后端、产品经理、设计、数据分析等),通过这门课程获得多方面的能力;

• 能够利用大模型解决实际项目需求:在大数据时代,企业需要处理大量数据,掌握大模型技术可以更好地分析数据,提高决策的准确性;

• 基于大模型和企业数据的AI应用开发,掌握GPU算力、硬件、LangChain开发框架和项目实战技能,学习Fine-tuning技术进行大模型的垂直训练;

• 提高程序员的编码能力:大模型应用开发需要掌握机器学习算法和深度学习框架,这对提高编码能力和分析能力大有裨益。

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4. 超过200本大模型相关PDF书籍
5. LLM面试题汇总
6. AI产品经理资料大全

5. 免费领取方式(点击下方的小卡片就能拿到哦!)

AI大模型学习全套资料包:包含学习路线、面试真题以及PDF笔记等,助你从入门到精通,实战能力满分!

来源:知乎
原文标题:使用Cursor、Trae等AI编程工具时,代码库中的敏感信息会被上传到云端吗?如何规避泄露风险? – 雨飞 的回答
声明:
文章来自网络收集后经过ai改写发布,如不小心侵犯了您的权益,请联系本站删除,给您带来困扰,深表歉意!

发表评论