本文介绍GeekAgent第10天开发:实现项目指令与长期记忆功能。AGENTS.md保存项目规则,每轮请求完整携带;memory通过关键词搜索按需调用,跨会话保留用户偏好和重要决定。记忆存于.geekagent/memory.json,支持写入和搜索工具,启动时加载,验证通过后确保记忆不进入版本库。
本文介绍GeekAgent第9天开发:为多步骤任务添加TODO清单和子Agent功能。通过todo_write工具让模型规划并更新任务进度,delegate_task将独立子任务交给隔离上下文的子Agent处理。系统指令控制何时规划,强制回写确保进度更新,TUI右栏实时显示TODO状态。实现约113行代码,验证通过。
本文介绍从零实现GeekAgent的第八天,重点添加权限控制与回滚功能。通过`.geekagent/GeekAgent.json`配置文件为每个工具设定allow/ask/deny策略,未知工具默认拒绝;实现目录隔离防止路径越界和符号链接攻击;统一脱敏敏感环境变量;为文件写入保存最近状态,支持`/undo`恢复。代码净增155行,验证通过后,下一步将实现任务规划与子Agent。
本文介绍GeekAgent开发第七天,实现轻量TUI界面与用量面板。通过引入pi-tui库,程序接管终端,左侧显示消息流,右侧常驻面板展示模型、会话、上下文占用及本轮/累计tokens。接口回传usage数据,流式期间用字符估算。支持输入编辑、工具确认,退出恢复原终端。代码新增1115行,验证功能正常,为后续权限管理打基础。
本文介绍GeekAgent Day6实现多会话与持久化功能。通过Sessions类管理多条独立会话,支持创建、切换、列表操作;新增storage.ts实现磁盘快照,可保存/加载整个会话集合;退出时自动保存,default会话自动生成8位ID。设计上保留单一Chat对象,切换时同步消息,确保会话互不干扰且跨进程恢复。
本文介绍GeekAgent开发第5天实现历史压缩功能。当对话历史超过4000字符阈值时,自动将旧消息摘要为一条系统消息,保留最近6条完整消息,防止上下文溢出且不丢失关键信息。提供自动触发和手动/compact命令两种入口,压缩过程显示黄色进度提示。通过实测验证,压缩后模型仍能准确回答旧对话中的事实。
本文介绍GeekAgent开发第4天:将文件读写从shell中拆出,新增ls、read、glob三个免确认只读工具,以及write、patch两个展示diff后确认的写工具,并统一注册到工具注册表。通过唯一文本片段锚定修改,用前缀/后缀修剪生成diff预览,实现“读→改→验证”闭环,代码净增211行。
本文介绍从零实现GeekAgent的第三天:为模型添加Bash工具,使其能执行本地shell命令。实现包含超时(10秒)、输出截断(2000字符)和执行前确认三道安全护栏,确认逻辑可替换以便未来升级权限模型。通过新增run_shell工具,模型可主动调用命令并获取结果,为后续读写文件等能力奠定基础。
本文介绍从零实现GeekAgent的第二天,核心是打通工具调用循环:模型通过工具清单主动调用函数(如获取时间),系统执行并回传结果,循环直至模型给出最终回答。设计上工具抽象为对象,结果统一为字符串,代码约268行,验证了多轮记忆和工具调用,为后续接入Shell等真实工具奠定基础。
本文介绍从零实现GeekAgent的第一天,目标是搭建REPL地基,实现流式多轮对话。项目使用TypeScript和Node.js,核心代码约157行,包含chat.ts、config.ts、color.ts和index.ts四个文件。通过history数组保存对话记忆,使用AsyncGenerator实现流式输出,并支持/reset和/exit命令。文章强调不依赖框架,保持代码简单易懂,为后续添加工具调用等功能打基础。
完成下面两步后,将自动完成登录并继续当前操作。