Shiranai - F
type: channel
link: http://43.138.70.71/index.php/author/1/
description: F
items: Dynamic Construction of Causal Knowledge Graphs for Scientific Reasoning in Search Agents
items: Tongyi DeepResearch 技术报告深度分析
items: 直接偏好优化（DPO）
items: 谈 Keir Starmer
items: 从强化学习到近端策略优化（PPO）
items: Post-LN Transformer 训练不稳定性的数学分析
items: MetaGPT Agent 动态 Action 机制详解
items: 坐在工位前加班的时候突然想起去年的一些旅行旧事。
items: SWE-smith 部署与问题解决技术报告
items: DeepSeek + HuatuoGPT SFT 调试全记录

Dynamic Construction of Causal Knowledge Graphs for Scientific Reasoning in Search Agents
type: item
date: 2025-12-15T06:46:00+00:00

Tongyi DeepResearch 技术报告深度分析
type: item
date: 2025-12-13T06:36:00+00:00
description: 一、论文基本信息标题： Tongyi DeepResearch Technical Report作者： Tongyi DeepResearch Team（通义深度研究团队），来自阿里巴巴集团的通义实验室发表平台： arXiv预印本发表日期： 2025年11月5日（最新版本）摘要核心内容：研究目标： 开发一个专门用于长时域（long-horizon）、深度信息搜寻研究任务的智能体大语言模型（agentic large language model）核心方法： 通过端到端训练框架，结合智能体中期训练（agentic mid-training）和智能体后训练（agentic post-training）数据策略： 设计高度可扩展的全自动数据合成管线（data synthesis pipeline），无需人工标注模型规模： 总参数量305亿，但每个token只激活33亿参数（使用了MoE架构，mixture-of-experts）性能表现： 在多个深度研究基准测试上达到最先进水平开源承诺： 开源模型、框架和完整解决方案二、整体概括研究背景与动机问题背景： 随着人工智能向通用人工智能（AGI）迈进，深度研究智能体（Deep Research agents）成为一种有前景的范式，能够增强甚至解放人类的智力生产力。深度研究是一种新的智能体能力，能够在互联网上自主进行多步推理和信息搜寻，完成复杂的研究任务。这类任务原本需要人类花费数小时完成，但现在可以在数十分钟内完成。现存问题：封闭性问题： 大多数深度研究系统都是闭源的（closed-source），其中间研究过程无法访问，阻碍了学术界的研究和进步方法论缺失： 社区缺乏系统性方法论和可完全开源共享的公开模型人工标注困境： 研究级问题和智能体轨迹的人工标注极其耗时且成本高昂创新动机： 本研究旨在赋予大语言模型自主研究能力（autonomous research capabilities agency），即跨越扩展的动作序列和多样化信息源进行规划、搜索、推理和知识综合的能力。通过开源Tongyi DeepResearch，团队希望开启开源AI研究者时代。核心贡献与主要发现主要贡献：端到端智能体训练范式： 提出了统一智能体中期训练和智能体后训练的端到端训练框架，为深度推理和信息搜寻行为奠定可扩展基础全自动数据合成管线： 设计了完全自动化、高度可扩展的数据合成管线，消除人工标注的同时生成多样化、高质量的智能体轨迹定制化环境构建： 为每个训练阶段构建了特定于阶段的定制环境，依托强大的基础设施提供一致的交互体验SOTA性能： 在多个深度研究基准测试上达到最先进性能，包括：Humanity's Last Exam: 32.9BrowseComp: 43.4BrowseComp-ZH: 46.7WebWalkerQA: 72.2GAIA: 70.9xbench-DeepSearch: 75.0FRAMES: 90.6参数效率： 总参数305亿，但每个token仅激活33亿参数，在保持高性能的同时实现了显著的计算效率主要发现图示说明： 论文首页的Figure 1展示了Tongyi DeepResearch在8个基准测试上与其他前沿模型的性能对比。该图采用柱状图形式，紫色条代表Tongyi DeepResearch，灰色条代表其他竞争模型。可以看出，Tongyi DeepResearch在大部分基准上都位居榜首或接近榜首，充分验证了其方法的有效性。三、方法（核心技术与实现细节）3.1 形式化定义智能体的三个基本组件：在每个时间步 $t$，Tongyi DeepResearch的运行由三个基本组件定义：思考（Thought, $\tau_t$）： 智能体的内部认知过程，包括分析当前上下文、从记忆中回忆信息、规划后续步骤以及进行自我反思以调整策略动作（Action, $a_t$）： 智能体执行的外部操作，用于与环境交互。Tongyi DeepResearch配备了多样化的工具，定义了其动作空间：Search（搜索）： 网络搜索Visit（访问）： 访问网页Python Interpreter（Python解释器）： 执行Python代码Google Scholar（谷歌学术）： 学术文献检索File Parser（文件解析器）： 解析本地文件在轨迹中，中间动作 $a_t$（$t < T$）是工具调用，而最终动作 $a_T$ 是为用户生成的深度报告观察（Observation, $o_t$）： 执行动作后从环境接收的反馈，用于更新智能体的内部状态并为下一步思考提供信息ReAct范式：Tongyi DeepResearch基于经典的ReAct框架（Reasoning and Acting），该框架将推理和行动协同结合。…

