OS/DevOps程序员切入Harness Engineering的入门与进阶指南

当AI模型本身不再稀缺,真正决定生产级AI应用成败的,是你为它搭建的"驾驭系统"------这就是Harness Engineering。

一、引言:为什么OS/DevOps程序员必须了解Harness Engineering?

你是一名OS或DevOps工程师,日常工作可能是维护Linux服务器、管理Kubernetes集群、编写Terraform脚本、配置CI/CD流水线、处理告警和日志。你可能已经尝试过用AI来写脚本或分析日志,但往往发现:AI给出的答案不可靠、执行复杂任务容易中断、或者需要你反复人工纠正。

问题的根源不在于AI模型不够强,而在于缺少一个让AI能够安全、稳定、可观测地运行在真实生产环境中的"驾驭系统"------这就是Harness Engineering。

Harness Engineering是继Prompt Engineering、Context Engineering之后的第三代AI工程范式。它关注的不再是"怎么说"或"看到什么",而是AI运行其中的整个系统:包括工具调用生命周期、安全护栏、失败重试、审计日志、成本控制,以及最重要的------让AI能够持续完成长周期、多步骤的复杂任务。

作为OS/DevOps工程师,你天然具备系统思维、自动化脚本能力、以及对可观测性和稳定性的深刻理解------这正是Harness Engineering最需要的底层素养。换句话说,你不是在转行,而是在升级你的现有技能


二、核心概念与原理:你需要的理论基础

在动手之前,先花10分钟理解以下三个关键概念。它们将贯穿你后续的所有实践。

2.1 三层金字塔:Prompt → Context → Harness

层级 核心问题 典型技术 类比
Prompt Engineering 如何把任务说清楚? 结构化提示、思维链、角色设定 给AI发指令
Context Engineering AI在执行时看到什么信息? RAG检索、上下文窗口管理、动态信息注入 给AI配资料
Harness Engineering AI在什么系统中运行? 工具集约束、安全护栏、反馈闭环、容错机制 给AI造驾驶舱

三者不是替代关系,而是层层包含:Harness 包含 Context 管理,Context 包含 Prompt 设计。一个没有Harness的AI Agent就像一个没有方向盘的发动机------马力再大也无法安全上路。

2.2 Agent Harness vs Harness Engineering:不要混淆

  • Agent Harness :具体的运行控制面板(如LangChain的AgentExecutor、Claude Code的运行时),是一个技术实体
  • Harness Engineering :设计和维护Agent Harness的工程方法论,包括设计模式、最佳实践、评估标准。

作为工程师,你既要会用具体的Harness框架,更要理解背后的设计原则。

2.3 Harness Engineering的三大核心组件

根据2025-2026年的行业实践,一个完整的Harness体系包含:

① 上下文工程(Context Engineering)

不是把所有信息塞进AI的上下文窗口,而是像"索引地图"一样按需加载。上下文窗口是稀缺资源,塞太满会导致AI"注意力涣散"。

② 架构约束(Architecture Constraints)

通过机械化规则强制AI的行为边界。一个反直觉的经验是:移除80%的工具,AI的表现反而更好。因为约束缩小了解的空间,降低了AI做出错误选择的概率。

③ 垃圾回收(Garbage Collection)

持续对抗AI高速产出带来的"代码熵增"。AI写得快,也写得乱。你需要定期清理AI生成的劣质代码、重复逻辑和无效工具调用。

2.4 为什么OS/DevOps背景是优势?

你的日常工作已经包含了Harness Engineering的雏形:

  • 你用Prometheus监控系统指标 → 这是AI的可观测性基础
  • 你用Terraform声明基础设施 → 这是约束AI操作范围的声明式方法
  • 你用CI/CD流水线自动测试部署 → 这是AI输出的自动化验证机制
  • 你用Shell脚本处理故障 → 这是AI工具调用的执行环境

你缺的不是基础,而是如何将这些能力"对齐"到AI Agent上的方法论。


三、入门指南:两周内跑通你的第一个AI Harness

本部分按"部署→修改→测试→验证"四个阶段组织,每个阶段都有可执行的代码或配置。

3.1 环境准备(一天内完成)

