aipy 智能体学习2:源码运行执行轨径主干

aipy 智能体学习0:源码概览

aipy 智能体学习1:源码运行起来

aipy 智能体学习2:源码运行执行路径

项目的命令入口在 pyproject.toml,对应 aipyapp.main :main;总入口在 aipyapp/main.py。

参数解析

更新版本

同步配置

初始化配置

获取main get_aipy_main里,默认进入cli_task里的main

打印Logo

初始化显示效果管理器

初始化任务管理器

检查更新

检查LLM配置

获取执行命令

获取运行任务的 JSON 文件路径

从 JSON 文件加载任务 或 创建新任务

运行命令

任务完成(保存等)

运行交互式控制台

到这里只是初始化及启动交互式CMD界面。

继续到这里向后看: InteractiveConsole(tm, console, settings).run() # 运行交互式控制台

死循环

切换到主模式

获取user_input (如果不是命令(带/开头是命令),则创建新任务并进入任务模式)

执行命令 (处理带/开头是命令)

如果命令返回 TaskModeResult,则进入任务模式

如果有指令,则创建新任务

如果没有指令,则使用现有任务

进入任务模式

主模式与任务模式的区别

代码中的关键区别已经明确:主模式负责接收新的命令或用户指令,任务模式则绑定到一个具体任务,并持续处理该任务的对话。两者都由同一个命令上下文切换,而不是两个独立的程序入口。

主模式

  • 入口是主命令提示符 >>
  • 负责管理应用级操作,例如执行命令、查看任务、加载任务等。
  • 普通输入不会直接执行,而是新建任务并进入任务模式。
  • 命令返回 TaskModeResult 后,也会进入任务模式。
  • 每次进入主模式时会清空当前任务。

相关代码:cli_task.py:201-229、common.py:35-62

任务模式

  • 入口是 >>>
  • 绑定到一个具体任务,后续输入会发送给该任务。
  • 普通输入会执行 task.run(),以继续完成当前任务。
  • 以斜杠开头的输入会按命令执行。
  • 输入 /done 或 done,或按 Ctrl+D,都会结束任务模式。
  • 结束后会调用 task.done(),完成任务状态更新。

相关代码:cli_task.py:164-199

典型流程

  1. 主模式输入普通指令。
  2. 程序创建新任务。
  3. 进入任务模式,提示 >>>
  4. 用户持续向任务发送指令。
  5. 输入 /done 或 Ctrl+D 后返回主模式。

可以理解为:

  • 主模式:"管理整个应用、选择或创建任务"
  • 任务模式:"继续执行当前任务的对话"

继续进入任务start_task_mode

如果是指令

Enter Ctrl+d or /done to end current task

运行任务

如果指令以|开头,运行子任务,否则运行任务。

否则

重新开始任务

死循环

获取用户输入

看一个 hi

task.run 执行自动处理循环,直到 LLM 不再返回代码消息

step.run (请求LLM回复,处理工具调用,生成系统反馈消息)

rounds

什么时候退出循环呢?

没有system_feedback或达到了max_rounds就退出。

AI相关服务

1.AI工具配置:安装、切换DeepSeek或千问等国内外大模型及agent|50

2.AI软件定制:本地部署DeepSeek、千问等开源大模型、智能体|1000

3.企业AI Agent:公司流程AI Agent接入、自动化、辅助评审与决策|2000

案例1:AI评审代码

案例2:公司流程AI Agent接入

相关推荐
JWASX2 小时前
Java 转 go 学习 - dubbo-go(1)
学习·golang
磁场转动100万匹2 小时前
Hive 学习第三天:HQL 查询精讲与内置函数实战
hive·hadoop·学习
JWASX2 小时前
go 学习 - prometheus 指标学习
学习·golang·prometheus
小弥儿2 小时前
GitHub今日热榜 | 2026-10-08:逆向工程 MCP 登顶
学习·开源·github
代码山河3 小时前
JDK、JRE、JVM的区别:一文讲清楚Java运行环境
java·学习·架构·教程·面向对象·项目
fj800j3 小时前
首助记账本新增「标签管理」功能:跨分类归集项目账目,一个账本管完所有事
数据结构·经验分享·笔记·学习·分布式账本
JWASX3 小时前
Java 转 go 学习 - dubbo-go(2)
学习·golang
陈年老古董3 小时前
Hive DML 语言学习笔记:数据加载、插入、导出与导入
hive·笔记·学习·mysql
kkkkkkkkkk_Z3 小时前
新手自学嵌入式 | 学习日记:ARM内核启动代码、时钟系统(PLL/Prescaler/PFD)与IMX6ULL时钟配置
arm开发·学习