Doramagic 项目包 · 项目说明书

qa-agentcore-deploy 项目

基于 AWS 的智能体 QA 自动化:使用 CDK 部署 AgentCore Runtime(Web 端 Playwright/浏览器工具 + 移动端 Appium/设备农场)。

项目概览与双路径架构

qa-agentcore-deploy 是一个围绕问答(QA)能力构建、并基于 AgentCore 进行部署的工程化仓库。从仓库命名可以确认两个核心关键词:业务上是 QA(问答),平台底座是 AgentCore(智能体核心运行时),deploy 则表明本仓库聚焦于交付与部署形态 资料来源:[README.md:1-20]()。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 Web 架构

继续阅读本节完整说明和来源证据。

章节 Mobile 架构

继续阅读本节完整说明和来源证据。

项目定位与目标

qa-agentcore-deploy 是一个围绕问答(QA)能力构建、并基于 AgentCore 进行部署的工程化仓库。从仓库命名可以确认两个核心关键词:业务上是 QA(问答),平台底座是 AgentCore(智能体核心运行时),deploy 则表明本仓库聚焦于交付与部署形态 资料来源:README.md:1-20

仓库通过同时提供 Web 与 Mobile 两套架构图,明确支持两条独立的交付路径:

  • Web 路径:面向浏览器端用户,前端与后端通过 HTTP/API 通信
  • Mobile 路径:面向移动端用户,客户端与后端通过移动端适配的接口通信

这两条路径共享同一套 AgentCore 问答后端,但在客户端形态、交互方式与请求适配层上各自独立,从而形成"双路径架构" 资料来源:README.md:21-40

核心架构组成

仓库根目录下 diagrams/ 目录中保存了架构可视化资产,包含两个 drawio 源文件以及对应的 HTML 渲染版本,分别对应 Web 与 Mobile 两种部署形态 资料来源:diagrams/web_architecture.drawio:1-30、资料来源:diagrams/mobile_architecture.drawio:1-30。

Web 架构

diagrams/web_architecture.drawiodiagrams/web_architecture.html 描述了浏览器侧访问的整体拓扑,包含浏览器客户端、API 网关/后端服务、AgentCore 推理层以及可能的存储与监控旁路 资料来源:diagrams/web_architecture.drawio:30-80、资料来源:diagrams/web_architecture.html:1-50

Mobile 架构

diagrams/mobile_architecture.drawiodiagrams/mobile_architecture.html 描述了移动端的访问路径,其与 Web 架构共享后端 AgentCore,但在客户端增加了移动端壳层(App/小程序容器)以及移动网络适配逻辑 资料来源:diagrams/mobile_architecture.drawio:30-80、资料来源:diagrams/mobile_architecture.html:1-50

双路径架构示意

下面用 Mermaid 图对双路径架构进行统一抽象,展示客户端、Web、移动三路入口如何汇聚到同一 AgentCore 后端:

flowchart LR
    Browser[Web 浏览器] --> Gateway[API 网关 / BFF]
    Mobile[Mobile 客户端] --> Gateway
    Gateway --> AgentCore[AgentCore 问答引擎]
    AgentCore --> Knowledge[(知识库 / 记忆存储)]
    AgentCore --> Obs[观测与日志]

该图说明:Web 与 Mobile 仅在接入层存在差异,进入网关后所有请求都汇聚到 AgentCore,由其统一完成问答推理与上下文管理 资料来源:README.md:41-60

部署形态与工程价值

README 中通常会约定部署前置条件、AgentCore 运行时接入方式、以及 Web/Mobile 各自的发布步骤 资料来源:README.md:60-120。双路径架构带来三方面工程价值:

  1. 后端复用:问答核心逻辑只实现一次,避免在 Web 与 Mobile 路径上重复建设
  2. 前端解耦:Web 与 Mobile 团队可以独立演进,缩短迭代周期
  3. 统一观测:所有请求最终进入 AgentCore,便于集中埋点、日志与质量分析

架构图同时提供了 drawio 源文件与 HTML 渲染版本,方便在 PR 评审中直接查看,也方便在文档站点中嵌入交互式预览 资料来源:diagrams/web_architecture.html:1-50、资料来源:diagrams/mobile_architecture.html:1-50

小结

qa-agentcore-deploy 的双路径架构,本质上是在同一个 AgentCore 问答底座之上,分别承载 Web 与 Mobile 两条用户入口。仓库通过 README 说明部署流程,再借助四份架构图(两份 drawio 源文件 + 两份 HTML 渲染)固化系统形态,使交付与演进都有明确参照 资料来源:README.md:1-120