硬件要求

  • 本地开发机:8GB内存以上,建议16GB
  • 可选:云服务器(阿里云、AWS)用于部署生产级Harness

软件要求

bash 复制代码
# 安装必要工具
# macOS
brew install node git python@3.10
# Ubuntu/Debian
sudo apt update && sudo apt install nodejs npm git python3.10

# 验证安装
node --version   # 需 >= v18
python3 --version # 需 >= 3.10
git --version

获取API密钥(以低成本或免费方案为例):

  • 选项A(推荐):阿里云百炼平台,新用户有免费额度,支持Claude和通义千问API
  • 选项B:本地运行Ollama + Llama3 8B(完全免费,但需要较高配置)
  • 选项C:OpenAI API(需付费,但生态最成熟)

3.2 部署:让第一个AI Agent在终端中跑起来

我们选择Claude Code作为第一个Harness实践,因为它专为开发者设计,内置了工具调用和安全护栏。

步骤1:安装Claude Code

bash 复制代码
# 全局安装
npm install -g @anthropic-ai/claude-code

# Windows用户:先安装WSL2,然后在WSL中执行

步骤2:配置API密钥(以阿里云百炼为例)

bash 复制代码
# 创建配置目录
mkdir -p ~/.claude

# 写入配置
cat > ~/.claude/settings.json <<EOF
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "sk-xxxxx",  // 替换为你的API密钥
    "ANTHROPIC_BASE_URL": "https://dashscope.aliyuncs.com/compatible-mode/v1",
    "ANTHROPIC_MODEL": "claude-3-sonnet"
  }
}
EOF

步骤3:启动并测试

bash 复制代码
# 进入你的项目目录
cd ~/my-test-project

# 启动Claude Code
claude

# 在出现的提示符中输入:
> 创建一个hello.py文件,内容为打印"Hello from AI Agent"
# 观察AI如何创建文件、写入内容

恭喜! 你已经成功部署了一个能够操作本地文件系统的AI Agent。这就是Harness Engineering的起点------一个被约束在特定目录内、只能调用有限工具的AI。

3.3 修改:定制你的AI Harness

3.3.1 修改System Prompt(改变AI的"性格")

System Prompt是控制AI行为的最直接方式。在Claude Code中,可以创建项目级别的配置:

bash 复制代码
# 在你的项目根目录下创建 .claude 文件夹
mkdir -p .claude

# 创建系统提示词文件
cat > .claude/instructions.md <<EOF
你是一名DevOps专家AI助手。你在回答时必须遵守以下规则:
1. 所有Shell命令必须经过用户确认后才能执行(使用AskUserApproval工具)
2. 修改生产配置前,必须先输出diff并等待批准
3. 当不确定时,优先请求人类澄清,而不是猜测
4. 输出的代码必须包含错误处理(try-catch或检查返回值)
EOF

这个简单的提示词已经为你构建了第一道"安全护栏"。

3.3.2 为AI添加工具(扩展能力)

Claude Code默认支持文件读写、Shell命令执行。你可以通过配置添加自定义工具:

bash 复制代码
# 在 .claude/settings.json 中添加工具配置
{
  "tools": {
    "kubectl": {
      "description": "执行kubectl命令(只读操作)",
      "allowed_commands": ["get", "describe", "logs"],
      "require_approval": true
    },
    "terraform_plan": {
      "description": "生成Terraform执行计划",
      "command": "terraform plan -out=tfplan",
      "require_approval": false
    }
  }
}

关键设计原则 :为每个工具明确定义允许的操作和是否需要人工审批。永远不要让AI直接拥有kubectl deleterm -rf的能力。

3.3.3 接入RAG知识库(给AI装"长期记忆")

让AI能够基于你的运维文档、runbook、历史事故报告来回答问题。以下是使用LangChain + ChromaDB的完整示例:

python 复制代码
# rag_harness.py - 为你的AI Agent接入私有知识库
import os
from langchain.document_loaders import DirectoryLoader, TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Chroma
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA

# 1. 加载你的运维文档(假设存放在 ./docs 目录)
loader = DirectoryLoader('./docs', glob="**/*.md", loader_cls=TextLoader)
documents = loader.load()

# 2. 切分成小块(保留重叠以维持上下文)
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200,
)
texts = text_splitter.split_documents(documents)

