返回首页

一周热榜

10作者: dvirbt4 天前原帖
嗨,HN,我是Dvir,一名年轻的开发者。去年,我在一次面试中被拒绝,因为我缺乏一些CPU知识。之后,我决定深入了解底层世界,学习事物的运作方式。我决定尝试用C和汇编语言创建一个操作系统,以此来拓宽我在这一领域的知识。 这段经历让我走上了一条非常有趣的旅程,我在操作系统理论和低级编程方面有了全新的认识。我花费了无数个小时,经历了许多艰辛,阅读不同的操作系统理论博客,学习低级概念,调试、测试并进行这个项目。 我从阅读大学教材和在线博客开始,同时观看相关视频。一些对我帮助很大的资源包括OSDev Wiki([链接](https://wiki.osdev.org/Expanded_Main_Page))、OSTEP([链接](https://pages.cs.wisc.edu/~remzi/OSTEP))、一些开源代码库如MellOS和LemonOS(更高级),DoomGeneric,以及一些曾经构建过操作系统的朋友。 这一部分是最长的,但也是最简单的。我觉得我理解了理论,但仍然无法将其转化为实际代码。坐下来开始编码是困难的,但我知道这是我必须迈出的下一步!我开始着手编写引导加载程序,虽然可以使用现成的引导加载程序(后来我切换到了GRUB),但实现它主要是为了学习和热身汇编语言。之后我的步骤如下: 1) 我开始实现VGA驱动程序,使我能够显示文本。 2) 中断 - IDT、ISR、IRQ,向CPU发出信号,表明发生了某个事件需要处理(例如故障、硬件连接设备的操作等)。 3) 键盘驱动程序,使我能够显示我在键盘上输入的相同文本。 4) 物理内存管理(PMM)。 5) 分页和虚拟内存管理。 6) RTC驱动程序 - 时钟添加(在我看来是可选的)。 7) PIT驱动程序 - 每隔一定时间产生滴答声。 8) 文件系统(FS)和物理硬盘驱动程序 - 对于硬盘,我选择了PATA(硬盘通信协议),以简化操作(SATA是一个更新但更复杂的选择)。对于文件系统,我选择了EXT2(第二扩展文件系统),这是1993年引入的基础Linux文件系统结构。这个文件系统结构并不是最简单的,但在爱好者操作系统中非常流行,支持良好,易于设置和升级到更新的EXT版本,网上有很多资料,相比其他选项更为丰富。这可能是我所做的最长和最大的一项功能。 9) 系统调用支持。 10) libc实现。 11) 多处理的处理和调度。 12) 在这里我还制作了一个shell来测试这一切。 此时,我有了一个可用的shell,但后来决定进一步添加图形用户界面(GUI)!当我在进行文件系统(第8阶段)时,听说了Hack Club的“制作之夏”(SoM)。这是我第一次在HackClub实践,我想表达我的感激之情,并分享我参与其中的乐趣。 起初,我只想在完成文件系统和一些其他驱动程序后宣布操作系统完成,但由于SoM,我的视角完全改变了。由于比赛,我开始认为我需要发布一个完整的操作系统,具备处理能力、图形用户界面以及运行Doom的基本能力。我想向SoM的社区展示一切是如何运作的。 然后我又花了两个月的时间在这个项目上,仅仅是因为SoM!这使我的项目总共耗时近7个月。在这段时间里,我添加了完整的GUI支持,使用了脏矩形和双缓冲,制作了一个GUI鼠标驱动程序,甚至实现了完整的Doom移植!这些事情如果没有参与SoM,我根本不会想到。 这是我的SoM项目:[链接](https://summer.hackclub.com/projects/5191)。 每个项目都有挑战,尤其是在这样一个低级项目中。我在这个过程中进行了大量的调试,这并不是一件容易的事情。我强烈推荐使用GDB,它帮助我调试了许多问题,尤其是内存问题。 我遇到的第一个重大挑战是在编写进程时 - 我意识到我的许多分页代码完全错误,测试不充分,必须重写。在这段时间里,我已经在比赛中,难以跟上开发日志和新功能的进展,同时修复几个月前写的代码中的旧问题。 在尝试运行Doom时出现了一些更大的问题,与上一个问题不同,这次是灾难性的。我遇到了随机的页面错误和内存问题,一次运行可能正常,而下一次却不行,最糟糕的是,这仅仅发生在Doom上,而不是我自己创建的进程。这些问题花了我很多时间去解决。我开始质疑Doom的代码,甚至考虑放弃整个项目。 经过大量的调试时间,我修复了这些问题。这是调度问题、libc问题和Qemu没有足够内存(错误地假设128MB对于整个操作系统是足够的)的结合。 最终,我克服了所有困难,成功发布了这个项目!最终,参与这个项目的经历非常棒。我学到了很多,作为开发者得到了成长和提升,我感谢SoM帮助我提高了动力,使这个项目变得难忘而独特,超出了我的想象。 我的代码库在这里:[链接](https://github.com/dvir-biton/MyraOS)。我很乐意在评论中与大家讨论这个项目的任何方面!
9作者: shaunaks2 天前原帖
嗨,HN,我们是Truffle AI(YC W25)团队,我们正在开发Dexto(<a href="https://www.dexto.ai" rel="nofollow">https://www.dexto.ai</a>),这是一个用于AI代理的运行时和编排层,能够将任何应用、服务或工具转变为可以推理、思考和行动的AI助手。这里有一个视频演示 - <a href="https://www.youtube.com/watch?v=WJ1qbI6MU6g" rel="nofollow">https://www.youtube.com/watch?v=WJ1qbI6MU6g</a> 我们在帮助客户设置日常营销任务的代理(如在LinkedIn上发布、进行Reddit搜索、生成广告创意等)后开始着手开发Dexto。我们意识到,问题并不在于大型语言模型(LLMs),真正的障碍在于围绕它们的重复编排工作: - 将LLMs与工具连接 - 管理上下文和持久性 - 添加记忆和审批流程 - 根据客户/用例定制行为 每个小项目悄然膨胀成数周的繁琐工作,因为每个客户的需求大多相似,但又略有不同。 因此,我们没有再创建一个需要您自己编写编排逻辑的框架,而是构建了Dexto作为一个顶层编排层,您可以在其中声明代理的能力和行为: - 代理可以使用哪些工具或MCP - 由哪个LLM提供支持 - 它应该如何表现(系统提示、语气、审批规则) 一旦配置完成,代理将作为事件驱动的循环运行——推理步骤、调用工具、处理重试,并维护自己的状态和记忆。您的应用不需要管理编排,只需触发和订阅代理的事件,并决定如何呈现或批准结果。 代理可以在本地、云端或混合环境中运行。Dexto配备了CLI、Web UI和一些示例代理,以便您快速上手。 为了展示其灵活性,我们将一些OpenCV函数封装成MCP服务器,并将其连接到Dexto(<a href="https://youtu.be/A0j61EIgWdI" rel="nofollow">https://youtu.be/A0j61EIgWdI</a>)。现在,非技术用户可以通过与代理对话来检测图像中的人脸或创建自定义照片拼贴。相同的方法也适用于编码代理、浏览器代理、多说话者播客代理以及根据您的数据调整的营销助手。<a href="https://docs.dexto.ai/examples/category/agent-examples" rel="nofollow">https://docs.dexto.ai/examples/category/agent-examples</a> Dexto是模块化、可组合和可移植的,允许您插入新工具,甚至将整个Dexto代理重新暴露为MCP服务器,并从其他应用(如Cursor)中使用它(<a href="https://www.youtube.com/watch?v=_hZMFIO8KZM" rel="nofollow">https://www.youtube.com/watch?v=_hZMFIO8KZM</a>)。由于代理是通过配置定义并由一致的运行时提供支持,因此它们可以在任何地方运行而无需代码更改,使跨代理(A2A)交互和重用变得轻松自如。 在某种程度上,我们喜欢将Dexto视为一个“元代理”或“代理框架”,可以根据其工具、数据和平台定制为专用代理。 目前,我们选择了Elastic V2许可证,以便为社区提供最大灵活性,让大家可以使用Dexto进行开发,同时防止大型企业接管并从我们的工作中获利。 我们非常希望听到您的反馈: - 尝试快速入门并告诉我们有什么问题 - 分享一个您希望在一天内完成的用例,我们将建议一个最小配置 仓库:<a href="https://github.com/truffle-ai/dexto" rel="nofollow">https://github.com/truffle-ai/dexto</a> 文档:<a href="https://docs.dexto.ai/docs/category/getting-started" rel="nofollow">https://docs.dexto.ai/docs/category/getting-started</a> 快速入门:npm i -g dexto