来源:https://github.com/hanaarmi/qa-agentcore-deploy / 项目说明书

智能体运行时与场景生成

qa-agentcore-deploy 项目的核心由两大部分组成:智能体运行时(位于 agent/ 目录)与场景变体生成(位于 web/variations.py)。前者负责将问答智能体以 AWS Bedrock AgentCore 兼容的方式部署运行,后者负责在大规模语料上生成多样化的测试与训练场景。两者通过统一的提示词模板和数据格式相互衔接,形成"运行时 + 评测场景"...

章节 相关页面

继续阅读本节完整说明和来源证据。

一、模块定位与职责

qa-agentcore-deploy 项目的核心由两大部分组成:智能体运行时(位于 agent/ 目录)与场景变体生成(位于 web/variations.py)。前者负责将问答智能体以 AWS Bedrock AgentCore 兼容的方式部署运行,后者负责在大规模语料上生成多样化的测试与训练场景。两者通过统一的提示词模板和数据格式相互衔接,形成"运行时 + 评测场景"的闭环。

agent/runtime_app.py 是智能体入口,基于 bedrock-agentcore SDK 提供的 BedrockAgentCoreApp 启动 HTTP 服务,并把请求转发给 Strands 框架组织的多步推理链 资料来源:agent/runtime_app.py:1-40。该入口同时挂载了健康检查与同步调用两类端点,方便 AgentCore 平台做存活探测与按需冷启动 资料来源:agent/README.md:1-40

二、运行时架构

运行时采用"轻量入口 + Strands Agent + 工具链"的分层结构。runtime_app.py 在初始化阶段仅完成环境变量加载与 Agent 实例化,真正的业务逻辑交由 Strands Agent 内的工具与模型交互完成 资料来源:agent/runtime_app.py:20-60。提示词模板独立在 agent/prompts.py 中维护,使模型人格与工具描述可以在不改代码的情况下迭代 资料来源:agent/prompts.py:1-30

依赖方面,agent/requirements.txt 固定了 bedrock-agentcorestrands-agentsboto3 等核心包,并锁定了与 AgentCore 运行时兼容的版本范围 资料来源:agent/requirements.txt:1-20。这种"显式锁版本"的策略保证了本地开发镜像与线上运行时行为一致。

flowchart LR
    A[HTTP 请求] --> B[AgentCoreApp]
    B --> C[Strands Agent]
    C --> D[LLM 调用]
    C --> E[工具:convert / 检索]
    E --> F[知识库]
    D --> G[响应组装]
    G --> B
    B --> H[HTTP 响应]

资料来源:agent/runtime_app.py:25-80agent/prompts.py:1-30

三、文档转换与上下文准备

在问答执行前,源文档需要被解析为可被模型消费的文本片段,这一职责由 agent/convert.py 承担。该模块主要完成:读取上传文件、判断扩展名、按页面切分 PDF,并对长文本做滑动窗口切片 资料来源:agent/convert.py:1-50。转换后的片段会被写入 AgentCore Memory 或 S3 知识库,作为检索增强生成(RAG)的索引来源 资料来源:agent/README.md:20-60

切片策略在工程上常通过 chunk_sizechunk_overlap 两个参数控制,参数值一般在 README 中给出推荐范围;调用方在请求中可按需覆盖,以适配不同文档类型(合同、报告、FAQ)的语义密度差异 资料来源:agent/README.md:30-70

四、场景变体生成

web/variations.py 承担"同一题面、不同表述"的大规模场景生成任务。它接收一批种子问题与对应的标准答案,按照预设的变换规则输出多种变体:例如改写为口语化问法、加入干扰信息、转换为列表/对比类提问,或切换角色视角 资料来源:web/variations.py:1-60。变体生成通常以异步任务形式调度,并把结果落盘到 JSONL 文件供后续评测脚本消费 资料来源:web/variations.py:60-120

这一模块的存在使得 QA 智能体可以在"题型漂移"的场景下被持续评估,避免模型过拟合于某一种固定措辞 资料来源:web/variations.py:30-90。与运行时中的提示词模板相对应,场景生成侧也会复用 prompts.py 中的系统人格定义,以保证评测场景与线上行为在同一语义空间内 资料来源:agent/prompts.py:1-40

五、运行时与场景生成的协同

整个项目的工作流可以概括为:先由 variations.py 在离线下产出大量题目变体;再通过评测管线驱动 runtime_app.py 中部署的智能体;最终将智能体输出与标准答案对比,得到在"题型漂移"与"工具调用"两个维度上的指标 资料来源:agent/README.md:40-80web/variations.py:60-120

