拓冰建站拓冰建站
首页 / 资讯中心 / 正文

PentAGI 用 ftester 排查卡住的 flow:describe 定位子任务并单独调用 agent 函数

PentAGI 用 ftester 排查卡住的 flowdescribe 定位子任务并单独调用 agent 函数【免费下载链接】pentagiFully autonomous AI Agents system capable of performing complex penetration testing tasks项目地址: https://gitcode.com/GitHub_Trending/pe/pentagiPentAGI 的一个 flow 运行到一半卡住、长时间没有新消息或任务状态不再推进时README 给出的排查路径是先在 UI 中暂停 flow再用后端自带的ftester工具执行describe查看 flow 下每个 task 和 subtask 的状态找到卡住的具体位置然后用同一组 task/subtask ID 单独调用对应的 agent 函数复现问题。ftester支持直接调用单个系统函数或 AI agent 组件并精确指定执行上下文flow、task、subtask不需要重新跑整个 flow。本文只覆盖这条卡住 → 定位 → 单独调用的排查路径适用环境是 PentAGI 的 Go 源码目录或已用 Docker 部署的 PentAGI 实例。准备条件一个已经存在且卡住的 flow记下它的 Flow ID下文命令中的123、456、789均为 README 示例值全部替换成你实际的 flow / task / subtask ID。源码方式进入backend目录通过go run cmd/ftester/main.go运行源码位于 backend/cmd/ftester/main.go。Docker 方式PentAGI 容器正在运行直接在容器内执行/opt/pentagi/bin/ftester。ftester 全局参数来自 README.md 的 Command-line Options 一节参数说明-env path环境变量文件路径默认.env-provider type使用的 provider默认custom可选openai、anthropic、gemini、bedrock、ollama、deepseek、glm、kimi、qwen、minimax、custom-flow idFlow ID0默认表示 mock 模式使用内置 mock 而不连接真实 flow-user idUser IDflag 说明中1是默认 admin 用户-task idTask ID用于限定 agent 上下文可选-subtask idSubtask ID用于限定 agent 上下文可选函数自身的参数写在函数名之后格式为-name value。第一步用 describe 定位卡住的 task 和 subtask排查前先按 README Debugging Stuck AI Flows 一节的要求通过 UI 暂停该 flow避免一边排查一边继续执行。describe是 ftester 内置函数用于展示 flow、task、subtask 的信息。按范围从小到大依次是# 列出系统中的所有 flowflowID0 时 describe 走这个分支 cd backend go run cmd/ftester/main.go describe所有 flow 会按 ID、Title、Status 输出确认目标 flow 后带上-flow查看它下面的全部 task 和 subtask# 查看指定 flow 的所有 task 和 subtask 及各自状态 go run cmd/ftester/main.go -flow 123 describe输出分为 Flow Information 和 Tasks for Flow 两段flow 信息包含 Title、Status、Language、Model每个 task 和 subtask 都带 ID、Title、Status。再追加-verbose可以看到完整的 Input/Result/Description 内容用来判断卡住的那一步到底做到哪里# 输出完整描述和结果 go run cmd/ftester/main.go -flow 123 describe -verbose如果已经知道疑似卡住的 task用-task/-subtask缩小范围输出只会包含该 task 及其 subtask或仅该 subtask# 查看指定 task 及其 subtask go run cmd/ftester/main.go -flow 123 -task 456 describe # 只看某个 subtask会同时打印所属 flow 和 task 信息 go run cmd/ftester/main.go -flow 123 -task 456 -subtask 789 describe两个实现细节可以帮你排除误报用-subtask查询时ftester 会校验该 subtask 确实属于-flow指定的 flow不属于会直接报错subtask N does not belong to flow M见 tester.gotask/subtask 列表为空时会提示No tasks found for this flow或No subtasks found for Task N说明该 flow 根本没拆出任务和执行中卡住是两种情况。第二步用同一组 ID 单独调用 agent 函数定位到卡住的 task/subtask 后README 给出的做法是Directly invoke the agent function with the same task/subtask IDs——带上相同的-flow、-task、-subtask参数直接调用出问题的 agent 函数。README 中的示例123/456/789为示例 IDFind vulnerabilities为示例消息# 在特定 task/subtask 上下文中测试 AI agent go run cmd/ftester/main.go -flow 123 -task 456 -subtask 789 pentester -message Find vulnerabilitiesREADME 列出的 AI Agent 函数有advice获取 AI agent 的专家建议、coder代码生成或修改、maintenance系统维护任务、memorist向量库存取组织、pentester安全测试与漏洞分析、search跨多个来源的复杂搜索。根据卡住环节对应的 agent 选函数例如卡在漏洞分析步骤就调pentester卡在代码相关步骤调coder。不知道某个函数接受哪些参数时先用 help 模式查看go run cmd/ftester/main.go pentester -help go run cmd/ftester/main.go describe -help不带任何参数运行go run cmd/ftester/main.go会列出当前所有可用函数只给函数名不给参数如go run cmd/ftester/main.go browser则进入交互式填参模式逐项提示输入。注意两个执行前提-flow必须指向真实存在的 flow。ftester 会用该 ID 加载 flow 记录、其主容器、flow 自己配置的 functions 白名单和对应的 flow provider见 initFlowProviderController并为其建立 Langfuse 观测链-flow 0则是 mock 模式不连接真实 flow只适合验证函数本身不能用于排查真实卡住的 flow。需要容器终端环境的函数terminal、file以及所有 agent 类函数在执行前会先对 flow 的 executor 做 prepare/release见needsTeminalPrepare所以目标 flow 的容器环境需要可用。验证执行结果终端输出ftester 使用颜色编码输出——绿色[SUCCESS]表示操作成功红色[ERROR]表示错误黄色[WARNING]表示警告黄色[MOCK]表示当前在 mock 模式。JSON 和 Markdown 响应会自动格式化。卡住原因通常直接体现在 agent 函数返回的错误或输出内容里。Langfuseftester 发出的所有函数调用都会记入 Langfuse捕获完整的 agent 交互链提示、响应、函数调用和 OpenTelemetry。README 给出的访问方式是 Langfuse UI 查看 agent traces通常在http://localhost:4000、Grafana 面板通常在http://localhost:3000。单独调用和正常执行共用 flow 的 trace 上下文可以把这次复现和卡住前的调用串起来看。按 README 的流程检查完详细输出后Resume the flow or manually intervene as needed——恢复 flow 继续跑或根据复现出的问题手动干预。在 Docker 部署中直接排查如果 PentAGI 跑在 Docker 里、本机没有开发环境README 提供的替代路径是在容器内执行 ftester# 在运行的 PentAGI 容器内运行 ftester docker exec -it pentagi /opt/pentagi/bin/ftester [arguments] # 示例容器内查看 flow 123 的任务情况123 替换为实际 Flow ID docker exec -it pentagi /opt/pentagi/bin/ftester -flow 123 describe命令形态与源码方式完全一致只是入口换成容器内的/opt/pentagi/bin/ftester。边界与限制describe只有-verbose一个可选参数传其他参数会报unknown argument for describe函数参数格式必须是-name value不认其他前缀。mock 模式-flow 0和真实 flow 模式是两条不同的路径前者用内置 mock输出带[MOCK]标记后者加载真实 flow 的容器、provider 与函数白名单。排查生产上卡住的 flow 时必须用真实-flow。本文不涉及ctester用于测试 LLM 模型能力本身与 Langfuse 之外的观测细节提示词层面的复现和迭代可参考 backend/docs/prompt_engineering_pentagi.md其中说明 ftester 用于在真实 Flow/Task/SubTask 上下文中做 agent 函数与提示行为的深度测试。【免费下载链接】pentagiFully autonomous AI Agents system capable of performing complex penetration testing tasks项目地址: https://gitcode.com/GitHub_Trending/pe/pentagi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门