- 博客(28)
- 收藏
- 关注
原创 Hagicode 多 AI 提供者切换与互操作实现方案
统一接口抽象接口屏蔽了不同 CLI 的差异动态实例创建支持运行时创建提供者实例智能选择策略实现场景驱动的提供者选择会话状态持久化:通过数据库绑定确保会话连续性桌面端集成支持用户选择和配置可扩展性:添加新的 AI 提供者只需实现接口可测试性:提供者可以独立测试和模拟可维护性:每个提供者的实现独立,职责单一用户友好:支持场景自动选择和手动切换。
2026-04-05 13:28:06
111
原创 基于Microsoft.Extensions.AI 和 Microsoft.Extensions.VectorData构建向量搜索
嵌入是每个数据记录语义含义的数字表示形式,这使得它们与向量搜索功能兼容。新建Class:CloudServiceWiki。使用云服务知识库数据创建和填充向量存储。,会影响在向量存储中使用时每个属性的处理方式。属性存储生成的嵌入,表示。值在矢量搜索中的语义含义。
2026-04-05 13:27:24
230
原创 C# 中的 Span 和内存:.NET 中的高性能内存处理
Span 是一种轻量级的值类型,它表示一段连续的内存区域。与传统的数组操作不同,Span 允许开发者直接访问和操作内存中的数据,而无需进行数据复制。数组栈内存原生内存(非托管内存)字符串Span 的关键优势在于它避免了不必要的内存分配。传统的数组或字符串操作通常会创建新的对象并复制数据,而 Span 直接在现有内存上工作,这使得应用程序更加高效。// 示例:使用 Span 操作数组// 直接修改原始数组// 填充部分数据。
2026-04-04 13:18:38
307
1
原创 OpenClaw 命令速查手册
支持通道:whatsapp、telegram、discord、slack、googlechat、signal、imessage、msteams、mattermost、feishu(需插件)在 Windows 下为。
2026-04-04 13:17:59
320
原创 FastAPI实战:用懒加载与Lifespan优雅管理重型依赖
对于加载期间的请求,你可以根据业务决定是返回一个"服务预热中"的友好提示,还是用队列让其等待。想象一下,用户第一次请求,要白屏等待模型加载的几十秒,体验极差,而且这个请求很可能超时。很多兄弟(包括当初的我)会把加载模型这种"备菜"工作,直接扔在全局变量里,在应用启动时执行。官方文档可能讲得有点抽象,我打个比方:它就像是你服务的"私人管家"。你可能会问:"那我不用的时候不加载,用的时候再加载,不就行了?阶段,最好设置一个标志位,让正在处理的请求完成,并拒绝新请求。:你的服务几乎可以秒级就绪,通过健康检查。
2026-04-03 13:40:13
322
原创 Linux内核中模块定义宏机制解析
为了解决上述问题,Linux 内核引入了一组,用于简化驱动的注册与注销过程。以platform驱动为例,内核提供了虽然接口看着像是函数,但是他是由宏来实现的,使用该宏之后,上面的代码就可以简化为:},可以看见,使用该宏之后,就不需要再手写__init和__exit注册与注销接口函数了,也不需要再显式调用和接口函数了,与传统写法完全相同当然这种写法不仅仅只有platform驱动有,内核为不同的总线都提供了对应的宏定义.......
2026-04-03 13:39:32
192
原创 langchain 快速入门(二): chain链的应用
langchain中提供的chain链组件,能够帮助我门快速的实现各个组件的流水线式的调用,和模型的问答。
2026-04-02 13:57:23
187
原创 告别手敲 Schema!SeaTunnel 集成 Gravitino 元数据 RestApi 这个新动作有点酷
先来看看提交这个 Issue 的作者是为什么想到这个点子的,以及他初步的核心设计概念。🔽本 PR 实现了 Apache Gravitino 与 SeaTunnel 的集成,将其作为非关系型连接器的外部元数据服务。通过 Gravitino 的 REST API 自动获取表结构和元数据,SeaTunnel 用户无需再在连接器配置中手动定义冗长且复杂的 Schema 映射。
2026-04-02 13:56:49
220
原创 大多数团队不是“用不好 PPO”,而是“用错了 PPO”
更多时候,你会听到的是:于是 PPO 很容易被贴上一个标签:“理论上很强,工程上很坑。”但这个结论,其实并不公平。因为在真实业务里,PPO 从来就不是一个“通用增强方案”,而是一个非常有指向性的工具。一旦你从这个角度去看 PPO,它的应用边界会变得非常清晰。这是理解 PPO 应用的第一道分水岭。在大模型能力层面,我们可以粗暴地分两类问题:第一类问题,用 PPO 基本是浪费时间。第二类问题,PPO 才真正有价值。比如:这些问题,本质上都不是“能力不足”,而是行为偏好没对齐。这是 PPO 在工业界最成熟
2026-04-01 14:35:19
303
原创 KMP模式匹配算法——详细讲解、清晰易懂
KMP算法是由D.E. Knuth、J.H. Morris和V.R. Pratt(其中Knuth和Pratt共同研究, Mor-ris独立研究)发表一个模式匹配算法,KMP算法的最大特点使得它在处理大量文本匹配的问题时,比暴力枚举算法有更好的性能。关于字符串匹配,是字符串很重要的知识点,也是面试笔试的高频考点。Leetcode的第28题就是考查字符串匹配算法。另外本文是查看了《大话数据结构》这本书做的总结,同时next数组部分也参考了这篇博客KMP算法中next数组的计算。
2026-04-01 14:34:31
384
原创 操作Solution Explorer
也许比预想的要复杂些,主要的原因是解决方案文件夹的存在,解决方案文件夹本身也被看作Project对象,同时它又可以包含其它真正的项目,所以在查找项目的时候要分两种情况。先查找解决方案下面的项目,然后再查找解决方案文件夹下面的项目。项目刚开始的时候,项目的数量也许还不太多,随着程序规模的增大,项目数量也会不断增加,这时要找到某个项目或者某个文件,就变得越来越麻烦,你得先把大量的项目折叠起来。这里的思路很简单,只要找到所有的项目节点,依次查看每个项目,如果项目展开了,就把它折叠起来。
2026-03-31 14:58:52
385
原创 使用二叉搜索树(AVL树)
不过如果需要进行比较,那么这么做几乎是必须的,所以这点对于我们的使用来说并不成为问题,就不作处理了。因此在CompreType方法中,在大部分情况下就已经能够通过两个对象的Hash Code中得到它们的大小关系,只有在“万中无一”的情况下,两个不同的Type对象才会有相同的HashCode,那么我们再进行低效的字符串比较。现在,我们可以轻松的得到两个表达式树的大小关系,就可以像之前谈到的那样,构造一个排序的线性表,并且使用二分法进行查询,这样查询性能便可以控制在O(log(n))了。
2026-03-31 14:58:17
310
原创 OpenClaw 多工作区与多机器人配置完全指南
身份层通过一组独立的配置文件,为每个智能体塑造独特的“灵魂”与行为规范,决定了智能体的性格、职责和能力边界,核心文件包括:SOUL.md:智能体的核心人格定义,明确其性格、语气和行为准则,是智能体的“精神内核”;AGENTS.md:智能体的工作规范与工具使用指南,规范其工作流程和操作标准;USER.md(可选):存储用户偏好和上下文信息,提升智能体的个性化响应能力;agent.md:配置智能体的系统提示词、模型选择和凭证信息,是智能体的“运行基础”。
2026-03-30 14:52:50
423
原创 程序员必须掌握的核心算法思想
算法思想是解决问题的核心,掌握了这些基本的算法思想,就掌握了问题求解的本质。无论是贪心、分治、动态规划、回溯、分支定界,还是搜索策略和随机化算法,理解和应用这些算法思想,你将能够更高效地设计和实现各种复杂问题的解决方案。
2026-03-30 14:52:00
360
原创 为什么在代理服务器上测试, HTTP2 的转发性能比 HTTP 1 更低?
曾彼此质疑对方的数据,并觉得不可思议!我的观点是:二进制协议一定快过文本协议,没理由在代理服务器上测试的数据会导致 http2 慢于 http 1。今天终于想明白了原因,其实我们都没错!结论是:在代理服务器上,http2 的转发性能会低于 http 1。导致这一项差异的关键是splice()系统调用,也就是代理服务器中实现零拷贝的关键。(后续大量引用 ChatGPT 的回答)
2026-03-29 14:58:13
329
原创 【渗透测试】HTB靶场之Lock 全过程wp
如果我们查看此目录内的index.html页面,我们会找到我们之前访问的网站的HTML内容。这意味着,我们能够向该存储库提交代码,它将被自动推送到该网站。我们已经了解了dev-scripts,所以接下来我们将克隆website仓库。但是现在没有密码,只有token,git允许token当作密码使用,这可以通过使用git clone命令并同时提供访问令牌来完成。这是一个用于通过 Gitea API 获取用户仓库列表的 Python 脚本,通过个人访问令牌进行身份验证。仓库展示:输出用户的所有仓库完整名称。
2026-03-29 14:57:38
395
原创 云端炼丹房 2:Kaggle 上手指南
根本原因就是咱们没有进行手机验证,哈哈哈,可以理解,毕竟本身kaggle就不用绑卡,加上手机验证可能会杜绝掉一大部分计算资源滥用。这是 Kaggle 最强大的功能。你可以直接在网页端搜索现成的模型,像挂载 U 盘一样挂载进来,之后,可以使用TPU资源,不过我们暂时用不到,目前的GPU资源已经够咱们大玩一场了。它会自动将模型切分到两张显卡上,从而让我们能运行更大的模型。如果开关是灰色的,请检查是否完成了账号的。可以按照刚才说的在顶部菜单栏打开,也可以在右侧边栏的。,不用害怕,诶,它就是我们昨儿刚认识的熟人。
2026-03-28 14:45:53
216
原创 AI Agent 框架探秘:拆解 OpenHands(6)--- 事件系统
每一个Eventid: 事件的唯一标识符。source: 事件的来源,可以是AGENTUSER或。timestamp: 事件发生的时间戳。cause: 触发此事件的另一个事件的id。将系统中的所有互动都抽象为Event,我们得到了一种通用的语言。无论是Agent的决策、用户的消息还是环境的反馈,都可以统一处理、存储和分发。特别是cause字段,它像一条看不见的线,将Action和它引起的Observation紧密联系起来,形成了ReAct循环的因果链,这对于理解和调试Agent的行为至关重要。
2026-03-28 14:45:13
194
原创 DBShadow.net之化繁为简
DBShadow.net预编译比较智能只有1个参数时支持化繁为简,支持直接传值做为参数值这样可以节约定义只有一个属性的参数类参数和返回值类型还可以定义为泛型,可以做到更加灵活。
2026-03-27 13:40:59
173
原创 实现 Docker Hub 到 Azure ACR 的自动化镜像同步本文介绍了如何使用 GitHub Actions 和 image-syncer 工具,实现 Docker Hub 镜像到 Azur
通过本文介绍的方法,我们成功实现了从 Docker Hub 到 Azure ACR 的自动化镜像同步。这个方案利用 GitHub Actions 的定时触发和手动触发功能,结合 image-syncer 的增量同步和错误处理机制,确保了镜像的及时同步和一致性。我们还讨论了安全最佳实践、性能优化、故障排查等方面的内容,帮助用户更好地管理和维护这个同步机制。希望本文能够为需要在 Azure 环境中部署 Docker 镜像的开发者提供有价值的参考。
2026-03-27 13:40:16
288
原创 Vector 日志采集实战:采集夜莺日志推送 VictoriaLogs 完整教程
当你将浏览器视为 AI 的外部感知与执行接口,而非单纯的 UI 工具时,就会理解其设计定位,它服务的是大模型可靠执行 Web 任务的能力,而不仅仅是完成点击与输入操作。执行 agent-browser snapshot -i 后,工具会扫描当前页面,提取所有可交互元素(按钮、输入框、链接等),并为每个元素分配唯一引用标识,如 @e1、@e2、@e3……同时附带简洁描述:。{ "id": "@e2", "text": "Google 搜索", "role": "button" },。
2026-03-26 14:32:31
220
原创 举个栗子:做个AI Gateway demo
微软这门课的定位不太一样,它聚焦在 AI Agent 开发这一个方向上,从概念到落地讲得非常细,适合想动手搞 Agent 的同学。Agent 开发的前提是你得先会用 AI 写代码,如果你连 AI 编程(Vibe Coding)的基本功都还没练过,直接啃 Agent 课大概率会卡在代码层面。建议想学 AI Agent 开发的朋友们,先把 AI 编程能力培养起来,做出几个项目练练手,等你能独立用 AI 写代码了,再来学 Agent 开发的工程化内容,效果会好很多。但问题是,到底怎么开发 Agent 呢?
2026-03-26 14:31:49
170
原创 [拆解LangChain执行引擎]以Actor模型的视角来看Pregel
在表示Node的PregelNode类中,它的channels字段表示提供输入的Channel列表,triggers字段则提供当前Node触发器的Channel列表,在此列表中的任一Channel具有变更都会触发当前Node的执行。每个Node执行完后(这里没有执行任何具体的操作,可以任务是一个空操作),除了将自身的名称写入“output”Channel之外,还需要写入相应的Channel驱动后续Node的执行(“foo”执行完后写入“bar”,“bar”执行完之后写入“baz”)。
2026-03-25 14:02:44
371
原创 Visual Studio 一月更新 —— 增强的编辑器体验
本月,我们为您带来了一系列虽小但长期以来备受期待且广受欢迎的功能,让您能更好地控制和自定义您的编辑器。这些功能目前仅在 Insiders 可用,很快将在正式版中推出。:在查看代码或阅读文档时,按住 Alt 键同时滚动鼠标滚轮可快速移动。您可以在 Tools > Options > Text Editor > Advanced > Touchpad and mouse wheel scrolling sensitivity 中调整快速滚动速度。:按下滚轮并移动鼠标,可快速滚动浏览文档,便于查看大型文件。
2026-03-25 14:02:07
229
原创 基于springboot系统,如何跟踪会话过期,浏览器会话标识是否收到正常响应,存储,并在后续请求保持携带
步骤跟踪点方法期望结果异常结果与含义1浏览器接收CookieF12 -> Network -> 查看登录请求的Set-Cookie响应头收到正确的JSESSIONID未收到:服务器响应问题2浏览器存储Cookie存储了正确的JSESSIONID未存储:浏览器安全策略阻止3后续请求携带CookieF12 -> Network -> 查看查询请求的Cookie请求头携带了登录时的JSESSIONID未携带/值错误:浏览器端Cookie丢失4服务器处理请求。
2026-03-24 12:51:27
227
原创 进阶指南:BrowserUse + Agentrun Sandbox 最佳实践指南
在完成了 Browser Sandbox 的基础集成之后,本文将介绍高级集成方案(如 BrowserUse 框架)以及生产环境部署需要考虑的因素:如何管理 Sandbox 生命周期?如何优化性能和成本?如何保证系统的安全性和可观测性?本文将为您提供全面的高级应用和生产环境最佳实践指南。timeout=3000000, # 超时时间(毫秒)keep_alive=True, # 保持会话活跃。
2026-03-24 12:50:37
181
原创 Flink源码阅读:窗口
本文我们梳理了窗口相关的源码,几个重点概念包括 WindowAssginer、WindowOperator、Trigger、Evictor。其中 WindowAssigner 是用来确定一条消息属于哪些窗口,WindowOperator 则是窗口计算逻辑的具体执行层。Trigger 和 Evictor 分别用于触发窗口和清理窗口中数据。
2026-03-23 14:15:10
371
原创 SK + Neo4j 实现简单问答系统
知识图谱(Knowledge Graph)是一种通过节点和关系来表达知识的结构化方式。节点(Node):节点代表知识图谱中的实体,可以是人、地点、事物、事件等。例如,“张三”、“北京”、“苹果公司”都可以作为节点。边(Edge):边用于连接两个节点,表示它们之间存在某种关系。每条边都有方向和类型。例如,“张三”——[居住于]——>“北京”,“苹果公司”——[创始人]——>“乔布斯”。关系(Relationship):关系是边的具体类型,描述节点之间的语义联系。
2026-03-23 14:14:39
523
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