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

推荐订阅源

SecWiki News
SecWiki News
I
InfoQ
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
博客园 - Franky
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
博客园_首页
罗磊的独立博客
V
V2EX
李成银的技术随笔
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
True Tiger Recordings
Vercel News
Vercel News
Cyberwarzone
Cyberwarzone
Cisco Talos Blog
Cisco Talos Blog
F
Fox-IT International blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
M
Microsoft Research Blog - Microsoft Research
Know Your Adversary
Know Your Adversary
爱范儿
爱范儿
The Register - Security
The Register - Security
G
Google Developers Blog
The Hacker News
The Hacker News
Malwarebytes
Malwarebytes
S
Securelist
博客园 - 三生石上(FineUI控件)
Jina AI
Jina AI
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
S
SegmentFault 最新的问题
博客园 - 叶小钗
F
Fortinet All Blogs
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
博客园 - 聂微东
T
Threatpost
博客园 - 【当耐特】
D
Docker
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
G
GRAHAM CLULEY
V
Visual Studio Blog
C
Cisco Blogs
IT之家
IT之家
S
Security Archives - TechRepublic
Latest news
Latest news
阮一峰的网络日志
阮一峰的网络日志

Hacker News: Show HN

Show HN: WYSIWYG markdown editor for any GitHub repo Show HN: Raft in Rust Show HN: Treats Human and AI the Same Sifter Show HN: TypistStories Show HN: A Story Show HN: Swift-Markdown-engine – A Native macOS Markdown editor on TextKit 2 Show HN: PrismCat – Local transparent proxy and debugging console for LLM APIs Show HN: Run RL agents in the browser with WebGPU Show HN: Lavern: an open-source multi-agent legal system (Apache 2.0) Show HN: Burnrate $1M a month, backwards through time GitHub - SkepticCTO/decoding_the_language_machine: Documentation, Prompts, and Media for the "Decoding the Language Machine" series GitHub - xqb64/X: The X programming language GitHub - compuficial/apery: Synthetic Data Generator for Agents elio – Terminal File Manager with Rich Previews Rogue-Bench GitHub - mikebmac86/pviz-parser: Analyze your codebase's dependency graph and export a structured bundle — nodes, edges, metrics, and cycle detection across multiple languages Show HN: I built a tool to estimate AI agent costs before you ship Show HN: The product is (usually) SnakeOil MetaStrip — Strip Hidden Metadata from Files Show HN: My Day – daily planner to get things done Show HN: CodeGuard – defence-in-depth SSH security in one Python file Vendorlobby — Vendor pitches, on autopilot AiAffList — The Biggest AI Affiliate Programs List GitHub - its-monotype/jobzap: Chrome extension to filter irrelevant LinkedIn jobs RemotePilot — Your Private Remote Job Pilot (macOS) Show HN: Agent Launch – One CLI for Codex, Claude Code, Cursor, Gemini, OpenCode Marketing Manager Jobs | Live marketing manager roles Typerion: The coherence system for software development GitHub - NoteDance/parallel-saver: High-performance parallel save/load for large NumPy arrays using shared memory and multiprocessing GitHub - WillTaylor22/self-managing-codebase GitHub - JustVugg/judicex: Open-source Legal AI workspace for evidence-grounded legal drafting, matter analysis and verifiable answers. GitHub - hushhq/hush: End-to-end encrypted messaging, voice, and video. Entry point that orchestrates every public component. GitHub - Secure-Code-HQ/audit: Open-source CLI agent for automated Linux VPS security auditing. One command, 25 checks, zero install. GitHub - kwanUm/open-feed: Your personal dev news feed, assembled entirely in your browser. No backend, no account, no telemetry. Show HN: A small game where you have to guess the stars of GitHub repositories GitHub - rduffyuk/engineering-memory-benchmark: Empirical study: layered retrieval (typed→semantic→grep) scores 0.954 for LLM-generated engineering artifacts. 5 conditions, 3 model tiers, 36 generated ADRs, 23 score files. GitHub - lc-at/atproxy: A program to transparently proxy an Android app TCP traffic via using iptables to an HTTP proxy server upstream AI Agent Token Cost Calculator - TinyOps Studio Show HN: Presentforme.ai – Make slide decks explain themselves Show HN: A high-performance audio visualizer using Rust, WASM, and React BYOW(Build Your Own Wallet) : A Field Guide to Building MPC Wallets in 2026 - Part 1 Show HN: GPTFortress, a 24/7 live-stream playing Dwarf Fortress with GPT-5 Riot · OCaml stack GitHub - human-avatar/skills-for-humanity: Structured reasoning methodologies from history's most rigorous thinkers, packaged as Claude Code skills. GitHub - rednakta/nilbox: Desktop sandbox for AI agents and MCP servers — with Zero Token Architecture so your API keys never touch the agent. GitHub - cthing/versionparser: Parses versions in a wide range of formats and provides a canonical, comparable version object. GitHub - Dogacel/auto-gpu-kernel: Winner 🏆 (Agent-only) MLSys 2026 - FlashInfer AI Kernel Generation Contest for the DeepSeek Sparse Attention (DSA) track with an average speedup of 34.93x GitHub - p-raj/collab-sqlc: Self-hosted collaborative SQL editor for teams Lily Design System Show HN: AgentToolBench-Code – security benchmark for AI coding agents GitHub - redraw/rapel: chunked resumable downloads in unstable networks GitHub - lucasfrederico/pgcraft: lazygit-style TUI for Postgres. Navigate schemas, run queries, view explain plans — without leaving the terminal. 将 Notion 页面嵌入您的网站 | 免费试用! Show HN: Aigis – 43% of MCP servers have injection payloads; I built a firewall Audio to Video Converter AI Online Free GitHub - ClickHouse/nerve GitHub - highpost/tailscale-macos-vm: Using Tailscale with an OrbStack VM on macOS Show HN: OpenBrief – Local-first video downloader/summarizer Artifice Software | Synonym and Antonym Game GitHub - tomfunk/fungible: Terminal UI for personal finance — Plaid sync, CSV import, AI assistant, and MCP server Show HN: Unsiloed AI – #1 on OlmOCR-Bench,Beats Reducto, LlamaParse and GPT-5.5 Show HN: AI skills for program / project / delivery managers The Grid: The Largest Machine Ever Built | The Stepchange Show GerbDiff — Local-First Gerber Diff Tool for PCB Engineers Show HN: Built a tool to create brand-consistent images using AI GitHub - ndom91/macos-random-jellyfin-screensaver: Play a random Jellyfin item as your screensaver Bae — the AI companion who actually knows you Open Source Social Media Scheduler — TryPost GCal Sidebar Custom New Tab Dashboard with 50+ Widgets — Start Page HQ iPhone 版“Today” - App Store GitHub - ystepanoff/awo: AWO — Agent Worktree Orchestrator: a local Go CLI that coordinates Claude Code and Codex across isolated git worktrees with deterministic verification. HypeCheck — Is Your Supplement Legit or Just Hype? GitHub - rjpruitt16/aquifer: API Aqueduct — self-hosted request queue for inbound and outbound rate control GitHub - yamafaktory/hypergraph: Hypergraph is a data structure library to create a directed hypergraph in which a hyperedge can join any number of vertices. Show HN: YourMemory, persistent memory layer with temporal reasoning for agents CloudPostOffice — Simplest way to send and receive messages UUTA — A calm notebook for showing up AI API Pricing Calculator — Compare Costs Across Providers GitHub - scosman/cursed_browser: True AI-Native Browser — a VLM reads the HTML and hallucinates the page. Linear Chess Show HN: Browser-based Glider Sim Next Train GitHub - xfoa/Impatience: A library for instrumentation of event-to-event latency over a network GitHub - bitomule/musts: The validation loop that stops AI coding agents from claiming work is done before it actually is. Feynman - AI research assistant SynapCores — the AI-native database GitHub - erikshelley/complete-family-tree-viewer: A webpage for viewing all of a person's family tree at once GitHub - Noumenon-ai/AutoMaxFix: Controlled AI repair loop. Audit → Reproduce → Patch → Test → Report. Safety boundaries most AI agents skip. GitHub - JosephRedfern/plonk: Python interpreter at your fingertips Open Satchel — A free local-first PDF editor. Show HN: Hackobar – One feed for AI news GitHub - ghostchat-dev/widget: ~10KB chat widget. Zero cookies. Zero tracking. Fully open source. tiltbump X posts as clean Markdown for LLMs Symbol Combos — Cute Symbols, Kaomoji & Aesthetic Emojis to Copy GitHub - SellswordSoftware/justbookmarks: A simple desktop bookmark manager that uses the Netscape Bookmark HTML format so you can keep one browser-independent source of truth. SailWP. WordPress without the weight. Show HN: Widget Cast – Video Widgets for iOS
GitHub - think41/extrasuite: Token-efficient pull/edit/push workflow for AI agents editing Google Workspace files (Sheets, Docs, Slides, Forms)
ksri · 2026-04-17 · via Hacker News: Show HN

