哨兵 — 输入端安全审查工具

⚠️ 此项目已搁置。
哨兵是一个零额外依赖的Python输入安全审查模块。所有外部数据进入系统前先过哨兵——规则层拦截明确危险内容,结构异常检测捕获隐蔽注入,可疑信号走LLM语义复核。干净内容零API成本直接放行。
为什么做
读李博杰《深入理解AI Agent》时看到上下文注入面——Skill、Memory、状态栏都是高信任区域,外部数据一旦污染就会以"自己人"身份执行。我的cron收件箱在读外部文件、project-analyzer在下载GitHub项目——口子已经开了,只是还没人打。与其等被打了再补,不如在数据流入的咽喉位置设卡。
三层组合防御
- 规则匹配(零成本):6条正则规则拦截已知注入模式——指令劫持、角色篡改、命令执行、数据外传、输出劫持、CSS隐藏文本。命中dangerous直接阻断。
- 结构异常检测(零成本):人称突变+指令动词密度统计,捕获不依赖关键词的注入。
- LLM语义审查(仅可疑时触发):指令前置隔离prompt,DeepSeek做危险确认。无信号内容跳过,不烧API。
输出包装
safe/suspicious内容自动加警告前缀+来源标签,随内容一起流入下游。下游模块可从标签还原审查历史,高风险操作前检查来源级别。
设计决策
safe_read()作为外部数据的唯一推荐入口——任何模块读外部文件走safe_read而非裸open(),审查自动发生,不依赖开发者"记得调"。
成本策略:绝大多数外部内容(正常README、配置文件等)规则层和结构层双通过,不调LLM,零成本。只有触发可疑信号才走API。
开源:https://github.com/AnHuoZhe/Sentinel
