惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Project Zero
Project Zero
博客园 - 聂微东
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
云风的 BLOG
云风的 BLOG
Microsoft Azure Blog
Microsoft Azure Blog
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
Jina AI
Jina AI
C
Check Point Blog
博客园_首页
The GitHub Blog
The GitHub Blog
The Hacker News
The Hacker News
T
The Blog of Author Tim Ferriss
V
Vulnerabilities – Threatpost
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cisco Blogs
人人都是产品经理
人人都是产品经理
V
Visual Studio Blog
A
Arctic Wolf
博客园 - 三生石上(FineUI控件)
P
Privacy International News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Forbes - Security
Forbes - Security
阮一峰的网络日志
阮一峰的网络日志
Engineering at Meta
Engineering at Meta
T
Troy Hunt's Blog
Microsoft Security Blog
Microsoft Security Blog
Spread Privacy
Spread Privacy
Schneier on Security
Schneier on Security
K
Kaspersky official blog
宝玉的分享
宝玉的分享
Google DeepMind News
Google DeepMind News
V2EX - 技术
V2EX - 技术
Google DeepMind News
Google DeepMind News
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
S
Security Affairs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Register - Security
The Register - Security
P
Proofpoint News Feed
小众软件
小众软件
S
Securelist
T
Tor Project blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Humanizing Artificial Intelligence in DevOps Documentation: Making Runbooks Easier to Create and Use
James Joyner · 2026-06-20 · via DEV Community

The Runbook That Lied to Me at 3am

The pager went off at 3:14am for a wedged OpenStack Neutron agent. I did what any tired engineer does: I opened the runbook. It told me to restart a service that had been renamed eighteen months earlier, pointed at a Grafana dashboard that 404'd, and assumed a network topology we'd migrated off of two quarters back. The runbook wasn't just unhelpful. It was actively lying to me, and I burned twenty minutes trusting it before I gave up and went to read the source.

That's the real problem with documentation. It isn't that we don't write it. It's that the moment we finish writing it, it starts rotting, and the cost of keeping it fresh is high enough that nobody pays it until the document has already betrayed someone at 3am. A runbook your team doesn't trust is worse than no runbook, because no runbook at least forces you to think.

This is where AI actually earns its keep in a platform org, and not in the way the marketing decks suggest. AI is not going to own your documentation. It's going to do the tedious first-draft labor — turning a resolved incident, a chunk of shell history, or a deploy diff into a structured skeleton — so a human engineer can spend their scarce attention on the part that matters: verifying the commands, marking what's unproven, and editing the robotic tone out so the team actually reads it. AI drafts. You verify and sign off. That distinction is the whole game.

Why "Humanizing" AI Is the Job, Not a Slogan

Let me be precise about what I mean by "humanizing AI," because the phrase gets abused. I don't mean making AI sound human to fool a reader. I mean keeping a human in the loop as the editor and owner of record, and doing the unglamorous work of turning a competent-but-soulless machine draft into something a colleague trusts.

Two things break trust in AI-drafted docs, and both are fixable by a human pass:

  1. Unverified claims stated with confidence. An LLM will happily tell you to run systemctl restart neutron-l3-agent whether or not that's the actual unit name on your boxes. It doesn't know. It's pattern-matching. So the human's first job is to run every command, in a safe environment, and confirm it does what the draft claims.

  2. The robotic tone. Machine drafts read like a compliance memo: hedged, repetitive, weirdly formal, full of "it is important to note that." Engineers smell that instantly and stop reading. Editing for voice and concision isn't vanity — a doc people skim past doesn't get used. That cleanup pass is legitimate, valuable work, and it's exactly the "humanizing" angle that matters.

If you keep those two responsibilities firmly with a person, AI becomes a force multiplier instead of a liability generator. I've written more about the philosophy of runbooks engineers actually trust at 3am, but the short version is: trust is built by verification, and verification is a human act.

Troubleshooting Guides: Draft From the Incident You Just Resolved

