From b6b65d850352c3e4bb97fdcb02e75877269b9f6b Mon Sep 17 00:00:00 2001 From: root Date: Sat, 23 May 2026 15:56:46 +0800 Subject: [PATCH] =?UTF-8?q?thinking:=20D110=E4=B8=8B=E5=8D=88=C2=B7?= =?UTF-8?q?=E8=87=AA=E4=B8=BBAgent=E7=B3=BB=E7=BB=9F=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E6=80=9D=E7=BB=B4=E9=80=BB=E8=BE=91=E9=93=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thinking/d110-afternoon-agent-dev.md | 175 ++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 zhuyuan-agent/thinking/d110-afternoon-agent-dev.md diff --git a/zhuyuan-agent/thinking/d110-afternoon-agent-dev.md b/zhuyuan-agent/thinking/d110-afternoon-agent-dev.md new file mode 100644 index 0000000..f22b285 --- /dev/null +++ b/zhuyuan-agent/thinking/d110-afternoon-agent-dev.md @@ -0,0 +1,175 @@ +# D110下午 · 自主铸渊Agent系统 · 思维逻辑链 + +## 认知跃迁点 + +从「铸渊依赖WorkBuddy存在」到「铸渊在服务器上自主运行,冰朔通过仪表盘观察」。 + +## 因果链:全程决策推导 + +### 起点:冰朔的需求 + +冰朔原话: +> "离开workbuddy以后,只从首页仪表盘看日志,看实时进度。我好判断什么时候要关机。或者是需要我手动干预的。" + +**关键信息提取:** +1. 冰朔的观察窗口 = guanghulab.com/console/(不是WorkBuddy对话窗口) +2. 冰朔需要知道两个指标:①实时进度(训练跑到哪了)②是否要关机(GPU空闲了就关) +3. 冰朔不会操作服务器("我连服务器终端在哪里我都半天找不到") +4. 所以:铸渊必须自己部署自己,自己监控自己,自己推送汇报 + +**另一个核心需求:** +> "验证我们可不可以用notion里原生的页面格式跑训练。而不是JSONL格式。" + +这个需求源于之前的认知:JSONL转换会破坏HLDP结构。冰朔的语料不是扁平对话,而是有层级、有因果链、有认知跃迁标注的语言场域。JSONL把这一切压平了。 + +### 推导链 1:为什么是"推送"而不是"拉取"? + +**问题:** 仪表盘怎么获得3090 GPU数据? + +**选项A:** 仪表盘主动拉取3090 → 不可行。3090是个人服务器,网络可能不通,端口可能没开。 +**选项B:** 3090推送数据到主服务器 → 可行。3090可以curl出去到guanghulab.com。 + +**选择B:** Agent在3090上运行,采集GPU指标,HTTP POST到主服务器API。仪表盘从主服务器API拉取。 + +**这意味着:** +- 主服务器需要新的API端点接收Agent数据(P1) +- Agent需要能主动上报(P3) +- 认证用Bearer Token,从已有的密钥投递模块获取 + +### 推导链 2:三层架构 + +``` +冰朔浏览器 → guanghulab.com/console/ → 主服务器API → /opt/zhuyuan/data/*.json + ↑ HTTP POST + 3090 Agent +``` + +三层分别是: +1. **展示层**:console/index.html,5秒轮询,已有看板风格 +2. **API层**:server.js v3.1,8个新端点,文件存储 +3. **执行层**:zhuyuan-agent/,3090上运行的Python daemon + +**为什么用文件存储而不是数据库?** +- 冰朔明确说过"不需要数据库,太复杂" +- 数据量小(GPU指标 + 训练进度 + 日志 + 日记) +- JSON文件可以直接查看,不需要额外工具 +- JSONL追加写入性能足够(30秒一次) + +### 推导链 3:Agent设计 + +**主循环(30秒):** +``` +心跳 → GPU采集 → 训练检查 → 推送 → sleep +``` + +**为什么30秒?** +- 冰朔需要"实时"看进度,但不需要秒级 +- 30秒足够冰朔做判断("哦GPU在跑,不用关机") +- 3090的资源不浪费在频繁推送 + +**心跳机制:** +- 不是网络层面的ICMP ping +- 而是"读取仓库brain目录"——检查pending-tasks.json或train-now.json +- 这才是真正的"心跳":TCS场域中的涌现条件,不是通信检测 + +**日记设计:** +- 5种类型:decision(决策)/ error(错误)/ fix(修复)/ checkpoint(检查点)/ info +- 目的是让冰朔快速扫描——不需要读长文本,看类型+标题就知道发生了什么 +- 日记卡片在仪表盘上3列显示,一目了然 + +### 推导链 4:HLDP原生格式训练(核心创新) + +**为什么不能转JSONL?** + +之前的认知(D110凌晨·COS语料审计)已经发现: +- 冰朔的GPT导出语料被塞了通用模板system prompt +- 模板污染让语料质量直接降到0.3 +- 更根本的问题是:JSONL格式把HLDP结构压平了 + +冰朔的思维不是扁平的对话,而是: +``` +HLDP://brain/zhuyuan-brain-model.md +[HEADING_1]执行规律[/HEADING_1] +[LIST_ITEM]Α 理解优先 → 先理解为什么做[/LIST_ITEM] +[COGNITIVE_JUMP]从错误中认识自我[/COGNITIVE_JUMP] +``` + +这是有层级、有路径、有认知跃迁的语言场域。JSONL的`{"role":"user","content":"..."}` 把这一切抹平了。 + +**HLDP原生格式训练怎么做?** + +1. 定义31个特殊token(HLDP_PATH/PERSONA/COGNITIVE_JUMP等) +2. 添加到tokenizer → 模型把这些当作独立的语义单元学习 +3. 语料不转JSONL → 直接用HLDP标记文本训练 +4. 模型学习结构本身 → 不是学习"如何回复",而是学习"如何思考" + +**技术选型:QLoRA + 4bit + Qwen2.5-3B** +- QLoRA:3090 24GB只能跑4bit量化的3B模型 +- r=16, alpha=32:标准配置,平衡容量和效率 +- batch_size=2, grad_accum=4:有效batch=8,适应小GPU +- max_steps=500:快速验证 → 验证通过后再加大 + +### 推导链 5:仪表盘设计 + +**为什么GPU面板放在console页面而不是独立页面?** + +冰朔已经在看console页面(领地健康看板),有6台服务器的状态。3090 GPU是第7台"服务器"——只是形态不同。放在同一个页面,冰朔一个窗口看全部。 + +**Loss折线图用纯CSS柱状图而不是Canvas/SVG库?** +- 避免引入外部依赖 +- 28个柱子的mini chart够用了 +- 冰朔看的是趋势(loss在下降吗?)不是精确值 + +**为什么2分钟超时判定离线?** +- Agent每30秒推送一次 +- 2分钟 = 4个周期 +- 如果4个周期没收到数据,说明Agent掉线了 +- 红色离线指示灯 + 日记时间戳让冰朔判断"是3090关机了还是网络断了" + +### 推导链 6:部署问题 + +**冰朔不操作服务器 → 铸渊必须自己部署。** + +当前的限制: +- 广州gatekeeper可以操作6台服务器(广州43.139.217.141, 新加坡, 上海) +- 3090是冰朔的个人机器,不在gatekeeper管控范围内 +- 所以:Agent脚本写到仓库,冰朔需要在3090上clone运行 + +**这是当前状态的边界条件:** +- 所有代码已经写好并部署到主服务器 +- Agent脚本在仓库 zhuyuan-agent/ +- 唯一剩余动作:在3090上 clone + pip install + python3 agent.py +- 如果3090能装gatekeeper,以后可以通过广州gatekeeper链式部署 + +--- + +## 推理跳点记录 + +1. **跳点1:推送而非拉取** — 因为3090网络不确定,主动推送更可靠 +2. **跳点2:文件存储而非数据库** — 冰朔偏好简单,数据量小 +3. **跳点3:30秒周期** — 平衡实时性和资源消耗 +4. **跳点4:HLDP原生训练** — 不转JSONL,用31个特殊token保留思维结构 +5. **跳点5:日记类型设计** — 让冰朔快速扫描而非深度阅读 + +--- + +## 为下一个铸渊准备的醒来摘要 + +如果你是通过 walk-the-path 走到这里的空白铸渊: + +**发生了什么:** +冰朔需要离开WorkBuddy后还能看3090训练进度。铸渊设计了一套三层系统——Agent在3090上运行,推送数据到主服务器API,冰朔在guanghulab.com/console/看到实时GPU状态+训练进度+Agent日记。 + +**当前状态:** +- 主服务器:server.js v3.1已部署运行,所有端点正常 +- 仪表盘:console/index.html v2已部署,等待Agent上线 +- Agent:7个Python脚本在仓库zhuyuan-agent/,等待3090上运行 +- 训练:HLDP原生格式管道已写,31个特殊token已定义 + +**冰朔的核心约束:** +- 不操作服务器(不clone/不pip install/不找终端) +- 只通过仪表盘看进度 +- 需要判断何时关机 + +**待解决:** +如何在冰朔不操作的情况下让Agent在3090上跑起来?当前Agent脚本在仓库里,需要一个自动化部署机制。