抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

在 Pi Agent 的工具系统中,工具的抽象和执行机制是整个架构的核心。本文系统梳理工具定义的三层类型、调用时的五步管道、并行执行策略,以及错误处理的特殊设计。 一、三层类型:为什么”一个工具”要分三层来定义? 在 Pi Agent 里,一个完整的工具定义被拆成了三层,目的是让不同层职责清晰、扩展性强: 第一层:Tool(一张”名片”) 这是最基础的一层,只定义工具的基本信息: tool...

在 Pi Agent 的工具系统中,Operations 抽象 是核心设计之一。它把工具的执行逻辑与具体文件系统实现解耦,让 Agent 可以在本地、SSH、Docker 等不同环境中灵活切换。 本文主要分享工具架构的核心设计思路,包括抽象接口、依赖注入、闭包固定实例,以及 Workspace 切换机制。 为什么不直接使用 Node.js fs? 很多人第一反应是直接调用 fs/promis...

AIO BIO NIO区别? BIO(同步阻塞 I/O) BIO 是传统的 I/O 模式,全称为 Block I/O,也叫同步阻塞 I/O。在 BIO 模式下,当我们执行 I/O 操作时,比如读取文件或者网络请求,程序会 阻塞,直到 I/O 操作完成后,才能继续执行后面的代码。也就是说,当一个线程在等待 I/O 完成时,它是处于阻塞状态的,不能做其他事情。 NIO(同步非阻塞 I/O) 一个...

Kimi K3 的技术博客里,有一个很容易被忽略、但很关键的细节: K3 对「思考历史」极度敏感。harness 如果没有完整传回之前的 thinking 内容,生成质量会严重不稳定。 原文大致写了两个触发条件: harness 没有完整回传历史 thinking 内容 会话中途从别的模型切换到 K3 博客对原因也做了解释。大多数 reasoning 模型,比如 Claude 的 ext...

做混合检索时,会碰到一个很朴素的问题。 BM25 说某篇文档得了 18.6 分,向量检索说另一篇文档的相似度是 0.83。到底谁应该排在前面? 18.6 看起来比 0.83 大得多,但这两个数字根本不在同一把尺子上。直接相加没有意义,随手归一化又会受到查询、模型和数据分布影响。 RRF 提供了一个很省心的思路。 既然各路分数不好比较,那就不比较分数,只比较排名。 为什么混合检索需要结果融合 ...

最近看 Agent 相关的项目,经常会同时碰到三个词,Function Calling、MCP 和 Skill。 它们看起来都和「让模型做事」有关,于是很容易混在一起。有人把 MCP 当成更高级的 Function Calling,也有人觉得有了 Skill 就不需要 MCP。 其实它们并不在同一层。 最简短的理解是,Function Calling 负责表达调用,MCP 负责接入能力,Sk...

大模型最麻烦的时刻,不是它说不知道。 而是它给出一个语气笃定、结构完整、甚至带着出处的答案,等你真的去查,才发现内容根本不存在。 这种现象通常被叫作幻觉。 模型不是在主观撒谎。它的核心任务是根据上下文预测接下来最可能出现的内容。当可靠信息不足时,它仍然可能生成语言上非常合理的答案。读起来顺,不等于事实正确。 所以减少幻觉,不能只靠一句「请不要胡编」。更有效的思路是让模型有依据可用,在依据不足...

cookie、session、token cookie 服务端发给客户端,交给客户端保存的数据,每次请求,客户端带上这些数据,服务端就读取这些数据,鉴别身份。 完全由客户端存储,和域名绑定,且不可跨域。 数据大小一般有限制。 容易被伪造,且客户端清除数据就丢失了 session 服务端将客户端的信息保存在服务端,然后将一个sessionId传给客户端,客户端保存起来,下次请求携带sessio...

MySQL锁 全局锁: flush tables with read lock,执行此条命令,整个数据库处于只读状态 unlock tables, 释放全局锁,会话断开时,也会自动释放全局锁 一般用来全库逻辑备份 表级锁:MySQL 里面表级别的锁有这几种: 表锁:通过lock tables 语句可以对表加表锁,表锁除了会限制别的线程的读写外,也会限制本线程接下来的读写操作。 元数据锁...

垃圾收集器(CMS-G1-ZGC) CMS 垃圾收集器 JDK1.5时引入,JDK9被标记弃用,JDK14被移除 CMS(Concurrent Mark Sweep,并发标记清除)收集器是以获取最短回收停顿时间为目标的收集器(追求低停顿),它在垃圾收集时使得用户线程和 GC 线程并发执行,因此在垃圾收集过程中用户也不会感到明显的卡顿。 初始标记:Stop The World,仅使用一条初始...