AgentOverview
Agent 生命周期
从初始化到启动、聊天、停机,理解一个 Agent 的完整生命周期
Agent 生命周期
一个项目 agent 的典型生命周期可以拆成 5 步。
1. 初始化项目
town agent create .这一步会生成最小可运行骨架,包括:
PROFILE.mdSOUL.mddowncity.json.downcity/
这一步的目标是把一个普通目录变成“可以被 Downcity 识别和启动的 agent 项目”,而不是一次性把所有外部依赖都配置完。
2. 配置执行目标
当前 agent 项目只有一种执行绑定:
{
"execution": {
"type": "api",
"modelId": "your-model-id"
}
}也就是说,项目要绑定到已连接 City AIService 中的某个模型 ID。
在当前代码里,这个执行绑定不是可选装饰,而是启动链路的硬前提之一。
3. 启动运行时
town agent start启动时,agent 会:
- 校验项目是否初始化完成
- 读取
downcity.json - 载入
PROFILE.md/SOUL.md - 解析模型绑定
- 启动 HTTP 服务
- 启动项目内配置的 plugin
如果你使用的是后台模式,CLI 还会为它维护 daemon 状态,方便后续 status / stop / restart / doctor 命令接管。
4. 执行和交互
运行中的 agent 可以通过多种入口执行:
town agent chat- 已接入的聊天渠道
- 项目级 HTTP 控制接口
- SDK
Agent/RemoteAgent
无论从哪个入口进入,都会回到同一套会话和执行内核。
这意味着 CLI、聊天渠道、项目控制接口和 SDK 虽然看起来是不同入口,但对 agent 来说,它们更多是“不同的调用入口”,而不是“不同的产品”。
5. 停止、重启和恢复
常用命令:
town agent status
town agent stop
town agent restart
town agent doctor --fix如果进程异常退出但状态文件仍在,doctor 用来清理 stale 状态。
日常迭代里最常见的生命周期循环
在真实使用中,Agent 的生命周期通常不是单次直线流程,而是一个循环:
- 改
PROFILE.md - 改
downcity.json town agent restarttown agent chat- 看输出,再继续微调
如果你在打磨一个长期运行的项目 agent,这个循环会非常常见。
推荐使用顺序
对大多数用户,推荐按下面的顺序上手:
town agent create .- 配好
downcity.json.execution.modelId town agent starttown agent chat- 需要时再接入渠道或 SDK
什么时候应该跳到后面的章节
如果你不是来“启动一个 CLI agent”,而是要“在应用里嵌入 agent”,那可以直接跳去看: