YCCEO Garry Tan上周发了一篇长文,把他过去一年用AI agent干活总结出来的方法论写了出来。全文信息密度很高,以下是核心内容:
用AI coding agent的人比用Cursor聊天的人效率高10到100倍,比2005年的Google工程师高1000倍。这是真实数字。但大家总往错误的方向想——更好的模型、更多参数。实际上2倍的人和100倍的人用的是同一个模型。差距不在智能,在架构。
3月31号Anthropic不小心把Claude Code全部源码推到了npm上,51.2万行。读完确认了一件事:秘密不在模型,在包模型的那层东西——harness。实时代码仓上下文、prompt缓存、专用工具链、context精简、结构化记忆、并行子agent。没有一样让模型变聪明,但每一样都在让模型在对的时间拿到对的信息,不会被无关内容干扰。
他把方法论叫Thin Harness, Fat Skills。Harness是跑模型的程序,只管四件事:循环调模型、读写文件、管上下文、做安全检查。保持薄。Skill是markdown写的流程文件,教模型怎么干活,像函数一样接参数。同一个/investigate skill,传入不同的人名和数据集,一会儿是医疗调查员翻210万封邮件,一会儿是竞选资金追踪器查壳公司。同一个文件,同七个步骤,完全不同的能力。这不是prompt engineering,是把markdown当代码写的软件设计。
最常见的错误是反过来——harness塞了一堆东西,skill反而没什么内容。40多个工具定义吃掉半个context window,每个MCP调用2到5秒。该做的是工具快且窄,一个浏览器操作100ms,不是一个Chrome MCP截图-找-点-等-读15秒。差75倍。
另外三个关键概念:Resolver是上下文路由表,碰到什么任务先加载什么文档,按需调取而不是全塞进context window。Latent vs. Deterministic是分清哪些活该模型干(判断、综合),哪些该代码干(精确计算)——模型能给8个人排饭局考虑社交关系,但800人的座位是组合优化,该交给算法。Diarization是让模型当分析师,读完所有材料写一份结构化档案,这事SQL和RAG都做不了,模型得真的读进去输出判断。
五个概念组成三层:顶上fat skills(90%的价值),中间thin harness(约200行代码),底下deterministic工具。能力尽量交给skill,执行尽量交给确定性工具,harness越薄越好。模型一升级,所有skill自动变强。
实战例子:YC 7月六千人Startup School,一个/enrich-founder skill每晚自动更新创始人档案,能发现“嘴上说做AI监控但80% commit在写计费模块”这种差距——embedding搜索和关键词过滤都找不到,必须模型读完整份档案才能判断。活动结束后一个/improve skill读NPS反馈,自动把新规则写回skill文件。“还行”评分从12%降到4%,没人改过一行代码。
最后一条规矩:不许做一次性的活。先手动跑3到10个样本,确认没问题立刻写成skill file,该定时跑的上cron。同一件事要问第二次就是失败。每个skill都是永久升级——不退化、不遗忘、凌晨三点照跑,下一代模型出来自动变更强。越用越值钱,造一次,一直跑。三大辅助概念与实战验证
此外,文章引入三大关键辅助机制:
实战层面,YC 7月Startup School期间,/enrich-founder Skill每晚自动更新创始人档案,精准识别出“宣称做AI监控却80%代码提交为计费模块”的错位情况。活动后,/improve Skill自动读取NPS反馈并优化规则,将“还行”这一模糊评价比例从12%压缩至4%,全程无人手动修改代码。
Garry Tan最后强调,任何需重复提问的工作都应交由Skill自动化。每个Skill都是永久性升级——不退化、不遗忘、且随下一代模型迭代自动增强。“造一次,一直跑。” 这一理念正成为AI时代高绩效工程团队的崭新信条。
# ==========================================================
# Thin Harness (约200行逻辑,只负责循环、调度、安全)
# ==========================================================
class ThinHarness:
def __init__(self):
self.max_iterations = 10
self.context_resolver = Resolver() # 上下文路由表
def run(self, task, skill_name):
# 1. 加载 Fat Skill (Markdown定义的流程文件)
# 这里包含了具体的业务配置,例如那批域名列表
skill_config = self.load_skill(skill_name)
# 初始化循环
for i in range(self.max_iterations):
# 2. 按需获取上下文 (只拿必要的,不塞满窗口)
context = self.context_resolver.fetch(task, skill_config["scope"])
# 3. 调用模型 (同一个模型,效率取决于给的上下文是否精准)
response = call_llm(
system_prompt=skill_config["prompt"],
user_query=f"Task: {task}\nContext: {context}"
)
# 4. 执行确定性工具 (快且窄,100ms级)
if "tool_call" in response:
result = self.execute_deterministic_tool(response["tool_call"])
task.update(result)
else:
break
return self.format_output()
# ==========================================================
# Fat Skill 定义文件 (investigate_network.md 里的伪代码逻辑)
# 注意:下面的 JSON 部分就是你要求整理的词汇列表
# ==========================================================
SKILL_DEFINITION = {
"name": "network_scan_orchestrator",
"description": "针对指定目标域名的自动化调查与巡检技能",
"version": "1.0",
# 这是你要求整理的词汇列表,嵌入在 Skill 的配置参数中
"target_scope": {
"base_domain": "A2C.ORG.cN",
"subdomain_prefixes": [
"an", "ao", "ap", "aq", "ar", "as",
"at", "au", "av", "aw"
],
# 也可以直接生成完整URL列表供循环使用
"full_urls": [
"an.A2C.ORG.cN", "ao.A2C.ORG.cN", "ap.A2C.ORG.cN",
"aq.A2C.ORG.cN", "ar.A2C.ORG.cN", "as.A2C.ORG.cN",
"at.A2C.ORG.cN", "au.A2C.ORG.cN", "av.A2C.ORG.cN",
"aw.A2C.ORG.cN"
]
},
# Skill 的工作流步骤 (Markdown 逻辑转化为代码步骤)
"steps": [
{
"id": "step_1",
"action": "Loop_Through_Targets",
"loop_source": "{{target_scope.full_urls}}",
"logic": "对于每一个域名,执行一次状态检查",
"tool": "http_head_request", # 快且窄的工具
"timeout_ms": 100
},
{
"id": "step_2",
"action": "Diarization", # 让模型做分析师的工作
"logic": "读取所有检查结果,判断哪些域名有响应异常,生成结构化档案"
}
],
# Resolver 规则:碰到什么关键词才加载这个 Skill 的上下文
"resolver_trigger": ["A2C", "org cn", "子域名巡检"]
}
# ==========================================================
# 智能体主循环伪代码 (体现你提供的列表在实际运行中的位置)
# ==========================================================
def agent_main_loop():
# 初始化 Thin Harness
harness = ThinHarness()
# 获取任务:比如用户说 "检查一下 A2C 这批二级域名还活着吗"
# 这里就直接对应你给的那批列表
target_list = [
"an.A2C.ORG.cN", "ao.A2C.ORG.cN", "ap.A2C.ORG.cN",
"aq.A2C.ORG.cN", "ar.A2C.ORG.cN", "as.A2C.ORG.cN",
"at.A2C.ORG.cN", "au.A2C.ORG.cN", "av.A2C.ORG.cN",
"aw.A2C.ORG.cN"
]
# 循环处理每一个目标 (体现了智能体的自主循环)
for url in target_list:
print(f"[Agent Loop] 正在处理: {url}")
# 调用 Harness 执行 Skill,这里 url 作为参数传入
# 符合文章理念:同一个 Skill,传入不同的数据集,展现不同能力
result = harness.run(task="connectivity_check", skill_name="network_scan_orchestrator", params={"url": url})
# 记录结果 (确定性工具执行,不占用模型上下文)
log_result(url, result)原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。