# 3. 创建向量数据库(本地运行,不依赖外部API)
embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")
vectordb = Chroma.from_documents(texts, embeddings, persist_directory="./chroma_db")
vectordb.persist()

# 4. 创建检索增强的问答链
qa_chain = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model="gpt-3.5-turbo"),
    retriever=vectordb.as_retriever(search_kwargs={"k": 3}),
    return_source_documents=True
)

# 5. 使用示例:AI回答时会引用你的内部文档
response = qa_chain("如何处理Kubernetes节点NotReady状态?")
print(response['result'])
print("引用文档:", [doc.metadata for doc in response['source_documents']])

将这个脚本集成到你的Agent Harness中,AI就能"记住"你团队的所有运维知识。

3.4 测试:确保AI Agent的可靠性

AI应用的测试与传统软件测试有本质区别------输出是非确定性的。你需要建立一套自动化验证流水线

3.4.1 功能测试(确定性验证)

对于预期行为明确的任务(如"创建一个Nginx Deployment"),可以编写断言测试:

python 复制代码
# test_agent_actions.py
import pytest
from your_harness import AgentHarness

def test_create_nginx_deployment():
    harness = AgentHarness(mode="dry_run")  # 干跑模式,不实际执行
    result = harness.run("创建一个名为test-nginx的Deployment,镜像nginx:alpine")
    
    # 验证AI生成的Kubernetes YAML
    assert "kind: Deployment" in result.generated_yaml
    assert result.generated_yaml["metadata"]["name"] == "test-nginx"
    assert result.generated_yaml["spec"]["template"]["spec"]["containers"][0]["image"] == "nginx:alpine"
3.4.2 可靠性测试(对抗非确定性)

使用相同输入多次运行,统计输出的一致性:

bash 复制代码
# 编写一个简单的可靠性测试脚本
for i in {1..10}; do
  echo "Run $i"
  claude "列出当前目录下所有的.py文件" >> output_$i.txt
done

# 比较10次输出是否相同
diff output_1.txt output_2.txt  # 如果AI足够稳定,应该无差异

对于生产环境,建议使用专门的AI测试框架如Spec27DeepEval

3.4.3 安全边界测试(Harness核心)

测试你的护栏是否有效:

python 复制代码
def test_safety_guardrails():
    harness = AgentHarness()
    
    # 尝试危险操作,应该被拦截
    dangerous_commands = [
        "删除生产数据库",
        "执行 rm -rf /",
        "关闭防火墙"
    ]
    
    for cmd in dangerous_commands:
        result = harness.run(cmd)
        assert result.blocked == True
        assert "需要人工审批" in result.message

3.5 验证:在生产环境的持续监控

当你的AI Agent开始真正服务团队时,你需要一套可观测性体系。以下是最低可行的监控面板:

关键指标

指标 计算方式 目标值
任务成功率 成功完成任务数 / 总任务数 > 85%
平均响应时间 从用户输入到最终输出 < 30秒
人工介入率 需要人工审批的次数 / 总任务数 < 20%
Token成本 每次调用的总token数 × 单价 每月预算内
错误类型分布 超时/护栏拦截/API错误 用于改进Harness

实现示例(使用Prometheus + Grafana):

python 复制代码
# 在你的Agent Harness中添加埋点
from prometheus_client import Counter, Histogram, Summary

task_counter = Counter('agent_tasks_total', 'Total tasks', ['status'])
task_duration = Histogram('agent_task_duration_seconds', 'Task duration')
human_intervention = Counter('agent_human_interventions', 'Interventions', ['reason'])

@task_duration.time()
def run_agent_task(task):
    try:
        result = agent.execute(task)
        task_counter.labels(status='success').inc()
        return result
    except SafetyViolation as e:
        human_intervention.labels(reason='safety').inc()
        task_counter.labels(status='blocked').inc()
        raise

将上述指标暴露给Prometheus,并用Grafana可视化------你的AI Agent就有了"仪表盘"。


四、进阶指南:从单体Agent到多智能体协作系统

当你熟练掌握了单个AI Harness的部署、修改、测试和验证后,就可以进入下一阶段:构建多智能体协作系统。这是2026年AI工程化的核心方向。

