Agent框架从朴素工具调用演化为包含大模型、角色人格、记忆、工具、规划与循环模块的自主系统。轻量级实现遵循配置优先、技能渐进式披露、显式工具注册与钩子机制原则,支持任务自执行与自进化。
最初,Agent的概念其实很朴素:把预先定义好的一组工具函数提供给大模型,让模型自己去判断该调用哪个、怎么调,应用层拿到工具返回的结果再喂回给模型,模型继续推理——直到问题解决。后来这个“应用层”被统一叫做 harness,但核心逻辑没变。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
所以,Agent到底是什么?一个比较严谨的定义是:能够基于环境自主感知、做出决策(比如调用工具)、最终完成预定目标的任务自执行系统。拆开来看,四个关键词很关键:
基于这些,一个典型的 Agent 会包含这么几个核心模块:

基座模型,提供语言理解、推理、生成的基础能力。它是整个 Agent 的中枢神经,所有决策都从这里发出。
每个 Agent 都有预设的应答风格、思考方式、身份和行为约束。这就像给 AI 画了一个“人设”,确保输出符合预期场景。
Agent 需要记得昨天发生了什么,才能完成跨天的任务。记忆分两种:一种是围绕本次会话的短期记忆,另一种是适用于所有对话的长期记忆。合适的记忆策略能带来更好的任务追踪和个性化响应。

记忆的存储方式也有多种:向量数据库适合做语义检索和相似召回;知识图谱则擅长结构化实体与关系的存取,能支持精确推理和多步查询;像 open-claw 那种简单粗暴的,直接把记忆存到本地 md 文件里。还有一个很实用的技巧:每次对话后让模型生成一段简短摘要,只保存重点,既省空间又方便后续检索。
不给模型配工具,它顶多就是个 chatbot。工具是模型与环境交互的接口。模型之所以能选对工具,是因为每个工具都有完整的名称、描述、参数和返回值说明——Agent 在推理时根据这些信息来判断该用什么。

常见的工具分几类:信息获取类(查网页、查 API、查数据库)、文件操作类(读写文件、建目录)、代码执行类(跑 Python/SQL/Shell)、通信类(发邮件、发信息、打电话)。工具越丰富,Agent 的能力边界就越宽。
基座模型可以将复杂任务分解为可执行的子步骤,或者分配给子 Agent 去执行。把大任务拆成小步骤,这一步非常考验模型的推理能力。常见的规划模式有:ReAct(边思考边执行)、plan-and-solve(先出完整计划再逐步执行)、Tree of Thoughts(边执行边推理多种可能路径)。

Agent 的执行本质上是反复循环的过程:感知 → 思考 → 工具执行 → 记忆 → 结果观察 → 再思考……直到任务完成。一个 Agent 就是一个大 loop:从接收用户输入开始,模型思考任务怎么拆、要不要调用工具,如果调用,选哪个,拿到结果继续思考,直到模型认为可以直接回答用户,loop 结束。

这个 loop 把模型、工具、记忆串在一起,决定下一步是继续执行还是输出结果。有的任务可能跑几个小时甚至几天,这时候就需要考虑记忆管理、长任务规划、错误处理、信息压缩、人机协作这些事了。
那么,具体怎么实现一个轻量级的 Agent 呢?我们可以围绕几个关键角度来设计:工具调用、定时任务、记忆系统、多模型兼容、多平台支持。
比如:内核要轻量,支持多种 channel(消息通道),对接 OpenRouter 等各种模型提供商 API,通过 MCP 工具实现代码执行、网络搜索、文件操作,内置 cron 支持周期性提醒和自动化工作流,记忆系统支持持久化和重要上下文保存,skill 采用渐进式加载。所有这些扩展配置通过一个 config.json 搞定,身份通过 agents.md 定义,能力通过 skill 和 tools 扩展。
核心组件有四个:agentLoop、contextBuilder、toolRegistry、agentHook。


前三步很好理解。关键在第五步:只把 skill 的名称和描述注入到 prompt 里,而不是把 skill 的全部内容塞进去。当 Agent 决定要用某个 skill 时,再通过 readFile 工具读取对应的 skill.md 内容。这就是 skill 的渐进式披露设计原则。
具体实现上可以采用三级加载系统:
skillSummary 将所有 skill 的摘要注入 system prompt。Agent 看到的是一份技能清单,知道有哪些工具可用,但不知道具体怎么用。
SKILL.md 的 frontmatter 中标记 always: true,这类 skill 就会完整地注入到 system prompt 里。
readFile 方式加载 skill 的详细信息。

这样,Agent 在需要某个 skill 时,会主动调用 readFile 工具读取完整的 SKILL.md,然后按指令执行。一个标准的 SKILL.md 格式如下:




agentLoop 每一轮迭代都会按顺序执行这些钩子。

来看一个具体的例子:text-to-sql Agent。
项目结构:

定义工具时,元数据里包含了 name、description、parameters,这些会被 toolRegistry 收集,转成 LLM function calling 的 schema 发给模型。安全校验方面,代码层面强制只允许 SELECT 和 PRAGMA,防止误操作。执行 SQL 时连接数据库,结果限制最多返回 50 行,防止大表撑爆上下文窗口。



组装 Agent 时,通过 config.json 配置,包括 readFile 读取 skill.md、writeFile 写文件、exec 执行 shell 命令、queryDb 只读 SQL。


在 agent.md 里,约束了只使用 queryDb 执行 SQL,不用 exec。

编写 skill 时,把领域最佳实践封装进去,比如如何探索 schema、如何写 SQL、如何纠错。


以上基本上实现了一个 Agent 的基本框架。Agent 会先探索数据库结构,再编写并执行查询,最后生成答案。如果执行过程中报错,Agent 会根据 error recovery skill 的指导自行修正——这就是 skill 的价值:不断把领域经验沉淀下来,封装到 skill 里,Agent 就实现了自进化。
总结一下,实现一个轻量级 Agent 可以遵循几个原则:配置优先(用 config.json 实现配置,避免大量胶水代码)、skill 渐进式披露(三级加载,避免浪费 token 和上下文窗口)、显式注册工具(便于 Agent 选取和调用)、通过 hook 机制提供全生命周期钩子(实现能力的插拔)。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述