13 KiB
智能化部署 Agent 当前进度总结
更新时间:2026-04-08
1. 当前总体状态
当前阶段已完成从"需求方案"到"技术架构"再到"接口定义"和"demo 后端骨架"的文档化收敛,整体处于:
方案已成型、文档体系已建立、技术路线已基本明确、demo 后端代码骨架已开始实现
当前产出重点已经从纯文档设计切换为:
文档收口 + demo 代码骨架落地 + 主链路验证
2. 已完成的文档产出
当前目录已形成以下核心文档:
-
智能化部署agent.md用于描述项目目标、场景、总体方案、风险、安全和实施路线。 -
智能化部署agent-技术架构设计说明书.md用于描述系统架构、模块分层、数据模型、接口建议、安全设计和实施约束。 -
智能化部署agent-demo接口定义说明.md用于描述 demo 阶段的接口协议、统一响应格式、状态枚举、Agent 接口、软件 A demo 接口、身份 demo 接口、审批 demo 接口。 -
智能化部署agent-demo后端项目骨架设计.md用于描述 demo 后端的推荐技术栈、项目结构、模块职责、数据库表建议、代码落点和开发顺序。 -
docs/智能化部署agent-demo最小DDL设计.md用于沉淀 demo 阶段最小可运行的数据表结构。 -
docs/智能化部署agent-demo首批OpenAPI.yaml用于沉淀第一批已收口接口的 OpenAPI 草案。 -
智能化部署agent-技术架构设计说明书.backup-20260408-141109.md为技术架构说明书备份文件。
3. 已完成的主要工作
3.1 方案文档已重写
已解决原始文档存在的编码和可读性问题,并重写为结构化方案文档,覆盖:
- 项目目标。
- 产品定位。
- 核心需求拆解。
- 风险分析。
- 开源对标。
- MVP 范围。
- 实施路线。
3.2 技术架构说明书已形成
已形成较完整的技术架构设计说明书,覆盖:
- 总体架构分层。
- 核心模块职责。
- 云端与本地部署架构。
- 软件 A 集成设计。
- 数据模型。
- 接口设计建议。
- 关键流程设计。
- 安全设计。
- 非功能设计。
3.3 已确认前提已写入架构文档
以下前提已被整理并写入技术架构设计说明书:
- MVP 阶段先开发 demo 版软件 A,不直接对接真实软件 A。
- 软件 A 的操作者透传和权限能力在 demo 阶段由 demo 实现承接。
- 本地 Agent 部署环境为 Windows 和 Linux 混合环境。
- 试点应用部署方式统一。
- 审批系统和身份系统在现网可能已有接口,但当前阶段无法直接接入,需开发 demo 版闭环。
- 模型接入方式支持自定义
base_url和api_key。
3.4 接口文档已形成
demo 接口定义文档已覆盖:
- Agent 对外任务接口。
- 云端与本地 Agent 交互接口。
- 软件 A demo 接口。
- 身份 demo 接口。
- 审批 demo 接口。
- 内部对象结构。
- 典型时序。
3.5 文档规范已统一
已统一以下文档规范:
- 时间字段格式统一为
yyyy-MM-dd HH:mm:ss.SSS - 默认时区统一为
Asia/Shanghai - JSON 字段统一采用
snake_case - 字段命名规则统一为:
*_id、*_status、*_type、*_at、*_ms、*_count
3.6 demo 后端骨架设计已完成
已完成 demo 后端项目骨架设计,明确:
- 推荐采用单体后端服务 + 模块化分层。
- 推荐技术栈为 Python + FastAPI + LangGraph。
- 后端目录结构和模块边界。
- 核心 service 划分。
- 数据库表建议。
- 本地 Agent 骨架建议。
- 开发顺序建议。
3.7 demo 后端初始化代码已开始落地
当前已完成以下代码层工作:
- 已生成 FastAPI demo 后端项目基础目录。
- 已补充
pyproject.toml、基础README和.gitignore。 - 已实现
task、approval_request、tool_call、audit_log对应的最小模型和数据库初始化逻辑。 - 已打通三条主接口:
POST /api/agent/tasks、POST /api/agent/tasks/{task_id}/confirm、GET /api/agent/tasks/{task_id} - 已实现最小
identity demo、approval demo、software-a demo接口。 - 已将高风险任务确认后的审批创建流程接入后端主链路。
- 已实现最小
edge心跳、拉取任务、回传结果接口。 - 已将默认验证任务接入 edge 调度主链路。
- 已将
software-a demo部署任务创建接入主执行链。 - 已将
tool_call和audit_log接入主链路关键动作。 - 已实现任务报告接口,可返回审批、工具、验证、审计轨迹。
- 已实现任务取消接口,并将
request_id、operator维度写入关键审计和工具调用记录。 - 已补充自动化测试,并基于内存 SQLite 完成首轮通过验证。
- 已完成任务状态机第一轮收紧,补上重复确认、审批后任务状态漂移、edge 重复回传等冲突校验。
- 已补上首轮失败分支细化,包括 software-a demo 执行失败、审批驳回、edge 验证失败三条主失败路径。
3.8 当前代码可运行范围
截至当前回合,后端代码已具备以下最小可运行范围:
- 任务创建、确认、查询、取消。
- 高风险任务确认后自动创建审批单。
- 审批通过后进入执行链,审批驳回后进入取消态。
- 执行链包含: software-a 权限校验 -> software-a demo 部署任务创建 -> edge 默认验证任务创建 -> edge 拉取 -> edge 回传。
- 任务详情接口可返回: 当前状态、software-a 状态、工具调用摘要、验证结果摘要。
- 任务报告接口可返回:
task_basic、intent_snapshot、approval_trace、tool_trace、verification_trace、result_summary、audit_trace - edge 侧已支持: 心跳、拉取任务、回传结果、上报异常事件。
当前测试基线:
- 共 14 条测试通过。
- 使用
sqlite:///:memory:做回归验证。 - 当前主链路已不是“只有接口壳”,而是具备最小闭环行为。
4. 当前已明确的核心技术结论
4.1 架构方向
当前建议的总体方向是:
软件 A 做执行底座,Agent 做智能编排层,本地 Agent 做受控执行器
4.2 MVP 路线
当前 MVP 路线已经收敛为:
- 自然语言发起任务。
- Agent 解析意图并做结构化任务生成。
- 策略层做风险判断。
- 调用软件 A demo 执行部署或控制动作。
- 调用本地 Agent 做验证。
- 汇总结果,生成报告和审计。
4.3 技术选型方向
当前建议方向:
- 编排框架优先 LangGraph。
- demo 后端优先 Python + FastAPI。
- 用户端本地 Agent 采用受控执行模式。
- 所有外部系统统一通过 adapter 接入。
4.4 用户端 Python 运行方式建议
当前讨论结论是:
- 用户端不应依赖客户现场预装 Python。
- 本地 Agent 应做成"自带运行时"的便携包。
- Windows 可采用 embeddable Python 或等价便携运行方式。
- Linux 可采用自包含运行目录或可执行打包方式。
该结论已明确,但尚未系统性回写到所有设计文档。
4.5 数据库选择建议
当前讨论结论是:
- 正式路线可以采用 PostgreSQL。
- 如果以 demo 快速落地和减少安装成本为优先,可以先用 SQLite。
- 后续试点或正式化阶段再切换 PostgreSQL。
该结论已在本轮决策、最小 DDL 和当前后端实现中落地。
4.6 开源和商用许可判断
当前讨论结论是:
- Python、FastAPI、LangGraph、Pydantic、SQLAlchemy、PostgreSQL 等组件,整体上适合免费使用和商用。
- Redis 的许可证情况相对复杂,不建议在文档中简单视为"低风险宽松开源"。
- 如果确实需要 Redis 类组件,后续应评估 Valkey 或在 demo 阶段先不强依赖缓存中间件。
该结论已收口为当前 demo 阶段“不引入 Redis 强依赖”的正式实现策略。
4.7 本轮正式落地决策
本轮已正式确认以下落地决策,后续实现与文档以此为准:
- demo 数据库默认采用
SQLite,后续试点和正式化阶段再切换PostgreSQL。 - demo 阶段不引入
Redis强依赖,缓存能力默认弱化,任务队列先采用数据库表 + 后台轮询方式承接。 - 用户端
edge-agent交付格式正式确认为: Windows 使用zip便携包,Linux 使用tar.gz自包含运行目录。 - 文档补充策略正式确认为: 只补最小 DDL 和首批 OpenAPI 草案,不一次性扩展到全部表和全部接口。
- 开发顺序正式确认为: 先补最小 DDL 和首批 OpenAPI,再直接进入 FastAPI demo 后端骨架开发。
4.8 当前代码层关键实现约定
以下约定虽然部分未完整回写到全部设计文档,但当前代码实现已经以此为准:
- 任务主状态机当前主要覆盖:
CREATED->PENDING_CONFIRM->RUNNING->VERIFYING->SUCCEEDED/FAILED/CANCELLED - 高风险任务路径为:
PENDING_CONFIRM->PENDING_APPROVAL->RUNNING software-a demo当前在任务详情查询时会同步刷新状态,因此: 确认接口返回的software_a_task_status可能是RUNNING,而后续查询任务详情时可能已变为SUCCEEDED- 当前 demo 中的 operator 默认使用:
alice(u1001)作为任务发起和执行方,bob(u2001)作为审批人 - 当前 edge 默认验证工具为:
http_health_check - 当前默认 edge 节点 ID 为:
edge-shanghai-001 - 当前任务报告中的
tool_trace和audit_trace已包含request_id和 operator 信息,后续扩展应保持兼容。 - 当前已补上的状态约束包括:
重复确认拦截、重复执行拦截、审批决策前必须仍处于
PENDING_APPROVAL、edge 重复回传拦截、非RUNNING任务不再下发 edge 执行。 - 当前 demo 已支持可控失败模拟:
若
app_code或version包含fail,则software-a demo会返回失败任务,用于联调失败分支。
5. 当前待补强的部分
当前还未收口,或仅实现了最小版本的工作包括:
- 本地
edge-agent初始化代码与打包脚本。 - 文件型 SQLite / PostgreSQL 实库运行验证。
- 身份 demo / 审批 demo 与任务主链路的权限、审批决策联动细化。
duration_ms等执行指标的真实计算与回填。- 更真实的验证插件实现。
- 部署脚本和运行脚本完善。
- OpenAPI 扩展到第二批接口。
- 更多测试用例与联调脚本。
5.1 当前已知环境限制
以下问题不是当前代码逻辑错误,而是当前运行环境限制:
- 当前对话环境下,文件型 SQLite 落盘会出现
disk I/O error。 - 因此当前自动化验证统一采用:
DATABASE_URL=sqlite:///:memory: - 当前测试命令需禁用 pytest cache provider,否则可能因写缓存目录失败出现噪音告警。
- PowerShell 内联脚本在中文字符串场景下可能有编码干扰,因此测试样例优先使用 ASCII 文本。
6. 当前待落地重点
当前不是继续补基础文档,而是继续补强现有可运行链路。优先级建议收敛为:
- 回填执行指标:
重点补
duration_ms、更完整的执行结果摘要与审计信息。 - 增补失败路径与幂等性测试: 重点补重复请求、重复回传、异常回滚等场景。
- 继续丰富结果摘要与审计细节: 让失败原因在详情和报告里更直观可见。
- 然后再继续:
本地
edge-agent骨架、第二批 OpenAPI、更多联调能力。
当前状态:
SQLite / 去 Redis / 最小 DDL / 首批 OpenAPI / FastAPI 骨架 / 三条主接口 / demo adapter / edge 接口,均已完成第一轮落地。
7. 建议的下一步
按当前进度,建议后续直接按以下顺序推进:
- 计算并持久化
duration_ms。 - 增补状态冲突、失败回滚、重复上报等测试。
- 丰富结果摘要与失败原因呈现。
- 再进入本地
edge-agent初始化代码和第二批 OpenAPI。
当前更推荐:
继续迭代代码主链路,不再回到“大段补文档”的节奏。
7.1 如果下一轮需要快速续接,优先做什么
如果后续上下文被裁剪,建议下一轮直接先读取本文件,然后按以下顺序继续:
- 优先读取:
backend/README.md - 再读取关键代码入口:
backend/app/main.pybackend/app/api/agent/tasks.pybackend/app/services/task_service.pybackend/app/services/approval_service.pybackend/app/services/edge_service.py - 再读取测试:
backend/tests/test_task_api.py
下一步推荐顺序:
- 计算并回填
duration_ms。 - 再补失败路径和幂等性测试。
- 再补结果摘要和失败原因展示。
- 再补本地 Agent 初始化代码或第二批 OpenAPI。
7.2 如果上下文快满,有什么影响
主要影响是:
- 对话里的临时上下文可能被裁剪。
- 已写入仓库的代码和文档不会受影响。
- 因此续接时优先读本文件和
backend/README.md,成本可控。
结论:
上下文快满不会影响现有代码成果,只会增加下一轮续接时重新装载上下文的成本。
当前推荐命令:
set PYTHONPATH=backend
set DATABASE_URL=sqlite:///:memory:
.venv\Scripts\python -m pytest backend/tests -q -p no:cacheprovider
8. 当前一句话结论
目前不是"还在想法阶段",而是已经完成了:
方案文档 -> 技术架构 -> 接口定义 -> 后端骨架
当前已经完成从"写文档"切换到"写 demo 代码"的第一步,下一步进入:
duration_ms 回填 -> 失败结果呈现增强 -> 本地 Agent 与联调能力继续补齐