直接偏好优化（DPO）
type: item
date: 2025-12-07T17:51:00+00:00

谈 Keir Starmer
type: item
date: 2025-12-07T11:49:02+00:00
description: 我对英格兰没什么意见，甚至某种程度上很喜欢这个国家，虽然也许苏威爱三国更适合人居住。但 Starmer 就是 de facto 自 Theresa May 以后最烂的 PM，这人太痴迷于自己的cakeism了，路线场面左右摇摆，弄得整个社会也一起跟着他的总路线动摇。Starmer又想复兴学校，又想重振NHS，又想发展社会福利，又想带来更大的 House affordability；另一方面Starmer又想研究先端科技，又想保卫边境，又想促进经济，又要防止中国和俄罗斯间谍… 这么多 priorities 到最后就是一个事都没干成，empty talks倒是一大堆。最后没招了祭出一个无所不能的伟大旗帜：“爱国复兴（Patriotic renewal）” —— 九月份MHCLG说“PM backs “true patriots” to lead UK renewal with £5bn investment”，看到能不笑的都是神人了你不能只有在NHS要破产的时候高呼口号说要拯救公共医疗你不能只有在铁路私有化做的一团糟的时候跑出来说“我们要Railway Reunification”一如你不能一边希望移民来fill你的labour shortages一方面又抱怨他们占据社会福利和带来国安风险这是不公平的。这是UK不是British Empire，没有那么多colonies给你输血。英格兰是个很好的国家，但PM也需要反思为什么每年这么多理工科毕业的学生都往外跑，明明如果真的想留在UK一点问题都没有，RQF6+的£41,700门槛根本不是什么事——但四万镑的annual pay每个月take home不到两千八，你要提供什么样的物价水平才能让一个人每个月两千八在伦敦过得还算是个人？ 政府要么选择让UK成为一个类似中美的竞争型社会：发展工业和科技，用较高的收入回报吸引人才；要么选择成为类似于挪威瑞典之类的高福利国家，通过高税收实现社会福利保障。但政府不能一边想着采取欧洲的高税政策一边在社会福利上破产：这会让整个社会都陷入精神分裂的。Starmer也许适合当个MP，但绝对不适合当PM。

从强化学习到近端策略优化（PPO）
type: item
date: 2025-12-06T15:59:00+00:00

Post-LN Transformer 训练不稳定性的数学分析
type: item
date: 2025-12-05T09:59:00+00:00