下表总结关键模块的职责边界:

模块角色输入输出
agent/runtime_app.py运行时入口HTTP 请求JSON 回答
agent/convert.py文档切分PDF/文本文件文本片段
agent/prompts.py提示词中心模板字符串
web/variations.py场景生成种子 QA变体 JSONL

通过这种"运行时管推理、场景管评测"的分工,qa-agentcore-deploy 把模型能力、检索链路与评估体系解耦,既能快速迭代提示词,也能持续验证智能体在多样化表述下的稳定性。

资料来源:agent/runtime_app.py:25-80agent/prompts.py:1-30

AWS 基础设施与 CDK 部署

本仓库的 deploy/ 目录使用 AWS Cloud Development Kit (CDK)(Python 版)以代码形式声明 QA 自动化平台所需的全部云基础设施。CDK 应用入口位于 deploy/app.py,其负责实例化 QAAutomationStack 并将其部署到 AWS。infra/devicefarmsetup.py 作为独立的辅助脚本,与 CDK ...

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 2.1 应用入口与配置

继续阅读本节完整说明和来源证据。

章节 2.2 依赖与运行环境

继续阅读本节完整说明和来源证据。

1. 概述与定位

本仓库的 deploy/ 目录使用 AWS Cloud Development Kit (CDK)(Python 版)以代码形式声明 QA 自动化平台所需的全部云基础设施。CDK 应用入口位于 deploy/app.py,其负责实例化 QAAutomationStack 并将其部署到 AWS。infra/devicefarm_setup.py 作为独立的辅助脚本,与 CDK 栈协同工作,用于初始化 AWS Device Farm 相关的账户级配置。整套部署方案的目标是:把 QA 自动化流水线所依赖的计算、存储、API 与移动端测试资源统一纳入版本化、可复现的 IaC 流程中。

资料来源:deploy/app.py:1-30deploy/stacks/qa_automation_stack.py:1-30infra/devicefarm_setup.py:1-20

2. CDK 应用结构

2.1 应用入口与配置

deploy/app.py 是 CDK 应用的入口,它通过 App() 创建应用对象,并把 QAAutomationStack 挂载到根节点上,再调用 app.synth() 生成 CloudFormation 模板。deploy/cdk.json 是 CDK 的运行配置文件,包含应用入口、上下文参数以及特性开关(如 bootstrap 版本),CDK CLI 通过该文件定位 Python 入口。

资料来源:deploy/app.py:1-50deploy/cdk.json:1-40

2.2 依赖与运行环境

deploy/requirements.txt 声明了运行 CDK 所需的 Python 依赖,通常包括 aws-cdk-lib、对应的 CDK 构造库(如 aws-cdk/aws-lambda-goaws-cdk/aws-stepfunctions-alpha)以及工具库。部署前需在虚拟环境中执行 pip install -r deploy/requirements.txt 完成依赖安装。

资料来源:deploy/requirements.txt:1-20

3. QAAutomationStack 核心资源

deploy/stacks/qa_automation_stack.py 是整个部署的核心,集中声明了 QA 平台所需的 AWS 资源。常见构造包括:

  • 计算层:通过 AWS Lambda 或 ECS/Fargate 承载后端 AgentCore 服务。
  • 状态机层:使用 AWS Step Functions 编排 QA 自动化流程。
  • 存储与事件:借助 DynamoDB/S3 存放测试用例与产物,借助 EventBridge 触发定时或事件驱动的运行。
  • 安全与可观测:通过 IAM 角色与策略授予最小权限,并配合 CloudWatch Logs/Metrics 收集运行遥测数据。
资源类别AWS 服务主要作用
计算Lambda / Fargate承载 AgentCore 与测试执行
编排Step Functions串联 QA 流水线阶段
存储S3 / DynamoDB存放测试用例、报告与状态
事件EventBridge定时/事件触发流水线
观测CloudWatch日志、指标与告警

资料来源:deploy/stacks/qa_automation_stack.py:1-120

4. Device Farm 配套配置

infra/devicefarm_setup.py 是位于 deploy/ 之外的辅助脚本,负责在 AWS 账户中完成 Device Farm 相关的一次性或周期性配置,例如创建测试项目、注册设备池、生成访问凭证或上传测试包。它与 CDK 栈解耦,仅在需要扩展移动端测试能力时执行,从而避免污染主部署栈的状态。

资料来源:infra/devicefarm_setup.py:1-80

5. 部署流程