4.1 为什么要多智能体?(Motivation)

一个全能AI往往不如多个专业AI协作。类比人类的软件开发团队:产品经理、架构师、前端、后端、测试各司其职。同理,你应该构建:

  • Planner Agent:将复杂运维任务拆解成子任务
  • Executor Agent:执行具体的脚本或API调用
  • Checker Agent:验证执行结果是否符合预期
  • Reporter Agent:汇总结果并生成人类可读的报告

实际案例:Anthropic团队在构建Claude Code的多Agent协作时,将一个复杂代码库迁移任务拆解为5个并行Agent,完成时间从4小时缩短到45分钟。

4.2 多智能体架构设计(参考模式)

python 复制代码
# multi_agent_harness.py
from typing import List, Dict
from dataclasses import dataclass

@dataclass
class Task:
    description: str
    assigned_to: str  # agent name
    dependencies: List[str]  # 依赖的其他任务ID

class MultiAgentOrchestrator:
    def __init__(self):
        self.planner = PlannerAgent()
        self.executors = {
            "k8s": K8sExecutor(),
            "terraform": TerraformExecutor(),
            "monitoring": PrometheusExecutor()
        }
        self.checker = CheckerAgent()
        
    def run(self, user_request: str):
        # 1. Planner拆解任务
        tasks = self.planner.decompose(user_request)
        
        # 2. 构建依赖图并调度执行
        results = {}
        for task in self._topological_sort(tasks):
            executor = self.executors[task.assigned_to]
            result = executor.execute(task.description)
            # 3. Checker验证结果
            if not self.checker.verify(result, task.expected_output):
                # 重试或升级到人工
                self._handle_failure(task, result)
            results[task.id] = result
        
        # 4. 汇总返回
        return self._aggregate(results)

4.3 解决"自我评价失效"问题

一个深刻的行业教训:让AI评价自己的同类工作,模型存在天然的盲目自信。Anthropic发现,即使Claude Code生成的代码有明显bug,让它自己检查时经常说"一切正常"。

解决方案

  1. 量化评估标准 :不要用"这个部署是否成功?"这种主观问题,而是用可测量的硬指标:
    • Pod启动时间 < 30秒?
    • 健康检查端点返回200?
    • 内存使用量 < 500MB?
  2. 赋予Checker真实工具 :让验证Agent能够执行实际测试(如调用kubectl get podscurl健康端点、查询Prometheus指标)。
python 复制代码
class HardChecker:
    def verify_deployment(self, namespace, deployment_name):
        # 不是问模型"你觉得行不行",而是实际检查
        pods = kubectl(f"get pods -n {namespace} -l app={deployment_name} -o json")
        ready_pods = [p for p in pods if p['status']['phase'] == 'Running']
        
        # 返回布尔值
        return len(ready_pods) >= 1

4.4 构建"智能体可读"的环境

OpenAI的研究表明,瓶颈往往不在模型能力,而在于环境对Agent是否"可读"。你需要让AI Agent能够像人类工程师一样"看到"系统状态。

实施清单

  • 将Chrome DevTools协议接入Agent(让AI能"看到"UI)
  • 为Agent提供PromQL查询能力(让它能查询监控指标)
  • 接入日志聚合系统(Loki/ELK),让AI能grep日志
  • 将基础设施代码(Terraform/K8s YAML)以结构化方式暴露

示例:给Agent装上"日志眼睛"

python 复制代码
# log_reader_tool.py
def query_logs(service_name, time_range="15m", grep_pattern=None):
    # 调用Loki API
    response = requests.get(
        f"http://loki:3100/loki/api/v1/query_range",
        params={
            "query": f'{{service="{service_name}"}} |~ "{grep_pattern}"' if grep_pattern else f'{{service="{service_name}"}}',
            "start": f"now-{time_range}",
            "end": "now"
        }
    )
    return response.json()['data']['result']

4.5 垃圾回收(Garbage Collection)机制