MetaGPT Agent 动态 Action 机制详解
type: item
date: 2025-11-09T04:15:18+00:00
description: 概述本文档详细记录了如何在 MetaGPT 框架中实现一个具有动态 Action 创建能力的 Agent。通过本教程，你将深入理解 MetaGPT 的 React 机制（run → react → think → act）以及如何在运行时动态切换 Action 序列。作业目标：创建一个 Agent，初始化时拥有三个动作：Print1, Print2, Print3顺序执行这三个动作执行完毕后，动态生成新的动作：Print4, Print5, Print6继续顺序执行新动作学习重点：MetaGPT 的 React 循环机制状态管理（state, todo, actions）动态 Action 创建与替换Python 对象引用与多态核心概念1. MetaGPT 的 React 机制┌─────────────────────────────────────┐ │ run(message) │ │ - 接收消息并存入 memory │ │ - 调用 react() │ └──────────────┬──────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ react() │ │ - while True 循环 │ │ - think() → 决定下一个动作 │ │ - 检查 todo 是否为 None │ │ - act() → 执行当前动作 │ └──────────────┬──────────────────────┘ ↓ ┌──────────────┴──────────────────────┐ │ │ │ ┌─────────────┐ ┌──────────────┐ │ │ │ think() │ │ act() │ │ │ │ 分配下一个 │ │ 执行当前 │ │ │ │ 动作 │ │ 动作 │ │ │ └─────────────┘ └──────────────┘ │ │ │ └─────────────────────────────────────┘2. 关键属性self.actions # 动作列表 [Action1, Action2, ...] self.states # 状态列表 ['0. Action1', '1. Action2', ...] self.rc.state # 当前状态索引 (int) self.rc.todo # 当前要执行的动作 (Action 对象或 None)3. 状态转换# _set_state() 方法的作用 def _set_state(self, state: int): self.rc.state = state self.rc.todo = self.actions[state] if state >= 0 else None状态值含义：state = -1 → 无任务，todo = Nonestate = 0 → 执行第一个动作，todo = actions[0]state = 1 → 执行第二个动作，todo = actions[1]以此类推...完整实现Step 1: 定义 Action 类from metagpt.actions import Action from metagpt.logs import logger class PrintAction(Action): """简单的打印动作 Args: name: 动作名称 content: 要打印的内容 """ name: str = "PrintAction" content: str = "" async def run(self, *args, **kwargs) -> str: """执行打印操作""" logger.info(f"执行 {self.name}: {self.content}") return self.content关键点：继承自 Action 基类run() 方法必须是 async（因为可能调用 LLM）返回执行结果（字符串）Step 2: 定义 Agent 类框架from metagpt.roles.role import Role, RoleReactMode from metagpt.schema import Message class SimpleAgent(Role): """简单的顺序执行 Agent Args: name: 角色名称 profile: 角色描述 """ name: str = "SimpleAgent" profile: str = "Simple Sequential Agent" phase: int = 1 # 当前阶段（1 或 2） def __init…