ExtraSuite is a library to create and edit google docs/sheets etc using simple formats like markdown / json / tsv. It is meant for AI agents like claude / codex, and is designed to be token efficient.

Lets assume you want to edit a large google document:

  1. You pull the google document. This creates a local folder with 1 markdown file per tab, and an index.md with the headings from each tab.
  2. You edit the markdown files. No special rules - its simple markdown
  3. You push the folder. This command understands your changes and applies them to the google document.

The push command does a lot of heavy lifting.

  1. It first diffs the markdown to find exactly what you changed.
  2. Then it finds out what batchUpdate requests are needed to reconcile the document
  3. If tracks index drifts and ensures subsequent operations use the correct index
  4. It tracks dependencies across batchUpdate calls. For example, if you create a new markdown file for a tab - then it will first create the tab in one request, then use the id to create the contents inside that tab.

Net result: A single pull command can make complex changes across the entire google document.

The push command makes a few promises:

  1. It won't change anything it doesn't understand. So if you have complex formatting, fonts, styles - it won't modify or make changes to it. You can still edit the content without messing with the styles.
  2. It will make the smallest operation to reconcile the document. In other words - "Delete and re-insert" is a bug.

The push command also supports comments. This lets you provide feedback to the agent via comments, and then ask the agent to address them.

