资讯详情

Decepticon Makefile 全解析:本地开发、质量门禁与发布前验证实战指南

📅 2026/10/13 6:49:08 | 华诺云谱 👁 阅读
Decepticon Makefile 全解析:本地开发、质量门禁与发布前验证实战指南
【免费下载链接】DecepticonAutonomous Hacking Agent for Red Team项目地址https://gitcode.com/gh_mirrors/de/Decepticon点击查看免费下载本指南以 Decepticon 仓库根目录的 Makefile 与官方参考文档 docs/makefile-reference.md 为核心系统讲解这套构建系统的定位、全部目标与发布流程。你将掌握如何用make dogfood/make smoke在本地代码上完整预演 OSS 安装体验、如何用make quality一键对齐 CI 质量门禁、如何在版本管理中实现零手工步骤的标签化发布。读完即可直接按贡献者工作流投入日常开发与发版。一、定位本地开发与预发布验证而不是安装工具先明确一个关键前提Makefile 只服务于本地开发和预发布验证。文档开篇即强调每个 Docker 目标都从本地 checkout 构建绝不从 GHCR 拉取镜像真正的终端用户通过curl | bash安装并运行decepticon命令不使用make。这意味着 Makefile 的两个核心价值所见即所发所有镜像都用本地代码打:dev标签构建测试的东西就是将要发布的东西自动化回归把发版前该跑什么固化为一条条可复现的目标配合make help随时查看摘要。仓库根目录的 Makefile 顶部注释进一步说明了设计意图dogfood完整 OSS 用户体验、smoke仅 Compose 快速检查、qualityPR 门禁、dev日常热重载开发是四大主场景而.PHONY声明与help目标保证了目标列表的完整性与可发现性。二、预发布验证首要用途dogfood、smoke、launcher文档明确指出这是 Makefile 的primary purpose发布前必跑。2.1make dogfood—— 端到端 OSS 用户体验预演在本地代码上完整复刻真实安装路径构建 Go launcher 全部服务镜像:dev标签→ 在隔离的.dogfood/目录建立独立的$DECEPTICON_HOME→ 运行 launcher。onboard 向导、engagement picker、compose up、健康检查、CLI 全部以真实curl | bash安装的方式执行。源码层面的关键机制Makefile 中dogfood目标依赖launcher目标dogfood: launcher保证二进制存在清理旧栈通过CLEAN_LAUNCHER_STACK宏停止并清理 launcher 与仓库根目录两套 Compose 项目。该宏会解析DECEPTICON_STACK_NAME与DECEPTICON_COMPOSE_PROJECT环境变量并对其做字符集合法性校验非法值直接退出再以docker compose -p project --profile cli --profile c2-sliver down --volumes --remove-orphans执行清理建立隔离环境DOGFOOD_HOME : $(CURDIR)/.dogfood将仓库的docker-compose.yml、config/、containers/、.env.example符号链接回.dogfood/launcher 以 compose 文件所在目录为基准解析相对路径而workspace/保持真实目录作为 engagement 的 bind mount 点本地构建镜像DECEPTICON_VERSIONdev docker compose --profile cli build打:dev标签以隔离 HOME 启动 launcherDECEPTICON_VERSIONdev DECEPTICON_HOME$(DOGFOOD_HOME) ./clients/launcher/bin/decepticon。由于 launcher 内嵌版本为dev详见 2.3自动更新通知与版本化配置同步都会被跳过符号链接的.dogfood/树成为唯一事实来源。用户真实的~/.decepticon全程不被触碰。2.2make smoke—— 最快形态的发布形状检查只做 Compose 层冒烟测试不构建 launcher、不跑 onboard 向导仅复刻 launcher 的compose up步骤。适合只改了 compose 栈的场景。四步流水线源码注释中明确标注了与 launcher 的对应关系# [1/4] 清理状态与 decepticon remove 对齐 # [2/4] 从本地代码构建镜像替代 GHCR 的 compose pull # [3/4] up -d --no-build --wait --wait-timeout ${DECEPTICON_STARTUP_TIMEOUT_SECONDS:-600}与 launcher Up 一致 # [4/4] 健康检查与 decepticon health 一致结束时输出服务地址提示Web 可选CLI 内/web启动默认 http://localhost:3000、LangGraph 默认 http://localhost:${LANGGRAPH_PORT:-2024}。2.3make launcher—— 构建 Go launcher 二进制launcher: cd clients/launcher go build \ -ldflags -X github.com/PurpleAILAB/Decepticon/clients/launcher/cmd.versiondev \ -o bin/decepticon产出位于clients/launcher/bin/decepticon内嵌版本为dev。这个dev版本号并非摆设在 clients/launcher/cmd/start.go 中version dev || version 时会跳过版本化配置同步改用DECEPTICON_BRANCH默认main拉取配置clients/launcher/cmd/root.go 中的var version dev则是被-ldflags -X注入的目标符号。发布时 GoReleaser 用同样的 ldflags 机制把真实 tag 写进去。2.4 何时用哪个场景命令只想快速验证 compose 栈改动make smoke完整预演 OSS 安装体验launcher → onboard → CLImake dogfood想要全新的 onboard 向导先make clean会同时清除.dogfood/再make dogfood三、开发目标热重载下的日常迭代目标说明make dev构建全部镜像并以热重载启动docker compose watch源码变更自动同步进容器make cli-dev本地启动交互式终端 UINode后端仍在 Docker 中热重载make web-dev本地运行 Next.js dev server基础设施服务留在 Dockermake infra内部目标从本地代码拉起 postgres、neo4j、litellm、langgraph、sandbox 后端这里有几个值得注意的实现细节override 文件不再自动合并docker-compose.override.yml已更名为docker-compose.dev.yml参见 Makefile 注释与 issue #214。因此docker-compose.yml基础栈不再被隐式覆盖launcher 驱动的 OSS 路径smoke/dogfood只用基础$(COMPOSE)本地开发目标cli-dev/web-dev才通过-f链显式叠加docker-compose.dev.ymlskills bind mount workspace 覆盖层热重载再叠加docker-compose.watch.ymlcli-dev 构建链shared/streaming dist → cli dist → node --watch。npm run dev只 watch tsc 编译node --watch在 dist 变化时重新执行两个 watcher 作为后台任务由wait保持存活Ctrl-C 可同时正确清理凭证挂载CLAUDE_CREDENTIALS_VOLUME/CODEX_AUTH_VOLUME两个环境变量在 make 时做存在性检查——host 有~/.claude/.credentials.json或~/.codex/auth.json则挂真实文件否则挂/dev/null避免 Docker 合成空 bind 目录同时让make dev无需先跑decepticon onboard即可为 litellm 容器提供 Claude Code Codex OAuth tokenweb-dev 额外动作先构建 streaming workspace再启动 PTY 终端服务器npx tsx server/terminal-server.tsws://localhost:3003源码位于 clients/web/server/terminal-server.ts最后启动 Next.jshttp://localhost:3000。四、质量门禁与 CI 单源对齐这一组目标是文档中Before opening a PR与Before tagging a release的落点。4.1 PR 门禁与发布门禁目标对应 CI lane内容make qualityCI PR lane快、不跑慢测试、errors-only 类型检查ci-lintci-testquality-cliweb-lintweb-buildmake quality-strictCI main-push lane覆盖率 60% 门槛 完整 basedpyright 审计warnings infoci-lintci-test-coveragequality-cliweb-lintweb-builduv run basedpyright.github/workflows/ci.yml 通过make ci-lint/make ci-test{,-coverage}分发执行因此Makefile 是 CI 的唯一事实来源本地与 CI 由构造上不可能漂移。开 PR 前跑make quality发版前跑make quality-strict。4.2 Python 门禁目标命令make lintuv run ruff check .uv run ruff format --check .uv run basedpyrightmake lint-fixuv run ruff check --fix .uv run ruff format .make ci-lintruff 检查/格式 basedpyright errors-only输出到bp.json经 scripts/check_basedpyright_errors.py 判定既有 warnings 不阻塞make ci-testuv run --extra mcp pytest -n auto -q -m not slow快速 lane无覆盖率make ci-test-coverage全量 pytest --cov-fail-under60覆盖率门槛历史从 35% 逐步上调make ci-test-coverage-reportPR 信息性覆盖率报告--cov-fail-under0不阻塞合并4.3 CLI 门禁make quality-cli依次执行构建 streaming workspace其package.json的 main 指向dist/cli 的 typecheck 与 build 都依赖它→ cli typecheck → cli build → cli testvitest。五、测试容器内跑 vs 本地跑目标说明make test [ARGS...]在 Docker 容器内跑 Python 测试docker compose exec langgraph python -m pytest $(ARGS)make test-local [ARGS...]本地跑需uv sync --devuv run pytest $(ARGS)CLI 测试归属make quality-cli想单独跑用npm run test --workspacedecepticon/cli。文档特别提示test-local需要先完成uv sync --dev。六、Web Dashboard单一检查目标目标说明make web-dev本地 Next.js dev serverDocker 承载基础设施make web-build构建 web dashboard同时生成 Prisma clientmake web-lintESLintnpx eslint src/ --max-warnings 0make web-migrate [NAMEname]运行 Prisma dev migration默认 name 为initmake web-hotswap热替换host 构建 Next.js 后经 tar 管道注入运行中的容器并重启约 15 秒对比约 5 分钟的 docker build几个实现要点node_modules 提升所有 web 目标共享根node-installtest -d node_modules || npm install工作区依赖提升到根 node_modules不需要单独的clients/web/node_modules树依赖顺序web 通过 package exports 解析decepticon/streaming到其dist/无 src 路径别名因此web-build必须先构建 streaming workspace只重新生成 Prisma client不做完整构建cd clients/web npx prisma generateweb-db-ensure等待 postgres 就绪pg_isready后执行prisma migrate deploypostgres-init/01-create-web-db.sql会在全新卷上自动创建decepticon_web数据库。七、运维目标status、logs、health、clean目标说明make statusdocker compose ps展示服务状态make logs [SVCservice]跟踪日志默认langgraph覆盖示例make logs SVClitellmmake healthKG 后端 Neo4j 健康检查Web 运行中时一并检查比decepticon kg-health仅查 KG范围更广make clean完全拆除停服务、删卷、并删除.dogfood/health目标的具体检查链MakefileKG 后端docker compose exec -T langgraph python -m decepticon.tools.research.healthNeo4jcypher-shell -u neo4j -p ${NEO4J_PASSWORD:-decepticon-graph} RETURN 1 AS ok;Web若docker compose ps --status running --services中出现web则curl探测http://localhost:${WEB_PORT:-3000}未运行时输出SKIP (optional profile not running)而不失败。make clean是破坏性操作会同时清除 dogfood 的.env含 API keys因此下一次make dogfood必然从全新 onboard 向导开始——这正是文档推荐的使用方式Use this when you want the nextmake dogfoodto start from a fresh onboard wizard。八、基准测试目标目标说明make benchmark [ARGS--level 1]本地跑基准套件uv run python -m benchmark.runner $(ARGS)make terminal-bench [ARGS--include-task-name task]跑 Terminal-Bench 评测默认模型auth/gpt-5.6-luna、reasoning_effortmaxagent 为 decepticon_tbench_agent.py 中的DecepticonTerminalBenchAgentmake cve-bench-dryCVE-Bench 离线 dry runmock LLM sandbox、3 个 fixture、seed0输出benchmark/results/cve-bench/dry-run-YYYY-MM-DD.jsonlmake recreate-litellm强制重建 litellm 容器以捕获 host当前~/.claude/.credentials.json的 inoderecreate-litellm是基准循环的前置技巧Docker 单文件 bind mount 在挂载时固定 inode而 Claude Code CLI 通过原子 rename 轮换凭证新 inode 容器不可见强制重建容器重新挂载才能拿到新写入的 OAuth token。命令会校验容器内凭证文件非空否则提示creds mount EMPTY — onboard first。九、版本管理零手工步骤的设计这是文档中最具设计感的一节没有make sync-version也没有 pre-tag 提交。9.10.0.0哨兵版本源码树中的版本字段统一携带0.0.0哨兵根 pyproject.toml 及各 packages 的 pyproject.toml、clients/cli/package.json、clients/web/package.json。真实版本在构建期注入Docker 镜像release 工作流通过--build-arg VERSIONtag盖章见 .github/workflows/release.ymldocker-compose.yml 中对应的build.args.VERSION: ${VERSION:-0.0.0}见 docker-compose.yml与镜像标签选择相互独立——本地构建时VERSION未设置仍走0.0.0哨兵而标签却是:devGo launcher经 GoReleaser ldflags 注入与本地make launcher注入dev是同一机制。9.2 发布渠道策略官方文档 docs/update-channels.md 给出了用户侧视角Makefile 参考文档则说明了运维侧策略vX.Y.ZGit tag 是发布的事实来源GHCR 版本标签X.Y.Z是不可变发布产物已安装部署应使用它两个移动渠道标签Claude-Code 式 soak 模型均只指向 finalGHCRlatest→ 由publish-releasejob 在所有版本标签镜像已存在且 GitHub release 取消 draft 后立即移动到最新 finalGHCRstable→ 由定时任务.github/workflows/promote-stable.yml每日 ~06:17 UTC移动到已在 latest 上浸泡 ≥ soak 窗口默认 7 天的最新 final不在 release 时移动。它是保守默认值docker-compose.yml中${DECEPTICON_VERSION:-stable}的 compose 回退正解析到这里预发布使用 SemVer 后缀如v1.1.0-rc.1保持 GitHub pre-release 标记两个渠道标签都不移动渠道永不自动选中它们缺陷修复以新的 patch release 发布不重建、不重写已有版本标签。promote-stable.yml的实现细节值得一提它对soak_days输入做纯数字校验并设置 7 天下限缩短浸泡窗口会被视为不安全方向被钳制通过gh api列出 release 后按final 且 published_at 距今 ≥ soak 秒数筛选再按 SemVer 排序取最新没有达标版本时不执行推进幂等、零成本。9.3 发布一个版本的完整流程make quality make smoke make dogfood git tag v1.0.16 git push origin v1.0.16git tag触发 release 工作流构建并发布 Python wheels 到 PyPI幂等 skip-existing、GoReleaser 构建 launcher 二进制、构建全部镜像到 GHCR 版本标签随后publish-release将:latest移到该版本约一周后promote-stable定时任务再把:stable推进过去。十、贡献者工作流速查# 日常迭代热重载 make dev # 开 PR 前质量门禁镜像 CI PR lane通过即 CI 必过 make quality # 发版前先快速检查再完整 OSS 体验 make smoke # fast check make dogfood # full OSS UX make quality-strict # 若需要发布级门禁 # 发版 git tag vX.Y.Z git push origin vX.Y.ZWeb dashboard 是可选项从 CLI 内以/web启动随后可通过 http://localhost:3000 访问。快速回顾全部目标随时执行make help。十一、小结Decepticon 的 Makefile 是一套为发布而设计的工程化工具链dogfood/smoke把预发布验证固化为可复现命令quality系列以 Makefile 为单源对齐 CI 门禁0.0.0哨兵 构建期注入 双渠道 soak 模型让发版无需任何手工版本同步。理解这些目标背后的源码实现.dogfood符号链接隔离、CLEAN_LAUNCHER_STACK项目名校验、dev版本跳过的更新逻辑、litellm 凭证 inode 问题等你就能在贡献与发版时做出正确选择——并知道每一步在本地代码上验证了什么。赞分享【免费下载链接】DecepticonAutonomous Hacking Agent for Red Team项目地址https://gitcode.com/gh_mirrors/de/Decepticon点击查看免费下载相关推荐Traefik 文档构建与验证实战从 MkDocs 本地开发到 html-proofer 质量门禁Traefik 文档构建与验证实战从 MkDocs 本地开发到 html proofer 质量门禁 本文基于 Traefik 官方贡献文档中的「Buildin后端API网关负载均衡微服务网络云原生OkHttp 贡献指南构建验证、本地环境与质量门禁全解析OkHttp 贡献指南构建验证、本地环境与质量门禁全解析 本文为 OkHttp面向 JVM、Android 与 GraalVM 的精工细作型 HTTP 客户后端通信移动开发网络Rufus5 分钟完整制作 USB 启动盘老电脑绕过 TPM 装 Win11Rufus5 分钟完整制作 USB 启动盘老电脑绕过 TPM 装 Win11 Rufus 是一款开源、免费的 USB 格式化工具也是做 USB 启动盘的一桌面应用开发工具上一篇TVM TIRx CUDA Shared Memory Reductionshared 变体自适应 shuffle 树归约算子深度解析下一篇CSS Position 定位详解掌握 static、relative、absolute、fixed 与 sticky 的实战用法cosmos 仓库示例创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