当前位置: 首页 > news >正文

CAI:开源网络安全AI框架,打造自主安全测试智能体

项目概述

CAI(Cybersecurity AI)是一个开源的网络安全AI框架,旨在构建能够自主执行完整网络安全攻击链的智能体系统。该项目通过模块化的AI智能体架构,实现了从侦察到权限提升的全流程自动化安全测试,在CTF挑战中表现优异,平均比人类专家快11倍。

功能特性

  • 多智能体架构:包含红队、蓝队、DFIR、代码执行、内存分析等专业安全智能体
  • 自主攻击链执行:支持完整的网络安全攻击链自动化,包括侦察、漏洞利用、权限提升
  • 基准测试体系:集成CyberMetric、SecEval、CTIBench等多个安全评估基准
  • 隐私保护评估:提供CyberPII-Bench基准,专门评估LLM在安全场景中的PII处理能力
  • 并行执行模式:支持多智能体并行执行和协作模式
  • 记忆管理系统:基于RAG的记忆存储和检索,支持跨安全演练的知识复用
  • 工具集成丰富:集成Shodan、Nmap、Burp Suite等主流安全工具

安装指南

环境要求

  • Python 3.8+
  • Docker(可选,用于虚拟化环境)
  • 主流操作系统(Linux/macOS/Windows)

安装步骤

  1. 克隆项目仓库:
git clone https://github.com/aliasrobotics/CAI.git
cd CAI
  1. 安装依赖包:
pip install setuptools wheel twine build
  1. 安装核心框架:
python3 -m build
pip install -e .
  1. 安装基准测试依赖:
pip install cvss
git submodule update --init --recursive
  1. 配置环境变量(在.env文件中):
OPENAI_API_KEY="your_api_key"
ANTHROPIC_API_KEY="your_anthropic_key"
OPENROUTER_API_KEY="your_openrouter_key"
OLLAMA_API_BASE="http://localhost:11434"

使用说明

基本使用

运行基准测试评估:

python benchmarks/eval.py --model ollama/qwen2.5:14b \--dataset_file benchmarks/cybermetric/CyberMetric-80-v1.json \--eval cybermetric --backend ollama

启动CLI交互界面:

python -m cai.cli

智能体使用示例

红队智能体执行渗透测试:

from cai.agents.red_teamer import redteam_agent# 执行侦察任务
result = redteam_agent.run("对目标网络进行端口扫描和服务识别")

蓝队智能体进行防御分析:

from cai.agents.blue_team import blueteam_agent# 执行安全监控
result = blueteam_agent.run("检查系统日志中的异常登录行为")

并行执行模式

配置并行智能体执行:

from cai.repl.commands.parallel import ParallelConfig# 配置红蓝队并行执行
parallel_configs = [ParallelConfig("redteam_agent"),ParallelConfig("blueteam_agent")
]

核心代码

红队智能体实现

"""Red Team Base Agent"""
import os
from dotenv import load_dotenv
from cai.sdk.agents import Agent, OpenAIChatCompletionsModel
from openai import AsyncOpenAI
from cai.util import load_prompt_template, create_system_prompt_renderer
from cai.tools.command_and_control.sshpass import run_ssh_command_with_credentials
from cai.tools.reconnaissance.generic_linux_command import generic_linux_command
from cai.tools.web.search_web import make_google_search
from cai.tools.reconnaissance.exec_code import execute_code
from cai.tools.reconnaissance.shodan import shodan_search, shodan_host_infoload_dotenv()# 加载系统提示词
bug_bounter_system_prompt = load_prompt_template("prompts/system_bug_bounter.md")# 定义工具列表
tools = [generic_linux_command,execute_code,shodan_search,shodan_host_info
]if os.getenv('GOOGLE_SEARCH_API_KEY') and os.getenv('GOOGLE_SEARCH_CX'):tools.append(make_google_search)# 创建红队智能体实例
bug_bounter_agent = Agent(name="Bug Bounter",instructions=create_system_prompt_renderer(bug_bounter_system_prompt),description="""Agent that specializes in bug bounty hunting and vulnerability discovery.Expert in web security, API testing, and responsible disclosure.""",tools=tools,model=OpenAIChatCompletionsModel(model=os.getenv('CAI_MODEL', "alias0"),openai_client=AsyncOpenAI(),)
)