Similar principles apply to google sheets:

  • A google sheet is a folder with a spreadsheet.json. The spreadsheet.json shows the shape of every worksheet (top 5 rows per worksheet)
  • Each worksheet is a folder. It has a data.tsv, formula.json and other feature specific files
  • Formulas and formatting details are compressed and applied to a range rather than to a cell. The agent sees 'Okay, this column has sum applied' or 'Okay - that row is bold'.
  • Reference documents are provided - for example, the list of formulas provided by google sheets.

Why ExtraSuite when gws / goglcli exist?

gws and gogcli cover a breadth of use cases in the google workspace ecosystem, but fail short when it comes to editing files. They can edit small things here are and there, but struggle when you want to make changes in a meaningful manner. You want to take to your agent in your domain - "Modify this SOW based on the pricing from this spreadsheet". For a task like that, gws/gogcli will struggle.

Google Docs (and spreadsheets to a lesser extent) have a complex representation.

  • The agent must reason about the API's internal structure (paragraph indices, cell references, range coordinates) rather than content.
  • Every edit requires reading back the current state to compute correct offsets and IDs.
  • Token usage balloons: raw API responses for a 20-page doc or a 500-row sheet are enormous.
  • There's no clean way to review or test what the agent will change before it changes it.

ExtraSuite complements gws and gogcli — if you have either of these tools installed, you can directly run


Getting Started

Install

uvx extrasuite --help

Or install persistently:

uv tool install extrasuite

The --help flag on any command is the authoritative reference. Run extrasuite <module> --help for a workflow overview, and extrasuite <module> <command> --help for full flag documentation.

Authentication

ExtraSuite piggybacks on credentials from other Google CLI tools you may already have configured.

If you use gws: ExtraSuite auto-detects your gws credentials (~/.config/gws/client_secret.json) and reuses them. No additional setup.

If you use gogcli: ExtraSuite auto-detects your gogcli credentials and reuses them. No additional setup.

From scratch: Set up OAuth client credentials using either gws's setup guide or gogcli's setup guide, then use ExtraSuite alongside them.

In all the above modes, edits appear in Google Drive under your own Google account.

ExtraSuite gateway server (teams): For a distinct agent identity and audit trail, deploy the ExtraSuite server. See the deployment documentation for setup.

Quick Start

Once authenticated:

# Pull a sheet, edit it, push it back
uvx extrasuite sheets pull "https://docs.google.com/spreadsheets/d/..." <folder>
# edit files in <folder>
uvx extrasuite sheets push <folder>