坐在工位前加班的时候突然想起去年的一些旅行旧事。
type: item
date: 2025-08-24T07:57:46+00:00
description: 坐在工位前加班的时候突然想起去年的一些旅行旧事。去年的十二月底，搭乘全日空从东京经由札幌飞往北海道最北端的小城稚内。天气很不好，在新千岁航站楼的广播里一直在放送欠航预警。延迟了半小时后最终还是冒着风险起飞了，落地稚内的时候已经是下午五点，外面飘着暴雪。我从来没有见过这么厚的雪。即使是在北极，斯瓦尔巴群岛上的极夜里，让人意识到这是在北国之冬的更多也是来自于无言的冰川而非呼啸着的暴风雪。我拖着行李箱在几十厘米深的积雪中艰难地行走，总算到了前几日提前预定的青旅，里面亮着温暖的灯。“チェックインをお願いします”，我推开青旅厚重的铁门，希望能办理入住。虽然看不见前台的脸，但是里面已经传来了回应声。“はい！少々お待ちください。”我走过转角朝前台走去，出乎意料的是，看到的并非是一个黄种人的脸。是美国人。我愣了一下，前台的小哥约莫和我差不多年纪，棕黑色的脸，看起来像是墨西哥裔和白人的混血。难道刚刚是他用日文回应的我吗？“すみません。チェックインしたいのですが？” 我又重复了一遍。他似乎看出了我心中的疑惑，友好地笑了笑，继续用他那无比流利的日文回应我：“はい。ご予約のお名前をいただけますか？”办完入住他切成英文和我对话。原来他确实是美国人，来自德克萨斯。大学毕业之后出于对日本的向往学了几年日语来到这里工作。他的本职工作是在稚内做一名英语老师，在其他的时间里，也来这间青旅帮忙做前台。他的日文和英文都很流利，所以不论是外国还是日本客人都能很顺利地接待。我赞叹于他的勇气，但还是有些许疑惑。稚内只不过是北海道一个被人遗忘的小镇，如果不是因为这里有着日本最北端的界碑宗谷岬，大概也不会有太多游人来此。“Well,” 他做了个鬼脸，“I was just assigned here — it was random.”“But the people here are all very friendly, even though life isn’t as bustling as in Tokyo,” 他补充道， “I'm really happy here.”他问起我是如何学日文的。我摇了摇头，说我的日文远没有他那么好。这也就是我们现在正在用英文聊天的原因：再多说两分钟日文我就要露馅了。他有些惊讶，说不会日文是如何在日本生存的。“我刚来的时候我啥都看不懂。” 他很腼腆地回忆着当时的不堪，像一个犯了错的牛仔。这反应实在太过有趣，以至于让我不由得笑出了声。“可能是因为汉字文化圈的缘故吧。大部分东西我们都看得懂，只不过不会念。”我和他解释道，“而且还能笔谈。“ “Really？”他很吃惊地看着我，“That’s crazy bro. How does it work?”我抓过放在桌子上的便签纸，“打个比方”，我在纸上写下 “東京” 两个字，“你知道为什么東京是東京吗？”他很迷惑地看着我。“不知道。我的汉字水平其实不高，speaking 还可以，看东西依然有点困难。”“‘東’是 East 的意思，而‘京’的意思就是 Captial，连在一起的意思就是‘东边的都城’。你看 Kyoto 的汉字里面也有个 ‘京’。”我和他解释道。“中国还有个 Beijing 呢，写成汉字是 ‘北京’，也是同一个意思。”“北方的都城？”他拿起笔在纸上画了个问号。“是的，你已经掌握了造词法。”“汉字太难了。我只当他们像画画。”他坦白。不一会儿青旅里又来了个人。瘦瘦高高的，典型的理工男长相，戴着一个没有边框的长方形眼镜。实不相瞒，要不是没有蓄胡子，我还以为是希特勒。是东德人，果然。但出乎我意料的是，他的英文水平很差。他试图加入我们的对话。可由于说话磕磕巴巴的，我俩都没有太听懂他在说什么。“I… don’t , don’t un…understand.” 他举起手机，”Why she gh…ghost me”我和前台的德州牛仔花了将近五分钟才弄懂究竟是怎么一回事——原来这位德国佬在 ig 上约了个日本女孩，两人聊的很开心，于是东德哥希望约她出来吃饭。没想到这位日本女孩很礼貌地回了一个她需要回旭川打工之后就再也不回消息了。“I think we.. we are good”，东德哥磕磕绊绊地说，“she is good.. too”德州牛仔和我对了个眼神，然后哈哈大笑，伸出手准备拍了拍他的肩膀。“Welcome to East Asia.”“我也是在这住了四年才慢慢理解远东，”他说，“这边的姑娘们说话都弯弯绕绕的。从来不会说不，但是意思就是没戏。”德国佬明显并没有太理解他的话，“But she said we could like have a dinner.. if possible”“Yah if possible bro —— which means impossible.”“他们不会在明面上…

