ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OpenHuman 调试命令指南:用 `pnpm debug` 为 Agent 提供有界输出与可追溯日志的测试运行器

OpenHuman 调试命令指南:用 `pnpm debug` 为 Agent 提供有界输出与可追溯日志的测试运行器 OpenHuman 调试命令指南用pnpm debug为 Agent 提供有界输出与可追溯日志的测试运行器【免费下载链接】openhumanOpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.项目地址: https://gitcode.com/GitHub_Trending/op/openhuman本文面向在 OpenHuman本地优先的个人 AI仓库根目录即项目根中调试 Rust 核心、前端 Vitest 单测与 WDIO E2E 的开发者与 AI Agent。scripts/debug/是一组围绕项目既有测试运行器的轻量封装核心价值在于把完整输出 tee 到target/debug-logs/下的日志文件同时让 stdout 只保留摘要与失败块从而让 Agent 的上下文不被海量原始输出淹没。读完本文你将掌握pnpm debug unit | e2e | rust | logs的完整用法、参数约定、日志组织方式与底层实现原理。为什么需要一套Agent 友好的测试封装OpenHuman 同时维护三套测试体系Vitest前端单测由app/test/vitest.config.ts配置入口脚本见 app/package.json 中的test:unitWDIO E2E端到端spec 位于app/test/e2e/底层由 app/scripts/e2e-run-spec.sh 委托给统一的会话运行器e2e-run-session.shcargo 测试Rust 核心经由 scripts/test-rust-with-mock.sh 携带 mock 后端运行。这些运行器直接跑通常会产生几千行输出。对 LLM Agent 而言把整份原始输出塞进上下文既不经济也容易淹没关键失败信息。scripts/debug/封装的核心目标在 README.md 中明确为三点过滤——Vitest 支持位置参数文件 pattern-t name按测试名过滤WDIO 一次只跑一个 specAgent 不必每次改动都在整棵树里 grep有界输出——默认摘要体量可控、适配 Agent 上下文完整输出只需一条pnpm debug logs last即可取回稳定接口——底层运行器的 flag 经常变动而这组封装把契约收敛为位置参数 少量 flag避免 Agent 提示词因底层参数变动而失效。需要强调的是这些封装不取代项目原有测试运行器它们只是以日志捕获的方式调用底层工具退出码透传底层结果。快速上手四条核心命令在仓库根目录执行pnpm debug由根 package.json 的debug: bash scripts/debug/cli.sh注册# Vitest 单测 pnpm debug unit # 全量跑 pnpm debug unit src/components/Foo.test.tsx # 只跑某个文件位置参数 pnpm debug unit -t renders empty state # 按测试名过滤 pnpm debug unit Foo -t renders empty --verbose # WDIO E2E一次一个 spec pnpm debug e2e test/e2e/specs/smoke.spec.ts pnpm debug e2e test/e2e/specs/cron-jobs-flow.spec.ts cron-jobs --verbose # cargo 测试内部调用 scripts/test-rust-with-mock.sh pnpm debug rust pnpm debug rust json_rpc_e2e # 查看已保存的日志 pnpm debug logs # 列出最近 50 个 pnpm debug logs last # 打印最近一个超长时默认显示末尾 400 行 pnpm debug logs unit # 打印匹配前缀 unit 的最近日志 pnpm debug logs last --tail 100日志统一落在target/debug-logs/kind-suffix-timestamp.log。该目录按需创建见下文lib.sh的debug_log_dir没有其他进程往这里写删除它是安全的。参数一览命令位置参数常用 flag底层调用unit[pattern]文件或模糊路径-t name、--watch、--verbose、-- vitest-args…pnpm exec vitest run --config test/vitest.config.ts在app/下执行e2especspec 路径[log-suffix]可选--verboseapp/scripts/e2e-run-spec.sh spec suffixrust[test-filter]可传给底层脚本--verbose、-- cargo-test-args…scripts/test-rust-with-mock.shlogslist/last/run-id 或前缀--head N、--tail N内置脚本 scripts/debug/logs.sh所有运行类命令的退出码均与底层工具一致方便在 CI 或 Agent 工作流中直接按$?判断。深入源码分发器与共享日志机制cli.sh命令分发入口 scripts/debug/cli.sh 是一个set -euo pipefail的 bash 分发器unit|e2e|rust|logs直接exec同名脚本harness-cache-audit、agent-prepare-context-audit、goals-live三个审计命令则转交node执行对应的.mjs。不带参数或传-h/--help时打印完整 usage。这意味着未来新增调试子命令只需在case中加一行。lib.sh日志落盘与摘要提取共享逻辑在 scripts/debug/lib.sh三个关键函数debug_log_dir()定位仓库根mkdir -p target/debug-logs并按需创建日志目录debug_run log verbose -- cmd…核心执行函数。verbose1时用tee同时写文件并流式输出并借助${PIPESTATUS[0]}精确取回原始命令而非tee的退出码非 verbose 时只把输出重定向到日志文件随后打印摘要三个摘要函数分别针对三种工具的输出格式做 grep/awk 提取debug_summarize_vitest提取Test Files / Tests / Duration / Start at行与FAIL块含 FAIL 之后前 200 行细节debug_summarize_wdio提取 Mocha 风格的passing / failing / pending统计与编号失败详情debug_summarize_cargo提取test result:行与failures:段。这套完整日志落盘 摘要上屏的设计正是 Agent 上下文管理的核心——原始输出永不丢失只是延迟读取。unit.shVitest 封装细节scripts/debug/unit.sh 的参数解析值得注意第一个非 flag 位置参数被当作 pattern其余多余位置参数进入passthrough-t/-tname映射到 Vitest 的-t测试名过滤--watch会去掉run参数Vitest 默认即 watch 模式--之后的所有参数原样透传给vitest执行时cd到app/并以--config test/vitest.config.ts显式指定配置保证无论从哪个目录调用都命中同一份配置。e2e.sh一次一个 specscripts/debug/e2e.sh 约束更严格第一个位置参数是 spec 路径必填第二个是日志后缀未提供后缀时自动取basename $spec .spec.ts并将后缀中的非法字符替换为-${safe_suffix//[^[:alnum:]._-]/-}保证日志文件名安全。随后调用 app/scripts/e2e-run-spec.sh后者是一个薄 shim最终exec到统一会话运行器e2e-run-session.sh当前 E2E 全部运行在 Appium Chromium driver 上、附着 CEF 的 CDP 端口不再区分 Mac2 与 tauri-driver 路径——参见该脚本头部注释。rust.sh 与 logs.shscripts/debug/rust.sh 将第一个位置参数作为 test-filter 追加到scripts/test-rust-with-mock.sh之后同样支持--透传 cargo 参数。日志文件名为rust-timestamp.log。scripts/debug/logs.sh 是日志检索工具list按修改时间倒序列出最近 50 个文件last、精确文件名或前缀匹配均可解析到具体文件默认若文件超过 400 行只显示末尾 400 行并给出提示可用--head N/--tail N覆盖。解析失败无匹配时以非零码退出便于脚本判断。扩展三只活体审计子命令pnpm debug还暴露了三只基于 Node 的审计命令见 cli.sh它们面向真实运行环境做验证与测试运行器互补harness-cache-auditscripts/debug/harness-cache-audit.mjs通过 JSON-RPC默认http://127.0.0.1:7788/rpc可用OPENHUMAN_CORE_RPC_URL覆盖token 默认取OPENHUMAN_CORE_TOKEN或 workspace 下core.token跑真实 harness turn审计 transcript 的 token/缓存增量不打印 prompt、response 或凭据正文agent-prepare-context-audit强制每轮调用agent_prepare_context工具打印返回的上下文包含recommended_skills、scout 思考、所用 gathering 工具与 token/缓存/成本并可通过种入 canary 事实 transcript-recall 用例验证 scout 能检索历史会话--no-seed-transcript可跳过goals-live活测memory_goals流程list/add/edit/delete reflect 丰富化打印 goals_agent 的思考、工具调用与成本。这些命令体现了同一设计哲学原始数据进文件、摘要进上下文、凭据不进日志。实践建议Agent 工作流先跑pnpm debug unit 改动文件 -t 用例名失败时仅凭摘要定位需要完整栈时再pnpm debug logs last。日志管理target/debug-logs/可随时删除它只属于本封装不影响其他构建产物。排查底层差异若怀疑封装行为与直接运行不一致用--verbose观察被 tee 的原始命令输出或直接按上文表格执行底层脚本对比。环境前提E2E 需要项目既有的 WDIO/Appium 环境spec 位于app/test/e2e/配置见app/wdio.conf.tsrust 测试依赖 mock 后端脚本 scripts/test-rust-with-mock.shunit 依赖app/下已安装的 pnpm 依赖。小结scripts/debug/用不到百行 bash 就把 OpenHuman 的三种测试运行器统一成一套过滤 有界输出 可追溯日志的稳定接口同时保留底层工具的全部能力位置参数、-t、--watch、--透传、退出码透传。对于需要在上下文预算内高效定位失败的 AI Agent 与追求可复现调试的开发者这是一套开箱即用的模式——完整实现可在 scripts/debug/ 目录内逐文件阅读。【免费下载链接】openhumanOpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.项目地址: https://gitcode.com/GitHub_Trending/op/openhuman创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表