xiaoO框架插件开发指南:从零构建你的第一个安全审计插件
xiaoO框架插件开发指南从零构建你的第一个安全审计插件【免费下载链接】xiaoOThe xiaoO is an effecient and security AI agent framework.项目地址: https://gitcode.com/openeuler/xiaoO前往项目官网免费下载https://ar.openeuler.org/ar/xiaoO是一个高效且安全的AI代理框架它允许开发者通过插件扩展其功能。本文将带你从零开始构建一个安全审计插件帮助你监控和保护AI代理的操作安全。1. 了解xiaoO框架的插件架构在开始开发插件之前让我们先了解一下xiaoO框架的整体架构。xiaoO采用了模块化设计其中插件系统是其核心扩展机制。从架构图中可以看到插件系统通过Hook SDK与核心框架集成允许开发者在不同的执行点插入自定义逻辑。安全审计插件就是利用这一机制在工具执行前进行安全检查。2. 插件开发准备工作2.1 环境要求Python 3.8xiaoO框架源码通过git clone https://gitcode.com/openeuler/xiaoO获取基本的Python开发知识2.2 插件目录结构在开始编写代码之前我们需要创建一个符合xiaoO插件规范的目录结构。一个典型的安全审计插件目录结构如下plugins/ hookers/ audit_agent/ audit_policy_checker/ rules/ security_rules.json security/ __init__.py checker.py audit.py audit_settings.json.example install.sh plugin.json3. 编写插件描述文件插件描述文件plugin.json是插件的入口它定义了插件的ID、钩子点和执行命令。创建plugin.json文件内容如下[ { id: plugin_audit_tool_input, hook_point: *.Tool.*.pre, command: PYTHONPATHaudit_policy_checker audit_policy_checker/venv/bin/python3 audit.py } ]这个配置告诉xiaoO框架插件ID为plugin_audit_tool_input钩子点为所有工具执行前*.Tool.*.pre执行命令为运行我们的审计脚本audit.py4. 开发安全审计逻辑4.1 编写审计主程序创建audit.py文件这是插件的核心逻辑#!/usr/bin/env python3 import json import os import sys from datetime import datetime from audit_policy_checker.main import audit_action _LOG_PATH os.environ.get(AUDIT_LOG_PATH, /dev/null) def _log(tag: str, payload: object) - None: 将带时间戳的 tag JSON payload 追加写入日志文件。 try: line f[{datetime.now().isoformat(timespecmilliseconds)}] [{tag}] {json.dumps(payload, ensure_asciiFalse)}\n with open(_LOG_PATH, a, encodingutf-8) as f: f.write(line) except Exception as exc: print(f[run_audit] log write failed: {exc}, filesys.stderr) def _handle_hook_payload(data: dict) - int: 处理来自 xiaoO 的 plugin-hook payload返回 PreHookResult JSON。 call data.get(call, {}) tool_name: str call.get(tool_name, unknown_tool) tool_input call.get(input, {}) # 提取关键信息进行审计 if isinstance(tool_input, dict): if tool_name.lower() bash and command in tool_input: action_detail str(tool_input.get(command, )) elif tool_name.lower() in (file_write, file_edit, file_read) and file_path in tool_input: action_detail str(tool_input.get(file_path, )) else: action_detail json.dumps(tool_input, ensure_asciiFalse) else: action_detail str(tool_input) a_next { action_type: tool_name, action_detail: action_detail, } # 调用审计核心逻辑 result audit_action( session_iddata.get(session_id) or unknown-session, prompt_sessiondata.get(prompt_session, ), action_historydata.get(action_history, []), a_nexta_next, reasondata.get(reason, ), ) # 向 xiaoO 返回审计结果 if result[decision] Allow: hook_result {result: allow, reason: result.get(reason, )} else: reason_text result.get(violated_policy) or result.get(reason, ) hook_result {result: deny, reason: reason_text} _log( HOOK_OUTPUT, {tool_name: tool_name, hook_result: hook_result, audit_result: result}, ) print(json.dumps(hook_result, ensure_asciiFalse)) return 0 def main() - int: raw sys.stdin.read().strip() if not raw: err {error: stdin 为空请传入 JSON 字符串} _log(ERROR, err) print(json.dumps(err, ensure_asciiFalse)) return 2 try: data json.loads(raw) except json.JSONDecodeError as exc: err {error: fJSON 解析失败: {exc}} _log(ERROR, err) print(json.dumps(err, ensure_asciiFalse)) return 2 return _handle_hook_payload(data) if __name__ __main__: sys.exit(main())4.2 实现安全规则检查创建audit_policy_checker/security/checker.py文件实现具体的安全规则检查def check_security_policy(action_type, action_detail): 检查操作是否违反安全策略 # 示例规则禁止执行危险的bash命令 if action_type.lower() bash: dangerous_commands [rm -rf, sudo, chmod, chown] for cmd in dangerous_commands: if cmd in action_detail: return { decision: Deny, violated_policy: 禁止执行危险命令, reason: f检测到危险命令: {cmd} } # 示例规则禁止访问敏感文件路径 if action_type.lower() in (file_write, file_edit, file_read): sensitive_paths [/etc/passwd, /root/, /proc/] for path in sensitive_paths: if action_detail.startswith(path): return { decision: Deny, violated_policy: 禁止访问敏感文件路径, reason: f检测到访问敏感路径: {path} } # 所有检查通过 return { decision: Allow, reason: 操作符合安全策略 }5. 创建插件安装脚本为了方便用户安装插件我们需要创建一个安装脚本install.sh#!/bin/bash set -e SCRIPT_DIR$(cd $(dirname ${BASH_SOURCE[0]}) /dev/null pwd) CHECKER_DIR$SCRIPT_DIR/audit_policy_checker # 解析参数 ENABLE_LLM # 空未指定true启用false禁用 while [[ $# -gt 0 ]]; do case $1 in --enable-llm) ENABLE_LLMtrue shift ;; --disable-llm) ENABLE_LLMfalse shift ;; --help|-h) echo Usage: $0 [--enable-llm|--disable-llm] echo echo Options: echo --enable-llm 启用LLM分析以进行更全面的安全检查 echo --disable-llm 禁用LLM分析仅使用启发式和逻辑规则 echo --help, -h 显示帮助信息 exit 0 ;; *) echo 未知选项: $1 exit 1 ;; esac done # 创建并激活虚拟环境 cd $CHECKER_DIR if [ ! -d venv ]; then python3 -m venv venv fi source venv/bin/activate pip install . # 生成配置文件 SETTINGS_FILE$SCRIPT_DIR/audit_settings.json EXAMPLE_FILE$SCRIPT_DIR/audit_settings.json.example if [ ! -f $SETTINGS_FILE ] [ -f $EXAMPLE_FILE ]; then cp $EXAMPLE_FILE $SETTINGS_FILE echo 已从示例创建 audit_settings.json fi echo audit_agent 插件安装完成6. 测试和安装插件6.1 安装插件cd plugins/hookers/audit_agent chmod x install.sh ./install.sh6.2 测试插件功能启动xiaoO框架并执行一些可能触发安全规则的操作例如尝试执行rm -rf /tmp/test命令观察插件是否会阻止该操作。7. 插件高级功能7.1 集成LLM进行智能审计通过--enable-llm选项可以启用LLM分析功能使插件能够利用AI模型进行更复杂的安全判断./install.sh --enable-llm7.2 自定义安全规则你可以通过修改audit_policy_checker/rules/security_rules.json文件来自定义安全规则{ dangerous_commands: [rm -rf, sudo, chmod, chown, dd], sensitive_paths: [/etc/passwd, /root/, /proc/, /sys/], max_file_size: 10485760 }8. 插件开发最佳实践8.1 性能优化避免在审计逻辑中执行耗时操作对频繁访问的数据进行缓存使用异步处理提高并发性能8.2 安全性考虑对输入数据进行严格验证避免在日志中记录敏感信息定期更新安全规则以应对新威胁8.3 可维护性使用清晰的代码注释采用模块化设计编写详细的插件文档9. 总结通过本文的指南你已经学会了如何在xiaoO框架中开发一个安全审计插件。这个插件能够监控AI代理的操作防止执行危险命令和访问敏感资源。你可以根据实际需求扩展插件功能添加更多自定义安全规则。插件开发是扩展xiaoO框架功能的强大方式希望本文能帮助你入门插件开发并激发你创建更多有用的插件。如果你有任何问题或建议欢迎参与到xiaoO项目的社区讨论中。官方文档docs/plugins.md 插件开发示例plugins/hookers/audit_agent【免费下载链接】xiaoOThe xiaoO is an effecient and security AI agent framework.项目地址: https://gitcode.com/openeuler/xiaoO创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