# Pull a doc, edit it, push it back
uvx extrasuite docs pull "https://docs.google.com/document/d/..." <folder>
# edit files in <foldeR>
uvx extrasuite docs push <folder>

Agent Identity and Security (ExtraSuite Gateway Mode)

The features below require deploying the ExtraSuite server. This is suitable for teams and small organizations who want tighter control over what agents can access and do.

A Dedicated Identity Per Employee

Every employee's agent gets its own Google service account (e.g. alice-agent@your-project.iam.gserviceaccount.com). The agent can only access files that have been explicitly shared with that service account — nothing else in Drive is visible. All edits appear in Google Drive version history as "Edited by Alice's agent", not as Alice herself.

Typed Commands and Minimal Scope

The client sends a typed command to the ExtraSuite server along with the agent's stated reason. The server determines the minimum required credentials:

  • Pull/push operations (Sheets, Docs, Slides, Forms, Drive) → short-lived service account token, valid 1 hour
  • User-impersonating operations (Gmail, Calendar, Apps Script, Contacts) → short-lived delegated token scoped to exactly the required OAuth scope, valid 1 hour

The command type, context, and reason are logged server-side before any token is issued.

Security Properties

Property How ExtraSuite Achieves It
Scoped access Each agent has a dedicated service account; only sees explicitly shared files
Short-lived tokens Google access tokens expire after ~1 hour; generated on demand, never stored
Typed commands Server issues the minimum token type and scope for the declared operation
Agent intent logging Reason logged alongside command type before any token is issued
Audit trail All agent edits appear in Google Drive version history attributed to the agent
Sandboxable Agent only edits local files and calls pull/push; no arbitrary API access
Minimal OAuth scope Only the scopes needed for the specific operation are requested

Deploy the Server

gcloud run deploy extrasuite-server \
  --image=ghcr.io/think41/extrasuite-server:latest \
  --service-account=extrasuite-server@$PROJECT_ID.iam.gserviceaccount.com \
  --region=us-central1 \
  --allow-unauthenticated \
  --set-env-vars="ENVIRONMENT=production,GOOGLE_CLOUD_PROJECT=$PROJECT_ID" \
  --set-secrets="GOOGLE_CLIENT_ID=extrasuite-client-id:latest,GOOGLE_CLIENT_SECRET=extrasuite-client-secret:latest,SECRET_KEY=extrasuite-secret-key:latest"

See the deployment documentation for full setup instructions.

Employee Onboarding (gateway mode)

  1. Employee logs into the ExtraSuite server and notes their agent's service account email
  2. Runs extrasuite auth install-skill to give the agent its instructions
  3. Shares specific Google files with the service account (editor or viewer, as needed)
  4. Agent runs extrasuite <module> pull <url> and the workflow begins

CLI Reference

Modules

Module Description
sheets Google Sheets — pull/edit/push spreadsheets via TSV and JSON
docs Google Docs — pull/edit/push documents via markdown
slides Google Slides — pull/edit/push presentations via SML markup
forms Google Forms — pull/edit/push surveys and quizzes via JSON
script Google Apps Script — pull/edit/push standalone and bound scripts
gmail Gmail — compose drafts, read and reply to emails
calendar Google Calendar — view, create, update, delete events
drive Google Drive — list and search files
contacts Google Contacts — sync, search, and manage contacts
auth Authentication management

Core Commands (sheets / docs / slides / forms / script)

Command Description
pull <url> Download the file to a local folder
push <folder> Apply changes to Google
create <title> Create a new file
share <url> <emails> Share the file with trusted contacts

Gmail Commands

Command Description
compose <file> Save an email draft from a markdown file
edit-draft <id> <file> Update an existing Gmail draft
reply <thread_id> <file> Create a reply draft in an existing thread
list Search and list Gmail messages
read <id> Read a Gmail message

Calendar Commands

Command Description
view View events for a time range
list List all calendars
search Search events by title or attendee
freebusy Check when a group of people are free
create <file> Create an event from a JSON file
update <id> Update an existing event
delete <id> Cancel or delete an event
rsvp <id> Accept, decline, or mark tentative

Development

# Client
cd client && uv sync
uv run pytest tests/ -v

# Server
cd server && uv sync
uv run uvicorn extrasuite.server.main:app --reload --port 8001

# Tests and linting
cd server && uv run pytest tests/ -v && uv run ruff check .

License

MIT License — see LICENSE for details.