news 2026/9/11 23:10:57

如何在本地配置 PostHog Tasks 后台代理和 GitHub App 集成?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何在本地配置 PostHog Tasks 后台代理和 GitHub App 集成?

如何在本地配置 PostHog Tasks 后台代理和 GitHub App 集成?

【免费下载链接】posthog:hedgehog: PostHog is the leading platform for building self-driving products. Our developer tools – AI observability, analytics, session replay, flags, experiments, error tracking, logs, and more – capture all the context agents need to diagnose problems, uncover opportunities, and ship fixes. Steer it all from Slack, web, desktop, or the MCP.项目地址: https://gitcode.com/GitHub_Trending/po/posthog

PostHog 的 Tasks(后台代理,background agents)功能允许在任务运行中启动沙箱、克隆仓库并驱动 agent 完成工作。要在本地跑通这条链路,需要完成两件配套的事:一是创建属于自己的个人开发用 GitHub App,并把四个GITHUB_APP_*凭据写进.env;二是运行setup_background_agents命令补齐数据库侧的 OAuth 应用、tasks功能开关和技能包,最后通过hogli start启动开发环境并在 Tasks 页面验证运行。本文基于仓库内的本地配置指南 docs/internal/sandboxes-setup-guide.md 整理,覆盖准备条件、GitHub App 两种创建路径、启动与验证方式,以及文档给出的已知故障排查表。

准备条件:本地环境需要满足什么

开始前先确认以下条件,它们来自指南和命令源码的要求:

  1. 开发环境可启动setup_background_agents会先检查数据库连接,数据库由hogli start拉起。命令在连不上数据库时会报Cannot connect to the database. Is the dev environment running? (hogli start),即需要先有可启动的环境。
  2. DEBUG=1必须开启setup_background_agentscreate_github_app都硬性要求 DEBUG 模式,否则会直接报CommandError。本地 Docker 沙箱(SANDBOX_PROVIDER=docker)同样要求DEBUG=1
  3. 每个工程师需要自己的 GitHub App:指南明确说明 GitHub App 是个人开发凭据,不能用生产 App 代替。
  4. 如果只想走 Docker 沙箱,指南推荐的本地组合是SANDBOX_PROVIDER=docker,不需要 Modal 账号;setup_background_agents会从.env.example自动补全DEBUGSANDBOX_PROVIDER等自动填充项(见 .env.example)。

创建 GitHub App:自动流程

指南提供了快捷命令create_github_app(实现见 products/signals/backend/management/commands/create_github_app.py),它通过 GitHub 的 App Manifest 流程自动化整个创建过程:

python manage.py create_github_app

命令的行为与限制:

  • 会在127.0.0.1--port(默认8019)上临时启动一个本地回调服务器,打开浏览器并预填 App 清单;你只需要在浏览器里单击一次 "Create GitHub App",命令随即把GITHUB_APP_CLIENT_IDGITHUB_APP_CLIENT_SECRETGITHUB_APP_SLUGGITHUB_APP_PRIVATE_KEY四个值写入.env,并验证私钥可用。
  • 默认 base URL 为http://localhost:8010,等待你完成浏览器操作的默认超时是 600 秒;超时或端口被占用时会报错并提示重新运行或换--port
  • 如果.env或环境里已经存在这四个值,命令会先询问是否覆盖;非交互终端下必须显式加--force
  • 常用参数:--org <name>表示在指定 GitHub 组织下创建(默认建在你当前登录的个人账号下);--name指定 App 名称(默认随机生成PostHog Signals Dev <随机串>);--no-browser不自动打开浏览器只打印 URL;--no-verify跳过创建后的私钥鉴权检查。
  • 命令写入的 App 权限为 Contents(写)、Pull requests(写)、Metadata(读)、Issues(写)、Workflows(写)——后两项在指南中标注为可选,但命令默认包含以省去后续排错。

手动创建 GitHub App:权限、URL 与凭据

自动流程不可用时的手动步骤(指南中的参考路径),每一步都有对应用途:

  1. 在 GitHub 上进入 Settings → Developer Settings → GitHub Apps → New GitHub App。

  2. Setup URL(注意是 Setup URL,不是 Callback 或 Homepage URL)设为:

    http://localhost:8010/integrations/github/callback
  3. Callback URL设为http://localhost:8010/complete/github-link/——这个地址是 Code 的用户链接(user-link)流程使用的;实际上任意合法的 localhost URL 都可以,创建 App 时该字段必填。

  4. 配置权限:

    权限访问级别用途
    Contents读/写读取文件、创建分支、推送提交
    Pull requests读/写创建和更新 PR
    Metadata只读所有 GitHub App 必需

    可选:Issues(读/写)、Workflows(读/写)。

  5. 在 "Identifying and authorizing users" 区域勾选Request user authorization (OAuth) during installation——个人用户链接流程依赖它。

  6. 在 App 页面的 "Client secrets" 下生成 client secret。指南特别提醒:这是近几个版本开始新增的必需项;如果本地环境最近突然不能工作,最可能缺的就是它。

  7. 生成private key,并把 App 安装到你的测试仓库:访问http://localhost:8010/project/1/integrations/github完成安装。

  8. 把四项凭据写入仓库根目录的.env

    # The OAuth Client ID (starts with Iv1 or Iv23) — NOT the numeric App ID. # Both fields are visible on the GitHub App settings page; the App ID is the # small grey number at the top, the Client ID is the labelled field below. GITHUB_APP_CLIENT_ID=Iv1.xxxxxxxxxxxxxxxx GITHUB_APP_CLIENT_SECRET=your_client_secret GITHUB_APP_SLUG=your-app-slug GITHUB_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----"

    占位符替换说明:GITHUB_APP_CLIENT_ID填 App 设置页中以Iv1Iv23开头的 OAuth Client ID(不是页面顶部灰色的小数字 App ID);GITHUB_APP_SLUG填 App URL(形如github.com/apps/你的-slug)中 URL 友好的名字;私钥里的字面\n会被自动转换为换行符,直接整行粘贴即可。