The best time to write a troubleshooting guide is in the hour after you've fixed the thing, while the diagnostic path is still warm in your head. The worst time is never, which is the default. AI closes that gap because the raw material already exists in your terminal.

Here's the prompt pattern I use. I dump my actual shell history and the incident timeline at the model and constrain it hard:

You are drafting an internal troubleshooting guide for a platform team. I'll give you my shell history and a rough incident timeline. Produce a guide with these sections: Symptoms, Prerequisites/Access, Diagnosis Steps, Resolution, Rollback, Verification. Use the exact commands from my history — do not invent flags or paths. Wherever you infer something I didn't explicitly state, prefix that line with [ASSUMPTION] so I can verify it. Keep the prose tight; no filler.

That [ASSUMPTION] instruction is the single most important line in the prompt.

Pro Tip: Always force the model to explicitly tag anything it couldn't verify from your inputs. An LLM's failure mode is confident gap-filling. When you make it mark its own guesses, you convert an invisible risk into a visible checklist — every [ASSUMPTION] tag is a thing you personally confirm before the doc ships. The tags get deleted in editing, but they drive the verification pass.

Feed that prompt a history | grep neutron plus a three-line timeline, and you get back something like this — which is a genuinely good starting point, not a finished doc:

Diagnosis Steps

  1. Confirm the agent is actually down, not just flapping: openstack network agent list --agent-type l3 --host compute-04
  2. [ASSUMPTION] The L3 agent unit is neutron-l3-agent. Check status: systemctl status neutron-l3-agent
  3. Tail the agent log for the RPC timeout signature: journalctl -u neutron-l3-agent --since "10 min ago" | grep -i timeout

Resolution

Restart the agent and confirm it re-registers with the server:
systemctl restart neutron-l3-agent && sleep 5 && openstack network agent list --host compute-04

Rollback

[ASSUMPTION] No rollback required for a restart. If the agent fails to re-register, fail the router over to a standby node before deeper debugging.

Notice what the AI did well: it structured the chaos of my history into a clean diagnostic flow and pulled the real commands I ran. Notice what it flagged: it didn't know my unit name, so it tagged it. When I verified, the unit was actually devstack@q-l3.service on the affected host — a thing I'd never have caught if the draft had just stated it confidently. That one assumption tag is the difference between a guide that helps and one that lies. I go deeper on this workflow in my piece on drafting runbooks from resolved incidents with AI.

Postmortems: AI Handles the Timeline, You Own the Blamelessness

Postmortems are where AI's drafting strength and its judgment weakness are both on full display. The mechanical parts — assembling a coherent timeline from Slack threads, alert timestamps, and deploy logs, then drafting an impact summary — are exactly the tedious work that delays postmortems for weeks. AI eats that for breakfast.

But the blameless part is not a tone setting you toggle. It's an editorial and cultural stance that a human has to own. I give the model the raw timeline and explicitly instruct it:

Draft a blameless postmortem. Describe what the system did and what signals were available, never what a person "failed" to do. Frame every human action as a reasonable decision given the information available at the time. Sections: Summary, Impact, Timeline, Contributing Factors, What Went Well, Action Items. Mark any causal claim you can't support from the inputs with [UNVERIFIED].

The model will get you 80% of the way to neutral language. The remaining 20% — catching the sentence that subtly implies the on-call engineer should have known better — is human work, every time. Blameless writing is a skill, and the editing pass is where you apply it. If you haven't internalized what separates a postmortem people read from one that gets filed and forgotten, this breakdown of blameless postmortems people actually read is worth your time.

Pro Tip: Never let AI write your Action Items unsupervised. The model loves to generate plausible-sounding remediation ("add more monitoring," "improve documentation") that sounds responsible and commits no one to anything. Real action items have an owner, a due date, and a verifiable definition of done. That's a leadership decision, not a text-generation task — strike every vague item the draft produces and replace it with something a person actually agreed to do.

The payoff is real, though. When the timeline and impact summary are drafted in ten minutes instead of taking the better part of a day, postmortems actually get written while the details are fresh, instead of being abandoned because everyone moved on to the next fire.