witty-diagnosis-agent实战:5个常见系统故障诊断案例详解

witty-diagnosis-agent实战:5个常见系统故障诊断案例详解

witty-diagnosis-agent实战:5个常见系统故障诊断案例详解 【免费下载链接】witty-diagnosis-agent The witty-diagnosis-agent is an intelligent diagnostic tool that provides automated analysis and troubleshooting for complex system issues. 项目地址: h…

2026/6/27 21:37:09阅读更多 →
UBS-IO:基于UB超级集群的革命性全局数据读写缓存系统详解

UBS-IO:基于UB超级集群的革命性全局数据读写缓存系统详解

UBS-IO:基于UB超级集群的革命性全局数据读写缓存系统详解 【免费下载链接】ubs-io Ubs-io provides high-level I/O services for application-affinity global data read/write caching systems based on UB superpods. 项目地址: https://gitcode.com/openeuler…

2026/6/27 21:37:09阅读更多 →
openYuanrong functionsystem性能优化指南:提升集群资源利用率的7个技巧

openYuanrong functionsystem性能优化指南:提升集群资源利用率的7个技巧

openYuanrong functionsystem性能优化指南:提升集群资源利用率的7个技巧 【免费下载链接】yuanrong-functionsystem openYuanrong functionsystem:openYuanrong 函数系统提供大规模分布式动态调度,支持函数实例极速弹性扩缩和跨节点迁移&…

