Agent、Tool Calling 与自定义工作流
一个工具调用 Agent 通常只做三件事: 这就是经典的 ReAct 式循环在工程上的核心。模型负责决策,运行时负责执行与记录;模型本身并不会直接运行 Python 函数。
12 篇文章,按发布时间排列。
一个工具调用 Agent 通常只做三件事: 这就是经典的 ReAct 式循环在工程上的核心。模型负责决策,运行时负责执行与记录;模型本身并不会直接运行 Python 函数。
构建一个“GIS 数据质检与发布 Agent”。用户给出一个数据集 URI,系统需要: 这个案例的重点不是具体 GIS 库,而是如何划分确定性代码、模型判断、并行任务、人工决策与外部副作用。
LangGraph 是一个用来编排有状态、可循环、可暂停、可恢复任务的运行时。 它并不负责让模型“更聪明”,而是负责让模型与普通代码在一个可控流程里协作:哪一步调用模型、哪一步查数据库、失败后从哪里重试、何时等待人工审批、恢复时沿用哪份
Session V2 最值得关注的变化,不是类型名后多了一个 V2,而是它重新定义了会话执行的可靠性边界:用户输入先成为持久事实,随后才唤醒执行;模型与工具产生事件,Projector 再把事件变成可查询的消息状态。 经典 loop 可
模型不能直接读文件、执行命令或访问 MCP Server。它只能产生结构化的工具调用意图;OpenCode 负责决定工具是否可见、参数是否合法、操作是否允许,以及结果怎样进入下一轮模型上下文。 经典工具规范位于 packages/ope
理解 Agent“记忆”的第一步,是把三个东西分开:数据库中的完整记录、OpenCode 内部的消息结构、某一次请求真正发给模型的上下文。它们有关联,但绝不是同一个对象。 但编程 Agent 的中间过程还包括:
这篇只追踪 packages/opencode 中的经典执行栈。目标是回答一个具体问题:用户输入“读取 README 并总结”后,系统怎样从一条消息走到工具调用,再走到最终回答? 真正的源码比这段伪代码多出的部分,几乎都在处理可靠性:权
这组笔记以一次 Agent 请求为主线,解释 OpenCode 怎样接收输入、调用模型、执行工具、保存过程,并把实时状态返回客户端。目标不是逐文件翻译源码,而是建立一套能够继续验证和更新的心智模型。 这两条线不能揉成一张伪造的调用图。笔
StateGraph 可以理解为一个围绕共享状态运行的状态机: 图不是静态的数据处理管道。它可以分支、汇合、循环、暂停并恢复,因此比传统 DAG 更适合 Agent。
这篇不是词典,而是一张“源码阅读翻译表”:先弄清这些词在一般软件工程中的含义,再看它们在 OpenCode 里具体对应什么。 运行时是程序真正执行时所依赖的环境,负责调度代码、管理内存、提供文件和网络能力,并处理异步任务。
opencode源码解析——总体概览 讨论系统分层;这篇只讨论模块边界:每个模块拥有哪部分事实、依赖谁,以及为什么不能随意合并。 读一个模块时,可以连续问四个问题:
一次看似简单的“读取文件并解释”会跨过六层: 理解当前源码的关键不是背目录,而是先接受一个事实:本地版本中,成熟的 packages/opencode 执行栈与新的 Session V2 栈正在并存。