已合并
support to start agent-runtime in deploy tool #453
support to start agent-runtime in deploy tool #453
已合并
陈卉创建于 11 天前
陈卉
11 天前

Paired: GitHub #102GitCode !453

What type of PR is this?

/kind feature

Self-checklist:(请自检,在[ ]内打上x,我们将检视你的完成情况,否则会导致pr无法合入

likedislike
Pull Request已成功合入, 合并人@张雅晴
(感谢 陈卉 的贡献)
atomgit-bot
atomgit-bot
11 天前 评论:

变更摘要

此 PR 旨在支持在部署工具(deploy tool)中启动 agent-runtime,核心是重构 docker/Dockerfile.agent-runtime 的镜像构建方式:将基础镜像由固定的 python:3.11-slim 改为通过 BASE_IMAGE 参数动态指定,并新增 PIP_EXTRA_ARGS 供构建时附加 pip 参数;构建流程从基于 uv sync --frozen --extra server --no-dev 切换为对 foundationserviceapplications/agent_runtime[server]pip install -e editable 安装;容器内改用新建的 app 用户运行,并取消原 ENTRYPOINT,改为以 CMD ["agent-runtime", "--mode", "server"] 直接启动服务。

主要改动

  • 基础镜像参数化: 将固定 FROM python:3.11-slim 改为 ARG BASE_IMAGE + FROM ${BASE_IMAGE},并新增 ARG PIP_EXTRA_ARGS 以支持构建时按部署环境指定镜像与额外 pip 参数。
  • 构建方式改为 pip editable 安装: 移除基于 uvuv sync --frozen --extra server --no-dev 流程及相关 UV_PROJECT_ENVIRONMENTUV_LINK_MODE 环境变量,改为 pip install -e 安装 ./foundation./service./applications/agent_runtime[server]
  • 目录布局与运行用户调整: 构建上下文改为整体 COPY ./app/agent-runtimechown 该目录,新建 app 用户,WORKDIR 设为 /app/agent-runtimePATH 追加 /home/app/.local/bin 以定位安装后的可执行文件。
  • 启动命令调整: 删除原 ENTRYPOINT ["/opt/venv/bin/agent-runtime", "--mode", "server"],改为 CMD ["agent-runtime", "--mode", "server"] 作为容器默认启动命令,端口 EXPOSE 8091 保持不变。
likedislike
openJiuwen-bot成员
11 天前 评论:

欢迎来到 openJiuwen 社区

Hey @chen-hui-zhe-xi , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

likedislike
atomgit-bot
atomgit-bot
11 天前 评论:

代码审查

我已完成对 docker/Dockerfile.agent-runtime 这一唯一变更文件的逐行审查。由于审查范围被限制在该文件及其父目录内,我无法直接读取仓库根目录的 .dockerignorelogging.yaml 等文件来交叉确认,相关结论已在 confidence 中如实反映。

关闭总结

变更文件核查:

  • docker/Dockerfile.agent-runtime — 已审查,发现 6 个问题。

发现统计(按优先级):

  • P2:4 个
    1. 移除预建 logs/ 目录,框架日志 dictConfig 可能启动失败(第 10 行,confidence 0.55)
    2. 移除 PYTHONUNBUFFERED=1,容器日志被缓冲、可能丢失(第 20 行,confidence 0.75)
    3. COPY . /app/agent-runtime/ 全量拷贝构建上下文,存在把密钥/.git 烘焙进镜像的风险(第 9 行,confidence 0.50)
    4. CMD 依赖 PATH 解析 agent-runtime,而 BASE_IMAGE 变为外部可变量,非标准 python 基础镜像下可能启动即失败(第 23 行,confidence 0.70)
  • P3:2 个
    1. 用未固定版本的 pip install -e 取代 uv --frozen 锁定解析,镜像构建不可复现(第 12–16 行,confidence 0.45)
    2. useradd 未固定 uid,与旧镜像 appuser(uid 1000) 约定不一致(第 6 行,confidence 0.40)

总体风险评估:
本次变更将镜像构建从“固定 python:3.11-slim + uv 锁定解析 + 定向 COPY”整体改造为“外部可控 BASE_IMAGE + 未锁定 pip + 全量 COPY”,并简化了启动命令。核心风险集中在三类:一是日志与启动可靠性回退(logs/ 预建与 PYTHONUNBUFFERED 被移除,可能导致启动崩溃或日志不可观测);二是安全与镜像卫生COPY ..dockerignore 兜底,可能把密钥/.git 打进镜像);三是可复现性与启动契约弱化(依赖不再锁定、命令依赖 PATH 解析而基础镜像变为外部变量)。这些均属本 PR 直接引入的行为回退,建议在合入前逐项确认,尤其需确认 deploy 工具传入的 BASE_IMAGE 契约与仓库根 .dockerignore 是否已就位。