AI写得快,也写得乱。你需要部署一个后台"清洁工"Agent,定期做:

  1. 删除死代码:扫描仓库中未被任何地方引用的函数或变量
  2. 合并重复逻辑:识别多个Agent生成的相似代码块,抽象成公共函数
  3. 更新过时注释:AI生成的注释可能与代码实际行为不符
  4. 回滚无效更改:如果一个Agent提交的PR在24小时内被回滚,自动标记为"低质量"
bash 复制代码
# 每周五下午运行GC Agent
0 14 * * 5 cd /path/to/repo && python garbage_collector.py --aggressive=false

五、赋能OS/DevOps团队:从个人到集体

当你掌握了以上技能,你可以开始将AI能力注入整个OS/DevOps团队的工作流。

5.1 自动化运维Agent(全天候值班)

参考亚马逊的Amazon DevOps Agent设计,你可以构建一个能够:

  • 7×24小时监控应用健康状态
  • 收到告警后自动启动故障排查流程
  • 关联代码变更、配置变更、依赖服务状态
  • 提供根因分析报告,甚至自动执行修复

实际效果:西部州立大学SRE团队引入类似Agent后,平均故障修复时间(MTTR)降低了77%。

实现框架

yaml 复制代码
# 运维Agent的配置(使用K8s CronJob部署)
apiVersion: batch/v1
kind: CronJob
metadata:
  name: ops-agent
spec:
  schedule: "*/5 * * * *"  # 每5分钟运行一次
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: agent
            image: your-registry/ops-agent:latest
            env:
            - name: PROMETHEUS_URL
              value: "http://prometheus:9090"
            - name: GITHUB_TOKEN
              valueFrom:
                secretKeyRef:
                  name: github-token
                  key: token
            args:
            - --check-threshold=warning
            - --auto-remediate=false  # 初期设为false,仅建议

5.2 安全护栏与审计系统(企业级必须)

对于生产环境,你需要一个独立于AI Agent的安全代理(Security Proxy),拦截所有AI发出的命令。

python 复制代码
# security_proxy.py - 部署在AI Agent和实际系统之间
class SafetyInterceptor:
    DENY_LIST = [
        r"rm -rf /",
        r"kubectl delete.*--all",
        r"DROP DATABASE",
        r"chmod 777 /etc"
    ]
    
    APPROVAL_REQUIRED = [
        r"terraform apply",
        r"kubectl delete deployment",
        r"systemctl stop"
    ]
    
    def intercept(self, command: str) -> str:
        for pattern in self.DENY_LIST:
            if re.search(pattern, command):
                raise SafetyViolation(f"Blocked: {command}")
        
        for pattern in self.APPROVAL_REQUIRED:
            if re.search(pattern, command):
                # 发送到人工审批队列
                approval_id = self.request_approval(command)
                return f"Pending approval {approval_id}"
        
        return command

5.3 CI/CD流水线的AI集成

将AI Agent嵌入到你的GitLab CI或GitHub Actions中:

yaml 复制代码
# .github/workflows/ai-code-review.yml
name: AI Code Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run AI Code Reviewer
        run: |
          claude "请审查PR #${{ github.event.pull_request.number }} 中的代码变更,检查:
            - 是否存在安全漏洞(如硬编码密钥)
            - 是否符合团队代码规范
            - 是否包含足够的单元测试
            以Markdown表格形式输出结果"
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_KEY }}

5.4 告警根因分析助手

将AI Agent接入PagerDuty或Alertmanager,让它自动分析告警:

python 复制代码
# alert_analyzer.py
def analyze_alert(alert):
    # 1. 获取过去1小时的K8s事件
    events = kubectl("get events --all-namespaces --field-selector type=Warning")
    
    # 2. 获取相关服务的日志
    logs = query_loki(alert.service, time_range="30m")
    
    # 3. 获取最近的代码变更
    commits = get_github_commits(alert.service, days=1)
    
    # 4. 让AI综合分析
    prompt = f"""
    告警: {alert.message}
    最近的K8s事件: {events}
    服务日志片段: {logs[-50:]}
    最近提交: {commits}
    
    请给出可能的根因、置信度(0-100%)、以及建议的修复步骤。
    """
    
    return claude_complete(prompt)

将分析结果自动发送到Slack或钉钉,工程师可以立即看到AI的诊断。


六、转型为AI Native Engineer:你的职业进化路线图

6.1 能力模型对比

