X-lab问卷
约 3516 个字 预计阅读时间 12 分钟
拥抱世界,拥抱开源¶
我选择的项目是 RSSHub。
惭愧地讲,这是我首次阅读如此大型的GitHub项目,于是首先借助bilibili视频(1.如何阅读开源代码?)并询问大语言模型,习得阅读大型开源项目的基本方法和流程。
我认为该项目的闪光点是:用独到的方式解决用户需求。
首先用户需求方面,越来越多人渴望打破信息茧房、突破围墙花园,且希望通过阅读互联网上的信息形成有效的知识积累,然而互联网平台根据用户信息、行为,结合特定推荐算法,不断生成特定内容供读者查看。故 RSS 技术为延续早期互联网开放共享的理想,有助于实现读者的信息自主权。
针对此,通过阅读该项目,我总结出以下几点:
- 用路由的方法简化用户操作。
- 提供路由模板生成工具便于开发者编写不同网站的路由。
- 用几个反爬策略实现需求。
- 利用 Docker 的方法部署脚本。
用路由的方法简化用户操作。通过路由,普通用户不需RSS技术,只需输入 URL,相应脚本即可完成抓取、解析网站数据并返回结果。例如该项目 lib/routes/bilibili
目录下的 TypeScript 脚本。针对 video.ts
,首先导入路由类型、HTTP请求等模块,再给出 URL 规则并提供示例。接下来是核心函数 handler ,主要功能为发送API请求至b站,并返回订阅网页,包含up主信息、视频信息等。
提供路由模板生成工具便于开发者编写不同网站的路由。开发者可以用 npm run new:route
命令快速生成路由模板,极大便利了作为开发者的用户。
用几个反爬策略实现需求。在目录 lib/utils/
下的文件实现了具体反爬方法。例如 RSSHub/lib/utils/request-rewriter/fetch.ts
定义了 fetch 方法,用于实现 HTTP 请求,由于技术水平不够,我尚未完全了解该目录下文件的所有细节。
利用 Docker 的方法部署脚本。该项目提供了部署 RSS 需要的镜像,并给出 Dockerfile,便于直接用 docker build
生成镜像。
和 AI 做好朋友!¶
我希望描述的场景是我提问 Deepseek 如何用 SSH 或其他方法实现 Windows主机、WSL、Linux虚拟机之间的相互操控以及文件传输。
首先我希望在 WSL 操控主机,故询问“怎样用 WSL 操控Windows主机”,大模型给出四个方法:
- 直接调用 Windows 的命令行工具或其他可执行文件。
- 启用 OpenSSH 服务器并通过 SSH 连接。
- 直接操作 Windows 文件。
- 配置 X11 转发或使用 WSLg 以使用图形化界面。
于是我开始针对每个方案开始多线程提问。因并不需要图形化界面遂忽略该方案。
针对方案一,我好奇哪些软件可以直接在 WSL 中直接运行,故提问大模型,在回答中它给出可以通过命令 msedge.exe
直接运行 edge 浏览器,尝试之后收到报错信息 zsh: command not found: msedge.exe
,遂继续发问,大模型给出以下方法:
- 在 PowerShell 中查找 msedge.exe 的路径并使用完整路径运行。
- 将 msedge.exe 添加到 WSL 的 PATH 环境变量。
因远程操控浏览器并无必要,故未更改环境变量。使用完整路径运行成功。
针对方案二,中故需开启 OpenSSH。因此继续询问如何开启 OpenSSH,其给出回答是在“设置” -> “应用” -> “可选功能”中直接启用 OpenSSH。然而win11系统“设置” -> “应用”中并没有“可选功能”,遂在设置中直接搜索 “可选功能”,找到之后发现并未下载,遂下载。根据其提供的修改 SSH 配置的方法“编辑配置文件 C:\ProgramData\ssh\sshd_config
”,尝试之后因没有相应权限而失败,遂以管理员身份运行 PowerShell 尝试更改,仍提示需要trustedinstaller提供的权限才能更改文件,于是我将该情况告知大模型并询问解决方案,其提出修改文件权限之后更改文件最后还原权限的方法,尝试之后成功。
然而我注意到deepseek提供的方案均为使用密码登录,然而使用 SSH 密钥登录安全性更高,于是自主阅读并更改 sshd_config
文件实现密钥登陆。由于是三个设备,分别修改并注意每次更改配置文件之后的变化,根据现象我思考了远程操控过程中 SSH 的一部分工作细节与原理,并询问大模型,得到肯定答复。
虚拟机、主机、wsl间相互远程操控的原理相同,故根据以上提问内容我实现了三者之间6(\(A^2_3\))种远程操控。
据此,我认为大模型的“知识储备”对于目前我遇到的技术问题可以给出正确的解答。然而对于实际操作过程中遇到问题时需要将具体情况告知大模型从而得到符合预期的答复,否则若泛泛地提问则无法得到具体解决方案。因此需要优化提问方式。另外,一些问题可以举一反三,也可结合已有知识储备自主解决问题,逐步摆脱对大模型的依赖。
请结合题设场景,回答问题。¶
任务分工¶
-
组长 1人
- 与合作的互联网企业、客户沟通,明确项目目标和需求并撰写纸质材料供团队参考。
- 进行任务分配、考量资源分配。
- 与各小组组长对接,进行进度管理。
- 负责完成少部分前端开发任务。
-
前端组 含组长2人
- 一人负责 UI/UX 设计、测试代码、撰写相关报告。
- 一人负责开发,具体包括交互逻辑开发、API对接(与后端组协作)等。
-
后端组 3人
- 一人为小组长,负责与其他组及组长对接、领导系统架构设计、进行测试与部署、撰写相关报告。
- 另两人负责其他开发,具体包括数据库开发、API开发(与前端组协作)、图像储存与管理等。具体分工方案依照
-
算法组 3人
- 一人为小组长,负责与其他组及组长对接、领导算法设计、进行性能评估、撰写相关报告。
- 另两人负责其他开发,具体包括AI模型开发、图像处理、模型部署(与后端合作)等。
组间合作与进度管理¶
- 提前规划:在任务开始之前根据任务难易程度、依赖关系确定最佳开发方案、明确时间线规划,着重强调每项任务 Deadline。
- 沟通机制:每周一召开全员大会,交流讨论任务完成情况、心得感悟,并讨论是否有小幅度优化方案,并在之后召开组长会议,完成组间合作与协调,例如 API 调用等。每天工作结束后各组召开小会,小组长了解组员任务完成情况、工作状态并讲讨论结果记录在工作群共享文档中。在其他方面亦可使用共享文档。
- 团队建设:定期组织团建活动,增强团队凝聚力。
- 奖励机制:设立团体和个人奖项,表彰任务完成速度快、质量高者。
- 版本管理:使用 Git工具明确贡献、管理代码,并提前声明git使用规范,例如 PR(Pull Request)等。
- 风险管理:组长及小组长负责,定期监控风险,制定备用方案、进行资源调配等,随机应变。
- 其他措施:组织所有成员在同一环境中工作,有利于团队心理建设与凝聚力增强。
解决矛盾冲突¶
针对第一位开发者,根据每日工作汇报及工作状态汇报了解相关情况,直接找到相应开发者了解其出现该情况的具体原因。
- 针对任务分配不均的问题,与其探讨为何认为工作分配不均,找到是我(组长)的原因还是小组长的原因,并了解他预期的工作分配。在于本组组长及组员讨论过后,若切实可行且争得了其他组员的同意,可以考虑调整任务分配。若可行性较低或他人不赞同,则动之以情、晓之以理,讲述任务现状及该分配方案的可行性。
- 针对认为自己被边缘化的问题,与其谈论并得出产生该想法的原因。若问题处在其他组员身上,则与对应人员沟通,组织小组谈心等活动增强归属感。若是他个人原因,可以尝试引导他积极与他人沟通交流,必要时寻求心理方面专业人员帮助。另外,增加组内互动、团建频率。
针对第二位开发者,根据每日工作汇报及工作状态汇报了解相关情况,与其谈话了解他近期学业任务内容。若学业压力不重而是他个人时间管理方法不佳,则引导其优化时间管理与任务管理,必要时进行批评教育。若学业压力的确繁重,有三种解决方案:
- 第一,联系他的老师或者辅导员,与其讲述本次开发的重要性,争取减轻他的学业压力。
- 第二,帮助其重新规划近期学习,适当延缓校内学习任务。
- 第三,在必要时重新分配任务,前提是与其他人员进行充分的讨论并取得肯定答复。
机制 / 措施:
- 个人认为贯彻落实“组间合作与进度管理”中提出的措施即可有效避免此类问题发生。
- 必要时进行人员调整或任务调整。
LeNet is All You Need¶
依照提示,LeNet-5是卷积神经网络的经典模型,故应先了解何为卷积神经网络,而了解其的前提是了解什么是神经网络以及卷积操作的简单原理。首先我在B站寻找相关视频,然而鲜有适合入门者的教程,这也激发了我学习之后录制视频教程的欲望。遂询问大模型,通过“通俗讲解”“深入讲解”“举例说明”等提示词,我初步了解概念,再结合B站视频,我对卷积神经网络以及 LeNet-5 有了初步认识。
第一个问题,卷积核的实质是小的权重矩阵,一般为 \(3×3\) 或 \(5×5\) 型。相当于过滤器,通过在读入的图像上逐步移动,用卷积核内的权重乘每个块的像素值,将结果映射成另一个图像矩阵,结果高说明该处的图像符合卷积核的模板,从而实现特定功能,例如提取特定图像元素。
第二个问题,欲比较卷积神经网络和之前存在的网络,首先需要了解之前存在的神经网络类别及其工作原理。通过阅读《史上最全!27种神经网络简明图解:模型那么多,我该怎么选?》,就目前认知我认为优势有三。
- 轻量化:之前的神经网络没有卷积核移动和数据共享得算法,导致复杂度较高,即当输入图像较大时需要较大的模型进行处理,相比之下卷积神经网络更加轻量化。
- 平移不变性:通过同一卷积核的移动,只关注局部区域,使得图像识别具有平移不变性。
- 自主学习减少人工成本:通过损失计算等手段,评估误差,通过反馈算法实现卷积核中权重的调整。
第三个问题,我认为 LLM 并非基于 CNN,原因有二。
- 远距离信息处理能力弱:从处理特征上看,CNN利用卷积核实现局部信息的处理,而 LLM 有处理长文本的需求,故对于距离较远的 token,CNN 无法像处理相邻像素点一样处理,从而造成对上下文理解能力下降。
- 对顺序不敏感:卷积核没有检测输入信息序列的机制,然而语言文本处理对 token 顺序的处理至关重要。
第四个问题,描述 LeNet-5 的设计思想。其是对卷积神经网络的具体实现。从题干给出的模型图来看,其包含
- 输入层:将图像进行标准化,统一其尺寸为 \(32×32\)。
- 卷积层C1:用6个 \(5×5\) 的卷积核进行图像处理。
-
池化层S2:将图像降维,使得无效像素点被忽略,减小图像大小,减少算力需求。
-
卷积层C3:将低级特征组合成较为复杂的模式。
-
池化层S4:进一步压缩信息。
-
全连接层:将图像特征输出为识别结果(0~9)
第五个问题,经过思考但没有想到怎样用python实现,我认为问题有二:
- 对算法的理解仅停留在表面。
- 缺乏相关实践经验。
后期可以通过阅读相关 GitHub 项目了解相关开发任务的实现方案,帮助我完成该任务。