类型 数量
🔴 阻塞 0
🟡 建议 1

💬 仅评论

likedislike
OopenJiuwen-bot成员
11 天前 添加了label:openJiuwen-cla/yes
Oopenjiuwen-sync成员
11 天前 修改了pull request 的描述
atomgit-bot
atomgit-bot
11 天前 评论:

AtomGit AI 助手使用指南

在 PR 评论中使用命令即可触发。支持在普通评论和代码行评论中使用。

功能 命令 说明
代码审查 /ai review 检查代码质量、潜在问题、安全风险
PR 摘要 /ai summary 生成 PR 变更内容的结构化摘要
代码解释 /ai explain 解释代码变更的逻辑和意图
自由提问 @atomgit-bot <问题> 询问关于本 PR 的任何问题
帮助 /ai help 显示此帮助信息

免责声明

AI 助手可能存在误判,请结合自身判断。可以对评论点 👍 或 👎 帮助我们改进。

likedislike
陈卉
11 天前 修改了pull request 的描述
Oopenjiuwen-sync成员
11 天前 修改了pull request 的描述
openJiuwen-bot成员
11 天前 评论:
任务名称 结果 日志操作
静态检查 ✅SUCCESS 点此跳转
禁用词扫描 ✅SUCCESS 点此跳转
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 N/A N/A
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck {{ruff_codecheck_result}} {{ruff_codecheck_link_text}}
likedislike
OopenJiuwen-bot成员
11 天前 添加了label:ci-successful
atomgit-bot
atomgit-bot11 天前进行代码检视2
docker/Dockerfile.agent-runtime
已过期
@@ -34,1 +18,3 @@
34-USER appuser
18+USER app
19+WORKDIR /app/agent-runtime
20+ENV PATH=$PATH:/home/app/.local/bin
atomgit-bot
atomgit-bot11 天前评论:

🟡 Medium Priority

变更行→受影响行为:旧 Dockerfile 通过 ENV ... PYTHONUNBUFFERED=1 让 Python 输出无缓冲;新 Dockerfile 删除该 ENV,仅保留第 20 行 ENV PATH=$PATH:/home/app/.local/bin,并以 exec 形式 CMD ["agent-runtime", "--mode", "server"](第 23 行)启动。

失败模式:容器内 stdout 非 tty,Python 默认按块(约 4–8KB)缓冲输出。agent-runtime 是长期运行的服务,其日志不会实时出现在 docker logs,且在容器被 stop/SIGKILL 或崩溃时,缓冲区中尚未刷出的日志会直接丢失,影响排障与可观测性。这是对原镜像行为的明确回退(原显式设置过)。

建议:恢复 PYTHONUNBUFFERED=1(可并入第 20 行 ENV),保证 exec 形式 CMD 启动的 Python 服务日志实时输出且不因缓冲丢失。

改动建议
20
- ENV PATH=$PATH:/home/app/.local/bin
20
+ ENV PATH=$PATH:/home/app/.local/bin \
21
+ PYTHONUNBUFFERED=1
已应用
likedislike
System
系统消息系统
11 天前 评论:

changed this line on 42782f78 view diff detail

陈卉
11 天前 推送  1 个提交:42782f78-update: docker%2FDockerfile.agent-runtime
OopenJiuwen-bot成员
11 天前 添加了label:stat/needs-squash
OopenJiuwen-bot成员
11 天前 删除了label:openJiuwen-cla/yes
OopenJiuwen-bot成员
11 天前 删除了label:ci-successful
openJiuwen-bot成员
11 天前 评论:

Notification

This pull request has been changed(code update) or closed, so removes the following label(s): ci-successful.

likedislike
OopenJiuwen-bot成员
11 天前 添加了label:openJiuwen-cla/yes
openJiuwen-bot成员
11 天前 评论:

CLA 签署成功

chen-hui-zhe-xi, 感谢您的代码贡献。 所有的代码贡献者都已完成了 CLA 签署。 👍

likedislike
张雅晴张雅晴成员
11 天前 合入了pull request