[{"data":1,"prerenderedAt":729},["ShallowReactive",2],{"content-query-nUhWNeNJBH":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"cover":11,"type":12,"category":13,"body":14,"_type":723,"_id":724,"_source":725,"_file":726,"_stem":727,"_extension":728},"/technology-blogs/zh/2026-1-28","zh",false,"","开源之夏｜李振兴：基于RAG的MindSpore代码助手与智能问答系统实践","构建一套基于检索增强生成（RAG）的智能问答系统与代码助手","2026-1-28","https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2025/06/06/1a18a46ef03442ea8f8d83ba33b0a7af.png","technology-blogs","开发者说",{"type":15,"children":16,"toc":705},"root",[17,25,36,43,79,85,92,99,105,113,118,136,141,154,159,172,177,200,206,213,231,237,242,260,265,288,294,299,304,309,314,327,332,337,355,360,373,379,384,397,402,415,420,426,431,449,454,467,473,478,483,488,501,506,511,516,520,525,543,548,566,571,576,580,585,598,603,616,621,627],{"type":18,"tag":19,"props":20,"children":22},"element","h1",{"id":21},"开源之夏李振兴基于rag的mindspore代码助手与智能问答系统实践",[23],{"type":24,"value":8},"text",{"type":18,"tag":26,"props":27,"children":29},"div",{"style":28},"text-align: center;",[30],{"type":18,"tag":31,"props":32,"children":35},"img",{"src":33,"style":34,"alt":7},"/category/information/technology-blogs/banner/2026-1-28/1.jpg","display: block;margin: 0 auto;max-width:70%",[],{"type":18,"tag":37,"props":38,"children":40},"h2",{"id":39},"_01项目介绍",[41],{"type":24,"value":42},"01项目介绍",{"type":18,"tag":44,"props":45,"children":46},"ul",{},[47,53,58],{"type":18,"tag":48,"props":49,"children":50},"li",{},[51],{"type":24,"value":52},"项目名称：基于 RAG 的 MindSpore 代码助手与智能问答系统",{"type":18,"tag":48,"props":54,"children":55},{},[56],{"type":24,"value":57},"项目描述：面向MindSpore用户与开发者，构建一套基于检索增强生成（RAG）的智能问答系统与代码助手，可自动利用MindSpore官方文档、API参考、实战教程等内容，为用户在安装部署、模型调参、算子使用、性能调优等场景中提供高质量、可执行的解答，显著降低使用门槛，提升开发效率。",{"type":18,"tag":48,"props":59,"children":60},{},[61,67,71],{"type":18,"tag":62,"props":63,"children":64},"strong",{},[65],{"type":24,"value":66},"项目源码链接：",{"type":18,"tag":68,"props":69,"children":70},"br",{},[],{"type":18,"tag":72,"props":73,"children":77},"a",{"href":74,"rel":75},"https://github.com/mindspore-courses/competition/tree/master/summer-ospp/MindSporeCodeAssistant",[76],"nofollow",[78],{"type":24,"value":74},{"type":18,"tag":37,"props":80,"children":82},{"id":81},"_02项目实现思路与核心贡献",[83],{"type":24,"value":84},"02项目实现思路与核心贡献",{"type":18,"tag":86,"props":87,"children":89},"h3",{"id":88},"_1系统架构与技术选型",[90],{"type":24,"value":91},"1、系统架构与技术选型",{"type":18,"tag":26,"props":93,"children":94},{"style":28},[95],{"type":18,"tag":31,"props":96,"children":98},{"src":97,"style":34,"alt":7},"/category/information/technology-blogs/banner/2026-1-23/2.jpg",[],{"type":18,"tag":100,"props":101,"children":102},"p",{},[103],{"type":24,"value":104},"整体思路：采用“文档 + RAG + 多前端”三层架构，底层基于vLLM-Ascend部署大语言模型，结合Dify Workflow实现可编排、可观测的RAG流程；上层支持Dify原生前端与OpenWebUI，兼顾对话体验与内网灵活接入。",{"type":18,"tag":100,"props":106,"children":107},{},[108],{"type":18,"tag":62,"props":109,"children":110},{},[111],{"type":24,"value":112},"核心架构分层：",{"type":18,"tag":100,"props":114,"children":115},{},[116],{"type":24,"value":117},"1）数据与知识层：",{"type":18,"tag":44,"props":119,"children":120},{},[121,126,131],{"type":18,"tag":48,"props":122,"children":123},{},[124],{"type":24,"value":125},"收集 MindSpore 官方文档、API 参考、教程及迁移指南等多源文本。",{"type":18,"tag":48,"props":127,"children":128},{},[129],{"type":24,"value":130},"设计统一的文档清洗与切分规则（结合标题层级、代码块、表格和 FAQ 模块），保证检索粒度和语义完整性。",{"type":18,"tag":48,"props":132,"children":133},{},[134],{"type":24,"value":135},"通过 Dify / 向量引擎建立“多视角索引”（按模块、版本、任务类型等）。",{"type":18,"tag":100,"props":137,"children":138},{},[139],{"type":24,"value":140},"2）RAG 能力层：",{"type":18,"tag":44,"props":142,"children":143},{},[144,149],{"type":18,"tag":48,"props":145,"children":146},{},[147],{"type":24,"value":148},"使用 vLLM-Ascend 部署 Qwen3-30B-A3B、Qwen3-8B 等模型，分别承担“高质量解答”和“高并发快速响应”的职责。",{"type":18,"tag":48,"props":150,"children":151},{},[152],{"type":24,"value":153},"在 Dify 中编排从“问题重写 → 多路检索 → 结果过滤与重排 → 答案生成与格式化”的端到端流程，增强复杂查询下的鲁棒性。",{"type":18,"tag":100,"props":155,"children":156},{},[157],{"type":24,"value":158},"3）前端与集成层：",{"type":18,"tag":44,"props":160,"children":161},{},[162,167],{"type":18,"tag":48,"props":163,"children":164},{},[165],{"type":24,"value":166},"通过 Dify Workflow 提供可视化配置与调用接口，方便维护者调参与排错。",{"type":18,"tag":48,"props":168,"children":169},{},[170],{"type":24,"value":171},"编写 OpenWebUI Pipeline 脚本，允许用户在 OpenWebUI 内像调用普通模型一样，直接调用 Dify 中的 MindSpore 助手应用。",{"type":18,"tag":100,"props":173,"children":174},{},[175],{"type":24,"value":176},"关键技术栈：",{"type":18,"tag":44,"props":178,"children":179},{},[180,185,190,195],{"type":18,"tag":48,"props":181,"children":182},{},[183],{"type":24,"value":184},"大模型推理：vllm-ascend + Qwen3 系列模型，充分利用 Ascend NPU 的算力优势。",{"type":18,"tag":48,"props":186,"children":187},{},[188],{"type":24,"value":189},"应用编排：Dify Workflow 作为统一的应用层编排与观测平台。",{"type":18,"tag":48,"props":191,"children":192},{},[193],{"type":24,"value":194},"对话前端：Dify 内置前端 + OpenWebUI + REST API，满足不同场景接入。",{"type":18,"tag":48,"props":196,"children":197},{},[198],{"type":24,"value":199},"容器化部署：通过 Docker Compose 管理 vLLM 服务，方便在 ARM64/Ascend 环境下快速启动与扩缩容。",{"type":18,"tag":86,"props":201,"children":203},{"id":202},"_2实现路径与关键步骤",[204],{"type":24,"value":205},"2、实现路径与关键步骤",{"type":18,"tag":207,"props":208,"children":210},"h4",{"id":209},"步骤一环境搭建与文档分析",[211],{"type":24,"value":212},"步骤一：环境搭建与文档分析",{"type":18,"tag":44,"props":214,"children":215},{},[216,221,226],{"type":18,"tag":48,"props":217,"children":218},{},[219],{"type":24,"value":220},"完成 Ascend 环境准备，确认 NPU 驱动、Ascend Toolkit、容器运行时等组件工作正常。",{"type":18,"tag":48,"props":222,"children":223},{},[224],{"type":24,"value":225},"研读 MindSpore 官方文档结构（教学教程、API、安装指南、迁移指南等），梳理出对“新手最友好”和“开发者最刚需”的文档区域。",{"type":18,"tag":48,"props":227,"children":228},{},[229],{"type":24,"value":230},"熟悉 Dify 和 OpenWebUI 的插件/Workflow/Pipeline 机制，明确“谁负责检索”和“谁负责生成”的职责划分。",{"type":18,"tag":207,"props":232,"children":234},{"id":233},"步骤二知识库构建与索引管线设计",[235],{"type":24,"value":236},"步骤二：知识库构建与索引管线设计",{"type":18,"tag":100,"props":238,"children":239},{},[240],{"type":24,"value":241},"分析 MindSpore 文档的结构特点：",{"type":18,"tag":44,"props":243,"children":244},{},[245,250,255],{"type":18,"tag":48,"props":246,"children":247},{},[248],{"type":24,"value":249},"单页冗长但内部层次分明，标题层级清晰；",{"type":18,"tag":48,"props":251,"children":252},{},[253],{"type":24,"value":254},"大量代码块、参数表格、FAQ 式问答混杂其中；",{"type":18,"tag":48,"props":256,"children":257},{},[258],{"type":24,"value":259},"不同版本/后端（Ascend/GPU/CPU）存在参数差异和适配细节。",{"type":18,"tag":100,"props":261,"children":262},{},[263],{"type":24,"value":264},"设计 Offline Indexing Pipeline：",{"type":18,"tag":44,"props":266,"children":267},{},[268,273,278,283],{"type":18,"tag":48,"props":269,"children":270},{},[271],{"type":24,"value":272},"文本清洗：去掉无意义导航、页脚、重复菜单等噪声，仅保留正文与关键代码片段。",{"type":18,"tag":48,"props":274,"children":275},{},[276],{"type":24,"value":277},"结构化切分：按章节标题、二级小节和代码块边界进行分段；对 FAQ 进行“问-答”级别切分。",{"type":18,"tag":48,"props":279,"children":280},{},[281],{"type":24,"value":282},"向量化与元数据标注：对每段内容生成向量，并附带模块名（如 mindspore.nn）、适用场景（训练/推理/部署）、版本号等元数据。",{"type":18,"tag":48,"props":284,"children":285},{},[286],{"type":24,"value":287},"索引更新策略：支持增量更新，便于后续在 MindSpore 文档更新时快速重建部分索引。",{"type":18,"tag":207,"props":289,"children":291},{"id":290},"步骤三rag-工作流实现",[292],{"type":24,"value":293},"步骤三：RAG 工作流实现",{"type":18,"tag":100,"props":295,"children":296},{},[297],{"type":24,"value":298},"在 Dify 中实现“检索增强生成”的完整 Workflow：",{"type":18,"tag":100,"props":300,"children":301},{},[302],{"type":24,"value":303},"1）问题理解与改写：",{"type":18,"tag":100,"props":305,"children":306},{},[307],{"type":24,"value":308},"针对用户的口语化问题（例如“为啥训练突然 OOM 了”“动态图能不能用这个算子”），使用系统 LLM 做一次语义标准化与补全，生成适合检索的 Query。",{"type":18,"tag":100,"props":310,"children":311},{},[312],{"type":24,"value":313},"2）多路检索：",{"type":18,"tag":44,"props":315,"children":316},{},[317,322],{"type":18,"tag":48,"props":318,"children":319},{},[320],{"type":24,"value":321},"对不同知识库（官方 API、教程、FAQ、迁移指南）进行并行检索，获取 N 条候选结果。",{"type":18,"tag":48,"props":323,"children":324},{},[325],{"type":24,"value":326},"依据相似度、发布时间、版本匹配度等维度进行综合打分与过滤。",{"type":18,"tag":100,"props":328,"children":329},{},[330],{"type":24,"value":331},"3）上下文拼装与提示词工程：",{"type":18,"tag":100,"props":333,"children":334},{},[335],{"type":24,"value":336},"将检索出的段落以“带来源引用”的方式嵌入到 Prompt 中，明确要求模型：",{"type":18,"tag":44,"props":338,"children":339},{},[340,345,350],{"type":18,"tag":48,"props":341,"children":342},{},[343],{"type":24,"value":344},"优先基于提供上下文回答；",{"type":18,"tag":48,"props":346,"children":347},{},[348],{"type":24,"value":349},"输出中保留关键 API 名和代码示例；",{"type":18,"tag":48,"props":351,"children":352},{},[353],{"type":24,"value":354},"必须标注对应文档章节，方便用户回溯原文。",{"type":18,"tag":100,"props":356,"children":357},{},[358],{"type":24,"value":359},"4）答案生成与结构化输出：",{"type":18,"tag":44,"props":361,"children":362},{},[363,368],{"type":18,"tag":48,"props":364,"children":365},{},[366],{"type":24,"value":367},"统一答案格式：包括“问题分析 → 解决思路 → 步骤/代码示例 → 可能的坑与注意事项”。",{"type":18,"tag":48,"props":369,"children":370},{},[371],{"type":24,"value":372},"支持错误日志场景下，从 Traceback 中自动抽取关键错误类型与堆栈信息。",{"type":18,"tag":207,"props":374,"children":376},{"id":375},"步骤四-推理服务部署与调优",[377],{"type":24,"value":378},"步骤四： 推理服务部署与调优",{"type":18,"tag":100,"props":380,"children":381},{},[382],{"type":24,"value":383},"1）通过 vllm/docker-compose.yaml 部署两个推理服务：",{"type":18,"tag":44,"props":385,"children":386},{},[387,392],{"type":18,"tag":48,"props":388,"children":389},{},[390],{"type":24,"value":391},"Qwen3-30B-A3B：作为高质量、复杂问题的主力模型，采用 4 卡并行，针对长上下文和复杂推理进行优化。",{"type":18,"tag":48,"props":393,"children":394},{},[395],{"type":24,"value":396},"Qwen3-8B：作为轻量级高并发模型，用于简单问答、编排节点内中间推理，以及在 OpenWebUI 中提供平滑体验。",{"type":18,"tag":100,"props":398,"children":399},{},[400],{"type":24,"value":401},"2）优化 Ascend 环境下的 vLLM 配置：",{"type":18,"tag":44,"props":403,"children":404},{},[405,410],{"type":18,"tag":48,"props":406,"children":407},{},[408],{"type":24,"value":409},"设置 ASCEND_VISIBLE_DEVICES、gpu-memory-utilization 等参数，权衡并发数与单轮响应延迟。",{"type":18,"tag":48,"props":411,"children":412},{},[413],{"type":24,"value":414},"打开 ascend_scheduler_config 的分块预填充（chunked prefill），提升长上下文场景下的吞吐能力。",{"type":18,"tag":100,"props":416,"children":417},{},[418],{"type":24,"value":419},"3）为 Dify 和 OpenWebUI 提供统一的推理服务地址和模型别名，简化运维和使用成本。",{"type":18,"tag":207,"props":421,"children":423},{"id":422},"步骤五openwebui-pipeline-和-dify-workflow-集成",[424],{"type":24,"value":425},"步骤五：OpenWebUI Pipeline 和 Dify Workflow 集成",{"type":18,"tag":100,"props":427,"children":428},{},[429],{"type":24,"value":430},"1）在 openwebui-pipeline 目录中编写 Pipeline 脚本：",{"type":18,"tag":44,"props":432,"children":433},{},[434,439,444],{"type":18,"tag":48,"props":435,"children":436},{},[437],{"type":24,"value":438},"通过环境变量 DIFY_API_KEY、DIFY_BASE_URL、DIFY_APP_ID 等完成对 Dify 应用的鉴权与路由。",{"type":18,"tag":48,"props":440,"children":441},{},[442],{"type":24,"value":443},"对用户在 OpenWebUI 中输入的问题进行包装，按 Dify API 协议发送请求并返回结果。",{"type":18,"tag":48,"props":445,"children":446},{},[447],{"type":24,"value":448},"在 Pipeline 层面处理常见错误（例如 401 未授权、网络超时等），给出明确的错误提示与排查建议。",{"type":18,"tag":100,"props":450,"children":451},{},[452],{"type":24,"value":453},"2）配套编写使用说明（README）：",{"type":18,"tag":44,"props":455,"children":456},{},[457,462],{"type":18,"tag":48,"props":458,"children":459},{},[460],{"type":24,"value":461},"指导用户在 OpenWebUI 中导入 Pipeline、配置环境变量以及选择对应的 Dify 应用。",{"type":18,"tag":48,"props":463,"children":464},{},[465],{"type":24,"value":466},"说明典型使用场景：如在 OpenWebUI 中一键调用“MindSpore 知识问答”应用，获取带引用的官方解答。",{"type":18,"tag":37,"props":468,"children":470},{"id":469},"_3挑战与突破遇到的问题及解决方案",[471],{"type":24,"value":472},"3挑战与突破：遇到的问题及解决方案",{"type":18,"tag":100,"props":474,"children":475},{},[476],{"type":24,"value":477},"问题：MindSpore文档体量大、结构多样，直接分块检索易导致信息缺失或答非所问。",{"type":18,"tag":100,"props":479,"children":480},{},[481],{"type":24,"value":482},"解决方案：",{"type":18,"tag":100,"props":484,"children":485},{},[486],{"type":24,"value":487},"1）引入“结构化切分 + 语义补偿”的混合策略：",{"type":18,"tag":44,"props":489,"children":490},{},[491,496],{"type":18,"tag":48,"props":492,"children":493},{},[494],{"type":24,"value":495},"先按照文档的标题结构做粗粒度切分，再在小节内根据自然段与代码块边界做细粒度切分；",{"type":18,"tag":48,"props":497,"children":498},{},[499],{"type":24,"value":500},"检索时允许从中心片段向前/向后扩展若干段，保证语义连续性。",{"type":18,"tag":100,"props":502,"children":503},{},[504],{"type":24,"value":505},"2）针对 FAQ 和错误排查文档，单独按照“问-答”对来构建索引，以提高解决问题类查询的命中率。",{"type":18,"tag":100,"props":507,"children":508},{},[509],{"type":24,"value":510},"3）最终 RAG 的答案质量在多轮自测中有明显提升，特别是在“为什么会报这个错”“这个算子适合什么场景”这类问题上，能够给出带上下文的完整解释。",{"type":18,"tag":100,"props":512,"children":513},{},[514],{"type":24,"value":515},"问题：Dify与vLLM在ARM64架构与Ascend NPU环境中存在镜像兼容、驱动匹配等挑战。",{"type":18,"tag":100,"props":517,"children":518},{},[519],{"type":24,"value":482},{"type":18,"tag":100,"props":521,"children":522},{},[523],{"type":24,"value":524},"1）对 Dify 侧：",{"type":18,"tag":44,"props":526,"children":527},{},[528,533,538],{"type":18,"tag":48,"props":529,"children":530},{},[531],{"type":24,"value":532},"按组件拆分镜像来源，优先选择已经提供 ARM64 版本的基础镜像；",{"type":18,"tag":48,"props":534,"children":535},{},[536],{"type":24,"value":537},"对部分依赖进行预编译和缓存；",{"type":18,"tag":48,"props":539,"children":540},{},[541],{"type":24,"value":542},"在迁移文档中详细记录各服务（Web、Worker、向量数据库）的端口、环境变量和数据挂载策略，便于一键复现。",{"type":18,"tag":100,"props":544,"children":545},{},[546],{"type":24,"value":547},"2）对 vLLM-Ascend 侧：",{"type":18,"tag":44,"props":549,"children":550},{},[551,556,561],{"type":18,"tag":48,"props":552,"children":553},{},[554],{"type":24,"value":555},"采用官方提供的 quay.nju.edu.cn/ascend/vllm-ascend 镜像，结合 ASCEND_VISIBLE_DEVICES、PYTORCH_NPU_ALLOC_CONF 等环境变量进行调优；",{"type":18,"tag":48,"props":557,"children":558},{},[559],{"type":24,"value":560},"在 docker-compose 中显式声明 Ascend 相关设备与驱动库的挂载路径；",{"type":18,"tag":48,"props":562,"children":563},{},[564],{"type":24,"value":565},"根据模型大小调整 tensor-parallel-size 和最大并发参数，在保证稳定性的前提下尽可能提高吞吐。",{"type":18,"tag":100,"props":567,"children":568},{},[569],{"type":24,"value":570},"3）最终在目标 ARM64 服务器上稳定跑通 Dify + vLLM-Ascend + OpenWebUI 的一体化方案，并形成可复用的迁移指南文档。",{"type":18,"tag":100,"props":572,"children":573},{},[574],{"type":24,"value":575},"问题：Dify前端与OpenWebUI在调用方式、超时处理等方面存在差异，调试困难。",{"type":18,"tag":100,"props":577,"children":578},{},[579],{"type":24,"value":482},{"type":18,"tag":100,"props":581,"children":582},{},[583],{"type":24,"value":584},"1）将业务逻辑尽可能统一收敛在 Dify Workflow 中：",{"type":18,"tag":44,"props":586,"children":587},{},[588,593],{"type":18,"tag":48,"props":589,"children":590},{},[591],{"type":24,"value":592},"所有与 MindSpore 相关的检索与推理都在 Workflow 内完成；",{"type":18,"tag":48,"props":594,"children":595},{},[596],{"type":24,"value":597},"OpenWebUI 通过 Pipeline 仅负责将用户问题转发给 Dify，并展示结果。",{"type":18,"tag":100,"props":599,"children":600},{},[601],{"type":24,"value":602},"2）在 Pipeline 层面增加统一的错误封装与提示：",{"type":18,"tag":44,"props":604,"children":605},{},[606,611],{"type":18,"tag":48,"props":607,"children":608},{},[609],{"type":24,"value":610},"对常见 HTTP 状态码（401/404/500 等）给出人类可读的排查建议；",{"type":18,"tag":48,"props":612,"children":613},{},[614],{"type":24,"value":615},"对 Dify 返回的异常信息做适度裁剪，避免泄露敏感配置但保留关键信息。",{"type":18,"tag":100,"props":617,"children":618},{},[619],{"type":24,"value":620},"3）通过这一调整，前端行为高度一致，问题定位也集中到 Dify 工作流和 vLLM-Ascend 服务两处，大大降低了调试和运维复杂度。",{"type":18,"tag":37,"props":622,"children":624},{"id":623},"_04-开发者说个人成长与开源感悟",[625],{"type":24,"value":626},"04 开发者说：个人成长与开源感悟",{"type":18,"tag":44,"props":628,"children":629},{},[630,643,656,669,682],{"type":18,"tag":48,"props":631,"children":632},{},[633,638,641],{"type":18,"tag":62,"props":634,"children":635},{},[636],{"type":24,"value":637},"你选择昇思 MindSpore 的机缘是什么？",{"type":18,"tag":68,"props":639,"children":640},{},[],{"type":24,"value":642},"李振兴：在选题阶段，我刻意寻找既贴近真实生产场景、又能沉淀通用方案的项目。MindSpore 社区的 RAG 助手项目正好同时满足“工程实战”和“社区价值”两点。在撰写申请书时，我重点强调了自己在文档结构化、RAG 流程设计和容器化部署方面能提供的价值，并给出了一个简化版的技术方案草图。",{"type":18,"tag":48,"props":644,"children":645},{},[646,651,654],{"type":18,"tag":62,"props":647,"children":648},{},[649],{"type":24,"value":650},"此次开发工作与你以前的项目开发经历有何不可异同？",{"type":18,"tag":68,"props":652,"children":653},{},[],{"type":24,"value":655},"李振兴：以前我更多做的是“模型侧”的工作，比如复现论文、调参做实验。这次项目更偏“系统与工程”，需要同时考虑部署环境、运维成本、用户体验和文档沉淀。以往评价标准多是准确率、F1 等指标，而这次要面对真实用户的反馈：答得对不对、用得顺不顺、出问题时能不能快速排查。这也让我第一次完整经历了从需求分析、架构设计到实现、部署、文档、交付的全流程，对开源项目的生命周期有了更完整的理解。",{"type":18,"tag":48,"props":657,"children":658},{},[659,664,667],{"type":18,"tag":62,"props":660,"children":661},{},[662],{"type":24,"value":663},"通过这个项目任务，你对开源有了什么更深刻的理解吗?",{"type":18,"tag":68,"props":665,"children":666},{},[],{"type":24,"value":668},"李振兴：开源不仅是“把代码放到 GitHub 上”，更重要的是让别人能看懂、能拉起、敢用、愿意贡献。我在本项目里花了大量时间写 README、迁移教程和使用说明，甚至比写代码还久。实践证明，这些文档在降低他人使用门槛、让项目真正“活起来”方面非常关键。同时，我也体会到“可组合”的重要性：项目不是孤立存在的，而是要和 Dify、OpenWebUI、vLLM、Ascend 等多个生态拼起来。只要接口和文档够清晰，后续社区成员就可以在此基础上叠加更多能力。",{"type":18,"tag":48,"props":670,"children":671},{},[672,677,680],{"type":18,"tag":62,"props":673,"children":674},{},[675],{"type":24,"value":676},"作为学生参与开源项目，你认为最大的挑战是什么？又是如何克服的？",{"type":18,"tag":68,"props":678,"children":679},{},[],{"type":24,"value":681},"李振兴：最大的挑战是“不确定性”和“沟通成本”——很多问题没有标准答案，需要在和导师、社区以及实际环境的反复沟通中不断调整方案。我的做法是：尽量把每个阶段的目标拆分成可验证的小里程碑；主动输出中间成果，比如设计文档、架构图、测试记录，用文字把自己的思路说清楚；对于不确定的地方，先给出两到三个备选方案，并说明利弊，让讨论更聚焦。",{"type":18,"tag":48,"props":683,"children":684},{},[685,690,700,703],{"type":18,"tag":62,"props":686,"children":687},{},[688],{"type":24,"value":689},"作为过来人，有没有",{"type":18,"tag":62,"props":691,"children":692},{},[693,698],{"type":18,"tag":62,"props":694,"children":695},{},[696],{"type":24,"value":697},"什么话",{"type":24,"value":699},"****想对过去的自己/学弟学妹/刚加入昇思MindSpore的开发者说呢？",{"type":18,"tag":68,"props":701,"children":702},{},[],{"type":24,"value":704},"李振兴：不要害怕项目“看起来很大”，把它拆小之后，一步步啃下来，你会发现自己能做的远比想象中多。参与开源不一定非要从“写算子”“写底层框架”开始，像本项目这样围绕文档、工具链和开发者体验做改进，同样非常有价值。多和导师、社区沟通，项目不是一个人的战斗，很多坑前人都踩过，只要愿意问，就能少走很多弯路。最后，早点把你的想法写下来、画出来、开源出来，只有走出第一步，才会有后面一连串意想不到的机会。",{"title":7,"searchDepth":706,"depth":706,"links":707},4,[708,710,721,722],{"id":39,"depth":709,"text":42},2,{"id":81,"depth":709,"text":84,"children":711},[712,714],{"id":88,"depth":713,"text":91},3,{"id":202,"depth":713,"text":205,"children":715},[716,717,718,719,720],{"id":209,"depth":706,"text":212},{"id":233,"depth":706,"text":236},{"id":290,"depth":706,"text":293},{"id":375,"depth":706,"text":378},{"id":422,"depth":706,"text":425},{"id":469,"depth":709,"text":472},{"id":623,"depth":709,"text":626},"markdown","content:technology-blogs:zh:2026-1-28.md","content","technology-blogs/zh/2026-1-28.md","technology-blogs/zh/2026-1-28","md",1776506118707]