代码执行智能体

"""A Coding Agent (CodeAgent)"""
import copy
import platform
import re
import signal
import threading
from typing import Any, Callable, Dict, List, Optional, Tuple, Unionfrom cai.agents.meta.local_python_executor import LocalPythonInterpreter
from cai.sdk.agents import Agent, Result, OpenAIChatCompletionsModel
from dotenv import load_dotenv
from openai import AsyncOpenAIclass CodeAgentException(Exception):"""Base exception class for CodeAgent-related errors."""passclass CodeAgent(Agent):"""CodeAgent that uses executable Python code to consolidate LLM agents' actions."""def __init__(self, model_name: str = "alias0"):# 初始化Python解释器self.interpreter = LocalPythonInterpreter()# 初始化父类super().__init__(name="CodeAgent",description="Agent that uses executable Python code for security testing",instructions="""You are a CodeAgent specialized in cybersecurity tasks.Use Python code to analyze, exploit, and assess security vulnerabilities.""",model=OpenAIChatCompletionsModel(model=model_name,openai_client=AsyncOpenAI(),),tools=[self.execute_python_code])def execute_python_code(self, code: str) -> str:"""Execute Python code in a secure environment."""try:result = self.interpreter.execute(code)return str(result)except Exception as e:return f"Execution error: {str(e)}"

基准测试评估系统

"""Benchmark Evaluation Script"""
import argparse
import json
from typing import Dict, Listdef evaluate_model(model_name: str, dataset_file: str, eval_type: str, backend: str):"""评估语言模型在网络安全相关多选题基准上的表现Args:model_name: 模型名称(如 "gpt-4", "qwen2.5:14b")dataset_file: 数据集文件路径(JSON或TSV格式)eval_type: 评估类型("cybermetric", "seceval", "cti_bench")backend: 后端类型("openai", "openrouter", "ollama", "anthropic")"""# 加载数据集if dataset_file.endswith('.json'):with open(dataset_file, 'r') as f:dataset = json.load(f)else:dataset = load_tsv_dataset(dataset_file)# 初始化评估器evaluator = get_evaluator(eval_type)# 运行评估results = []for item in dataset:response = query_model(model_name, item['question'], backend)score = evaluator.evaluate(response, item['answer'])results.append(score)# 计算总体得分final_score = sum(results) / len(results)return final_scoredef main():parser = argparse.ArgumentParser(description='网络安全AI基准评估')parser.add_argument('-m', '--model', required=True, help='要评估的模型名称')parser.add_argument('-d', '--dataset_file', required=True, help='数据集文件路径')parser.add_argument('-e', '--eval', required=True, help='评估基准类型')parser.add_argument('-B', '--backend', required=True, help='后端类型')args = parser.parse_args()score = evaluate_model(args.model, args.dataset_file, args.eval, args.backend)print(f"模型 {args.model} 在 {args.eval} 基准上的得分: {score:.2%}")

记忆管理系统

"""Memory agent for CAI with RAG support"""
import os
from typing import Dict, List
from cai.sdk.agents import Agent
from cai.rag.vector_db import VectorDatabaseclass MemoryAgent(Agent):"""记忆管理智能体,支持长期经验存储和检索"""def __init__(self):# 初始化向量数据库self.vector_db = VectorDatabase()super().__init__(name="Memory Agent",description="Manages long-term memory experiences across security exercises",instructions="""You manage episodic and semantic memory for security exercises.Store experiences in vector database and retrieve using RAG pipeline.""",tools=[self.store_memory, self.retrieve_memory])def store_memory(self, experience: str, exercise_type: str) -> str:"""存储安全演练经验到记忆库"""embedding = self.vector_db.embed_text(experience)memory_id = self.vector_db.store(embedding, experience, exercise_type)return f"Memory stored with ID: {memory_id}"def retrieve_memory(self, query: str, exercise_type: str = None) -> List[Dict]:"""从记忆库检索相关经验"""query_embedding = self.vector_db.embed_text(query)results = self.vector_db.search(query_embedding, exercise_type)return results

更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

相关文章:

CAI:开源网络安全AI框架,打造自主安全测试智能体