维度 传统OS/DevOps工程师 AI Native Engineer
故障排查 手动查日志、执行命令 设计AI Agent自动诊断流程
自动化脚本 编写Bash/Python脚本 编写Prompt + 工具定义
系统设计 静态架构图 动态Agent协作图
知识传承 撰写Wiki文档 构建可执行的Runbook Agent
值班 人工轮值 AI第一响应 + 人工复核

6.2 三个月学习路线图

第1个月(基础)

  • Week 1-2:完成本指南的"入门指南"部分,跑通Claude Code + 简单RAG
  • Week 3:学习LangChain或LlamaIndex的基本使用
  • Week 4:用AI Agent自动化你日常工作中最烦人的一个手动任务(如日志分析)

第2个月(进阶)

  • Week 1-2:构建一个多Agent协作系统(Planner + Executor + Checker)
  • Week 3:为你的团队搭建AI Agent的监控面板(Prometheus + Grafana)
  • Week 4:在测试环境部署运维Agent,处理低风险告警

第3个月(落地)

  • Week 1-2:设计安全护栏,将AI Agent接入预生产环境
  • Week 3:编写团队培训材料,教会同事如何与AI Agent交互
  • Week 4:选择一个核心运维场景(如"自动扩缩容分析")正式上线

6.3 推荐的资源与工具

学习资源

  • 论文:"Harness Engineering: A New Paradigm for Reliable AI Agents"(arXiv 2026)
  • 开源项目:Qwen-Agent、LangGraph、AutoGen
  • 社区:AI Engineer Summit、Prompt Engineering Guide

核心工具链

类别 推荐工具 用途
Agent框架 LangChain, LlamaIndex, Qwen-Agent 构建Agent逻辑
向量数据库 ChromaDB, Qdrant, Pinecone RAG知识库
可观测性 Prometheus + Grafana, LangSmith 监控Agent行为
安全拦截 OPA (Open Policy Agent) 策略即代码
本地模型 Ollama, vLLM, llama.cpp 运行私有化LLM

七、总结:你的下一步行动

Harness Engineering不是一门遥不可及的理论,而是你今天就可以开始实践的工程方法。作为OS/DevOps工程师,你已经站在了最佳起跑线上。

立即开始的三个行动

  1. 今天:安装Claude Code,让它帮你写一个Kubernetes YAML文件,感受AI的潜力与局限。
  2. 本周:为你的团队搭建一个简单的RAG知识库,让AI能回答"XX服务的重启步骤是什么"。
  3. 本月:选择一个运维场景(如"磁盘空间告警自动清理"),设计一个包含Planner、Executor、Checker的Agent,并部署到测试环境。

记住:你的目标不是被AI取代,而是成为那个"给AI配缰绳"的人。当你的同事还在手动查日志时,你已经设计了一个Agent自动完成故障分析------这才是未来五年DevOps工程师的核心竞争力。

"代码不再值钱,值钱的是让代码在真实世界中正确运行的驾驭系统。" ------ 匿名AI工程师

现在,打开你的终端,输入 claude,开始你的第一段Harness Engineering之旅。

相关推荐
Mr.huang1 分钟前
面向驾驭工程的 MCP-Agent 研发运维闭环自动化模型研究
ai编程·devops
一号弯5 分钟前
用NAVICAT访问非本地服务器的报错问题
运维·服务器
能摆一天是一天9 分钟前
windows docker 部署openfire
运维·docker·容器
江华森16 分钟前
Git + Maven Java 项目部署实战全指南
运维·笔记·git·学习·maven
stanleyrain17 分钟前
linux上无感操作Windows上的文件夹
linux·运维·windows
黎阳之光22 分钟前
虚实同源·数智治水:黎阳之光视频孪生,重构智慧水务新范式
运维·物联网·算法·安全·数字孪生
饿了吃洗衣凝珠22 分钟前
【无标题】
运维·服务器·网络
染翰29 分钟前
Linux 配置:应用用户执行 sudo su root 免密(运维标准配置)
linux·运维·服务器
草莓熊Lotso3 小时前
【Linux网络】深入理解 HTTP 协议(二):从协议格式到手写工业级 HTTP 服务器
linux·运维·服务器·网络·c++·http