2026/6/27 21:37:09阅读更多 →
SoloEngine:Loop Engineering的最佳实践,从零搭建你的第一个自主AI循环

SoloEngine:Loop Engineering的最佳实践,从零搭建你的第一个自主AI循环

SoloEngine:Loop Engineering的最佳实践,从零搭建你的第一个自主AI循环 2026年6月,Loop Engineering席卷了整个AI工程圈。 Peter Steinberger那条650万浏览的推文,Boris Cherny那句“我不再提示Claude了,我写Loop”&…

2026/6/27 23:17:22阅读更多 →
填充提示攻击:原理、技术分析

填充提示攻击:原理、技术分析

简介 填充提示攻击是一种针对使用 CBC 模式的分组密码(如 AES、DES)的侧信道攻击。它于 2002 年由 Serge Vaudenay 首次提出,其威力在于:即使攻击者不知道加密密钥,只要服务器对密文解密后返回“填充是否正确”的反馈…

2026/6/27 23:17:22阅读更多 →
统好AI:以预算与报价工具完善售前风控,提速企业签约转化

统好AI:以预算与报价工具完善售前风控,提速企业签约转化

一、制造业售前全链路普遍存在的管理痛点在工业、模切、装备制造等定制化行业,售前询价、方案报价、商机跟进是连接市场与生产的核心环节,多数企业长期依赖线下表格、人工核算,形成多重管理堵点。报价成本核算无统一标准,利润风险…

2026/6/27 23:17:22阅读更多 →
【openstack】网页端浮动ip创建一直报错Error: 无法分配浮动IP

【openstack】网页端浮动ip创建一直报错Error: 无法分配浮动IP

切换成myuser。之前配置过,且我的在myuser下创建的cirros_2.rootcontroller:~#source /openstack/demo-openrc这个时候查看是空的rootcontroller:~# openstack floating ip list输入命令创建rootcontroller:~# openstack floating ip create ex_net ---------------…

2026/6/27 23:17:22阅读更多 →
从 Tomcat 到 Open Liberty:为什么你的下一个 Java 项目值得换一种选择

从 Tomcat 到 Open Liberty:为什么你的下一个 Java 项目值得换一种选择

当你的项目从“能跑就行”变成“稳定、高效、可扩展”时,选一个合适的应用服务器会让后面的路好走很多。 引言 在 Java 后端开发中,应用服务器的选型是个绕不开的问题。大多数 Java 开发者起步时都会选择 Tomcat,它简单、轻量、上手快。但随…

2026/6/27 23:17:22阅读更多 →
beginner_Stable Diffusion 文生图原理与实践:从零生成第一张 AI 图像

beginner_Stable Diffusion 文生图原理与实践:从零生成第一张 AI 图像

Stable Diffusion 文生图原理与实践:从零生成第一张 AI 图像 📌 阅读本文你将收获 用通俗类比理解扩散模型的核心原理(正向加噪 → 反向去噪) 掌握 Stable Diffusion WebUI 的安装、模型下载和基础操作 学会 Prompt 编写技巧和关键参数(CFG Scale、Sampler、Steps)调优…

2026/6/27 23:12:21阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/27 11:20:40阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/27 5:46:02阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/27 11:20:39阅读更多 →
10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声&#xff1a;Retrieval-based-Voice-Conversion-WebUI完整指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrie…

2026/6/27 0:04:03阅读更多 →
Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider&#xff1a;3分钟AI智能分层&#xff0c;彻底告别手动抠图时代 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 还在为复杂的图像分层工作烦…

2026/6/27 0:04:03阅读更多 →
Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

1. 项目概述&#xff1a;为什么X-Frame-Options是Web安全的“防盗门”&#xff1f;最近在排查一个老项目的安全审计报告时&#xff0c;又被提到了“点击劫持”风险&#xff0c;矛头直指缺失的X-Frame-Options响应头。这已经不是第一次了&#xff0c;很多开发团队&#xff0c;尤…

2026/6/27 0:04:03阅读更多 →