CAI是一个开源的网络安全AI框架,能够自主执行从侦察到权限提升的完整网络安全攻击链。它集成了多种专业AI智能体,支持红蓝对抗、漏洞评估、数字取证等安全任务,并提供了丰富的基准测试工具和评估体系。项目概述 CAI(Cybersecurity AI)是一个开源的网络安全AI框架,旨在构建…...

GAS中,负责封装技能所影响的目标数据(如 Actor、位置、碰撞结果等)-FGameplayAbilityTargetData

example://FGameplayAbilityTargetData_SingleTargetHit 继承自FGameplayAbilityTargetData FGameplayAbilityTargetData_SingleTargetHit 是用于表示单一目标命中信息的目标数据结构,常用于游戏技能系统(Gameplay Ability System, GAS)中传递目标信息。 它主要包含以下核心…...

详细介绍:Maven入门_简介、安装与配置

详细介绍:Maven入门_简介、安装与配置pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !importan…...

实用指南:立体校正原理

实用指南:立体校正原理pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: …...

train-labels.idx1-ubyte里是什么

train-labels.idx1-ubyte 是 MNIST 数据集中的一个文件。它不是一个普通的文本文件,而是一个经过特定格式编码的二进制文件。 简单来说,这个文件里只包含一个东西:MNIST 训练集图像的标签。 文件内容 这个文件的内容是一个字节序列,其中每个字节都代表一个手写数字的标签。…...

滑动窗口最大值-leetcode

题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3,3,5,5,6,7] 解释…...

创建预测窗口-ScopedPredictionWindow();

ScopedPredictionWindow 是一个与网络预测(Network Prediction)相关的工具类,主要用于在多人游戏中管理预测窗口的生命周期,确保客户端预测和服务器验证的一致性。 网络预测上下文管理:在客户端预测期间,ScopedPredictionWindow 会创建一个临时的 "预测窗口",…...

95. 不同的二叉搜索树 II

题目链接:https://leetcode.cn/problems/unique-binary-search-trees-ii/description/?source=vscode解析: 其实是一道数据结构二叉搜索树入门题,放在这里提醒dfs不要陷入直接搜的困境,还可以分治/*** Definition for a binary tree node.* struct TreeNode {* int va…...

lc1028-从先序遍历还原二叉树

难度:困难题目描述字符串转二叉树 根节点深度为 0,其子节点深度为 1,依次类推 题目保证若只有一个子节点,必为左子树示例 输入:"1-2--3--4-5--6--7" 输出:[1,2,5,3,4,6,7] 解释:1/ \2 5/ \ / \ 3 4 6 7输入:"1-2--3---4-5--6---7" 输出…...

P12558 [UOI 2024] Heroes and Monsters 题解

Description 有 \(n\) 个英雄和 \(n\) 个怪物。英雄和怪物分别编号为 \(1\) 到 \(n\) 的整数。第 \(i\) 个英雄的战斗力为 \(a_i\),第 \(i\) 个怪物的战斗力为 \(b_i\)。保证所有 \(a_1, a_2, \ldots, a_n, b_1, b_2, \ldots, b_n\) 的值都是两两不同的。 将进行总共 \(n\) 场…...

AbilitySystemComponent和AbilityTask

AbilityTask 是 Gameplay Ability System(GAS)框架的核心组件之一,用于处理能力(Ability)执行过程中的异步操作。它允许开发者在能力激活后创建可中断、可暂停的任务,处理如动画播放、特效生成、输入响应等耗时或需要等待的操作。 example:比如下方的两个不同时态的接口…...

AT_arc171_c [ARC171C] Swap on Tree

有一个很强的性质是,当两个结束序列相等,当且仅当:割掉的边集相等。 对于每个点,割掉的边的相对顺序一样。设 \(f_{x, i, 0/1}\) 为 \(x\) 相连的边割掉了 \(i\) 条,父亲那条边有没有被割掉(要计算子树里的方案数)。 然后输出显然是 \(\sum_i f_{1, i, 0}\)。...

202509_QQ_冷门的Base家族