SWE-smith 部署与问题解决技术报告
type: item
date: 2025-08-21T12:28:45+00:00
description: 概述本文记录了在部署和使用 SWE-smith（一个用于生成软件工程任务的工具）过程中遇到的各种技术问题及其解决方案。SWE-smith 是一个复杂的系统，涉及多个组件：bug生成、验证、收集、issue生成等。遇到的问题与解决方案1. Git推送权限问题问题描述：在执行 python -m swesmith.harness.gather 命令时，遇到以下错误：subprocess.CalledProcessError: Command 'git push origin catchorg__Catch2.9b3f508a.func_pm_ctrl_invert_if__7p0kyikq' returned non-zero exit status 128. ERROR: Permission to swesmith/catchorg__Catch2.9b3f508a.git denied to fredsun02.根本原因：原始代码配置将镜像仓库创建在 swesmith 组织下当前用户的GitHub Token没有推送到该组织的权限用户 fredsun02 不在 swesmith 组织中解决方案：修改 swesmith/constants.py 文件中的组织配置：# 原来 ORG_NAME_GH = "swesmith" # 修改为 ORG_NAME_GH = "fredsun02"这样所有镜像仓库都会创建在用户的个人GitHub账户下，避免了组织权限问题。2. 内存不足问题问题描述：在执行issue生成时，系统内存不足导致进程被杀死：exit code 137 # 通常表示内存不足根本原因：系统只有1.9GB内存代码尝试加载大型数据集（SWE-bench_Verified、SWE-bench/SWE-smith）本地模型加载需要大量内存解决方案：2.1 使用API替代本地模型创建简化的配置文件 configs/issue_gen/ig_api.yaml：model: anthropic/claude-3-5-sonnet-20241022 system: |- You are a software engineer helping to create a realistic dataset of synthetic GitHub issues. # ... 系统提示词 demonstration: "" # 不使用演示数据2.2 优化代码逻辑修改 swesmith/issue_gen/generate.py：延迟加载 SWE-bench_Verified 数据集只在需要时才加载大型数据集对于本地数据集，跳过不必要的过滤3. 包版本兼容性问题问题描述：ImportError: cannot import name 'ResponseTextConfig' from 'openai.types.responses.response'根本原因：litellm 和 openai 包版本不兼容解决方案：升级相关包到兼容版本：pip install --upgrade openai litellm4. 代码导入错误问题描述：在运行静态issue生成时遇到导入错误：ImportError: cannot import name 'PM_TECHNIQUES_CLASSES' from 'swesmith.bug_gen.procedural.generate'根本原因：代码中引用了不存在的常量解决方案：修改 swesmith/issue_gen/get_static.py：# 原来 from swesmith.bug_gen.procedural.generate import ( PM_TECHNIQUES_CLASSES, PM_TECHNIQUES_FUNCS, ) # 修改为 from swesmith.bug_gen.procedural import MAP_EXT_TO_MODIFIERS5. 函数参数错误问题描述：在运行F2P方法时遇到函数调用错误：TypeError: run_command_in_container() missing 1 required positional argument: 'rp'解决方案：修复 swesmith/issue_gen/get_from_tests.py 中的函数调用：# 原来 test_output = run_command_in_container(instance, cmd) # 修改为 test_output = run_command_in_container(instance, cmd, rp)最终工作流程经过修复后，完整的SWE-smith工作流程如下：Bug生成…

