ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

screenpipe 贡献指南:从各平台源码构建到合并 Pull Request 的完整开发手册

screenpipe 贡献指南:从各平台源码构建到合并 Pull Request 的完整开发手册 screenpipe 贡献指南从各平台源码构建到合并 Pull Request 的完整开发手册【免费下载链接】screenpipeYC (S26) | Open Computer History | Record your screen continuously locally and provide context to your agents (Claude, Codex, Openclaw, Hermes, Runner...)项目地址: https://gitcode.com/GitHub_Trending/sc/screenpipe导读screenpipe 是一个本地优先的Open Computer History项目——它持续记录你的屏幕与音频并在本地建立索引把你看到过、说过、听到过的一切变成可搜索的记忆为 Claude、Codex 等 Agent 提供上下文。这篇指南以官方 CONTRIBUTING.md 为骨架面向想要参与该项目的开发者完整覆盖 macOS / Windows / Linux / Docker 四套源码构建流程、AI 辅助贡献的合规红线、提交与代码风格规范以及从快速前端迭代、调试内存错误、CPU 剖析到数据库迁移修复的全套开发实战。读完你可以在任意平台从零构建 screenpipe、跑通测试并以被维护者认可的方式提交第一个 Pull Request。开始之前先使用产品再读架构项目欢迎贡献但官方在 CONTRIBUTING.md 中明确了一点如果你根本不打算使用这个产品只是为了赏金而来请不要贡献。这背后是用户狂热user fanatic的产品哲学——只有真正用过产品的人才可能写出有价值的代码。开始之前官方建议做三件事先运行预构建的应用熟悉产品本身让它记录你的屏幕并搜索自己的历史熟悉仓库结构和架构如果你是第一次参与开源先读 ONBOARDING.md——它是从零到合并 PR的分步走读教程而CONTRIBUTING.md是精确命令的参考手册两者定位不同这篇是参考reference那篇是走读walkthrough。安装与构建指南screenpipe 采用 Cargo workspace Tauri 桌面壳的架构根目录 Cargo.toml 管理crates/*引擎而桌面应用apps/screenpipe-app-tauri是独立的 Cargo workspace根 workspace 中显式exclude了apps/screenpipe-app-tauri/src-tauri。因此引擎与桌面应用的构建是两套流程下面的指南严格按平台展开。macOSmacOS 构建需要完整的 Xcode仅安装 Command Line Tools 不够# 1. 安装依赖 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh brew install pkg-config ffmpeg jq cmake wget git-lfs # 安装 XcodeApp Store并初始化 sudo xcodebuild -license xcodebuild -runFirstLaunch # 2. 安装 bun CLI项目用 bun 而非 npm curl -fsSL https://bun.sh/install | bash # 3. 克隆仓库 git clone https://github.com/screenpipe/screenpipe cd screenpipe # 4. 构建引擎启用 Metal GPU 特性 cargo build --release --features metal # 5. 运行 ./target/release/screenpipe # 6. 构建桌面应用 cd apps/screenpipe-app-tauri bun install bun run build:tauri:dev注意--features metal是 macOS 专属特性它启用 Metal 加速的 GPU 推理路径对应 Cargo.toml 中依赖的mlx-rs、ort等 ML 栈Apple Silicon 与 Intel Mac 均适用。跨工作树共享下载依赖macOS 与 Windows 通用桌面应用预构建会把不可变的原生下载物——FFmpeg、FFprobe、Bun sidecar、MLX metallib、Windows OpenBLAS 等——放进机器级缓存默认路径为~/.cache/screenpipe/native-deps。要在多个工作树git worktree间共享让每个工作树环境都指向同一绝对路径export SCREENPIPE_NATIVE_CACHE_DIR$HOME/.cache/screenpipe/native-deps export SCREENPIPE_FRONTEND_CACHE_DIR$HOME/.cache/screenpipe/frontend-out缓存条目是带版本、经校验、受 per-artifact 锁保护的因此并发工作树构建时每个 artifact 最多下载一次。将任一变量设为off即可禁用该缓存。官方特别提醒并发构建时请让 Cargo 的target目录保持在各工作树本地不要设置共享的CARGO_TARGET_DIR。WindowsWindows 流程的目标产物是本地 NSIS 安装包*-setup.exe。默认 Tauri 配置刻意产出名为screenpipe - Development的开发版本可以与正式版并存而不抢占其身份与更新器设置。# 1. 安装 wingetWin10/11 的 App Installer 自带缺失时参考官方安装指引 # 2. 安装所需工具 winget install -e --id Microsoft.VisualStudio.2022.BuildTools --override --wait --passive --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended winget install -e --id Rustlang.Rustup winget install -e --id LLVM.LLVM winget install -e --id Kitware.CMake winget install -e --id Git.Git winget install -e --id 7zip.7zip irm https://bun.sh/install.ps1 | iex关键坑仅装 Visual Studio 包不够Tauri 需要Desktop development with C工作负载。上面的--override正是安装该工作负载含 MSVC 与 Windows SDK。安装完成后关闭并重开 PowerShell让新命令进入PATH。# 3. 配置并验证工具链 $llvmBin C:\Program Files\LLVM\bin $env:LIBCLANG_PATH $llvmBin [System.Environment]::SetEnvironmentVariable(LIBCLANG_PATH, $llvmBin, User) bun --version cargo --version cmake --version if (-not (Test-Path $env:LIBCLANG_PATH\libclang.dll)) { throw libclang.dll not found } $vswhere ${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe if (-not ( $vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath)) { throw install the Visual Studio Desktop development with C workload }$env:LIBCLANG_PATH只影响当前终端所以必须显式设置用户级环境变量SetEnvironmentVariable只对未来的终端生效——这就是需要两行代码的原因。# 4. 克隆项目 git clone https://github.com/screenpipe/screenpipe.git cd screenpipe # 5. 构建 Tauri 安装器 cd apps/screenpipe-app-tauri bun install --frozen-lockfile bun tauri build # 6. 找到安装包 Get-ChildItem .\src-tauri\target\release\bundle\nsis\*-setup.exe不要先跑仓库根目录的cargo build --release——除非你确实还需要独立 CLI。桌面应用是独立的 Cargo workspace有自己的src-tauri/target目录根构建不会为其预热反而会让全新构建明显变慢。Windows 全新工作树的预期首次bun tauri build会自动执行前端构建与 scripts/pre_build.js预构建脚本会下载解压 FFmpeg 与 OpenBLAS、复制 Bun sidecar 和 VC 运行时 DLL然后 Cargo 才编译原生应用——无需单独运行 prebuild预留至少 10 GB 磁盘干净 x64 工作树中应用本地 Cargo target 就可能超过 5 GB还要算上node_modules、sidecar 与全局 Cargo 缓存新的 git worktree 共享 Git 对象、全局 Cargo registry 与机器级原生/前端缓存但不共享node_modules与src-tauri/target原生文件从缓存恢复而无需重新下载但 Cargo 编译、重链接与安装包压缩仍是工作树本地操作可能耗时数分钟failed to get npm global prefix是 Bun 发现机制的非致命回退——只要紧接着出现found bun与bun binary copied successfully即可忽略本地开发安装包未签名正式发布版在 release 工作流中做 Authenticode 签名本地构建报告NotSigned是预期行为Microsoft VC143/144/145 CRT not found意味着缺少 VS C 工作负载libclang.dll或 bindgen 错误通常意味着当前终端未设置LIBCLANG_PATH。Linux# 1. 安装依赖 sudo apt-get install -y g ffmpeg tesseract-ocr cmake libavformat-dev libavfilter-dev libavdevice-dev libssl-dev libtesseract-dev libxdo-dev libsdl2-dev libclang-dev libxtst-dev libpipewire-0.3-dev curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh source ~/.bashrc # 2. 安装 bun CLI curl -fsSL https://bun.sh/install | bash # 3.可选AMD GPU 加速安装 Vulkan 依赖 sudo apt-get install -y libvulkan-dev glslc # 4. 克隆并构建 git clone https://github.com/screenpipe/screenpipe cd screenpipe cargo build --release # 5. 运行 ./target/release/screenpipe # 6. 构建桌面应用 sudo apt-get install -y libayatana-appindicator3-1 libayatana-appindicator3-dev librsvg2-dev libwebkit2gtk-4.1-dev cd apps/screenpipe-app-tauri bun install bun tauri buildLinux 依赖清单对应引擎的几大能力tesseract-ocr与libtesseract-devOCR、libavformat-dev等FFmpeg 视频管线、libpipewire-0.3-dev音频、libxdo-dev/libxtst-devX11 交互与输入、libayatana-appindicator3托盘图标、libwebkit2gtk-4.1-devTauri WebView。这套依赖与根 Cargo.toml 中xcap跨平台截屏、uiautomationWindows 辅助功能等平台条件依赖一一对应。Docker仓库没有内置 Dockerfile官方指引的外部 Docker 环境参考会安装完整的桌面依赖并暴露显示/音频设备适合在容器里跑 headless 记录或作为 CI 基线。此外 scripts/dev 提供了 macOS 上一键的拉取 → 运行 dev → 恢复 prod脚本CLI 或bun run dev:tauri两种模式。如何贡献AI 辅助贡献的合规红线screenpipe 欢迎 AI 辅助但每一份外部贡献都必须有一个可追责的人类驱动者。这条规则适用于 issue、PR、评审评论以及对维护者的回复披露所用的 AI 工具、其自主等级autocomplete/chat/agent以及你本人实际验证了什么未使用 AI 时写none禁止用自主 agent 代提交外部 issue、PR 或评论——必须由可追责的贡献者本人提交问题陈述、理由与给维护者的回复要用自己的话写AI 可以帮助构造测试与复现但不得冒充你理解并能解释每一处实质性变更不要让模型替你回答维护者绝不声称做过你没做的测试要附上确切的命令与结果以及适用的真实端到端证据按变更类型提供对应证据UI/行为变更给前后对照录像后端变更给回归测试 相关日志/结果性能变更给可复现的前后基准文档/CI/纯重构给相关检查与解释不要伪造视频不要对他人 PR 提交未经请求的 LLM 生成评审。自主等级的定义AI 只提供行内补全用autocomplete你向 AI 要建议或代码并自行决定采用什么用chatAI 规划或执行了多步工作、修改了文件用agent。维护者会用过程性标签指明下一步动作needs-reproduction给可复现案例、needs-tests补回归/覆盖测试、needs-evidence补录像/日志/结果/基准、needs-human-explanation亲自解释理由、needs-scope-approval先获得维护者同意再继续。未回应请求就重开或重新提交会导致七自然日贡献冷却期期间不得开/重开 issue 或 PR、不得提交评审评论再次无视具体整改请求则可能被仓库封禁。执法依据是可追责的所有权、被接受的范围、证据、以及贡献者解释工作的能力。报告 Bug 与建议增强提交 bug 报告时遵循三条准则用清晰描述性的标题识别问题尽可能详细地描述能复现问题的确切步骤给出具体示例来演示这些步骤。提交增强建议包括全新功能与既有功能的小改进时用清晰描述性的标题识别建议提供分步骤的增强描述尽可能详细解释该增强对大多数 screenpipe 用户为什么有用。Pull Request 规范填写必需的 PR 模板PR 标题中不要包含 issue 编号这是本仓库的 house style尽可能在 PR 中附带截图与动图但绝不把媒体文件提交进仓库docs/、.github/、仓库根目录下的截图/原型/录像会膨胀 git 历史且不被代码引用。托管方式二选一拖拽任何人在浏览器即可把文件拖进 PR 描述GitHub 会托管为https://github.com/user-attachments/...链接无需仓库访问权适合 fork 贡献者CLI/Agent无法拖拽把文件作为 release asset 上传再链接图片会内联渲染。有写权限的维护者gh release upload tag shot.png用一个临时/assetsreleasefork 贡献者gh release create media shot.png --repo you/screenpipe然后链接对应 release 下载地址遵循 Rust 风格规范所有文件以换行符结尾。风格规范Git 提交信息用现在时add feature 而非 added feature用祈使语气move cursor to... 而非 moves cursor to...首行限制在 72 字符以内首行之后尽量引用 issue 与 PR仓库用 AI 根据提交历史生成 changelog所以请写有意义的提交信息。Rust 风格所有 Rust 代码遵循 Rust 官方风格指南目录结构遵循 Cargo 官方项目布局。这与根 Cargo.toml 的 workspace 划分crates/*一致。项目原则维护者期望每个贡献者内化这些原则用户狂热user fanatic专注构建人们想要的东西带来最大价值并发channel 优先于 mutex/lock代码库里大量使用tokio、crossbeam、dashmap见 Cargo.toml 的 workspace 依赖简洁避免过早优化写人类易读、机器执行快的代码更少的代码、文件、依赖、复杂度生产化我们在构建真实产品聚焦避免功能蔓延聚焦核心功能并在此基础上构建用数字说话无法度量就无法改进正和博弈positive-sum。提交前必跑测试提交 PR 前运行全部测试cargo test针对桌面应用TypeScript/React 侧则跑bun testpackage.json中test会串联test:vitest与test:bun见 apps/screenpipe-app-tauri/package.json。完整的回归测试重点在 TESTING.md——它按回归频率罗列了窗口覆盖层、托盘、显示器插拔、音频设备、OCR 管线、权限、生命周期、数据库等 20 类高危边缘场景改动窗口/托盘/显示器/音频相关代码前务必先读它。高效开发循环快速前端 UI 迭代无需重编 Rust纯 React/布局工作直接在浏览器跑桌面前端cd apps/screenpipe-app-tauri bun run dev:web然后打开 http://127.0.0.1:1420/home。该模式只启动 Next.jsTauri IPC、设置存储、本地引擎 HTTP API、health/meeting WebSocket 全部由内存 mock 替换对应 scripts/dev-web.tsRust 与 sidecar 都不构建不启动是布局与常规 React 工作的最短循环。可用的 mock 场景SCREENPIPE_WEB_SCENARIOempty bun run dev:web SCREENPIPE_WEB_SCENARIObackend-error bun run dev:web想跳过 Tauri/Rust 构建但仍连真实引擎用bun run dev:web:live配合SCREENPIPE_LOCAL_API_KEY引擎不在 3030 端口时用SCREENPIPE_WEB_API_PORT指定要完整原生循环用bun run dev:tauri。浏览器模式无法验证原生窗口、菜单、托盘、权限、更新器、文件系统访问与 WebKit 专属布局/焦点行为这类改动必须在 Tauri 下复核。dev 构建与已安装应用完全隔离bun run dev:tauri与bun run build:tauri:dev不会触碰生产安装。每个 dev 构建启动时都会重定向实现于 src-tauri/src/dev_isolation.rs生产dev数据目录DB、store.bin、密钥、pipes、chats~/.screenpipe~/.screenpipe-dev本地 API 端口30303130焦点/通知端口1143511535遥测开关Agent MCP 配置~/.claude、~/.codex等真实 home空假 home这就是 dev 与已安装应用可并行的安全基础。dev 首次启动会显示 onboarding 和空时间线独立 profile 所致重置只需删除~/.screenpipe-dev。也可以按需放宽某一维度例如SCREENPIPE_DATA_DIR~/.screenpipe用真实录像、SCREENPIPE_PORT3030测 OAuth 回调、SCREENPIPE_DEV_USE_PROD_DATA1完全退出隔离。同时运行 dev prod官方维护者常用的不杀生产进程一条命令./target/release/screenpipe record --port 3035 --data-dir ${TMPDIR:-/tmp}/sp--port 3035避开生产 API 端口--data-dir隔离数据目录——做完新数据库迁移后尤其有用不会破坏你过去几个月的数据。macOS 上优先$TMPDIR每用户临时目录系统会周期性清扫/tmp可能中途清掉 dev 数据$TMPDIR会话内常驻。${TMPDIR:-/tmp}写法在设置了$TMPDIR时使用它、否则回退/tmp。想脚本化这套pull → run dev → 恢复 prod循环用 scripts/devmacOS 可选。macOS跨 dev 重建保留屏幕/麦克风/辅助功能权限正常开发不打包不签名用bun run dev:tauri或bun run build:tauri:dev即可不要给这两个命令加签名参数。仅当某个测试确实需要稳定的签名.app身份来维持 TCC 权限时才使用 apps/screenpipe-app-tauri/scripts/build_macos.sh。规范命令与这套分离的完整理由见 docs/macos-dev-builds.md。调试与性能剖析调试 GitHub ActionSSH 进 runnerWindows 上常用- name: Setup tmate session # HACK if: matrix.platform windows-latest uses: mxschmitt/action-tmatev3本地复现 CI 可用 actnektos/act。调试内存错误用 tokio-console 观察异步运行时# 终端 1 RUST_LOGtokiodebug,runtimedebug RUSTFLAGS--cfg tokio_unstable cargo run --bin screenpipe --features debug-console # 终端 2 cargo install tokio-console tokio-consoleAddressSanitizer / LeakSanitizer需要 nightly 工具链RUSTFLAGS-Z sanitizeraddress cargo run --bin screenpipe # 或 RUSTFLAGS-Z sanitizerleak cargo run --bin screenpipeLeak 追踪用 cargo-instrumentsmacOScargo install cargo-instruments # 追踪 60 分钟窗口内的泄漏 cargo instruments -t Leaks --bin screenpipe --features metal --time-limit 600000 --open然后到target/release/instruments用 Xcode → Open Developer Tool → Instruments 打开。CPU 剖析定位screenpipe 在烧 CPU先取采样 profile CPU/内存时序两份产物在 macOS 与 Windows 上格式可比。macOS内置工具无需安装PID$(pgrep -x screenpipe-app || pgrep -x screenpipe | head -1) # 1) CPU/内存时序 —— 10s 间隔持续 10 分钟 ( echo ts,pcpu,pmem,rss_mb for i in $(seq 1 60); do read pcpu pmem rss (ps -p $PID -o pcpu,pmem,rss) echo $(date %H:%M:%S),$pcpu,$pmem,$((rss/1024)) sleep 10 done ) /tmp/sp-cpu.csv # 2) 采样 profile —— 10 分钟 1ms调用树、符号化 sample $PID 600 -file /tmp/sp-sample.txt聚合热点叶子函数awk /Call graph/,/Binary Images/ /tmp/sp-sample.txt \ | grep (in | sed -E s/^[[:space:]!|:]*//; s/ \(in .*$// \ | grep -E ^[0-9] (screenpipe|AXUIElement|cidre|onnxruntime|sqlite) \ | awk {n$10; $1; sub(/^ /,,$0); if(nmx[$0])mx[$0]n} END{for(k in mx) printf %8d %s\n, mx[k], k} \ | sort -rn | head -30Windowssamply安装一次cargo install samply$sp (Get-Process screenpipe-app,screenpipe -ErrorAction SilentlyContinue | Sort-Object WorkingSet64 -Descending | Select-Object -First 1).Id # 1) CPU/内存时序 ts,pcpu,ws_mb,priv_mb | Out-File $env:TEMP\sp-cpu.csv 1..60 | ForEach-Object { $p1Get-Process -Id $sp; $c1$p1.TotalProcessorTime.TotalSeconds Start-Sleep 1 $p2Get-Process -Id $sp; $c2$p2.TotalProcessorTime.TotalSeconds $pcpu[math]::Round(($c2-$c1)*100,1) $(Get-Date -Format HH:mm:ss),$pcpu,$([math]::Round($p2.WorkingSet64/1MB)),$([math]::Round($p2.PrivateMemorySize64/1MB)) | Add-Content $env:TEMP\sp-cpu.csv Start-Sleep 9 } # 2) 采样 profile —— 10 分钟在 profiler.firefox.com 查看 samply record --save-only -o $env:TEMP\sp.json.gz --duration 600 --pid $spsamply 不可用时回退wpr -start CPU -filemode; Start-Sleep 600; wpr -stop /tmp/sp.etl用 Windows Performance Analyzer 或 perfview 打开 ETL。上报 CPU 回归问题时请把两份文件sp-cpu.csvsp-sample.txt/sp.json.gz一起附上。基准测试cargo bench基准可视化结果发布在项目的 dev benchmark 页面。注意根 Cargo.toml 中对screenpipe-screen与image两个 crate 单独开了opt-level 3其余 release 用opt-level s压缩体积并附有实测数据1080p→360p 缩放 5.38ms→2.13ms 等——这正是cargo bench驱动的帧比较基准的优化结论改捕获热路径时值得参考。数据库迁移创建新迁移cargo install sqlx-cli sqlx migrate add migration_name迁移文件落在 crates/screenpipe-db/src/migrations仓库已有 100 个时间戳命名的 SQL 迁移如20240812205501_add_fts_index.sql、20241103222151_timeline_indexes.sql由sqlx的migrate特性管理。修复迁移问题遇到migration XXXXXXXXXX was previously applied but is missing之类的错误时可从 SQLite 库中移除有问题的迁移记录# 移除特定迁移 sqlite3 ~/.screenpipe/db.sqlite DELETE FROM _sqlx_migrations WHERE version XXXXXXXXXX; # 验证迁移 sqlite3 ~/.screenpipe/db.sqlite SELECT * FROM _sqlx_migrations; # 问题依旧时采用核弹方案 # 1. 备份数据库 cp ~/.screenpipe/db.sqlite ~/.screenpipe/db.sqlite.backup # 2. 重置迁移表 sqlite3 ~/.screenpipe/db.sqlite DROP TABLE _sqlx_migrations;再次提醒这些操作只针对 dev 数据目录参考上文隔离方案永远不要对记录着你真实生活的~/.screenpipe下手。在云端开一台带显示与音频的 Azure Ubuntu VM官方提供的这套脚本用于在云端起一台带 RDP 显示与音频的 Ubuntu VM既可以远程开发 Linux 版 screenpipe也可以让云端机器记录你本机 Mac 的画面# 设置变量 RG_NAMEmy-avd-rgg LOCATIONwestus2 VM_NAMEubuntu-avd IMAGECanonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:latest VM_SIZEStandard_D2s_v3 # 创建资源组 az group create --name $RG_NAME --location $LOCATION # 创建 VM az vm create \ --resource-group $RG_NAME \ --name $VM_NAME \ --image $IMAGE \ --admin-username azureuser \ --generate-ssh-keys \ --size $VM_SIZE # 开放 RDP 端口 az vm open-port --port 3389 --resource-group $RG_NAME --name $VM_NAME # 安装 xrdp、音频与桌面环境 az vm run-command invoke \ --resource-group $RG_NAME \ --name $VM_NAME \ --command-id RunShellScript \ --scripts sudo apt update sudo apt install -y xrdp ubuntu-desktop pulseaudio sudo systemctl enable xrdp sudo adduser xrdp ssl-cert echo startxfce4 | sudo tee /etc/xrdp/startwm.sh sudo systemctl restart xrdp sudo ufw allow 3389/tcp # 启用音频重定向 az vm run-command invoke \ --resource-group $RG_NAME \ --name $VM_NAME \ --command-id RunShellScript \ --scripts echo load-module module-native-protocol-tcp auth-anonymous1 | sudo tee -a /etc/pulse/default.pa sudo systemctl restart pulseaudio # 获取 IP IP$(az vm list-ip-addresses --resource-group $RG_NAME --name $VM_NAME --output table | grep -oE \b([0-9]{1,3}\.){3}[0-9]{1,3}\b | head -1) # RDP 进 VM ssh azureuser$IP # 本地端口转发 ssh -L 13389:localhost:3389 azureuser$IP # 改密码 az vm user update \ --resource-group $RG_NAME \ --name $VM_NAME \ --username azureuser \ --password new-password然后用 Microsoft Remote Desktop 连接并确保在 RDP 客户端中配置音频转发。生成与校验 openapi.yaml先运行 screenpipe再访问 http://localhost:3030/openapi.yamlopen http://localhost:3030/openapi.yaml该文件由 mintlify 用于文档站。推送前务必校验其合法性官方维护者常用的修复套路是让 Cursor agent 反复执行下面的命令直到通过npx mintlify/scrapinglatest openapi-file docs/mintlify/openapi.yaml -o /tmp本地测试付费功能代码路径没有订阅时可以用以下环境变量在本地开发中解锁付费功能搜索过滤器、云同步等想测试…设置的环境变量解锁全部付费功能把用户视为已授权NEXT_PUBLIC_SCREENPIPE_DEV_BILLING_BYPASStrue付费墙/锁定界面强制 entitlement 检查NEXT_PUBLIC_SCREENPIPE_FORCE_BILLING_GATEtruee2e 测试绕过NEXT_PUBLIC_SCREENPIPE_E2Etruedev 构建绕过TAURI_ENV_DEBUGtrue跳过交互式 onboardingSCREENPIPE_SKIP_ONBOARDING1或true/yes播种 e2e 测试如 onboardingSCREENPIPE_E2E_SEEDonboarding也可以在已绕过的 dev 环境中把localStorage的screenpipe_e2e_force_billing_gate键设为1来强制触发付费门。这些变量与 apps/screenpipe-app-tauri/e2e 的 WebdriverIO 测试体系bun run test:e2e配合使用。加入社区在公开的 screenpipe Discord 频道打个招呼维护者与贡献者会在那里讨论如何把项目带到生产环境、互相帮助贡献或做个人项目。用得上就是最好的开始——按 ONBOARDING.md 的路线从零走一遍你就能从使用工具的人变成构建工具的人。【免费下载链接】screenpipeYC (S26) | Open Computer History | Record your screen continuously locally and provide context to your agents (Claude, Codex, Openclaw, Hermes, Runner...)项目地址: https://gitcode.com/GitHub_Trending/sc/screenpipe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进