能不能打败claude fable 5不关心,比5.5有提升,且价格低一些就好。 18 个帖子 - 13 位参与者 阅读完整话题
最近微软的 SkillOpt 很火,几乎每个关心 agent 的人都会刷到。刚开始看这个工作时,我的第一反应其实有点怀疑:让 agent 执行任务,记录失败轨迹,再让模型根据反馈修改一段 skill 文档,这听起来并不陌生。它到底是在学 skill ,还是把 prompt optimization 换了一个更适合 agent 的名字? 但我把论文和项目材料看完以后,觉得这个问题不能只停在“是不是换壳”上。SkillOpt 最有意思的地方,不是它包装了一个新名词,而是它碰到了一个日常使用 agent 时很难绕开的问题:同一种错误出现第二次、第三次之后,agent 到底有没有学到什么? 我们最常见的处理方式仍然是人工纠正。比如这次发现 agent 改代码前没有看现有测试,于是在对话里提醒它,下次先读测试再动手。模型也可能在复盘里总结几条“以后需要更谨慎”的原则,但这段复盘随着上下文结束就失效了。更多时候,经验会被临时补进 prompt 或 skill 文件:加一句“检查边界条件”,再加一句“输出前确认结果”。短期看,问题像是被修掉了;换个任务之后,又可能在别处出现新的副作用。 这类是一类难以复用的经验。模型权重通常不可控,代码有测试和版本管理,但夹在中间的操作经验往往比较松散。客服 agent 遇到退款、发票、合规边界时,要知道先查什么、什么时候拒答、什么时候转人工;代码 agent 在 monorepo 里修改模块时,要知道该看哪些文件、跑哪组测试、避开哪些生成文件;数据分析 agent 面对 DAU 、收入、退款口径时,要知道如何核对定义。这些问题不完全是模型是否“知道答案”,更多是执行方法有没有被稳定保存。 讲到这里,SkillOpt 的问题就不能只问“是不是新算法”了。如果它的全部新意只是让模型改一份 Markdown ,那确实不够有说服力。但如果它在处理的是这些松散经验如何留下、如何验证、如何避免越改越坏,事情就没那么简单。要理解它为什么会长成现在这样,需要先回到更早的 TextGrad 。 TextGrad 其实回答了一个更宽的问题:如果 AI 系统里很多关键部件本来就是文本,能不能像调代码一样调它们?它的回答是可以。prompt 、答案、代码片段、工具说明、执行计划,都可以被看成等待修改的对象;反馈不一定是数值,也可以是一段批注、一次测试失败、一个评分器结果。所谓 textual gradient ,翻译成人话就是:告诉你哪里错了,为什么错,下一轮大概该往哪边改。 从使用者的角度看,这件事并不神秘。我们平时调 agent ,也是在先跑一遍,看错在哪里,再改 prompt 、改工具说明、改检查步骤。TextGrad 做的,是把这种调试动作整理成一个可反复执行的循环:运行、评价、修改、再运行。它比普通 prompt optimization 更宽,因为被改的不只是 prompt ;但它也没有真正回答另一个问题:哪些修改应该长期留下来? SkillOpt 接过的正是这个问题,只是它没有继续优化万物,而是把目标收窄到一份 agent 下次还会读取的 skill 文档。 这个收窄很关键。因为在 agent 系统里,skill 不只是一次性的提示词,它更像一本操作手册:哪些检查要先做,哪些工具什么时候用,哪些错误以前出现过,什么情况下不能贸然继续。普通 prompt optimization 更关心“怎么把这段话写得更容易让模型答对”,SkillOpt 关心的则更像“怎么让这份操作手册在一批任务之后变得更可靠”。 但操作手册也会腐烂。一次没查文件,不能自动总结成“每次任务都扫描全仓库”;一次测试漏跑,也不等于以后都要跑全量测试;一次指标口径错了,也不意味着应该往 skill 里塞一大段适用于所有场景的长规则。很多 prompt 或 skill 后来越来越重,就是因为它只会增加经验,不会判断哪些经验不该留下。 SkillOpt 的循环,真正处理的是这个问题。它先让 agent 带着当前 skill 去做任务,看它在哪些地方失败;失败之后让模型写一段反思,把问题压缩成对 skill 的修改建议;修改不能无限发挥,只能做有边界的小改动;新版本还要和旧版本放到保留任务上比较,只有表现更好,才会进入 best_skill.md 。 那些没通过验证的修改也不会完全丢掉,而是被记下来,提醒系统不要反复尝试类似的坏主意。 这些机制合起来,其实指向一个判断:不是每次反思都值得写进记忆。一个会学习的文本系统,先要懂得拒绝那些看起来聪明、实际会带来回归的修改。SkillOpt 比普通“让模型反思一下”多出来的东西,也正在这里。它不是只生成一段更长的说明,而是让这段说明接受试跑、修改、验证、拒绝和保留。 表格任务能比较直观地说明这一点。agent 算错结果,不一定是不会计算,也可能是没先确认表头、没检查公式范围、没复算关键值、没把输出和原表结构对齐。放到 SpreadsheetBench 这样的任务里,一份 skill 更像表格任务 SOP ,而不是某个神秘能力本身。代码任务也类似,失败常常不是不会写代码,而是没读项目约定、跑错测试、忽略 migration 或 fixture 。人类 reviewer 会把这些经验写在评论、文档或脑子里。SkillOpt 想做的,是让这些经验进入 skill 文件,同时用验证挡住那些“文字上合理、实际会降低表现”的修改。 这也是它和 prompt optimization 最难分开的地方。如果 skill 只是几段 Markdown 任务说明,它和 prompt 的距离确实很近。如果一个 benchmark 对应一份 skill ,并在固定任务分布上反复优化,最后得到的文本也可能更像 benchmark-specific 的小抄,而不是稳定可迁移的技能。真实团队里的 skill 通常更厚,里面有工具权限、异常恢复、上下文判断、组织流程、历史问题和跨任务迁移。论文里的轻量形态适合展示机制,但还没有覆盖完整的 skill learning 。 所以 SkillOpt 不应该被说成“agent 已经能自动学会技能”。它没有让 agent 自主发现新工具,也没有让 agent 理解真实组织边界。它做的是一件更窄的事:在预先定义好的任务、评分器和验证环境里,迭代一份操作说明。理论上,它延续了 TextGrad 和 prompt optimization 的文本反馈路线,并不算全新;工程上,它把一个更具体的问题摆到了台面上:失败经验如何进入 skill ,哪些修改应该保留,哪些修改应该被挡住。 也许 agent 的一部分能力,最后不会只藏在模型深处,而会写在那些看起来普通的技能文件里:几条规则,几个例外,一些失败之后留下的警告。过去我们把它们当文档维护; SkillOpt 暗示了另一种看法。它们也许是一种可训练的行为记忆。真正困难的不是让模型改几句话,而是让这些话在一次次成功和失败之后,变得更可靠,而不是更自信。SkillOpt 离完整的 skill learning 还很远,但它至少比单纯调 prompt 多问了一步:哪些经验有资格留下来?让失败不白白发生,本身就是 agent 工程里一个值得认真对待的问题。
最近微软的 SkillOpt 很火,几乎每个关心 agent 的人都会刷到。刚开始看这个工作时,我的第一反应其实有点怀疑:让 agent 执行任务,记录失败轨迹,再让模型根据反馈修改一段 skill 文档,这听起来并不陌生。它到底是在学 skill ,还是把 prompt optimization 换了一个更适合 agent 的名字? 但我把论文和项目材料看完以后,觉得这个问题不能只停在“是不是换壳”上。SkillOpt 最有意思的地方,不是它包装了一个新名词,而是它碰到了一个日常使用 agent 时很难绕开的问题:同一种错误出现第二次、第三次之后,agent 到底有没有学到什么? 我们最常见的处理方式仍然是人工纠正。比如这次发现 agent 改代码前没有看现有测试,于是在对话里提醒它,下次先读测试再动手。模型也可能在复盘里总结几条“以后需要更谨慎”的原则,但这段复盘随着上下文结束就失效了。更多时候,经验会被临时补进 prompt 或 skill 文件:加一句“检查边界条件”,再加一句“输出前确认结果”。短期看,问题像是被修掉了;换个任务之后,又可能在别处出现新的副作用。 这类是一类难以复用的经验。模型权重通常不可控,代码有测试和版本管理,但夹在中间的操作经验往往比较松散。客服 agent 遇到退款、发票、合规边界时,要知道先查什么、什么时候拒答、什么时候转人工;代码 agent 在 monorepo 里修改模块时,要知道该看哪些文件、跑哪组测试、避开哪些生成文件;数据分析 agent 面对 DAU 、收入、退款口径时,要知道如何核对定义。这些问题不完全是模型是否“知道答案”,更多是执行方法有没有被稳定保存。 讲到这里,SkillOpt 的问题就不能只问“是不是新算法”了。如果它的全部新意只是让模型改一份 Markdown ,那确实不够有说服力。但如果它在处理的是这些松散经验如何留下、如何验证、如何避免越改越坏,事情就没那么简单。要理解它为什么会长成现在这样,需要先回到更早的 TextGrad 。 TextGrad 其实回答了一个更宽的问题:如果 AI 系统里很多关键部件本来就是文本,能不能像调代码一样调它们?它的回答是可以。prompt 、答案、代码片段、工具说明、执行计划,都可以被看成等待修改的对象;反馈不一定是数值,也可以是一段批注、一次测试失败、一个评分器结果。所谓 textual gradient ,翻译成人话就是:告诉你哪里错了,为什么错,下一轮大概该往哪边改。 从使用者的角度看,这件事并不神秘。我们平时调 agent ,也是在先跑一遍,看错在哪里,再改 prompt 、改工具说明、改检查步骤。TextGrad 做的,是把这种调试动作整理成一个可反复执行的循环:运行、评价、修改、再运行。它比普通 prompt optimization 更宽,因为被改的不只是 prompt ;但它也没有真正回答另一个问题:哪些修改应该长期留下来? SkillOpt 接过的正是这个问题,只是它没有继续优化万物,而是把目标收窄到一份 agent 下次还会读取的 skill 文档。 这个收窄很关键。因为在 agent 系统里,skill 不只是一次性的提示词,它更像一本操作手册:哪些检查要先做,哪些工具什么时候用,哪些错误以前出现过,什么情况下不能贸然继续。普通 prompt optimization 更关心“怎么把这段话写得更容易让模型答对”,SkillOpt 关心的则更像“怎么让这份操作手册在一批任务之后变得更可靠”。 但操作手册也会腐烂。一次没查文件,不能自动总结成“每次任务都扫描全仓库”;一次测试漏跑,也不等于以后都要跑全量测试;一次指标口径错了,也不意味着应该往 skill 里塞一大段适用于所有场景的长规则。很多 prompt 或 skill 后来越来越重,就是因为它只会增加经验,不会判断哪些经验不该留下。 SkillOpt 的循环,真正处理的是这个问题。它先让 agent 带着当前 skill 去做任务,看它在哪些地方失败;失败之后让模型写一段反思,把问题压缩成对 skill 的修改建议;修改不能无限发挥,只能做有边界的小改动;新版本还要和旧版本放到保留任务上比较,只有表现更好,才会进入 best_skill.md 。 那些没通过验证的修改也不会完全丢掉,而是被记下来,提醒系统不要反复尝试类似的坏主意。 这些机制合起来,其实指向一个判断:不是每次反思都值得写进记忆。一个会学习的文本系统,先要懂得拒绝那些看起来聪明、实际会带来回归的修改。SkillOpt 比普通“让模型反思一下”多出来的东西,也正在这里。它不是只生成一段更长的说明,而是让这段说明接受试跑、修改、验证、拒绝和保留。 表格任务能比较直观地说明这一点。agent 算错结果,不一定是不会计算,也可能是没先确认表头、没检查公式范围、没复算关键值、没把输出和原表结构对齐。放到 SpreadsheetBench 这样的任务里,一份 skill 更像表格任务 SOP ,而不是某个神秘能力本身。代码任务也类似,失败常常不是不会写代码,而是没读项目约定、跑错测试、忽略 migration 或 fixture 。人类 reviewer 会把这些经验写在评论、文档或脑子里。SkillOpt 想做的,是让这些经验进入 skill 文件,同时用验证挡住那些“文字上合理、实际会降低表现”的修改。 这也是它和 prompt optimization 最难分开的地方。如果 skill 只是几段 Markdown 任务说明,它和 prompt 的距离确实很近。如果一个 benchmark 对应一份 skill ,并在固定任务分布上反复优化,最后得到的文本也可能更像 benchmark-specific 的小抄,而不是稳定可迁移的技能。真实团队里的 skill 通常更厚,里面有工具权限、异常恢复、上下文判断、组织流程、历史问题和跨任务迁移。论文里的轻量形态适合展示机制,但还没有覆盖完整的 skill learning 。 所以 SkillOpt 不应该被说成“agent 已经能自动学会技能”。它没有让 agent 自主发现新工具,也没有让 agent 理解真实组织边界。它做的是一件更窄的事:在预先定义好的任务、评分器和验证环境里,迭代一份操作说明。理论上,它延续了 TextGrad 和 prompt optimization 的文本反馈路线,并不算全新;工程上,它把一个更具体的问题摆到了台面上:失败经验如何进入 skill ,哪些修改应该保留,哪些修改应该被挡住。 也许 agent 的一部分能力,最后不会只藏在模型深处,而会写在那些看起来普通的技能文件里:几条规则,几个例外,一些失败之后留下的警告。过去我们把它们当文档维护; SkillOpt 暗示了另一种看法。它们也许是一种可训练的行为记忆。真正困难的不是让模型改几句话,而是让这些话在一次次成功和失败之后,变得更可靠,而不是更自信。SkillOpt 离完整的 skill learning 还很远,但它至少比单纯调 prompt 多问了一步:哪些经验有资格留下来?让失败不白白发生,本身就是 agent 工程里一个值得认真对待的问题。
最近微软的 SkillOpt 很火,几乎每个关心 agent 的人都会刷到。刚开始看这个工作时,我的第一反应其实有点怀疑:让 agent 执行任务,记录失败轨迹,再让模型根据反馈修改一段 skill 文档,这听起来并不陌生。它到底是在学 skill ,还是把 prompt optimization 换了一个更适合 agent 的名字? 但我把论文和项目材料看完以后,觉得这个问题不能只停在“是不是换壳”上。SkillOpt 最有意思的地方,不是它包装了一个新名词,而是它碰到了一个日常使用 agent 时很难绕开的问题:同一种错误出现第二次、第三次之后,agent 到底有没有学到什么? 我们最常见的处理方式仍然是人工纠正。比如这次发现 agent 改代码前没有看现有测试,于是在对话里提醒它,下次先读测试再动手。模型也可能在复盘里总结几条“以后需要更谨慎”的原则,但这段复盘随着上下文结束就失效了。更多时候,经验会被临时补进 prompt 或 skill 文件:加一句“检查边界条件”,再加一句“输出前确认结果”。短期看,问题像是被修掉了;换个任务之后,又可能在别处出现新的副作用。 这类是一类难以复用的经验。模型权重通常不可控,代码有测试和版本管理,但夹在中间的操作经验往往比较松散。客服 agent 遇到退款、发票、合规边界时,要知道先查什么、什么时候拒答、什么时候转人工;代码 agent 在 monorepo 里修改模块时,要知道该看哪些文件、跑哪组测试、避开哪些生成文件;数据分析 agent 面对 DAU 、收入、退款口径时,要知道如何核对定义。这些问题不完全是模型是否“知道答案”,更多是执行方法有没有被稳定保存。 讲到这里,SkillOpt 的问题就不能只问“是不是新算法”了。如果它的全部新意只是让模型改一份 Markdown ,那确实不够有说服力。但如果它在处理的是这些松散经验如何留下、如何验证、如何避免越改越坏,事情就没那么简单。要理解它为什么会长成现在这样,需要先回到更早的 TextGrad 。 TextGrad 其实回答了一个更宽的问题:如果 AI 系统里很多关键部件本来就是文本,能不能像调代码一样调它们?它的回答是可以。prompt 、答案、代码片段、工具说明、执行计划,都可以被看成等待修改的对象;反馈不一定是数值,也可以是一段批注、一次测试失败、一个评分器结果。所谓 textual gradient ,翻译成人话就是:告诉你哪里错了,为什么错,下一轮大概该往哪边改。 从使用者的角度看,这件事并不神秘。我们平时调 agent ,也是在先跑一遍,看错在哪里,再改 prompt 、改工具说明、改检查步骤。TextGrad 做的,是把这种调试动作整理成一个可反复执行的循环:运行、评价、修改、再运行。它比普通 prompt optimization 更宽,因为被改的不只是 prompt ;但它也没有真正回答另一个问题:哪些修改应该长期留下来? SkillOpt 接过的正是这个问题,只是它没有继续优化万物,而是把目标收窄到一份 agent 下次还会读取的 skill 文档。 这个收窄很关键。因为在 agent 系统里,skill 不只是一次性的提示词,它更像一本操作手册:哪些检查要先做,哪些工具什么时候用,哪些错误以前出现过,什么情况下不能贸然继续。普通 prompt optimization 更关心“怎么把这段话写得更容易让模型答对”,SkillOpt 关心的则更像“怎么让这份操作手册在一批任务之后变得更可靠”。 但操作手册也会腐烂。一次没查文件,不能自动总结成“每次任务都扫描全仓库”;一次测试漏跑,也不等于以后都要跑全量测试;一次指标口径错了,也不意味着应该往 skill 里塞一大段适用于所有场景的长规则。很多 prompt 或 skill 后来越来越重,就是因为它只会增加经验,不会判断哪些经验不该留下。 SkillOpt 的循环,真正处理的是这个问题。它先让 agent 带着当前 skill 去做任务,看它在哪些地方失败;失败之后让模型写一段反思,把问题压缩成对 skill 的修改建议;修改不能无限发挥,只能做有边界的小改动;新版本还要和旧版本放到保留任务上比较,只有表现更好,才会进入 best_skill.md 。 那些没通过验证的修改也不会完全丢掉,而是被记下来,提醒系统不要反复尝试类似的坏主意。 这些机制合起来,其实指向一个判断:不是每次反思都值得写进记忆。一个会学习的文本系统,先要懂得拒绝那些看起来聪明、实际会带来回归的修改。SkillOpt 比普通“让模型反思一下”多出来的东西,也正在这里。它不是只生成一段更长的说明,而是让这段说明接受试跑、修改、验证、拒绝和保留。 表格任务能比较直观地说明这一点。agent 算错结果,不一定是不会计算,也可能是没先确认表头、没检查公式范围、没复算关键值、没把输出和原表结构对齐。放到 SpreadsheetBench 这样的任务里,一份 skill 更像表格任务 SOP ,而不是某个神秘能力本身。代码任务也类似,失败常常不是不会写代码,而是没读项目约定、跑错测试、忽略 migration 或 fixture 。人类 reviewer 会把这些经验写在评论、文档或脑子里。SkillOpt 想做的,是让这些经验进入 skill 文件,同时用验证挡住那些“文字上合理、实际会降低表现”的修改。 这也是它和 prompt optimization 最难分开的地方。如果 skill 只是几段 Markdown 任务说明,它和 prompt 的距离确实很近。如果一个 benchmark 对应一份 skill ,并在固定任务分布上反复优化,最后得到的文本也可能更像 benchmark-specific 的小抄,而不是稳定可迁移的技能。真实团队里的 skill 通常更厚,里面有工具权限、异常恢复、上下文判断、组织流程、历史问题和跨任务迁移。论文里的轻量形态适合展示机制,但还没有覆盖完整的 skill learning 。 所以 SkillOpt 不应该被说成“agent 已经能自动学会技能”。它没有让 agent 自主发现新工具,也没有让 agent 理解真实组织边界。它做的是一件更窄的事:在预先定义好的任务、评分器和验证环境里,迭代一份操作说明。理论上,它延续了 TextGrad 和 prompt optimization 的文本反馈路线,并不算全新;工程上,它把一个更具体的问题摆到了台面上:失败经验如何进入 skill ,哪些修改应该保留,哪些修改应该被挡住。 也许 agent 的一部分能力,最后不会只藏在模型深处,而会写在那些看起来普通的技能文件里:几条规则,几个例外,一些失败之后留下的警告。过去我们把它们当文档维护; SkillOpt 暗示了另一种看法。它们也许是一种可训练的行为记忆。真正困难的不是让模型改几句话,而是让这些话在一次次成功和失败之后,变得更可靠,而不是更自信。SkillOpt 离完整的 skill learning 还很远,但它至少比单纯调 prompt 多问了一步:哪些经验有资格留下来?让失败不白白发生,本身就是 agent 工程里一个值得认真对待的问题。
最近微软的 SkillOpt 很火,几乎每个关心 agent 的人都会刷到。刚开始看这个工作时,我的第一反应其实有点怀疑:让 agent 执行任务,记录失败轨迹,再让模型根据反馈修改一段 skill 文档,这听起来并不陌生。它到底是在学 skill ,还是把 prompt optimization 换了一个更适合 agent 的名字? 但我把论文和项目材料看完以后,觉得这个问题不能只停在“是不是换壳”上。SkillOpt 最有意思的地方,不是它包装了一个新名词,而是它碰到了一个日常使用 agent 时很难绕开的问题:同一种错误出现第二次、第三次之后,agent 到底有没有学到什么? 我们最常见的处理方式仍然是人工纠正。比如这次发现 agent 改代码前没有看现有测试,于是在对话里提醒它,下次先读测试再动手。模型也可能在复盘里总结几条“以后需要更谨慎”的原则,但这段复盘随着上下文结束就失效了。更多时候,经验会被临时补进 prompt 或 skill 文件:加一句“检查边界条件”,再加一句“输出前确认结果”。短期看,问题像是被修掉了;换个任务之后,又可能在别处出现新的副作用。 这类是一类难以复用的经验。模型权重通常不可控,代码有测试和版本管理,但夹在中间的操作经验往往比较松散。客服 agent 遇到退款、发票、合规边界时,要知道先查什么、什么时候拒答、什么时候转人工;代码 agent 在 monorepo 里修改模块时,要知道该看哪些文件、跑哪组测试、避开哪些生成文件;数据分析 agent 面对 DAU 、收入、退款口径时,要知道如何核对定义。这些问题不完全是模型是否“知道答案”,更多是执行方法有没有被稳定保存。 讲到这里,SkillOpt 的问题就不能只问“是不是新算法”了。如果它的全部新意只是让模型改一份 Markdown ,那确实不够有说服力。但如果它在处理的是这些松散经验如何留下、如何验证、如何避免越改越坏,事情就没那么简单。要理解它为什么会长成现在这样,需要先回到更早的 TextGrad 。 TextGrad 其实回答了一个更宽的问题:如果 AI 系统里很多关键部件本来就是文本,能不能像调代码一样调它们?它的回答是可以。prompt 、答案、代码片段、工具说明、执行计划,都可以被看成等待修改的对象;反馈不一定是数值,也可以是一段批注、一次测试失败、一个评分器结果。所谓 textual gradient ,翻译成人话就是:告诉你哪里错了,为什么错,下一轮大概该往哪边改。 从使用者的角度看,这件事并不神秘。我们平时调 agent ,也是在先跑一遍,看错在哪里,再改 prompt 、改工具说明、改检查步骤。TextGrad 做的,是把这种调试动作整理成一个可反复执行的循环:运行、评价、修改、再运行。它比普通 prompt optimization 更宽,因为被改的不只是 prompt ;但它也没有真正回答另一个问题:哪些修改应该长期留下来? SkillOpt 接过的正是这个问题,只是它没有继续优化万物,而是把目标收窄到一份 agent 下次还会读取的 skill 文档。 这个收窄很关键。因为在 agent 系统里,skill 不只是一次性的提示词,它更像一本操作手册:哪些检查要先做,哪些工具什么时候用,哪些错误以前出现过,什么情况下不能贸然继续。普通 prompt optimization 更关心“怎么把这段话写得更容易让模型答对”,SkillOpt 关心的则更像“怎么让这份操作手册在一批任务之后变得更可靠”。 但操作手册也会腐烂。一次没查文件,不能自动总结成“每次任务都扫描全仓库”;一次测试漏跑,也不等于以后都要跑全量测试;一次指标口径错了,也不意味着应该往 skill 里塞一大段适用于所有场景的长规则。很多 prompt 或 skill 后来越来越重,就是因为它只会增加经验,不会判断哪些经验不该留下。 SkillOpt 的循环,真正处理的是这个问题。它先让 agent 带着当前 skill 去做任务,看它在哪些地方失败;失败之后让模型写一段反思,把问题压缩成对 skill 的修改建议;修改不能无限发挥,只能做有边界的小改动;新版本还要和旧版本放到保留任务上比较,只有表现更好,才会进入 best_skill.md 。 那些没通过验证的修改也不会完全丢掉,而是被记下来,提醒系统不要反复尝试类似的坏主意。 这些机制合起来,其实指向一个判断:不是每次反思都值得写进记忆。一个会学习的文本系统,先要懂得拒绝那些看起来聪明、实际会带来回归的修改。SkillOpt 比普通“让模型反思一下”多出来的东西,也正在这里。它不是只生成一段更长的说明,而是让这段说明接受试跑、修改、验证、拒绝和保留。 表格任务能比较直观地说明这一点。agent 算错结果,不一定是不会计算,也可能是没先确认表头、没检查公式范围、没复算关键值、没把输出和原表结构对齐。放到 SpreadsheetBench 这样的任务里,一份 skill 更像表格任务 SOP ,而不是某个神秘能力本身。代码任务也类似,失败常常不是不会写代码,而是没读项目约定、跑错测试、忽略 migration 或 fixture 。人类 reviewer 会把这些经验写在评论、文档或脑子里。SkillOpt 想做的,是让这些经验进入 skill 文件,同时用验证挡住那些“文字上合理、实际会降低表现”的修改。 这也是它和 prompt optimization 最难分开的地方。如果 skill 只是几段 Markdown 任务说明,它和 prompt 的距离确实很近。如果一个 benchmark 对应一份 skill ,并在固定任务分布上反复优化,最后得到的文本也可能更像 benchmark-specific 的小抄,而不是稳定可迁移的技能。真实团队里的 skill 通常更厚,里面有工具权限、异常恢复、上下文判断、组织流程、历史问题和跨任务迁移。论文里的轻量形态适合展示机制,但还没有覆盖完整的 skill learning 。 所以 SkillOpt 不应该被说成“agent 已经能自动学会技能”。它没有让 agent 自主发现新工具,也没有让 agent 理解真实组织边界。它做的是一件更窄的事:在预先定义好的任务、评分器和验证环境里,迭代一份操作说明。理论上,它延续了 TextGrad 和 prompt optimization 的文本反馈路线,并不算全新;工程上,它把一个更具体的问题摆到了台面上:失败经验如何进入 skill ,哪些修改应该保留,哪些修改应该被挡住。 也许 agent 的一部分能力,最后不会只藏在模型深处,而会写在那些看起来普通的技能文件里:几条规则,几个例外,一些失败之后留下的警告。过去我们把它们当文档维护; SkillOpt 暗示了另一种看法。它们也许是一种可训练的行为记忆。真正困难的不是让模型改几句话,而是让这些话在一次次成功和失败之后,变得更可靠,而不是更自信。SkillOpt 离完整的 skill learning 还很远,但它至少比单纯调 prompt 多问了一步:哪些经验有资格留下来?让失败不白白发生,本身就是 agent 工程里一个值得认真对待的问题。
最近微软的 SkillOpt 很火,几乎每个关心 agent 的人都会刷到。刚开始看这个工作时,我的第一反应其实有点怀疑:让 agent 执行任务,记录失败轨迹,再让模型根据反馈修改一段 skill 文档,这听起来并不陌生。它到底是在学 skill ,还是把 prompt optimization 换了一个更适合 agent 的名字? 但我把论文和项目材料看完以后,觉得这个问题不能只停在“是不是换壳”上。SkillOpt 最有意思的地方,不是它包装了一个新名词,而是它碰到了一个日常使用 agent 时很难绕开的问题:同一种错误出现第二次、第三次之后,agent 到底有没有学到什么? 我们最常见的处理方式仍然是人工纠正。比如这次发现 agent 改代码前没有看现有测试,于是在对话里提醒它,下次先读测试再动手。模型也可能在复盘里总结几条“以后需要更谨慎”的原则,但这段复盘随着上下文结束就失效了。更多时候,经验会被临时补进 prompt 或 skill 文件:加一句“检查边界条件”,再加一句“输出前确认结果”。短期看,问题像是被修掉了;换个任务之后,又可能在别处出现新的副作用。 这类是一类难以复用的经验。模型权重通常不可控,代码有测试和版本管理,但夹在中间的操作经验往往比较松散。客服 agent 遇到退款、发票、合规边界时,要知道先查什么、什么时候拒答、什么时候转人工;代码 agent 在 monorepo 里修改模块时,要知道该看哪些文件、跑哪组测试、避开哪些生成文件;数据分析 agent 面对 DAU 、收入、退款口径时,要知道如何核对定义。这些问题不完全是模型是否“知道答案”,更多是执行方法有没有被稳定保存。 讲到这里,SkillOpt 的问题就不能只问“是不是新算法”了。如果它的全部新意只是让模型改一份 Markdown ,那确实不够有说服力。但如果它在处理的是这些松散经验如何留下、如何验证、如何避免越改越坏,事情就没那么简单。要理解它为什么会长成现在这样,需要先回到更早的 TextGrad 。 TextGrad 其实回答了一个更宽的问题:如果 AI 系统里很多关键部件本来就是文本,能不能像调代码一样调它们?它的回答是可以。prompt 、答案、代码片段、工具说明、执行计划,都可以被看成等待修改的对象;反馈不一定是数值,也可以是一段批注、一次测试失败、一个评分器结果。所谓 textual gradient ,翻译成人话就是:告诉你哪里错了,为什么错,下一轮大概该往哪边改。 从使用者的角度看,这件事并不神秘。我们平时调 agent ,也是在先跑一遍,看错在哪里,再改 prompt 、改工具说明、改检查步骤。TextGrad 做的,是把这种调试动作整理成一个可反复执行的循环:运行、评价、修改、再运行。它比普通 prompt optimization 更宽,因为被改的不只是 prompt ;但它也没有真正回答另一个问题:哪些修改应该长期留下来? SkillOpt 接过的正是这个问题,只是它没有继续优化万物,而是把目标收窄到一份 agent 下次还会读取的 skill 文档。 这个收窄很关键。因为在 agent 系统里,skill 不只是一次性的提示词,它更像一本操作手册:哪些检查要先做,哪些工具什么时候用,哪些错误以前出现过,什么情况下不能贸然继续。普通 prompt optimization 更关心“怎么把这段话写得更容易让模型答对”,SkillOpt 关心的则更像“怎么让这份操作手册在一批任务之后变得更可靠”。 但操作手册也会腐烂。一次没查文件,不能自动总结成“每次任务都扫描全仓库”;一次测试漏跑,也不等于以后都要跑全量测试;一次指标口径错了,也不意味着应该往 skill 里塞一大段适用于所有场景的长规则。很多 prompt 或 skill 后来越来越重,就是因为它只会增加经验,不会判断哪些经验不该留下。 SkillOpt 的循环,真正处理的是这个问题。它先让 agent 带着当前 skill 去做任务,看它在哪些地方失败;失败之后让模型写一段反思,把问题压缩成对 skill 的修改建议;修改不能无限发挥,只能做有边界的小改动;新版本还要和旧版本放到保留任务上比较,只有表现更好,才会进入 best_skill.md 。 那些没通过验证的修改也不会完全丢掉,而是被记下来,提醒系统不要反复尝试类似的坏主意。 这些机制合起来,其实指向一个判断:不是每次反思都值得写进记忆。一个会学习的文本系统,先要懂得拒绝那些看起来聪明、实际会带来回归的修改。SkillOpt 比普通“让模型反思一下”多出来的东西,也正在这里。它不是只生成一段更长的说明,而是让这段说明接受试跑、修改、验证、拒绝和保留。 表格任务能比较直观地说明这一点。agent 算错结果,不一定是不会计算,也可能是没先确认表头、没检查公式范围、没复算关键值、没把输出和原表结构对齐。放到 SpreadsheetBench 这样的任务里,一份 skill 更像表格任务 SOP ,而不是某个神秘能力本身。代码任务也类似,失败常常不是不会写代码,而是没读项目约定、跑错测试、忽略 migration 或 fixture 。人类 reviewer 会把这些经验写在评论、文档或脑子里。SkillOpt 想做的,是让这些经验进入 skill 文件,同时用验证挡住那些“文字上合理、实际会降低表现”的修改。 这也是它和 prompt optimization 最难分开的地方。如果 skill 只是几段 Markdown 任务说明,它和 prompt 的距离确实很近。如果一个 benchmark 对应一份 skill ,并在固定任务分布上反复优化,最后得到的文本也可能更像 benchmark-specific 的小抄,而不是稳定可迁移的技能。真实团队里的 skill 通常更厚,里面有工具权限、异常恢复、上下文判断、组织流程、历史问题和跨任务迁移。论文里的轻量形态适合展示机制,但还没有覆盖完整的 skill learning 。 所以 SkillOpt 不应该被说成“agent 已经能自动学会技能”。它没有让 agent 自主发现新工具,也没有让 agent 理解真实组织边界。它做的是一件更窄的事:在预先定义好的任务、评分器和验证环境里,迭代一份操作说明。理论上,它延续了 TextGrad 和 prompt optimization 的文本反馈路线,并不算全新;工程上,它把一个更具体的问题摆到了台面上:失败经验如何进入 skill ,哪些修改应该保留,哪些修改应该被挡住。 也许 agent 的一部分能力,最后不会只藏在模型深处,而会写在那些看起来普通的技能文件里:几条规则,几个例外,一些失败之后留下的警告。过去我们把它们当文档维护; SkillOpt 暗示了另一种看法。它们也许是一种可训练的行为记忆。真正困难的不是让模型改几句话,而是让这些话在一次次成功和失败之后,变得更可靠,而不是更自信。SkillOpt 离完整的 skill learning 还很远,但它至少比单纯调 prompt 多问了一步:哪些经验有资格留下来?让失败不白白发生,本身就是 agent 工程里一个值得认真对待的问题。
这些天我家大闺女在东京玩,她知道我关心食品价格,于是就在超市买菜时拍了这些。
这些天我家大闺女在东京玩,她知道我关心食品价格,于是就在超市买菜时拍了这些。
这些天我家大闺女在东京玩,她知道我关心食品价格,于是就在超市买菜时拍了这些。
这些天我家大闺女在东京玩,她知道我关心食品价格,于是就在超市买菜时拍了这些。
这些天我家大闺女在东京玩,她知道我关心食品价格,于是就在超市买菜时拍了这些。
这些天我家大闺女在东京玩,她知道我关心食品价格,于是就在超市买菜时拍了这些。
这些天我家大闺女在东京玩,她知道我关心食品价格,于是就在超市买菜时拍了这些。
这些天我家大闺女在东京玩,她知道我关心食品价格,于是就在超市买菜时拍了这些。
这些天我家大闺女在东京玩,她知道我关心食品价格,于是就在超市买菜时拍了这些。
这些天我家大闺女在东京玩,她知道我关心食品价格,于是就在超市买菜时拍了这些。
这些天我家大闺女在东京玩,她知道我关心食品价格,于是就在超市买菜时拍了这些。
这些天我家大闺女在东京玩,她知道我关心食品价格,于是就在超市买菜时拍了这些。
[见了十几个投资人,我总结了投资人最关心的几个问题] 先说一下我们的基本情况,我们的项目到现在做了 2 个多月了,做的是一个 A2A 的应用叫“连连 AI”,核心的功能是让你的 Agent 去帮你找人并自动进行沟通,这样能够在找工作、兼职等过程中节省大量的时间和精力成本。 创业到现在,见了十几个投资人,发现其实投资人的很多问题都是很共性的,如果你没有准备好这些问题的话,大概率见了也是白见。 1.技术壁垒。说实话,我真的不太懂为什么在现在这种 AI 时代了,投资人还很纠结于技术壁垒这件事情,特别是我们还是做 AI 应用,做软件的。你说做硬件你可能有自研的什么什么,但是做软件的大部分企业我真的想破头也不知道有什么技术壁垒。我感觉现在大多数的初创,根本就没有任何的技术壁垒啊,但没办法,VC 们就是爱问这个问题。因为 VC 们其实也很担心,也需要一点心理安慰,他们需要有人告诉他们说你投的这个东西是很特别的,不然就为什么投你,不投别人呢。但感觉真的挺难评的; 2.团队背景,特别是团队怎么认识的。大家应该都听过说,风投其实就是投人,但其实感觉这句话就是扯淡的,就你除非真的是那种特别厉害的大牛,不然根本就不是投人的逻辑。但是人这个事情,是一个及格线,相当于说如果你人不行直接 out ,人行了再看项目怎么样,所以很多 VC 都会看你的团队背景。然后他们特别喜欢看的一点,就是你团队怎么认识的,我觉得可能是因为他们怕如果大家认识的时间太短,创业没干多久就分崩离析了,他们投的钱就打水漂了哈哈哈哈; 3.商业模式。企业要赚钱和退出,这个很好理解,并不是所有的 VC 都会说愿意陪你慢慢变老。如果你没有自己造血的能力,这时候投起来就是无底洞了感觉; 4.竞品。我觉得竞品这件事情上,真的有点让我无大语。有竞品存在,OK 那肯定要说一下你和竞品的区别;但我很不能理解的一点就是,如果有很多竞品存在并且好像做的还可以,你要面对的挑战就是你为什么能做得过这些人、你的独特优势是什么;如果没有很多竞品,你做的东西可能是一个比较新的东西,那可能面临的质疑就是,你这个需求是不是真实存在的、为什么没人做你这个东西; 5.解决的问题。这个必须开宗明义,并且极为直白、明显,如果你解决的问题需要很多句话来解释、说明的话,那应该不是一个很痛的需求,那你可能会比较危险。因为如果一个很痛的需求,那一定会是大家有明显体感的,能够一句话说清楚的东西。 总体看来,投资人关心的问题其实都是比较共性的东西,在很多问题没有得到解答之前,去见投资人其实并没什么什么太大的作用。作为一个创始人,我觉得更需要先把自己的产品打磨好,让人见到之后能够有一眼惊艳的感觉。我始终认为,好的产品自己会说话,这是毋庸置疑的东西。产品有解决的问题、产品有好的体验并且还有不错的用户数据,如果你三项都具备的话,投资人会自己把钱送来给你。
[见了十几个投资人,我总结了投资人最关心的几个问题] 先说一下我们的基本情况,我们的项目到现在做了 2 个多月了,做的是一个 A2A 的应用叫“连连 AI”,核心的功能是让你的 Agent 去帮你找人并自动进行沟通,这样能够在找工作、兼职等过程中节省大量的时间和精力成本。 创业到现在,见了十几个投资人,发现其实投资人的很多问题都是很共性的,如果你没有准备好这些问题的话,大概率见了也是白见。 1.技术壁垒。说实话,我真的不太懂为什么在现在这种 AI 时代了,投资人还很纠结于技术壁垒这件事情,特别是我们还是做 AI 应用,做软件的。你说做硬件你可能有自研的什么什么,但是做软件的大部分企业我真的想破头也不知道有什么技术壁垒。我感觉现在大多数的初创,根本就没有任何的技术壁垒啊,但没办法,VC 们就是爱问这个问题。因为 VC 们其实也很担心,也需要一点心理安慰,他们需要有人告诉他们说你投的这个东西是很特别的,不然就为什么投你,不投别人呢。但感觉真的挺难评的; 2.团队背景,特别是团队怎么认识的。大家应该都听过说,风投其实就是投人,但其实感觉这句话就是扯淡的,就你除非真的是那种特别厉害的大牛,不然根本就不是投人的逻辑。但是人这个事情,是一个及格线,相当于说如果你人不行直接 out ,人行了再看项目怎么样,所以很多 VC 都会看你的团队背景。然后他们特别喜欢看的一点,就是你团队怎么认识的,我觉得可能是因为他们怕如果大家认识的时间太短,创业没干多久就分崩离析了,他们投的钱就打水漂了哈哈哈哈; 3.商业模式。企业要赚钱和退出,这个很好理解,并不是所有的 VC 都会说愿意陪你慢慢变老。如果你没有自己造血的能力,这时候投起来就是无底洞了感觉; 4.竞品。我觉得竞品这件事情上,真的有点让我无大语。有竞品存在,OK 那肯定要说一下你和竞品的区别;但我很不能理解的一点就是,如果有很多竞品存在并且好像做的还可以,你要面对的挑战就是你为什么能做得过这些人、你的独特优势是什么;如果没有很多竞品,你做的东西可能是一个比较新的东西,那可能面临的质疑就是,你这个需求是不是真实存在的、为什么没人做你这个东西; 5.解决的问题。这个必须开宗明义,并且极为直白、明显,如果你解决的问题需要很多句话来解释、说明的话,那应该不是一个很痛的需求,那你可能会比较危险。因为如果一个很痛的需求,那一定会是大家有明显体感的,能够一句话说清楚的东西。 总体看来,投资人关心的问题其实都是比较共性的东西,在很多问题没有得到解答之前,去见投资人其实并没什么什么太大的作用。作为一个创始人,我觉得更需要先把自己的产品打磨好,让人见到之后能够有一眼惊艳的感觉。我始终认为,好的产品自己会说话,这是毋庸置疑的东西。产品有解决的问题、产品有好的体验并且还有不错的用户数据,如果你三项都具备的话,投资人会自己把钱送来给你。