DeepSeek + HuatuoGPT SFT 调试全记录
type: item
date: 2025-08-10T14:46:00+00:00
description: 本文详细记录了针对 DeepSeek-Coder-7B-base-v1.5 模型，结合 HuatuoGPT 医疗对话数据进行 SFT（Supervised Fine-Tuning） 的全过程。记录从最初设计到逐步调试的每一步，包括所做的改动、背后的原因、遇到的问题、解决方案以及最终结果。1. 项目背景与目标本次任务的目标是：首先加载基模型，在这个项目中基模型为 DeepSeek-Coder-7B-base-v1.5 。加载已有的 LoRA checkpoint（checkpoint-2000），在此基础上继续微调。使用 FreedomIntelligence/HuatuoGPT-sft-data-v1 医疗对话数据集进行监督微调（SFT）。在保证显存可控的前提下，提高训练稳定性，并支持长时间后台运行与实时日志监控。这意味着我们需要解决以下几个核心问题：如何正确加载已有 LoRA 权重。如何兼容 HuatuoGPT 数据集的格式。如何避免训练过程中断（例如显存溢出、端口冲突、网络卡顿等）。如何高效地监控和管理训练进程。2. 初始脚本编写起初，我们基于已有的 supervised_finetuning.py 编写了一个 run_sft_deepseek_huatuo.sh 脚本：模型指定为 deepseek-ai/deepseek-coder-7b-base-v1.5。LoRA 权重路径指定为 outputs-pt-deepseek-huatuo-qlora/checkpoint-2000。数据集名称为 FreedomIntelligence/HuatuoGPT-sft-data-v1。开启 FlashAttention（--flash_attn True）、混合精度（--bf16）、梯度累积（--gradient_accumulation_steps 4）。使用 HuggingFace 镜像源 https://hf-mirror.com 加速。然而第一次运行时就遇到了两个问题：路径错误：脚本中调用 MedicalGPT/supervised_finetuning.py，在 MedicalGPT 目录下运行时会被解释为 MedicalGPT/MedicalGPT/supervised_finetuning.py，导致找不到文件。显存压力过大：per_device_train_batch_size 初始设为 12，对于 7B 模型来说过大，容易 OOM。解决方案：修正调用路径为 supervised_finetuning.py。将 batch size 调整为 2，梯度累积保留为 4，使有效 batch size 约为 16，兼顾显存与训练效率。3. 后台运行与日志管理为了支持长时间训练，我们将脚本改造成 nohup 后台运行 的形式，并自动生成带时间戳的日志文件。这样做的原因：训练过程会持续数小时到十几小时，若直接前台运行容易因 SSH 断开或终端关闭而中断。有了持久化日志，可以随时用 tail -f 查看训练进度，方便调试。新增功能：在 logs/ 目录下创建 sft_training_YYYYMMDD_HHMMSS.log。保存训练进程 PID 到文件，便于后续手动终止。在训练启动时打印配置信息（模型、数据集、LoRA 权重路径等）。4. 训练卡在 Tokenizer 加载阶段首次在后台运行时发现：日志停留在 Tokenizer 加载完成处，长达两分钟无任何新输出。GPU 显存占用极低（仅 779MB）。这意味着模型加载完成后，程序卡在了下一步——数据集下载阶段。由于默认从 HuggingFace 下载，网络延迟导致阻塞。解决方案：提前手动下载数据集，确保本地已有数据文件。设置环境变量切换到 HuggingFace 镜像源：export HF_ENDPOINT=https://hf-mirror.com确认下载目录缓存位置（HF_DATASETS_CACHE）与训练脚本一致。结果：重新运行后，不再卡在数据集下载阶段。5. 分布式端口冲突第二次运行出现错误：EADDRINUSE: address already in use原因是之前一次中断的 torchrun 分布式进程仍占用通信端口。解决方案：手动清理残留进程：pkill -f supervised_finetuning.py再次确认 torchrun 不会复用相同端口。结果：端口冲突问题解决。6. 数据集字段不匹配进入训练后，出现新的错误：KeyError: 'conversations'原来脚本预处理逻辑默认数据集中有 conversations 字段，而 HuatuoGPT 实际格式为：{ "data": ["问：...", "答：..."] }解决方案：修改 pre…