<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://ferrisevans.github.io/</id><title>Mainloop</title><subtitle>From Web2 to Web3; From algorithms to artificial intelligence; From engine to game; From theory to practice.</subtitle> <updated>2025-12-24T00:08:46+08:00</updated> <author> <name>Ferris</name> <uri>https://ferrisevans.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://ferrisevans.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://ferrisevans.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2025 Ferris </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Agent 开发入门指南</title><link href="https://ferrisevans.github.io/posts/agent_dev_tutorial/" rel="alternate" type="text/html" title="Agent 开发入门指南" /><published>2025-12-22T00:00:00+08:00</published> <updated>2025-12-24T00:00:15+08:00</updated> <id>https://ferrisevans.github.io/posts/agent_dev_tutorial/</id> <content type="text/html" src="https://ferrisevans.github.io/posts/agent_dev_tutorial/" /> <author> <name>Ferris</name> </author> <category term="AI" /> <summary>AI Agent 工程师可以简单分为以下三个阶段： API 调用工程师：会用 LangChain/LangGraph 这些框架，能跑通官方 demo，遇到问题就翻文档。 系统设计工程师：能理解 Agent 底层架构，知道 ReAct / Plan-and-Execute 这些模式怎么回事儿，能设计复杂的多 Agent 协作系统，懂得再生产环境里优化性能。 基础设施架构师：能从零实现一个 Agent 框架，深度理解 LLM 的推理机制，能设计大规模 Agent 集群的调度系统。 先来抛出几个问题： Memo 的设计：长对话的上下文怎么处理？总结后怎么存储？多少轮后不支持回溯？如何评价回答质量？ 语义 Embedding 模型如何选择？如何确定业务最适合的 Embedding 模型？（这块知识库和意图识别都会用到） 多意图并发以及 NER，怎么确定用户的真...</summary> </entry> <entry><title>Godot 移动力</title><link href="https://ferrisevans.github.io/posts/godot_frame/" rel="alternate" type="text/html" title="Godot 移动力" /><published>2025-03-19T00:00:00+08:00</published> <updated>2025-03-19T00:00:00+08:00</updated> <id>https://ferrisevans.github.io/posts/godot_frame/</id> <content type="text/html" src="https://ferrisevans.github.io/posts/godot_frame/" /> <author> <name>Ferris</name> </author> <category term="Game Dev" /> <category term="Godot" /> <summary>当我们开始编写脚本后，我们会遇到一个 _process(delta: float) 函数。游戏画面的每一帧都会调用一次这个函数。函数本身的作用很好理解，但是我想谈一下这个函数的入参 delta。 # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -&amp;gt; void: pass 1. Delta Time 在 Godot 中，delta 也就是 Delta Time，这个概念在硬件、网络以及计算机图形学中都有相对应的概念。在此我们只讨论游戏和图形编程，他表示在两个连续的帧之间经过的时间，也就是连续帧之间的时间差。他可以根据当前帧和上一帧的时间戳来计算。 在游戏渲染中，常会以 每秒帧数(FPS/Frame Per...</summary> </entry> <entry><title>Godot 节点</title><link href="https://ferrisevans.github.io/posts/godot_node2d/" rel="alternate" type="text/html" title="Godot 节点" /><published>2025-03-18T00:00:00+08:00</published> <updated>2025-03-18T00:00:00+08:00</updated> <id>https://ferrisevans.github.io/posts/godot_node2d/</id> <content type="text/html" src="https://ferrisevans.github.io/posts/godot_node2d/" /> <author> <name>Ferris</name> </author> <category term="Game Dev" /> <category term="Godot" /> <summary>前文中我们提过，节点是构建场景的最小单元。不同的节点拥有不同的属性，他们可以实现不同的功能。通过 Create New Node 可以看到，根节点是 Node。在 Node 下有 CanvasItem 节点，他是 2D 空间下的抽象基类。Node2D 是 2D 游戏对象的父类，Control 是 UI 节点的抽象父类。我们研究的大部分节点，都是 Node2D 和 Control 的子类。 There are lots of inbuilt functions you will use, they all start with an _. _ready() is run when a Node is added to the node tree. _process() is run on every frame of the game. Yo...</summary> </entry> <entry><title>GDScript Style guide</title><link href="https://ferrisevans.github.io/posts/GDScript/" rel="alternate" type="text/html" title="GDScript Style guide" /><published>2025-03-17T00:00:00+08:00</published> <updated>2025-12-23T22:38:26+08:00</updated> <id>https://ferrisevans.github.io/posts/GDScript/</id> <content type="text/html" src="https://ferrisevans.github.io/posts/GDScript/" /> <author> <name>Ferris</name> </author> <category term="Game Dev" /> <category term="Godot" /> <summary>本篇不讨论任何有关 GDScript 语法相关的内容。与之有关的问题可以查阅官方文档。 我想主要记录的是代码风格。 由于 GDScript 与 Python 十分相似，所以可以参考 PEP08。 如下是参考了本篇指南的完整例子。 class_name StateMachine extends Node ## Hierarchical State machine for the player. ## ## Initializes states and delegates engine callbacks ([method Node._physics_process], ## [method Node._unhandled_input]) to the state. signal state_changed(previous, new) @export var initial_s...</summary> </entry> <entry><title>Godot 四大基本概念</title><link href="https://ferrisevans.github.io/posts/godot_basic_class/" rel="alternate" type="text/html" title="Godot 四大基本概念" /><published>2025-03-16T00:00:00+08:00</published> <updated>2025-03-16T00:00:00+08:00</updated> <id>https://ferrisevans.github.io/posts/godot_basic_class/</id> <content type="text/html" src="https://ferrisevans.github.io/posts/godot_basic_class/" /> <author> <name>Ferris</name> </author> <category term="Game Dev" /> <category term="Godot" /> <summary>这篇博客记录于我在完成了一个 overview 级别的项目之后，也是我在godot上的第二个项目。 这套教程介绍了很多内容，在跟着做了一遍之后，我决定写一写博客来总结一下知识点。 我会尽量根据教程顺序以及官方文档的顺序来回顾与总结。 本套随笔不保证完全原创。也许会有大量的翻译，或者引用。当然，也肯定会有我自己的理解。 这套随笔博客大概率只包含 2d 向的内容。所讨论的知识仅限于 2d 领域。此外，知识点不一定准确，一方面我也在持续学习，另一方面 Godot 也在随着时间更新，有些概念可能会随着他的更新而过时。 欢迎给我指出错误或者交流，可以在文章下方的留言板上给我留言。 1. Scene 场景 在 Godot 中，你将制作出很多场景来完成你的游戏。一个场景可能是一个角色、一把武器、一个菜单或者一套 UI。 通常来说，场景都是可以复用的。也就是说，当你完成了一个场...</summary> </entry> </feed>
