如何在 GitHub Actions 中运行 dcode 无头任务并配置记忆缓存?

发布时间:2026/9/12 8:28:22
如何在 GitHub Actions 中运行 dcode 无头任务并配置记忆缓存? 如何在 GitHub Actions 中运行 dcode 无头任务并配置记忆缓存【免费下载链接】deepagentsThe batteries-included agent harness.项目地址: https://gitcode.com/GitHub_Trending/de/deepagents如果你需要在 CI 里让 deepagents 的编码 agentdcode来自deepagents-code包在无人值守的 job 中完成一个有限任务——比如让 agent 审查当前仓库并输出结论同时希望它跨次运行记得之前读过的上下文——仓库根目录的复合 actionaction.yml就是为此准备的。它在 job 工作区里安装并调用一次dcode无头任务action 输入只做校验和转换成dcode参数模型选择、配置解析、工具、MCP、沙箱创建和无头执行仍由dcode负责。本文以 GitHub Action Integration 为主结合 action.yml 的完整输入定义和 Run Extend a dcode Session 的无头模式说明给出从最小工作流到记忆缓存memory cache配置的完整路径。准备条件checkout、密钥与最小权限action 的默认工作目录是.agent 针对的就是这次 checkout 的代码所以第一步必须是 checkoutprovider 凭据一律通过 GitHub secrets 传入不写字面量。文档同时建议jobpermissions使用最小权限github_token默认是${{ github.token }}会导出为GITHUB_TOKEN当且仅当任务需要不同访问权限时才用范围受限的 token 覆盖生产环境把 action 固定到已审查的 commit SHA而不是跟踪main。最小可用的工作流来自文档prompt和 model 值按你的任务替换name: dcode review on: workflow_dispatch: permissions: contents: read jobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkout9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - uses: langchain-ai/deepagentsmain with: prompt: Review this repository and summarize the highest-risk issues. model: openai:gpt-5.5 openai_api_key: ${{ secrets.OPENAI_API_KEY }} shell_allow_list: recommended,git,gh max_turns: 8 task_timeout: 600 quiet: true其中model接受provider:model或文档列出的裸模型名claude-*、gpt-*、gemini-*provider 自动检测quiet: true让 dcode 状态留在 stderrstdout 只保留响应文本max_turns与task_timeout分别是轮数上限和 dcode 任务超时秒。执行生命周期一次运行里发生了什么action 的执行顺序是安装并缓存uv当enable_memory为true默认时解析缓存键并actions/cache/restore恢复记忆与会话状态用uvx --from deepagents-code dcode或--from deepagents-codecli_version安装选定版本cli_version必须不低于0.1.0但注意如果固定了旧版本同时启用了新发布的可选输入仍可能撞上 dcode 的 unknown flag 错误这个下限检查发现不了若提供了skills_repo用gh repo clone克隆支持owner/repo、owner/reporef或完整 URL把所有包含SKILL.md的目录拷进working_directory/.deepagents/skills克隆失败或找不到任何 skill 都会使 action 失败。skills 仓库属于可执行指令的供应链输入文档建议固定已审查的 ref 并使用仅具备必要仓库访问权限的 token组装参数数组并运行无头任务。prompt 默认走dcode ... --non-interactive $promptstdin: true时改为dcode ... --stdin从标准输入喂 prompt。参数是数组拼接而非 shell 插值stdin不能与skill组合——该组合会落入 dcode 的交互式 skill 路径而不是无头运行捕获 stdout/stderr经tee并记录真实退出码最后保存记忆缓存。保存步骤在always()下执行即使 agent 失败也会落盘更新过的文件。数值校验规则timeout分钟、task_timeout秒、max_turns、rubric_max_iterations都要求正整数max_retries可以为零model_params与profile_override在jq可用时校验为 JSON 对象。包装器自带的timeout以分钟计默认30task_timeout则原样作为--timeout秒传给 dcode包装器超时按惯例返回124。所有with:值都是字符串可选值留空即不转发对应参数。配置记忆缓存enable_memory、agent_name 与 memory_scope记忆缓存默认开启。启用后action 用actions/cache覆盖这些路径~/.deepagents/agent_name/ ~/.deepagents/.state/sessions.db ~/.deepagents/.state/sessions.db-wal ~/.deepagents/.state/sessions.db-shm working_directory/.deepagents/AGENTS.md也就是说 agent 专属记忆、全局会话 SQLite 数据库含 WAL/SHM和工作区的AGENTS.md可以在工作流运行之间传递。需要完全隔离的一次性运行时设置enable_memory: false。三个控制键的输入定义见 action.ymlagent_name默认agent命名 dcode agent同时决定记忆命名空间memory_scope默认repo控制缓存键的后缀。pr在可用时用 PR/issue 号、否则用 ref 名branch用 ref 名repo是整仓一个命名空间。未知取值会告警并回退到最保守的 PR/ref 行为缓存键结构为deepagents-memory-agent_name-scope-key。restore 时的主键带github.run_id因此永远不会精确命中上一次的保存而是依次尝试同 scope 前缀、再尝试 agent 级前缀——这意味着宽泛的回退可能恢复同一agent_name下另一个 scope 的状态。文档的明确要求是当跨上下文回忆不可接受时使用不同的agent_name和更保守的 scope。一次开启记忆的完整配置在上面的工作流基础上增加三个输入- uses: langchain-ai/deepagentsmain with: prompt: Review this repository and summarize the highest-risk issues. model: openai:gpt-5.5 openai_api_key: ${{ secrets.OPENAI_API_KEY }} shell_allow_list: recommended,git,gh enable_memory: true agent_name: review-bot memory_scope: branch验证怎么确认任务与缓存都按预期工作action 暴露三个输出action.yml 的outputs部分输出含义response捕获的 dcode stdout 与 stderr 全文。这是原始 agent 输出未做密钥脱敏不能直接插进 shell、issue 或 PR 评论exit_codeagent 或包装器的退出码run 步骤本身以该值退出因此普通非零结果会让 action 失败cache_hit记忆恢复的命中指示enable_memory为false时为空据此判断一次运行是否完成的方式是run 步骤通过exit_code为零且日志中能看到 agent 输出下一轮需要验证记忆时看cache_hit是否为恢复动作的命中结果并确认日志里 Save agent memory 步骤always()下有执行记录。如果后续步骤需要结构化自动化文档建议json: true解析时只解析、不执行。退出码与输出写入的语义值得注意捕获的是管道头agent/timeout 阶段的退出码而不是tee的写$GITHUB_OUTPUT使用随机 heredoc 分隔符防止 agent 输出伪造额外的 output 记录输出文件写入失败只发警告不会替换已有的 agent 失败码。排查与边界文档明确列出的限制无头模式没有交互审批action 刻意不暴露--auto-approve。无头执行下shell_allow_list是唯一操作面不填列表就禁用 shell 访问recommended或显式条目只放行允许的命令all允许无限制 shell 并自动批准工具。默认recommended,git,gh已经授予这三类命令权限扩大前先审查任务文本、checkout 来源和 job token。凭据暴露面action 只在dcode调用期间从对应输入导出ANTHROPIC_API_KEY、OPENAI_API_KEY、GOOGLE_API_KEY。不要把密钥打进日志也不要让不受信任的 prompt 获得超出 job 意图的权限。stdin与skill互斥组合会在启动时直接报错stdin cannot be combined with skill。cli_version下限与可选输入下限0.1.0只覆盖--agent、--shell-allow-list、--non-interactive这些始终存在的参数旧版本加新可选输入仍可能报 unknown flag。空 sandbox 不等于隔离sandbox留空表示在 GitHub runner 本地执行不提供隔离。MCP 方面no_mcp: true关闭加载trust_project_mcp: true才启用项目 MCP 信任可能允许仓库受控配置启动 stdio 程序启用前先审查。回归测试兜底仓库的 action 测试套件会解析action.yml和 dcode 根解析器捕捉输入到参数的漂移并确认--auto-approve没有被重新引入test_github_action.py改动 action 时这些包装器契约需要保持。下一步无头任务在 dcode 侧的会话模型loopback 服务器、线程与工作区绑定、超时退出码 124 等在 Run Extend a dcode Session 中有完整描述审批与 shell 权限的细节见 Permissions and Human Approval。按上面三步——最小工作流、按需开启enable_memory并选定agent_name/memory_scope、用exit_code和cache_hit验证——就可以把 dcode 的一次性 CI 任务跑成带记忆缓存的常驻自动化。【免费下载链接】deepagentsThe batteries-included agent harness.项目地址: https://gitcode.com/GitHub_Trending/de/deepagents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考