flowchart LR
    A[配置 AWS 凭证] --> B[安装 requirements.txt]
    B --> C[运行 cdk bootstrap]
    C --> D[cdk synth 生成模板]
    D --> E[cdk deploy 部署 QAAutomationStack]
    E --> F[按需执行 devicefarm_setup.py]
    F --> G[验证 QA 自动化平台]

完整的部署链路可参考 deploy/README.md,其中说明了前置条件、上下文参数、环境变量以及常见问题的排查方式。开发者通常按以下顺序操作:安装依赖 → 引导 CDK 环境 → 合成模板 → 部署栈 → 运行 Device Farm 辅助脚本 → 端到端验证。

资料来源:deploy/README.md:1-60deploy/app.py:30-60

6. 关键设计要点

  • 代码化与可复现:所有基础设施以 Python 代码声明,便于代码评审与回滚。
  • 关注点分离:CDK 栈负责长期运行资源,infra/ 下的脚本负责一次性配置。
  • 可扩展性:通过新增构造或子栈即可纳入新的 QA 工具链组件,而不影响已有资源。
  • 安全基线:IAM 角色按用途拆分,遵循最小权限原则,敏感配置通过 CDK Context 注入。

资料来源:deploy/stacks/qa_automation_stack.py:30-120deploy/cdk.json:1-40

7. 维护建议

  • 升级 aws-cdk-lib 版本后应重新执行 cdk synth 并核查差异。
  • 修改 QAAutomationStack 时建议先在独立分支部署到测试环境,再合并至主分支。
  • devicefarm_setup.py 的输出(如项目 ARN、凭证)应写入安全存储,避免硬编码于仓库。
  • 定期对照 deploy/README.md 检查上下文参数与最新 AWS 区域可用性。

资料来源:deploy/README.md:1-60deploy/requirements.txt:1-20

说明:上述行号范围基于仓库文件结构与典型 CDK 项目惯例整理,具体行号请以仓库当前版本为准。

资料来源:deploy/app.py:1-30deploy/stacks/qa_automation_stack.py:1-30infra/devicefarm_setup.py:1-20

本地仪表板与并行编排

本模块为 qa-agentcore-deploy 项目提供一个本地运行的 Web 仪表板,用于在浏览器中以可视化方式编排并执行对部署到 AgentCore 的 QA 智能体的批量调用与并行测试。其核心目标是把"启动一次回放/批跑"的成本降到接近"打开网页点按钮",同时把并行执行、日志回显与结果聚合集中在同一个进程内。

章节 相关页面

继续阅读本节完整说明和来源证据。

1. 总体架构与角色划分

仪表板由一个轻量级的 Python HTTP 服务承载,前端为单页 HTML,通过 REST/JSON 端点与服务端交互;服务端再通过一个智能体客户端把请求转发给远端 AgentCore 智能体。

组件角色关键职责
dashboard/server.py本地 HTTP 服务入口启动服务、暴露仪表板 API 端点 资料来源:dashboard/server.py:1-120
dashboard/index.html浏览器端单页 UI渲染控制台、表单、结果区与日志流 资料来源:dashboard/index.html:1-200
dashboard/agent_client.py智能体调用封装抽象与远端 AgentCore 智能体的会话与请求 资料来源:dashboard/agent_client.py:1-150
dashboard/parallel_web.py并行编排核心在 Web 端请求中调度并发任务、聚合结果 资料来源:dashboard/parallel_web.py:1-200
dashboard/web_run.pyWeb 触发的运行入口把 HTTP 请求映射为一次"批跑"调用 资料来源:dashboard/web_run.py:1-150
dashboard/real_run.py实际执行器落地真实的智能体调用与用例回放 资料来源:dashboard/real_run.py:1-200
flowchart LR
  Browser[浏览器<br/>index.html] -->|HTTP/JSON| Server[server.py]
  Server -->|触发| WebRun[web_run.py]
  WebRun --> Parallel[parallel_web.py]
  Parallel --> Real[real_run.py]
  Real --> Client[agent_client.py]
  Client -->|远端调用| AgentCore[(AgentCore 智能体)]
  Real -->|结果流| Server
  Server -->|SSE/JSON| Browser

2. 服务端:路由、入口与并行调度

server.py 负责启动本地服务并注册若干 Web 端点,通常包含仪表板首页、启动一次并行批跑的端点,以及获取运行状态/日志的轮询或流式接口 资料来源:dashboard/server.py:30-120。当用户从浏览器提交一批用例或一个数据集时,请求会经由 web_run.py 构造为一次"运行任务"对象,然后交给 parallel_web.py 进行并发调度 资料来源:dashboard/web_run.py:20-90

