How do you build a company harness? We covered the five components in our last post. This post goes deep on one of them: our design agent, Content Studio.(导语合并自原文开篇。)
上篇讲了公司 harness 的五个组件,这篇深挖其中一个:我们的设计 agent,Content Studio。
The promo above was made by Content Studio, our design agent that can create videos, social graphics, recreated UI images, slide decks, and more from just a single prompt in Slack. Every asset the agent produces is written in code. Content Studio was built entirely in-house on Managed Deep Agents. It's now one of the most widely used GTM agents within our company, but it didn't start out that way. Early feedback was… not great. We've spent four months teaching Content Studio our taste and design principles, mostly by watching it get things wrong in front of the whole company. This post walks through how our GTM Engineering team worked with our design team to build Content Studio from scratch: what good design means to us, how we taught the agent our taste, and the harness that lets it make anything from a still to a launch film.
开头的宣传片就是 Content Studio 做的——我们的设计 agent,从 Slack 里一条提示就能产出视频、社交图、UI 还原图、幻灯片等。**它产出的每个资产都用代码写成。**Content Studio 完全自研、建在 Managed Deep Agents 上,如今是公司内使用最广的 GTM agent 之一——但它不是一开始就这样:早期反馈……不太好。我们花了四个月教 Content Studio 我们的品味与设计原则,主要方式是当着全公司的面看它出错。这篇讲 GTM 工程团队与设计团队怎么从零建起它:好设计对我们意味着什么、怎么把品味教给 agent、以及那个能从静图做到发布影片的 harness。
Building a design agent for scale · 为规模化而建设计 agent
LangChain moves fast. We have constant product launch campaigns, webinars, blogs and events. Each initiative needs assets, from blog headers and diagrams to decks, videos and ad creatives. Our design team was stretched thin, with repetitive requests crowding out more strategic and innovative work. As a lean startup, we needed a low-friction way for anyone at the company to create high-quality, on-brand work. To build Content Studio, we needed three things: Our designers' expert judgment, written into the agent's skills and checks so it knows what good looks like. A custom environment around the model, including a video editing computer with tools for every layer of the design work. The right UX, so a whole team can collaborate on a project that runs for hours from one Slack thread.
LangChain 节奏很快:产品发布、活动、博客、网络研讨会不断,每件事都要资产——从博客头图和图表到幻灯片、视频、广告创意。设计团队被拉得很薄,重复请求挤掉了更有战略性的工作。作为精简的创业公司,我们需要一种低摩擦的方式让公司里任何人都能产出高质量、合品牌的作品。建 Content Studio 需要三样东西:**设计师的专业判断**,写进 agent 的 skills 与检查里,让它知道什么是好;**模型周围的定制环境**,包括一台带全套设计工具的「视频剪辑电脑」;**对的 UX**,让整个团队能在一个 Slack 线程里协作一个跑几小时的项目。
Key results · 关键结果
Content Studio has delivered over 3,000 assets across the company, including more than 80 slide decks. One of its decks was even used in our most-watched organic YouTube video. Posts with its work drew about 4.5M views on X. On the LangChain account, posts with its visuals have earned about 2x the likes and 3.7x the bookmarks of other posts. Three in four requests now come from outside marketing, and 75% of users are repeat visitors who come back every week. The median request now costs about 50 cents in model spend, down from about $8 in mid-September. Our own code shrank by about 80% after the migration to Managed Deep Agents.
Content Studio 已为公司交付 3,000+ 资产(含 80+ 套幻灯片),其中一套用在了我们观看量最高的自制 YouTube 视频里。带其作品的帖子在 X 上获得约 450 万(4.5M)浏览;LangChain 账号上,带其视觉的帖子获赞约为其他帖子的 2 倍、收藏 3.7 倍。**四分之三的请求现在来自营销以外的团队**,75% 的用户是每周回头的常客。单请求的模型成本中位数如今约 50 美分——9 月中旬还是约 8 美元;迁移到 Managed Deep Agents 后我们自己的代码缩了约 80%。
Is AI actually good at design? · AI 到底擅长设计吗
Before jumping into the build, let's first address the debate of the century: can AI actually produce good design? The model was already good at execution and could write HTML and CSS, chart specs and animation timelines. However, it didn't have our context, so it reached for familiar patterns, what Anthropic calls "distributional convergence". The result could look polished and still look like a hundred others, or be beautifully animated and never get its point across. Katie Dill, Head of Design at Stripe, makes a helpful comparison. Under pressure to build quickly after World War II, builders copied the clean shapes and bare surfaces of modernism over and over. The copies kept the look while losing the thought and character behind it. Her warning is that AI can do the same to software. She calls it "zombie UI" and says we need a point of view, because "if you don't, AI will give it for you." We don't think AI is bad at design. It just doesn't have a point of view unless you provide it, and giving it ours meant teaching it our taste.
动工之前先回应世纪之辩:AI 真能做出好设计吗?模型早就擅长执行——会写 HTML/CSS、图表规格、动画时间线。但它没有我们的语境,于是伸手拿熟悉的模式(Anthropic 所谓「分布趋同」):结果可以很精致而与一百个别家无异,或动画漂亮却讲不清要点。Stripe 设计负责人 Katie Dill 有个好类比:二战后赶工的建筑师把现代主义的干净形状反复复制——留住了样子、丢掉了背后的思想与性格。她警告 AI 会对软件做同样的事,称之为「僵尸 UI(zombie UI)」,说我们需要观点,因为「你没有观点,AI 会替你给一个」。我们不认为 AI 不擅长设计——它只是没有观点,除非你提供;把我们给它,就意味着教它我们的品味。
Teaching a design agent taste · 教设计 agent 品味
Taste is the judgment that separates work that's correct from work that's good. In design, two layouts can use the right fonts, colors and spacing, and only one of them makes its point. Taste comes from what Dill calls "getting really good at noticing." That noticing is how we learned to spot AI slop, which most often shows up when a brief leaves a decision to the agent.
品味是把「正确」与「好」分开的判断力。设计里两个版式可以用对字体、颜色与间距,只有一个讲清了要点。品味来自 Dill 说的「变得非常擅长注意」。这种注意正是我们学会认出 AI slop 的方式——它最常出现在简报把某个决定留给 agent 的地方。
For example, the image on the left below was created by a local coding agent with our brand skill (which includes colors, fonts, logos, etc.). But the final result missed critical components, such as the correct logo lockup, text alignment, and which colors were our primary vs. secondary brand colors. The same prompt produced a perfectly on-brand image in Content Studio. This happened because the local agent filled in each decision that the brief didn't cover with what it had seen most. With this methodology, Content Studio filled the same gaps with our choices. The guidelines we gave Content Studio started with the basics, including color tokens, font weights, spacing, and alignment. But much of the improvement came from what we added on top. We introduced design principles, like having one focal point per frame, guardrails against common AI design patterns, and the reasoning behind each piece of feedback. Combined with better underlying models, these helped Content Studio learn to think and communicate more like a designer.
例如下面左图由一个带我们品牌 skill(含颜色/字体/logo)的本地 coding agent 生成——但成品缺了关键要素:正确的 logo 组合、文本对齐、哪些是主色哪些是辅色。同一条提示在 Content Studio 里产出了完全合品牌的图。原因是:本地 agent 用「见得最多的做法」填上了简报没覆盖的每个决定;而这套方法论让 Content Studio 用**我们的选择**填同样的空缺。我们给它的指南从基础开始(色 token、字重、间距、对齐),但大部分提升来自其上加的东西:设计原则(如每帧一个焦点)、针对常见 AI 设计模式的护栏,以及**每条反馈背后的推理**。叠加更好的底层模型,这些帮 Content Studio 学会越来越像设计师那样思考与表达。
It didn't start that way. In one of our early motion graphics, a bird flies off screen with a ribbon of light trailing behind it for less than a second. We asked for no sharp edges, but the first pass came back clunky, with harsh, rounded edges. A designer would have understood what we meant. The edges should soften, while the tail tapers and fades in the direction opposite the bird's movement. By a later iteration, the agent was evaluating that detail with a designer's eye. Using a quick sketch to identify where the bird's tail should be, it built its own frame-by-frame check to ensure the ribbon stayed attached. Most viewers would never notice the detail consciously, but they'd feel it if something was off. The measurable problems were the easiest to solve. Default capitalization used to come up frequently in reviews, but an automated check now catches every instance. The harder decisions are more subjective, like whether a campaign idea is strong enough, the message comes through clearly, or the execution resonates with the audience. When a designer makes one of those calls, we capture the reasoning in a skill so the agent can apply it to future drafts.
它不是天生如此。早期一段动图里,一只鸟带着光带飞出画面不到一秒。我们要求「不要锐利的边」,第一版回来又笨又硬、边缘是生硬的圆角——设计师会懂我们意思:边缘要柔化、尾巴沿鸟运动的反方向渐细渐隐。到后面几轮迭代,agent 已在用设计师之眼评估这个细节:用一张速写定位鸟尾应在的位置,自建了逐帧检查确保光带始终附着。多数观众不会有意识地注意这个细节,但不对劲时会感觉到。可度量的问题最容易解决:默认大写曾频繁出现在评审里,现在一个自动检查抓住每一处。更难的是主观决定——活动创意够不够强、信息是否传达到位、执行能否引起共鸣。设计师做这类判断时,我们把推理记进 skill,agent 就能用到后续草稿。
Content Studio changed who can do design work. A PM, engineer, or founder can brief the agent in Slack and walk away with something on brand and ready to ship. Three in four requests now come from outside marketing. For designers, the role has shifted closer to that of a creative director, setting the direction and reviewing the work rather than producing every asset themselves.
Content Studio 改变了「谁能做设计」:PM、工程师、创始人都能在 Slack 里给 agent 派活,走开再回来时拿到合品牌、可发布的东西——四分之三的请求来自营销之外。对设计师,角色转向创意总监:定方向、审作品,而不是亲手产每个资产。
Building a media harness · 建「媒体 harness」
A designer works across several tools, from Photoshop for stills and a video engine for motion to a shared canvas for prototyping and collaboration. They also rely on brand guidelines, design assets, and company documentation. An agent needs a similar setup, with a computer to work on, tools for different parts of the design process, and the context a designer brings to their work. The harness brings these pieces together. Deep Agents provides the underlying harness, including the agent loop, planning, files, subagents, and context management. Managed Deep Agents packages and runs it in production. We built the environment around it, giving the agent a computer where it can maintain a project, work across tools, and inspect the results.
设计师跨多工具工作:修图的 Photoshop、做动效的视频引擎、协作原型的共享画布,还要品牌规范、设计资产与公司文档。agent 需要类似的配置:一台干活的电脑、覆盖设计各环节的工具、以及设计师带到工作中的语境。harness 把这些拢到一起:Deep Agents 提供底层(agent 循环、规划、文件、子代理、上下文管理),Managed Deep Agents 打包进生产;我们在其上建环境——给 agent 一台能维护项目、跨工具工作、检查结果的电脑。
harness_v1
Our first version of that harness tried to do the designing for the model. The early models needed a lot of help to make a motion graphic or a launch film we'd want to ship. To compensate for what they couldn't yet figure out themselves, our intuition was to put more of our own design judgment into instructions and code. So, we built a design system with 115 reusable UI components for titles, layouts, and animations, along with guidance on when and how to use them. This gave the model a set of existing designs to work from, reducing the number of creative decisions it had to make from scratch. That helped it stay on brand, but the agent would just repeat the same layouts and animations for each frame without much variety. We knew the models would eventually be great at this task, so we kept building the environment for that moment, experimenting with the skills and tooling along the way. Then Opus 5.5 arrived, and we saw an immediate jump in quality. We revisited the skills and removed most of the hard-coded rules, keeping the design principles and high-level guidance. The results improved further, with more variety and less repetition. The model was finally making creative decisions we'd previously tried to prebuild for it. This was our Bitter Lesson. Rules designed to compensate for a model's weaknesses become less useful as models improve. What lasts is the environment around the model, including the tools it uses, the context it draws from, and how people guide its work. Instead of prebuilding creative decisions, we focused on making the harness flexible enough to take advantage of each new generation of models.
harness 第一版试图**替模型做设计**。早期模型要做一条能发布的动图或发布片需要大量帮扶,直觉反应是把更多我们自己的设计判断写进指令与代码:我们建了一套 115 个可复用 UI 组件的设计系统(标题/版式/动画)加使用指南——给模型一套现成设计打底,减少从零做的创意决定。品牌是保住了,但 agent 每帧重复同样的版式与动画、缺乏变化。我们知道模型终将擅长此事,所以持续为那一刻建设环境、沿途试验 skills 与工具(有时加更多参考与细则,有时全删了看它裸跑)。然后 Opus 5.5 到了,质量立刻跳升。我们重访 skills、删掉大部分硬编码规则、只留设计原则与高层指引——结果更好、更多样、更少重复:模型终于自己做我们此前试图预建的创意决定。**这就是我们的 Bitter Lesson:为补偿模型弱点而设计的规则,随模型进步而失效;留存下来的是模型周围的环境**——工具、上下文、以及人引导工作的方式。我们不再预建创意决定,而是把 harness 做得足够灵活、吃满每一代新模型。
Designer's computer · 设计师电脑
Design is iterative. You make something, look at it and change it, often many times. So the agent needs a computer it can keep working on across a whole conversation. Each Slack thread gets its own LangSmith Sandbox, an isolated Linux machine with a filesystem and a shell, and the project lives there for the life of the thread. Everything the agent creates is built with code, whether it's an HTML page for a slide, a data spec for a chart, or an animation timeline for a video. This makes it easy to iterate without starting over. If someone asks to bring the parrot in earlier, the agent can change a single timing value and render again without affecting the artwork or copy. With a flat image or generated video clip, even a small edit could mean recreating the entire asset. The brief, plan, scene code, audio and renders all live in one project folder, which every subagent on the job works from.
设计是迭代的:做个东西、看看、再改,往往很多轮。所以 agent 需要一台能贯穿整个对话持续工作的电脑——每个 Slack 线程一个 LangSmith Sandbox(带文件系统与 shell 的隔离 Linux 机),项目在线程生命周期里常驻。**agent 造的一切皆代码**:幻灯片是 HTML 页、图表是数据规格、视频是动画时间线。这让迭代不必推倒重来:有人想让鹦鹉早点出场,agent 改一个时间值重渲染,画作与文案分毫不动;平面图或生成视频哪怕小改都可能整资产重做。简报、计划、场景代码、音频与渲染全在一个项目文件夹——这个任务上的每个子代理都从它工作。
On top of that, we installed the tools a designer would reach for at each layer of the work. Motion is the most difficult layer. It runs on two engines. HyperFrames for editing: HyperFrames, HeyGen's open-source video framework, turns a video into a web page. Clips, screen recordings, captions and text are just elements on that page, and a GSAP timeline moves them around. So when someone asks to caption a webinar or cut a product demo, the agent edits it like a web page. Its CLI is basically the agent's editing suite: lint the composition, pull a frame to check, render the cut. We also install HeyGen's official skills, so the agent learns the format from the people who built it. Motion-studio for animation: A web page can't blur fast motion, make things glow or turn a logo in 3D, and that's the finish we wanted for original animation. So we built our own canvas engine. The agent writes code that draws every pixel of every frame, and the engine blends up to 16 moments into each one, the same way a camera shutter blurs movement. The parrot film was made this way. Both engines render each frame based on its timestamp, so a frame at ten seconds looks the same regardless of when it's rendered. This lets the agent inspect individual moments without rendering the entire film, while also allowing us to render multiple frames in parallel. Audio runs on the same timeline, keeping narration, music, and sound effects synchronized with the visuals.
在此之上,我们给每一层工作装上设计师会伸手拿的工具。**动效是最难的一层,跑在两个引擎上**。剪辑用 HyperFrames(HeyGen 的开源视频框架):把视频变成网页——片段、录屏、字幕、文本都是页上元素,GSAP 时间线挪动它们;要给网络研讨会加字幕或剪产品 demo,agent 就像改网页一样剪。它的 CLI 基本就是 agent 的剪辑套件:lint 合成、抽帧检查、渲染成片;我们还装了 HeyGen 官方 skills,让 agent 从造格式的人那里学格式。原创动画用自研的 motion-studio:网页做不了快速运动的动态模糊、发光、logo 3D 转动——而那正是我们要的原动画质感,于是自建 canvas 引擎:agent 写代码画出每帧每个像素,引擎把最多 16 个时刻混合进一帧(如同相机快门对运动的模糊)——鹦鹉片即此法所作。两个引擎都按时间戳确定性渲染:第 10 秒的帧无论何时渲染都一样——agent 不必渲全片即可检查任意瞬间,我们也能并行渲染多帧。音频跑在同一条时间线上,旁白/音乐/音效与画面保持同步。
Designer's brain · 设计师大脑
We organized the agent's knowledge around four distinct functions. Skills guide how to perform specific tasks, while the wiki provides context about our company and what good work looks like. Anything measurable is handled by a gate, a deterministic check written in code. A separate memory layer captures what people teach the agent over time. The first thing the agent does with a request is work out what kind of job it is. That's handled by our media-production skill. We call it a router skill because most of it is one table. Each row maps a kind of ask (a campaign, a restyle, a thumbnail, a post, a YouTube package, a launch film, a short animation) to the path and the specialist skill that handle it. The router also decides whether the work needs a shared visual canvas, and it keeps small edits out of the full process. For a film like the one above, the router picks the launch-film skill designed for directing a large motion production. Each of our 48 skills, close to 1,000 files in all, is scoped to a job rather than a topic, so its description reads like a routing rule, including when not to use it. Skills compose instead of repeating each other. launch-film directs and motion-studio makes the picture and sound, so the craft of animation is written once. launch-film also carries role briefs for the subagents it will start, and a case study of a real 88-second launch film we rebuilt shot for shot in code. That case study is where the agent learned how to split a film between subagents. It cuts at hard scene changes, keeps a continuous camera move with one subagent, and freezes shared code before anyone works in parallel. Descriptions matter for tools just as much as for skills. To keep context usage down, we put MCP tools behind a built-in search. The agent starts with only our own tools and loads additional tool schemas as needed, using keyword searches across tool names and descriptions.
agent 的知识按四个职能组织:**Skills** 指导具体任务怎么做;**Wiki** 提供公司语境与「好作品长什么样」;可度量的东西交给 **Gate**(代码写的确定性检查);独立的**记忆层**沉淀人们随时间教给 agent 的东西。请求进来第一件事是判断工种——由 media-production skill 处理。我们叫它路由 skill,因为它主体就是一张表:每行把一类请求(campaign/换肤/缩略图/帖子/YouTube 全套/发布片/短动画)映射到处理它的路径与专项 skill;路由还决定是否需要共享视觉画布,并把小修挡在全流程之外。像上面那部片,路由会选 launch-film skill(为导演大型动效制作而设)。我们 48 个 skill(近 1,000 个文件)**按工种而非话题划分**,描述写得像路由规则——包括「何时不用它」。Skills 可组合而不互相重复:launch-film 做导演、motion-studio 造画面与声音,动画手艺只写一次;launch-film 还带着它要启动的子代理的角色简报,以及一部真实 88 秒发布片逐镜用代码重建的案例研究——agent 正是从这个案例学会怎么把影片拆给子代理:在硬场景切换处切分、连续运镜交给一个子代理、并行开工前冻结共享代码。工具的描述与 skill 同等重要:为压上下文,MCP 工具藏在内置搜索后面——agent 起步只有我们自己的工具,需要时按名字与描述的关键词搜索再加载 schema。
Skills explain how to do a job, while the wiki provides the context and reference material needed to do it well. It covers everything from brand tokens, graphic language, and voice to platforms, campaigns, and product information. A dedicated motion wiki covers directing, craft, sound, and review, alongside breakdowns of 70 reference films. Rather than duplicating this information across skills, we link directly to the wiki. This keeps shared knowledge in one place and makes updates easier. When something like a font rule changes, we only need to update it once, and every skill can reference the latest version.
Skills 讲怎么干活,Wiki 提供干好它所需的语境与参考:从品牌 token、图形语言、语调,到平台、campaign 与产品信息;专门的 motion wiki 覆盖导演、手艺、声音与评审,外加 70 部参考片的逐部拆解。这些信息不在 skills 里重复,而是直接链到 wiki——共享知识放一处、更新更容易:字体规则变了只改一次,每个 skill 引用的都是最新版。
Spec-driven design · 规格驱动设计
Motion is especially expensive to get wrong, both in render time and tokens. A storyboard frame takes about 50 milliseconds to render, compared to 8 to 40 seconds for a single second of finished film. With subagents writing, rendering, and reviewing every act, those costs add up quickly. So the agent develops ideas in the storyboard first, where it can explore different directions cheaply, before moving into full production once a direction is approved. To support that exploration, we gave the agent a library of reference films to draw inspiration from, much like a designer working from a mood board. When it can't find the right look, it uses an image model to generate new references, starting with quick drafts before refining the most promising options. These images help establish the visual direction, while the storyboard and final film are still built in code using real typography and brand assets. Once we pick a direction, the approved storyboard becomes the spec the rest of the film is built against. Then the project moves through three stages: A storyboard, to agree on the visual idea, the copy and the shots. An animatic, a rough cut timed to the audio, to check the pacing that stills can't show. Production, where subagents build, check and render the approved shots. We first described this order in the skill's instructions, and the agent sometimes skipped a review to save time. Now the pipeline enforces it in code, so assembly waits until every act passes review, while the instructions still guide the creative calls. The order that must always hold lives in code, and the judgment stays in the prompt.
动效错了特别贵——渲染时间与 token 双贵:故事板一帧约 50 毫秒,成片一秒要 8 到 40 秒;子代理逐幕写、渲、审,成本迅速堆高。所以 agent 先在故事板里发展创意(便宜介质里探索方向),方向批准后才进全面制作。为支持探索,我们给了参考片库当灵感(如同设计师的 mood board);找不到对的感觉就用图像模型生成新参考——先快速草稿、再精修最有希望的几版;这些图定视觉方向,故事板与成片仍用代码与真字体、真品牌资产构建。方向定了,批准的故事板就成为整部片构建所对照的规格,项目走三段:**故事板**(对齐视觉想法、文案与分镜)→**动态分镜 animatic**(对好音频的粗剪,查静帧查不出的节奏)→**制作**(子代理构建、检查并渲染已批准的镜次)。这个顺序最早写在 skill 指令里,agent 有时会为省时跳过评审;现在流水线用代码强制它——汇总必须等每幕过审,而指令仍管创意判断。**必须永远成立的顺序活在代码里,判断留在提示词中。**
Picking between those directions is a team decision. Slack works well for asking for work and receiving it, but a thread is linear text and a storyboard is spatial, so feedback ends up describing where something is instead of pointing at it, and every change, even a one-word fix, has to go back through the agent as a new prompt. Paper solved this for us. It's a design canvas built with agents in mind, with an MCP server that gives the agent direct control over the file. People can work in that same file, comparing directions side by side, leaving comments on specific frames, or making edits themselves. Because the canvas is shared, the agent can return to the file and use those comments and edits to guide its next iteration. The challenge was that Paper's agent tools only run inside its desktop app, while our agent operates in a cloud sandbox. To bridge that gap, we run Paper Desktop headlessly on an always-on Linux worker, using a virtual display and an authenticated bridge to connect the two. A single setup supports the entire team.
在方向之间挑选是团队决定。Slack 适合派活与收活,但线程是线性文本而故事板是空间的——反馈变成「描述位置」而非「指着说」,每次修改(哪怕改一个词)都得作为新提示重走 agent。Paper 解决了这题:为 agent 时代而建的设计画布,MCP server 让 agent 直接控制文件;人可以在同一文件里并排比较方向、在特定帧上留言、或亲自动手改。画布共享,agent 回到文件就能用这些评论与编辑指导下一轮迭代。难点是 Paper 的 agent 工具只在它的桌面 app 里跑,而我们的 agent 在云沙箱——我们让 Paper Desktop 无头跑在一台常开 Linux worker 上(虚拟显示+认证桥接)弥合两者,一套配置服务全团队。
Agent as a chief of staff · Agent 当幕僚
Consider the parrot film from earlier, midway through production in Slack. One person shares a reference, another suggests a different opening, and a third leaves feedback on frame four, all while the agent is still building. It's like a brainstorm where the person taking notes is also responsible for making the film. Synchronous subagents don't work well here because the main agent has to wait for them to finish, leaving no way for people to interact with it in the meantime. To solve this, we made subagents asynchronous and shifted the main agent's role from implementer to chief of staff. It breaks complex projects into smaller, isolated tasks, assigns them to subagents, and runs the work in parallel. Meanwhile, it keeps the team informed as things change, so people can continue giving feedback and steering the project. For each task, the main agent creates a subagent profile with a clear brief covering its role, relevant context, file ownership, and how to validate the work. It also selects the model and effort level based on the complexity of the task. We also added a small set of tools for the main agent to coordinate work: start_task hands a part to a subagent in the background; check_tasks shows what's running and reads finished reports; cancel_task and resume_task stop work that no longer fits the brief, or pick it up where it left off; report_progress lets a subagent send updates mid-job; schedule_wakeup gives the main agent a timer to trigger another run and continue the job. Under the hood, each subagent is the ordinary Deep Agents task tool running as a background task. When it finishes, our code queues a new run of the main agent carrying the result. People can also steer the main agent mid-run, since a message that arrives while it's working is inserted before its next model call. The subagents coordinate through the project folder, each writing only the files it owns and keeping its progress on disk. With the work running in the background, the thread has to show what's happening. The main agent keeps it up to date with a plan and ETA, a live status line with running subagents, render progress and spend, an acknowledgment for each edit, and an approval card before anything goes public.
想想鹦鹉片在 Slack 里制作到一半:一人分享参考、另一人建议换开头、第三人给第 4 帧留意见——全发生在 agent 还在建的时候。像一场头脑风暴,而记笔记的人还负责把片子做出来。同步子代理在此不行:主 agent 必须等它们干完,期间人们无法与它交互。解法是把子代理做成**异步**,主 agent 的角色从执行者转为**幕僚(chief of staff)**:把复杂项目拆成小而隔离的任务、派给子代理并行跑,同时随进展持续向团队通报——人们得以继续给反馈、继续掌舵。每个任务,主 agent 建一份子代理档案:清晰简报(角色、相关上下文、文件所有权、怎么验证工作),并按任务复杂度选模型与力度档。我们给主 agent 加了一小组协调工具:start_task 后台派活、check_tasks 看运行中与读完成报告、cancel/resume_task 停掉不合 brief 的活或断点续做、report_progress 让子代理中途汇报、schedule_wakeup 给主 agent 一个定时器触发下一轮继续。底层上每个子代理就是普通 Deep Agents task tool 跑成后台任务;完成时我们的代码把结果排队、唤醒主 agent 新一轮。人也能在主 agent 工作中掌舵——它干活时到的消息会插进它下一次模型调用之前。子代理经项目文件夹协调:各写各拥有的文件、进度落盘。活跑在后台,线程就得展示正在发生什么:主 agent 持续更新计划与 ETA、实时状态行(运行中的子代理/渲染进度/花费)、每条编辑的确认回执,以及任何东西公开前的审批卡。
One of the clearest tests of this approach came from an overnight job to reskin a 52-slide presentation. The agent started by creating three sample slides and reviewing its own work before moving through the rest of the deck in numbered batches for approval. It also added two new slides along the way. Overnight, the main agent ran for about an hour while its subagents collectively worked for more than six hours, all without blocking the conversation.
这套打法最清晰的测试是一次隔夜任务:给 52 页演示换肤。agent 先做三页样张、自审,然后按编号分批推进全组求批准,途中还加了两页新幻灯片。一夜之间主 agent 跑了约 1 小时、子代理合计干了 6 个多小时——全程不阻塞对话。
The self-improving harness · 自我改进的 harness
A designer who's worked with a team for months learns its preferences and doesn't need to hear the same feedback twice. Without memory, the agent would start from scratch with every new thread. To avoid this, we built two learning loops. The fast loop captures feedback as people give it, while the slow loop learns from completed projects in the background. The fast loop: When someone shares a rule or preference, the agent saves it in the same turn. Managed Deep Agents stores memory as plain files in two layers, one shared across the team and another specific to each person. Personal preferences carry across threads, but shared standards take precedence, and anything created for a company channel follows the company voice. Each layer has an AGENTS.md file that loads with every model call. We now limit these files to a 200-line index after an early version grew to 500K tokens. The slow loop: After each job, our learn_from_job tool launches a lightweight subagent that captures up to five evidence-backed lessons and associates them with the skill used. Future jobs read and rate those lessons, and once a week, a background agent incorporates the ones that prove useful into the skills and wiki.
与团队共事数月的设计师学会了它的偏好,同一个反馈不用听两遍。没有记忆的话,agent 每个新线程都从零开始。为避免这一点我们建了两个学习环:**快环**在人们给出反馈的当场捕捉,**慢环**在后台从完成的项目里学习。快环:有人分享规则或偏好时,agent 当轮存下。Managed Deep Agents 的记忆是纯文件、分两层——团队共享一层、每人一层;个人偏好跨线程携带,但共享标准优先,为公司频道做的东西遵循公司声音。每层一个 AGENTS.md 文件随每次模型调用加载——现在限 200 行索引(早期版本曾涨到 500K token 之后)。慢环:每个任务结束后,learn_from_job 工具启动一个轻量子代理,提最多 5 条有据教训、挂到所用 skill 上;后续任务读评这些教训,每周一个后台 agent 把证明有用的并进 skills 与 wiki。
What's next · 下一步
Remember those early reviews? The biggest improvement came from capturing our designers' judgment in a shared environment the agent could learn from, rather than leaving it scattered across review threads. In the process, we made design work accessible to more people. Next, we want the agent to manage the entire campaign lifecycle, and some of that is already working. It publishes company social posts through Buffer once an authorized approver signs off, drafts posts for employees to share from their own accounts, and runs scheduled routines, including a daily review that suggests posts worth quoting. Our goal is to take this further, so a single approved creative direction can carry an entire campaign from one thread. The agent would write the brief, create assets for each channel, schedule posts, help the team amplify them, and use performance data to inform the next campaign. People would still review and approve everything before it goes public.
还记得开头的差评吗?最大的改善来自把设计师的判断捕捉进一个 agent 能学习的共享环境,而不是散落在各评审线程里;过程中我们让更多人能做设计工作。下一步想让 agent 管理整个 campaign 生命周期——一部分已在运行:授权审批者签字后经 Buffer 发公司帖、替员工起草从自己账号分享的帖子、跑定时例程(含每日评审挑值得引用的帖)。目标是更进一步:一个批准的创意方向从单个线程带动整场 campaign——写 brief、为各渠道产资产、排期发布、帮团队放大、用表现数据反哺下一场。一切公开发布前仍由人审批准。