使用Toon增强大模型生成对象准确性 开发调优 最近在深入研究 TOON.NET 的时候,发现了一组非常有意思的基准测试数据。说实话,我对结果有点震惊——一个相对较新的格式,居然在多个主流 AI 大模型上的表现都远超 JSON 和 YAML。今天就想和大家好好聊聊这个发现,以及它背后的意义。 什么是 TOON?为什么它如此特殊 在深入测试结果之前,咱们得先理解 TOON 到底是个啥。 TOON(Text-Oriented Object No… 说是能省成本,提高效率,但是好像很久没听说了 1 个帖子 - 1 位参与者 阅读完整话题
最近看到好多佬友分享成百上千的bug号.zip,大家都是在本地直接部署CPA来用的吗?这个不是需要VPN吗?上班公司电脑不能用VPN怎么办? 13 个帖子 - 10 位参与者 阅读完整话题
最近微软的 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 工程里一个值得认真对待的问题。
是因为 codex 桌面版做的更好吗,还有大家用桌面端用来写代码? 和 codex cli 是替代作用吗,还是互补作用 顺便抽 6.6 元支付宝口令红包 ,6 月 7 日 0 点开奖,好久没抽啦,哈哈。 14 个帖子 - 13 位参与者 阅读完整话题
最近 giffgaff 又被翻出来讨论,群里、论坛里到处都是。这卡不算新东西了,但每隔一阵子就火一次,无非是因为它太适合"长期保号"。我自己也是最近才开的,趁着研究了一圈,把知道的都整理在这儿。 giffgaff 到底是个啥 giffgaff 是英国的一家虚拟运营商 它最吸引人的几个点: 零月租。 不用不花钱,放着也不扣费。 收短信完全免费。 这是它最大的卖点。注册各种海外服务、收验证码,一分钱都不花。 保号成本极低。 半年(180 天)之内只要有一次"余额变动"就行,发条短信 £0.30,一年也就一块多人民币。 真实手机号。 它给的是真号码,存在实体卡里,不像 Google Voice 那种虚拟号那么容易被各种平台风控。 能在国内用。 在中国大陆它走移动或联通的基站漫游,信号栏会显示一个 “R”,这是正常的漫游标志,收短信、接电话都没问题。 兼容性也很广,从 Telegram、WhatsApp、Instagram 到 ChatGPT、Apple ID、PayPal,再到一堆海外银行(Wise、各种港美股券商开户)基本都吃。所以很多人拿它当"海外身份的入场券"。 一句话总结它的用法: 充一次钱,半年发一条短信续命,号码能稳稳用十几二十年。 现在怎么搞到一张 giffgaff 获取渠道这两年变了不少: 官网现在不往中国大陆寄卡了 ,以前那条"免费申请等寄到国内"的路基本走不通。 淘宝也基本搜不到了。 现在比较靠谱的是 某东搜"gg 英国信封" ,能找到现货卖家,但库存很不稳定,经常无货,看到有货就尽早下手。 除了某东,一些论坛也常有佬友出卡,多留意一下能淘到。 拿到卡之后要 激活 + 充值 ,几个要注意的点: 充值需要一张 Visa 或 Mastercard 的实体卡 (信用卡、借记卡都行),虚拟卡通常不行。 没有外币卡也别慌,可以直接搜"giffgaff 充值券 / 充值码",买现成的卡密来充。 用充值券充值是免实名的 ,只要填一个国内的真实地址就行,不用提供真实姓名。 充值常年有"充 10 送 5"的活动,也就是充 £10 到手 £15。按一年两条短信(£0.6)来算,这点钱够你用很多年了。 充完记得激活,激活后号码就是你的了,最多还能免费换两次号码。 最重要的一条提醒:千万别忘了保号。 超过 180 天没有任何余额变动,号码会被系统直接回收,账户余额也一起没收,而且回收后无法找回。giffgaff 会在到期前发邮件提醒,但邮件容易被忽略。建议自己设个日历或表格提醒,到第 170 天左右就去操作一次,留出容错空间。 保号短信 和 流量,是两码事 简单说就是费用天差地别: 保号发短信只要 £0.30 一条 ,国内用户到期前发一条就能保号一年;而 国内漫游上网巨贵,裸价约 £204.8/GB(合人民币两千块一个 G) 。所以国内务必关掉数据漫游、只发短信保号,真要上网就买官方流量包(如 5GB/£30、30 天有效),别开裸漫游。 实体 eSIM 是什么(简单说) 前面说的都是插实体卡的玩法。但实体卡现在一是不好买(官网不发大陆、淘宝也没了),二是占卡槽、换机还得抠来抠去,于是就有了另一种方式------把 giffgaff 转成 eSIM 来用。 问题是 eSIM 一般要手机原生支持才行,国行 iPhone 这类基本都阉割了。这时候就轮到"实体 eSIM"出场了:它外观跟普通 nano SIM 一模一样,但本质是一张 可以反复写入的空白 eSIM 芯片卡 。你把 giffgaff 的 eSIM 配置写进去,再插进任何一台手机------哪怕是不支持 eSIM 的国行手机、老手机,也能当 eSIM 用,而且一张卡能存多个号码随时切换。 代表产品就是 eSTK、9eSIM、Xesim 这几款。怎么选直接给结论: iPhone(尤其国行)用户 → 首选 eSTK。 苹果安卓通吃,能直接在 iOS 上下卡切卡,软件开源、体验最稳,建议买满血版。 安卓用户、预算优先 → 选 9eSIM。 便宜、安卓体验好,买新版别买老版(V0 容量和兼容性差点)。 主要用苹果、想要另一个稳妥选择 → 选 Xesim。 新款国行 iPhone 也能直接写卡,安卓苹果都能用。 写在最后 giffgaff 就是一张投入极低、能长期用下去的海外号码卡。需要一个稳定的英国号来收验证码、注册海外服务、开各种账户,它的性价比很难被超过。 现在唯一麻烦的是货源------官网不发大陆、淘宝也没了,只能去某东蹲"gg 英国信封"的现货,或者在论坛留意佬友出卡。拿到之后真正要上心的就一件事: 别忘保号 ,设个提醒别让它过期就行。手机不支持 eSIM 也没关系,配一张 eSTK 或 9eSIM 写进去照样能用。 以上为整理 + 个人经验,价格、政策(尤其漫游资费、验证规则、转 eSIM 的工具时效)会随官方调整变动,实际操作前请以 giffgaff 官网和最新教程为准。 26 个帖子 - 12 位参与者 阅读完整话题
前阵子tg的passkey很火,放心的保存到google password manager上了。 谁知道,现在再次登录的时候却怎么都连不上google password manager保存的passkey,导致tg账号无法再登录了(以为有passkey便高枕无忧随意退登了)。不管是在手机上,还是电脑上,即使开全局就是无法连接到Google密码管理工具。 这玩意儿真不能用啊佬友们! 8 个帖子 - 5 位参与者 阅读完整话题
最近发现,以前很火的小龙虾,已经开始不用了。 有点好奇,你们为什么不再用了呢? A. 配置太复杂,折腾半天才能跑起来 B. 出现了更好的替代品 C. 担心安全或隐私方面 D. 太烧 Token ,成本难以接受 E. 解决不了我的实际问题 F. 对 AI Agent 已经没兴趣了
最近发现,以前很火的小龙虾,已经开始不用了。 有点好奇,你们为什么不再用了呢? A. 配置太复杂,折腾半天才能跑起来 B. 出现了更好的替代品 C. 担心安全或隐私方面 D. 太烧 Token ,成本难以接受 E. 解决不了我的实际问题 F. 对 AI Agent 已经没兴趣了
最近发现,以前很火的小龙虾,已经开始不用了。 有点好奇,你们为什么不再用了呢? A. 配置太复杂,折腾半天才能跑起来 B. 出现了更好的替代品 C. 担心安全或隐私方面 D. 太烧 Token ,成本难以接受 E. 解决不了我的实际问题 F. 对 AI Agent 已经没兴趣了
最近发现,以前很火的小龙虾,已经开始不用了。 有点好奇,你们为什么不再用了呢? A. 配置太复杂,折腾半天才能跑起来 B. 出现了更好的替代品 C. 担心安全或隐私方面 D. 太烧 Token ,成本难以接受 E. 解决不了我的实际问题 F. 对 AI Agent 已经没兴趣了
最近发现,以前很火的小龙虾,已经开始不用了。 有点好奇,你们为什么不再用了呢? A. 配置太复杂,折腾半天才能跑起来 B. 出现了更好的替代品 C. 担心安全或隐私方面 D. 太烧 Token ,成本难以接受 E. 解决不了我的实际问题 F. 对 AI Agent 已经没兴趣了
最近发现,以前很火的小龙虾,已经开始不用了。 有点好奇,你们为什么不再用了呢? A. 配置太复杂,折腾半天才能跑起来 B. 出现了更好的替代品 C. 担心安全或隐私方面 D. 太烧 Token ,成本难以接受 E. 解决不了我的实际问题 F. 对 AI Agent 已经没兴趣了
最近发现,以前很火的小龙虾,已经开始不用了。 有点好奇,你们为什么不再用了呢? A. 配置太复杂,折腾半天才能跑起来 B. 出现了更好的替代品 C. 担心安全或隐私方面 D. 太烧 Token ,成本难以接受 E. 解决不了我的实际问题 F. 对 AI Agent 已经没兴趣了
最近发现,以前很火的小龙虾,已经开始不用了。 有点好奇,你们为什么不再用了呢? A. 配置太复杂,折腾半天才能跑起来 B. 出现了更好的替代品 C. 担心安全或隐私方面 D. 太烧 Token ,成本难以接受 E. 解决不了我的实际问题 F. 对 AI Agent 已经没兴趣了
最近发现,以前很火的小龙虾,已经开始不用了。 有点好奇,你们为什么不再用了呢? A. 配置太复杂,折腾半天才能跑起来 B. 出现了更好的替代品 C. 担心安全或隐私方面 D. 太烧 Token ,成本难以接受 E. 解决不了我的实际问题 F. 对 AI Agent 已经没兴趣了
最近发现,以前很火的小龙虾,已经开始不用了。 有点好奇,你们为什么不再用了呢? A. 配置太复杂,折腾半天才能跑起来 B. 出现了更好的替代品 C. 担心安全或隐私方面 D. 太烧 Token ,成本难以接受 E. 解决不了我的实际问题 F. 对 AI Agent 已经没兴趣了