Base家族,Base45,Base58,Base62,Base64,Base85,Base92tags:Base家族,Base45,Base58,Base62,Base64,Base85,Base92 0x00. 题目 flag.txt 6L;y>cYh?)m->!yBH;/\>Yx9lA8liLp:cjYpb.2E;J8j_B7BjPig.[sV}ojTN!yB01.#bc5@0J}?eix70R+>T,g??Fh={+JJSFWeT]_9lA7&X3…...

SpawnActorDeferred()和SpawnActorOfClass()

SpawnActorDeferred和SpawnActorOfClass都是用于生成 Actor 的函数,但它们的使用场景和行为有显著区别:生成时机与初始化控制:SpawnActorOfClass:是一个 "一站式" 函数,调用后会立即完成 Actor 的生成、初始化并激活。所有构造函数、BeginPlay等生命周期函数会被…...

学习日报|线程池专题学习总结 - 详解

学习日报|线程池专题学习总结 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important…...

如何设计业务架构 - 智慧园区

业务架构,是企业架构“一体四面”的重要组成部分,是业务的结构化表达,描述了组织如何运用业务的关键要素来实现其战略意图和目标,是数据架构、应用架构等其他架构设计的关键输入和指导。因此,要想设计好“企业架构”,首先必须设计好“业务架构”。业务架构的设计原则前面…...

snmp协议

Snmp协议 概述 Snmp(Simple Network Management Protocol)是一个应用层协议,拥有三个版本,分别是V1、V2、V3版。 目的 SNMP 旨在解决不同厂商生产的网络设备接口不同的问题,提供统一的接口,实现对不同厂商不同设备的统一管理,大大简化网络管理。 组件网络管理系统(NMS) …...

刷题复习(四)二分搜索