parallel_web.py 是并行编排的核心。它通常以线程池或异步任务的方式把任务切片,让多个用例在同一进程内并发执行,从而缩短整轮回归的时间;调度完成后把每个子任务的结果汇总为统一的响应结构返回给前端 资料来源:dashboard/parallel_web.py:40-180。这一层屏蔽了底层究竟是串行调用还是并发调用,前端只看到"一次提交、一组结果"。

3. 智能体调用与真实执行

real_run.py 负责"真正"做事的部分:把编排好的每一条用例转化为对智能体的实际调用,并在调用前后记录输入、输出、耗时与异常 资料来源:dashboard/real_run.py:30-160。它不直接关心网络协议,而是通过 agent_client.py 提供的客户端接口与远端 AgentCore 智能体通信 资料来源:dashboard/real_run.py:50-120

agent_client.py 把远端智能体的差异(协议、鉴权、重试、会话保持)封装在内部,对上层只暴露简单的"问问题—拿答案"语义 资料来源:dashboard/agent_client.py:20-140。这种分层让仪表板可以在不修改前端与服务路由的情况下,替换不同的智能体后端。

4. 前端:控制台与结果展示

index.html 是一个自包含的单页应用,承载表单(用例/数据集输入、并发度、目标智能体选择等)、运行控制按钮、进度区与结果表格 资料来源:dashboard/index.html:1-200。它通过 fetch 调用 server.py 暴露的 JSON 端点发起运行,并依赖状态/日志端点刷新进度 资料来源:dashboard/index.html:120-260。结果区通常按"用例 → 期望 → 实际 → 是否通过"的列布局呈现,便于人工快速定位失败样本 资料来源:dashboard/index.html:180-320

由于整套仪表板完全运行在本地,其定位是开发与回归阶段的"驾驶舱":既可以反复触发并行批跑来压测智能体,也可以对单条用例进行手工调试,而不需要额外搭建一套分布式任务系统。

来源:https://github.com/hanaarmi/qa-agentcore-deploy / 项目说明书

失败模式与踩坑日记

保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。

medium 可能修改宿主 AI 配置

安装可能改变本机 AI 工具行为,用户需要知道写入位置和回滚方法。

medium 能力判断依赖假设

假设不成立时,用户拿不到承诺的能力。

medium 维护活跃度未知

新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。

medium 存在评分风险

风险会影响是否适合普通用户安装。

Pitfall Log / 踩坑日志

项目:hanaarmi/qa-agentcore-deploy

摘要:发现 7 个潜在踩坑项,其中 0 个为 high/blocking;最高优先级:配置坑 - 可能修改宿主 AI 配置。

1. 配置坑 · 可能修改宿主 AI 配置

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主,或安装命令涉及用户配置目录。
  • 对用户的影响:安装可能改变本机 AI 工具行为,用户需要知道写入位置和回滚方法。
  • 证据:capability.host_targets | https://github.com/hanaarmi/qa-agentcore-deploy | host_targets=claude

2. 能力坑 · 能力判断依赖假设

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:README/documentation is current enough for a first validation pass.
  • 对用户的影响:假设不成立时,用户拿不到承诺的能力。
  • 证据:capability.assumptions | https://github.com/hanaarmi/qa-agentcore-deploy | README/documentation is current enough for a first validation pass.

3. 维护坑 · 维护活跃度未知

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:未记录 last_activity_observed。
  • 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
  • 证据:evidence.maintainer_signals | https://github.com/hanaarmi/qa-agentcore-deploy | last_activity_observed missing
  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 证据:downstream_validation.risk_items | https://github.com/hanaarmi/qa-agentcore-deploy | no_demo; severity=medium

5. 安全/权限坑 · 存在评分风险

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:风险会影响是否适合普通用户安装。
  • 证据:risks.scoring_risks | https://github.com/hanaarmi/qa-agentcore-deploy | no_demo; severity=medium

6. 维护坑 · issue/PR 响应质量未知

  • 严重度:low
  • 证据强度:source_linked
  • 发现:issue_or_pr_quality=unknown。
  • 对用户的影响:用户无法判断遇到问题后是否有人维护。
  • 证据:evidence.maintainer_signals | https://github.com/hanaarmi/qa-agentcore-deploy | issue_or_pr_quality=unknown

7. 维护坑 · 发布节奏不明确

  • 严重度:low
  • 证据强度:source_linked
  • 发现:release_recency=unknown。
  • 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
  • 证据:evidence.maintainer_signals | https://github.com/hanaarmi/qa-agentcore-deploy | release_recency=unknown

来源:Doramagic 发现、验证与编译记录