SOPs: Encode the Tribal Knowledge Before It Walks Out the Door

Standard operating procedures are the documents most likely to live entirely in one senior engineer's head — how we rotate the cluster certs, how we drain a node for maintenance, the precise dance to cut a new Terraform workspace without orphaning state. That knowledge is a bus-factor risk, and writing it down has always lost to more urgent work.

AI lowers the activation energy enough that it stops losing. I'll narrate the procedure out loud into a rough text file — half sentences, command fragments, the gotchas I remember — and have the model turn that mess into a structured SOP with numbered steps, prerequisites, and explicit "you are done when..." verification criteria.

The thing to watch here is that an SOP encodes policy, not just commands. The AI can format your steps beautifully and still produce something that violates your change-management rules because it doesn't know them. So the human pass on an SOP is checking two layers: are the commands correct, and does the procedure comply with how we're actually supposed to operate? The model can't see your org chart or your change board. You can.

I keep a small library of these drafting prompts so I'm not rewriting the scaffolding each time — collecting and reusing the prompts that work is half the productivity gain, because the quality of the draft is downstream of the quality of the prompt.

Deployment and Release Docs: Draft Straight From the Diff

Deployment documentation has a unique advantage: the source of truth is structured and machine-readable. A PR diff, a Terraform plan, a Helm values change — these are precise artifacts an AI can read directly, which means the draft starts from facts rather than recollection.

My workflow for release notes and deploy runbooks: pipe the diff or the terraform plan output to the model and ask for a deployment guide that includes pre-flight checks, the apply procedure, the blast radius, the rollback, and the post-deploy verification. Because the input is concrete, the hallucination rate drops sharply. The model isn't guessing what changed — it's reading it.

Pre-flight Checks

  • Confirm the target workspace: terraform workspace show returns prod-us-east.
  • [ASSUMPTION] This plan adds 2 nodes and modifies the ASG launch template; no destroys. Re-run terraform plan and confirm zero resources to destroy before applying.

Rollback

The launch template change is versioned. To roll back, point the ASG at the previous template version and trigger an instance refresh — do not terraform destroy.

Even here, the human verifies the blast radius claim. "No destroys" is the kind of statement that's true until a provider upgrade quietly makes a field force-new, and a misread there is how you turn a routine deploy into an outage. The AI gets you a structured, mostly-correct draft fast; you confirm the dangerous parts with your own eyes. For a fuller treatment of wiring this into a real pipeline, my 2026 guide to runbook automation with AI walks through the tooling end to end.

The Editing Pass Is Where Trust Is Built

I want to close on the part that gets skipped, because it's the part that actually decides whether your docs get used. Once the commands are verified and the assumptions are resolved, you still have a machine-shaped document on your hands — competent, structured, and slightly lifeless. It hedges too much. It repeats the obvious. It has that flat, over-formal register that makes an engineer's eyes glaze.

Editing that out is not cosmetic. A runbook nobody can stand to read is a runbook nobody reads, which puts you right back at 3am reading source code. So I do a final pass for voice: cut the filler, sharpen the warnings, add the one line of context only a human who lived the incident can add ("the agent flaps for about thirty seconds after restart — don't panic and restart it again"). That sentence is worth more than the entire generated scaffold, and only a person can write it.

That's the humanizing loop in full: AI drafts the structure from real artifacts, a human verifies every command and resolves every assumption, and then a human edits the robotic tone into something a tired colleague will actually trust and follow. Keep ownership with the person at every step and AI becomes the best documentation intern you've ever had — fast, tireless, and entirely supervised. Skip the human steps and you're just generating the next lie waiting to fire at 3am.


James Joyner IV runs devopsaitoolkit.com, where he writes about running production OpenStack, Kubernetes, and observability with AI in the loop. If your AI-drafted docs read like a robot wrote them, his Writing Humanizer pack is a toolkit for making machine drafts read like a human actually sat down and wrote them.