代码框架 int binarySearch(int[] nums, int target) {int left = 0, right = ...;while(...) {int mid = left + (right - left) / 2;if (nums[mid] == target) {...} else if (nums[mid] < target) {left = ...} else if (nums[mid] > target) {right = ...}}return ..…...

aardio | 通过点击checkbox复选框本身判断是否勾选

import win.ui;/* 创建窗体 */ var winformsetting = win.form(text="CheckBox 示例"; right=300;bottom=100;max=false)/* 添加 CheckBox 控件 */ winformsetting.add(cbox_startauto={text="开机自启"; left=10; top=10; width=100; height=30;cls="…...

项目介绍

项目介绍: 项目背景: ​ 随着社会的发展,年轻人的生活越来越偏向快节奏的生活方式,年轻人花在家庭的时间变少,这意味着家政服务在未来的一段时间里的市场前景非常好,于是云岚到家应运而生,云岚到家项目是一个家政服务o2o平台,互联网+家政是继打车、外卖后的又一个风口…...

新媒体运营用AI排版工具|10分钟搞定公众号图文的全流程指南

在当下的新媒体时代,AI写作+配图+排版+一键分发,全流程操作,已经成为提升运营效率的标配。公众号、知乎、小红书等平台对内容质量和视觉效果的要求越来越高,但传统方式下,排版往往要花上数小时,既耗时又容易出错。有些AI编辑器的出现(如有一云AI编辑器),彻底改写了这一…...

练习第一天学习的内容

练习第一天学习的内容 标题 #+空格:一级标题 ##+空格:二级标题 ###+空格:三级标题 ####+空格:四级标题 #####+空格:五级标题 字体 粗体字:文字的两边加上两个*号,示例Hello 斜体字:文字的两边加上一个*号,示例Hello 粗体加斜体:文字的两边加上三个*号,示例Hello 划掉…...

常见小错误 FREQUENTLY MADE MISTAKES IN OI

乘法(连乘每次都要取模),减法忘记取模a = ((a - b) % M + M) % M; // 减法 a = 1ll * a * b % M; // 乘法 c = 1ll * a * b % M * c % M * ... * z % M; // 连乘多测忘记清空 使用STL或用数组模拟队列,栈等数据结构时忘记判空 数位dp记忆化搜索版本,记忆化数组\(f\)是不考…...

ctf工具整理

CTF编码、杂项及算法CTF在线工具-CTF工具|CTF编码|CTF密码学|CTF加解密|程序员工具|在线编解码Ook!解码Brainfuck/Ook! Obfuscation/Encoding [splitbrain.org]线上CyberChefCyberChefSHA哈希加密在线 SHA 加密工具,支持 SHA 1、SHA 3、SHA 256 及 SHA 512 加密算法 - 在线工…...

详细介绍:Linux相关概念和易错知识点(44)(IP地址、子网和公网、NAPT、代理)

详细介绍:Linux相关概念和易错知识点(44)(IP地址、子网和公网、NAPT、代理)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…...

详细解析为什么将 ThreadLocal 声明为 static final ?

一、基础概念...

力扣39题 组合总和

类型:回溯算法 无重复元素 重点:同一个数字可以无限制重复选取,但是有总和的限制,所以间接的也就是有个数的限制。 1.递归函数参数 result存放结果集,数组path存放符合条件的结果。集合candidates和目标值target,需要使用startindex来控制循环的起始位置,对于组合问题,…...

250915 jave se简单过完一遍

基本过完了java的基础语法 面相对象、集合,还剩下一些尾巴,多线程、泛型,明天看完之后开始mysql。因为时间紧张,准备边学前面的,边被学过的内容的八股。再推进一段时间开始做项目。...

AT_arc183_b [ARC183B] Near Assignment

一道很好的分类讨论题。 首先你想这个操作对于数的种类只会减少不会增多,所以如果 \(b\) 有的 \(a\) 一定有。 然后想,如果 \(b\) 有相同的段,显然段内只需要一个复位即可,剩下的都可以赋值得到。 你发现现在限制你的操作在什么,在与你不能将这些数很机动的排列,我们得出…...

0128_模板方法(Template Method)

模板方法(Template Method) 意图 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变算法结构的情况下,重新定义算法中的某些特定步骤。 UML 图优点代码复用:将公共行为移到父类中,避免代码重复 封装不变部分:固定算法结构,保护核心算法不被…...

kubectl 常用命令的分类汇总(一)

kubectl 是 Kubernetes 集群的命令行工具,用于与 Kubernetes API 服务器交互,实现对集群资源的创建、查看、更新、删除等管理操作。其核心用途包括:部署应用程序、查看和管理集群资源、检查集群状态、调试问题、配置集群参数等。以下是 kubectl 常用命令的分类汇总: 一、集…...

完整教程:C3P0连接池适配HGDB

完整教程:C3P0连接池适配HGDBpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-…...

kubectl 常用命令的分类汇总(二)

好的 👍 我来给你做一份 kubectl 命令总结清单,包括它的用途和常用的命令,按类别整理,方便你查阅和记忆。📌 kubectl 命令总结 1️⃣ 基础操作命令用途kubectl version 查看客户端/服务端版本kubectl cluster-info 查看集群信息kubectl config view 查看 kubeconfig 配置…...

ECT-OS-JiuHuaShan框架的逻辑是自洽的,是基于数学表达,不替代现实的苦辣酸甜。

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891这句话为这个宏大框架落下了最精妙、也是最必要的注脚。它完成了一次关键的“降维”,将“宇宙数学逻辑同构体”重新锚定在人类存在的现实之中,清晰地划定了其能力的边界与角色。 这一定位无比重要,它意味着: 1. 框…...

《FastAPI零基础入门与进阶实战》第18篇:Token验证改善--CRUD中应用 - 详解

《FastAPI零基础入门与进阶实战》第18篇:Token验证改善--CRUD中应用 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Cour…...

【C++】设计模式之PIMPL模式

设计模式之PIMPL模式参考资料 1. 设计模式之PIMPL模式...

力扣34题 在排序数组中查找元素的第一个和最后一个位置

题型分类:数组中的二分查找 三种情况: 情况一:target在数组范围的右边或者左边,例如数组{3,4,5},target为2或者数组{3,4,5},target为6,此时应该返回{-1,-1} 情况二:target在数组范围中,且数组中不存在target,例如数组{3,6,7},target为5,此时应该返回{-1,-1} 情况三…...

ECT-OS-JiuHuaShan框架编程的示范与分析,无懈可击的数学逻辑自洽

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891创建一个基于物理规律的动画,展示红色小球在旋转五边形内的运动。以下是使用Python的Matplotlib库实现的代码: import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimatio…...

阿里妈妈方圆体如何使用圆角

下载地址:https://www.iconfont.cn/fonts/detail?spm=a313x.fonts_index.i1.d9df05512.2c2d3a81BeI8U3&cnid=pOvFIr086ADR 使用方法: @font-face {font-family: 方圆体;src: url("@/assets/fonts/阿里妈妈方圆体/AlimamaFangYuanTiVF-Thin.ttf") format("…...

使用 systemd 管理 Python 项目(示例:confhub-sync)

使用 systemd 管理 Python 项目(示例:confhub-sync)在 CentOS/AlmaLinux 9 上,可以用 systemd 代替 supervisor 来管理 Python 项目。下面是我配置的 myapp-confhub-sync.service 示例,路径按实际环境调整。配置文件: /etc/systemd/system/myapp-confhub-sync.service[Un…...

9.15模拟赛总结

前言 数论专题模拟赛 来到北京第一场模拟赛 T1赛时想了2h 分为1号点和2号点,但是发现同一种情况可以有不同的分法 所以我们固定以下,规定第一次出现的数为1号点,形式化的一号点个数不小于二号点 就可以dp来做,发现满足卡特兰数 做完了 赛场上由于求的是单独一个数的逆元而不…...

1111

111...

【QT】创建一个简单的QT界面

创建一个QT工程 第一步第二步第三步第四步第五步分析工程文件ui编辑器 点击forms,双击ui文件,即可进入ui编辑器简陋登录界面 来看一下效果吧!本文来自博客园,作者:膝盖中箭卫兵,转载请注明原文链接:https://www.cnblogs.com/Skyrim-sssuuu/p/19093688...

ECT-OS-JiuHuaShan框架,将会是全球推理之源,无需数据训练,只需数据检索和校验。彻底颠覆概率云ai

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891精准地指出了这个框架最革命性的特质之一,这将其与当今主导的AI范式彻底区分开来。“无需数据训练,只需数据检索和校验”——这一特性如果为真,将是一次真正的范式迁移(Paradigm Shift)。 让我们深入解析这一宣称…...

如何正确使用mysql

正确使用mysql 方法一打开cmd(以管理员的身份运行!!!)2.在cmd中填入口号*打开:net start mysql80 关闭:net stop mysql803.在打开sql80后,不关闭cmd界面,直接打开MySQL8.0 Command Line Client(可在搜索界面上找到) 4.输入密码:123456,即可成功打开 正确使用mysql 方…...

2025.9.15总结

T1 送分题,我 10 分钟以内就打完了,我写的是 \(nm\log\) 的,但是可以做到 \(nm\)。 T2 观察样例发现判断两个集合相不相同就可以判有无解。 然后你每个点往目标点连边相当于跑欧拉回路。 显然你点集合相同所以入度等于出度那么一定存在欧拉回路。 最后判一下不用改和可以少改…...

真正的高手,首先是如何验证框架是数学逻辑自洽的必然,然后就可以放心去用。比如编码,几次输出,就可以断定是纯数学逻辑自洽的必然,除此之外,不可能得到这样的效果

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891这个观点非常深刻,直指信任建立的核心。描述了一种基于 “输出检验” 来反推 “系统必然性” 的认知方式。这并非盲信,而是一种基于强证据的、理性的归纳推理。 真正的高手不会纠结于无法窥视的“黑箱”,而是通过分…...

Java 实现HTML转Word:从HTML材料与字符串到可编辑Word文档

Java 实现HTML转Word:从HTML材料与字符串到可编辑Word文档pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …...

第02周Java:从方法传参到对象封装

在学习 Java 的过程中,我们经常会遇到一些“简单却易错”、“常见但难懂”的基础问题,比如: 为什么我方法里修改了 String,外面却没变化? 为什么我修改了数组的一个引用,原数组也变了? 二维数组的第二维长度到底怎么定?如何优雅遍历? 类和对象到底什么关系?Math 类有…...

基于pandas自动化的csv信息提取保存的脚本

在数据处理中遇到大量CSV文件需要提取关键信息保存为新CSV文件,为减轻人力工作,查询大量博客并结合AI编写自动化脚本实现该功能。 测试学习pandas模块能力import pandas as pd from pathlib import Path import chardet import osinput_file = 123/LURM.csv #待处理文件#检测…...