运行 setup_background_agents:后台侧的本地代理配置

python manage.py setup_background_agents

该命令幂等,可随时重复执行。按 products/tasks/backend/management/commands/setup_background_agents.py 的实现,它依次做五件事:

  1. 检查数据库连接,连不上会提示hogli start
  2. 补齐环境变量:把.env.example中存在的OIDC_RSA_PRIVATE_KEYSANDBOX_JWT_PRIVATE_KEYDEBUGSANDBOX_PROVIDERSANDBOX_MCP_URL追加到.env(已存在的跳过)。排查表里提到的SANDBOX_JWT_PRIVATE_KEY缺失问题,重新运行本命令即可自动从.env.example回填。
  3. 创建 Array OAuth 应用("Array Dev App",client_type 为 public,授权码模式,重定向 URI 固定为本地开发用的四个回调地址)。
  4. 为每个 team 创建/恢复tasks功能开关(100% 全量 rollout、active),这是 Tasks 页面可见和任务可执行的前提。
  5. 构建 agent 技能包(调用products/posthog_ai/scripts/build_skills.py,输出会打印在命令日志里,耗时可能约一分钟)。

命令结束时输出Background agents setup complete!并提示运行hogli start。如果四个GITHUB_APP_*值还没写进.env,命令会打印上面手动步骤的摘要并询问是否打开 GitHub App 创建页。

另外两个命令值得了解:python manage.py setup_tasks_oauth用于补建 Array 和 PostHog AI 的开发用 OAuth 应用(当出现PostHog AI app not found for region ...时运行,实现在 products/tasks/backend/management/commands/setup_tasks_oauth.py;它在 US/EU 生产区域会自动跳过);bin/migrate的部署流程也会执行它。

启动开发环境并在 Tasks 页面验证

hogli start

Temporal 和 temporal-django-worker 会随hogli start通过 phrocs 自动启动,不需要单独拉起。指南描述了背后的process-task工作流(定义在products/tasks/backend/temporal/process_task/workflow.py):依次执行get_task_processing_context(加载 TaskRun、校验 GitHub 集成与仓库)、get_sandbox_for_repository(创建 OAuth token、按需复用快照并克隆仓库)、start_agent_server(在沙箱内运行npx agent-server并轮询/health)、wait_condition(带 30 分钟不活动超时,由 agent 心跳延长,收到complete_task信号退出)、cleanup_sandbox(销毁沙箱容器,失败时也总是执行)。

UI 验证步骤(指南原文说明当前界面还比较简陋,但足以观察和调试后台云运行;也可以用 PostHog Desktop 代替调试界面):

  1. 访问/tasks打开 Tasks 页面——它不会出现在侧边栏,必须直接访问 URL,且前提是tasks功能开关已开启。
  2. 创建一个任务:填写标题、描述和仓库(格式:owner/repo)。
  3. 点击 "Run task"。
  4. 在 session 视图中观察日志滚动输出。

如果任务卡住不动,结合下表的故障现象定位;排查无果时可看TaskRun状态或沙箱日志。

常见问题排查

下表整理自指南的 Troubleshooting 章节,均为文档原文给出的现象与对策:

现象处理方式
Docker not running启动 Docker Desktop 或 Docker 守护进程
Temporal not reachable确认 Temporal 运行在127.0.0.1:7233,可用temporal server start-dev检查
Feature flag not enabled重跑python manage.py setup_background_agents重新创建 100% rollout 的tasks开关
Array OAuth app missing重跑python manage.py setup_background_agents
PostHog AI app not found for region ...运行python manage.py setup_tasks_oauth补建 Array 与 PostHog AI 开发 App
GitHub token expiredGitHub App 安装产生的 token 约 1 小时过期,重跑任务获取新 token
"Task workflow execution blocked"tasks功能开关未对该用户/组织开启
Sandbox image build fails检查 Docker 磁盘空间,用docker system prune清理旧镜像
Agent server health check fails查看沙箱日志:docker exec <container_id> cat /tmp/agent-server.log
SANDBOX_JWT_PRIVATE_KEYmissing重跑python manage.py setup_background_agents,会自动从.env.example回填
Port conflict on sandbox host portDockerSandbox 把容器端口 47821 映射到动态宿主机端口;若被占用,停掉占用进程或重启 Docker
Sandbox can't reach PostHog APIDocker 下不要设置SANDBOX_API_URL(有自动转换);确需覆盖时用 8000 端口而不是 8010(容器内访问 Caddy 会返回空响应)
SANDBOX_PROVIDER=dockersandbox is for local development only该 provider 要求DEBUG=1(或 pytest 的TEST=1);flox 环境下DEBUG通常由环境注入,显式 unset 会触发该错误
git commit is disabled in PostHog DesktopPATH shim(/opt/posthog/bin/git)拦截未签名的 commit/push;先git add再用git_signed_commit工具,调试时可设POSTHOG_ALLOW_UNSIGNED_GIT=1绕过

两点边界说明:dockerMODAL_DOCKER沙箱 provider 仅用于本地开发;若用 Modal 云沙箱,则无法直接访问localhost,需要额外配置隧道(Tailscale Funnel)和 Modal 凭据,见指南 "Testing with local agent packages" 一节。该节同时说明:只有当你修改@posthog/agent包时才需要配置LOCAL_POSTHOG_CODE_MONOREPO_ROOT等本地包相关项,否则可以整节忽略。

下一步

GitHub App 装好、setup_background_agents跑通、hogli start起来后,如果要在 Slack 中用@PostHog <task>触发运行代替 UI,参见 docs/internal/slack-local-setup-guide.md;需要修改 agent 包、MCP server 配置(services/mcp/.env)或遥测项时,回到 docs/internal/sandboxes-setup-guide.md 对应的 "Testing with local agent packages" 章节按条配置,每次改动.env后记得重启 temporal worker。

【免费下载链接】posthog:hedgehog: PostHog is the leading platform for building self-driving products. Our developer tools – AI observability, analytics, session replay, flags, experiments, error tracking, logs, and more – capture all the context agents need to diagnose problems, uncover opportunities, and ship fixes. Steer it all from Slack, web, desktop, or the MCP.项目地址: https://gitcode.com/GitHub_Trending/po/posthog

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 23:10:35

电力巡检目标检测数据集:5800+航拍图支持8类小目标识别

简介&#xff1a;本资源是面向电力巡检AI算法研发者与计算机视觉初学者的高质量输电线路航拍图像数据集&#xff0c;聚焦绝缘子缺陷识别、航空警示球检测、鸟巢定位等8类典型电力设施异常目标检测任务&#xff0c;可直接用于目标检测模型训练与评估。数据集共5800余张无人机高清…

作者头像 李华
网站建设 2026/9/11 23:07:10

直肠息肉YOLO检测数据集:医学图像目标检测实战指南

简介&#xff1a;本资源是面向医学图像AI开发者与计算机视觉研究者的直肠息肉检测专用数据集&#xff0c;专为YOLO系列目标检测模型训练与验证设计&#xff0c;适用于结直肠癌辅助诊断算法研发、内镜影像分析课程实践及医疗AI竞赛备赛。压缩包共19795个文件&#xff0c;含7804张…

作者头像 李华
网站建设 2026/9/11 23:06:33

测试工程师技能栈更新与工具选型指南

1. 为什么测试工程师需要持续更新技能栈&#xff1f; 在软件研发效能持续提升的今天&#xff0c;测试工程师的角色正在发生根本性转变。十年前的手工测试用例执行占比超过70%&#xff0c;而根据2023年DevOps状态报告显示&#xff0c;自动化测试在头部科技企业的覆盖率已达到85%…

作者头像 李华
网站建设 2026/9/11 23:06:32

SystemInformer 汉化指南:3 步把系统监控工具改成中文界面

SystemInformer 汉化指南&#xff1a;3 步把系统监控工具改成中文界面 【免费下载链接】systeminformer A free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware. Brought to you by Winsider Seminars & Solu…

作者头像 李华
网站建设 2026/9/11 23:04:37

YOLOv7轻量级人体姿态估计实战:检测+关键点联合部署

简介&#xff1a;本资源面向计算机视觉方向的深度学习开发者与算法工程师&#xff0c;聚焦YOLOv7框架下人体姿态估计这一前沿多任务场景&#xff0c;解决目标检测与关键点定位联合建模的理解与复现难题。压缩包共4个文件&#xff08;2个动态演示GIF、1个Python主程序yolov7_key…

作者头像 李华
网站建设 2026/9/11 23:03:57

Flutter与OpenHarmony 3.35.7 Dev版本深度解析与优化实践

1. Flutter OH 3.35.7 Dev版本深度解析OpenHarmony&#xff08;简称OH&#xff09;与Flutter的融合开发模式正在成为跨平台开发的新趋势。这次发布的Flutter OH 3.35.7 Dev版本带来了多项关键改进&#xff0c;特别是在渲染性能与平台适配层方面有显著提升。从技术架构来看&…

作者头像 李华