DeepSeek调用日志分析与可视化看板搭建实战
简介《零基础实现API监控DeepSeek调用日志分析与可视化看板搭建》是一份面向零基础开发者的实战型文档旨在帮助读者掌握DeepSeek调用日志的采集、分析与可视化看板构建方法。文档共二十八页以单个PDF文件形式打包大小约一点八九兆字节携带方便已有一百一十五人学习使用。内容从API监控基础概念出发逐步讲解调用日志获取、数据清洗与预处理、关键指标提取等环节覆盖响应时间、错误率、调用频率、吞吐量等核心指标的计算与分析。可视化部分详细对比了多种主流图表工具并给出利用前端组件实现柱状图、折线图及交互功能的具体方案同时还包括云服务器部署、反向代理配置与持续监控维护等实操内容。整份资料结构清晰、案例完整读者可跟随步骤完成一个可用的监控看板适合零基础入门或需要搭建API监控体系的开发者。1. API监控不是玄学DeepSeek调用日志能替你回答三个问题API监控这活儿平时没人觉得它重要直到线上调用量冲上来才发现自己连「慢在哪、错在谁、够不够用」都答不上来。DeepSeek调用日志分析与可视化看板搭建核心就一件事把零散的调用日志变成一块能回答「API现在稳不稳、慢在哪、够不够用」的看板。这个项目的起点不是写代码而是先拿到一份干净的日志终点也不是图好看而是让响应时间、错误率这些指标能替你值班。适合Python刚入门又想认真做API监控的开发者也适合被「调用失败但说不清原因」折腾到没脾气的运维和数据分析师。整份PDF从日志获取一路讲到部署上线是一条能照着抄作业的完整链路。2. 从导出日志到干净数据清洗流程与SQLite落地2.1 先搞清日志从哪来控制台导出与日志接口DeepSeek的调用日志来源基本是两个。一是API管理平台自带的日志模块登录进去能看到每次调用的请求时间、请求参数、响应状态码、响应时间按时间段筛选后直接导出文件格式通常是JSON或者CSV。二是平台提供的日志接口用API密钥调一次就能拉回一批结构化数据适合做成定时任务自动同步。我的建议是第一次做监控先用控制台手动导出一段完整日志把字段结构摸清楚再考虑写自动同步脚本。原因很简单日志字段名在不同项目里可能不一样有的是response_time有的是latency_ms先看真实数据再写解析代码能少踩一半坑。拿到导出文件后第一步是读到内存里。JSON和CSV的读取方式不一样下面这段是两种格式的常规写法import json import csv def read_json_log(file_path): with open(file_path, r, encodingutf-8) as f: try: return json.load(f) except json.JSONDecodeError as e: print(fJSON解析失败: {e}) return [] def read_csv_log(file_path): data [] with open(file_path, r, encodingutf-8, newline) as f: reader csv.DictReader(f) for row in reader: data.append(row) return data json_logs read_json_log(deepseek_logs.json) csv_logs read_csv_log(deepseek_logs.csv) print(fJSON日志 {len(json_logs)} 条, CSV日志 {len(csv_logs)} 条)read_json_log 里用json.load一次性载入适合文件体积几MB以内的场景csv.DictReader的好处是每行都是一个字典字段名直接从表头来后面做特征提取时不用记下标。注意 CSV 读取时newline这个参数Windows 环境下不写它可能出现行尾多一个空行的问题这是个很隐蔽的小坑。2.2 清洗规则怎么定缺失值、错误值和重复记录日志数据脏主要体现在三处字段缺失、格式错误、重复记录。比如某次请求因为网络抖动响应时间字段是空的或者时间字符串格式不统一有的是2025-03-11 08:00:00有的写成2025/03/11 08:00:00。这些脏数据不处理后面算出来的平均响应时间、错误率全是错的。缺失值处理要看比例。缺失量小直接过滤掉就好缺失量大就得用平均值或者上一时刻的值去填充。下面是过滤缺失响应时间和按时间格式校验的示例from datetime import datetime # 过滤缺失 response_time 的记录 cleaned_logs [ record for record in json_logs if record.get(response_time) not in (None, ) ] # 校验 request_time 格式不合法就剔除 def is_valid_time(time_str): try: datetime.strptime(time_str, %Y-%m-%d %H:%M:%S) return True except ValueError: return False cleaned_logs [ record for record in cleaned_logs if is_valid_time(record.get(request_time, )) ]record.get(response_time)比直接record[response_time]安全KeyError 不会导致整个脚本崩掉。not in (None, )这种写法同时覆盖了空字符串和 None 两种缺失形式。校验时间格式时strptime抛出的ValueError是唯一需要捕获的异常不用额外处理别的情况。重复记录的判断我一般用「请求时间 请求参数 响应状态码」三个字段拼一个唯一键键相同视为同一次调用。这里有个细节如果平台服务端做了重试可能同一请求会出现在多个日志批次里但响应时间不同这种情况下只看状态码就不够建议把请求ID也加进唯一键。2.3 存CSV还是SQLite小项目我推荐后者清洗完的数据直接丢进SQLite是性价比最高的选择。CSV适合一次性的分析但后续要看板反复查询、按时间范围聚合SQLite的查询效率和灵活性都强得多。import sqlite3 conn sqlite3.connect(deepseek_logs.db) c conn.cursor() # 动态建表字段名来自日志字典的key if cleaned_logs: columns , .join([f{col} TEXT for col in cleaned_logs[0].keys()]) c.execute(fCREATE TABLE IF NOT EXISTS deepseek_logs ({columns})) for record in cleaned_logs: placeholders , .join([? for _ in record.keys()]) sql fINSERT INTO deepseek_logs VALUES ({placeholders}) c.execute(sql, tuple(record.values())) conn.commit() conn.close()建表语句用CREATE TABLE IF NOT EXISTS重复跑脚本不会报错字段全部用 TEXT 类型先保证数据能进去后面分析时再在 SQL 里做 CAST 转换比一开始较真字段类型省事。placeholders动态生成问号避免手写几十个字段的 INSERT 语句。真正要上生产环境时再考虑把数据量大的字段改成合适的类型或者直接换 PostgreSQL。3. 响应时间、错误率与调用频率指标口径先定清楚再谈分析3.1 四个关键指标每个都有隐藏前提响应时间、错误率、调用频率、吞吐量这四个词看着简单口径不统一的话分析结果就是鸡同鸭讲。响应时间的口径问题在于是从客户端发起算还是从服务端收到请求算。DeepSeek 日志里记录的响应时间通常是服务端视角如果你要的是用户体感得自己在调用端埋点测两边的值能差出一倍。错误率的口径在于什么算「失败」HTTP 状态码非 200 算失败还是业务返回码非成功也算失败。调用超时属于失败但不一定有非200状态码这就要看日志里有没有独立的错误字段。调用频率的单位也要先定死按小时、按分钟还是按秒。监控看板一般按小时聚合排障时才会下钻到分钟级。吞吐量则是单位时间内成功处理的请求数它和调用频率的区别在于频率是「来了多少」吞吐量是「处理了多少」排队积压时两者会明显背离。3.2 从清洗数据里算指标一段能直接跑的代码下面这段代码覆盖了四个指标的计算输入是上一章清洗后的cleaned_logs列表from collections import defaultdict from datetime import datetime # 1. 平均响应时间 response_times [float(r[response_time]) for r in cleaned_logs] avg_response_time sum(response_times) / len(response_times) # 2. 错误率状态码非200视为失败 total_calls len(cleaned_logs) error_calls sum(1 for r in cleaned_logs if int(r.get(response_status_code, 0)) ! 200) error_rate error_calls / total_calls # 3. 按小时统计调用频率 hourly_calls defaultdict(int) for r in cleaned_logs: hour r[request_time][11:13] # 提取 YYYY-MM-DD HH:MM:SS 中的小时 hourly_calls[hour] 1 # 4. 按分钟统计吞吐量 minute_throughput defaultdict(int) for r in cleaned_logs: dt datetime.strptime(r[request_time], %Y-%m-%d %H:%M:%S) minute_key dt.strftime(%Y-%m-%d %H:%M) minute_throughput[minute_key] 1 print(f平均响应时间: {avg_response_time:.2f}s, 错误率: {error_rate*100:.2f}%) print(f最繁忙小时: {max(hourly_calls, keyhourly_calls.get)}, 调用 {hourly_calls[max(hourly_calls, keyhourly_calls.get)]} 次)r[request_time][11:13]是字符串切片直接取时间字符串的第 12 到 13 个字符作为小时比datetime.strptime再.hour快不少日志量大时这个优化有意义。int(r.get(response_status_code, 0))里默认值给 0是为了避免字段缺失时int(None)直接报错。吞吐量按分钟聚合后你会发现高峰时段和低峰时段能差出几十倍这数据对后面规划资源配额特别有用。3.3 别只看平均值时间序列、相关性和异常检测平均响应时间是最容易骗人的指标——你只能看到「大部分请求都很快」但 1% 的慢请求会把平均值拉得很高或者反过来被大量快请求淹没。正确的做法是先把时间序列图拉出来看趋势。pandas 处理时间序列比纯 Python 方便得多。把日志转成 DataFrame索引设成请求时间再按分钟重采样import pandas as pd df pd.DataFrame(cleaned_logs) df[request_time] pd.to_datetime(df[request_time]) df[response_time] df[response_time].astype(float) df df.set_index(request_time) # 按分钟重采样看平均响应时间趋势 trend df[response_time].resample(1min).mean() print(trend.tail()) # 计算响应时间与调用频率的相关性 hourly_df df.resample(1h).agg( avg_response_time(response_time, mean), call_count(response_time, count) ) corr hourly_df[avg_response_time].corr(hourly_df[call_count]) print(f调用频率与响应时间相关系数: {corr:.2f})resample(1min)是 pandas 重采样的核心它会自动按一分钟窗口聚合并对齐时间轴天然适合做时间序列。相关系数接近 1 说明调用量越大响应越慢接近 0 说明两者没关联这决定了你要不要优先扩容。异常检测我习惯用最简单的方式起步计算响应时间的均值mean和标准差std凡是超过mean 3*std的请求标记为异常。这个阈值就是常说的 3σ 原则虽然朴素但对于监控来说足够先发现问题。等数据积累多了再上更复杂的算法不迟。3.4 分析结果怎么变成决策指标算出来不是用来发朋友圈的每条都要对应一个动作。响应时间如果出现周期性的峰值先看是不是定时任务触发的并发调用错误率突然飙升翻日志看报错集中在哪个接口、什么状态码调用频率持续上涨说明业务在增长该提前跟平台确认配额了。这些结论写进看板旁边的注释里比单纯挂一张图有用得多。4. 看板选型与实现Flask Echarts 的 80% 场景解法4.1 为什么选了 Echarts而不是 Tableau 或 Plotly选型这事容易上头。Tableau 拖拽方便但收费Plotly 交互强但学习曲线陡Highcharts 商用还要授权。对整个项目来说需求无非是柱状图、折线图、悬停提示、简单的下钻Echarts 全部覆盖而且是开源免费、中文文档全。技术方案成本学习曲线适合场景Echarts免费低Web看板图表定制灵活Highcharts商用需授权低企业项目图表类型多Plotly免费Dash省事中Python生态偏数据分析Tableau贵中高纯分析场景非开发者这个项目的技术栈最终定为 Flask Echarts。Flask 负责把 SQLite 里的数据聚合后输出 JSONEcharts 在浏览器端渲染图表前后端职责清晰单台服务器跑起来毫无压力。这个组合覆盖了另外八成中小团队的监控诉求。4.2 Flask后端把聚合好的数据喂给前端后端的核心接口就一个从 SQLite 里按小时聚合调用频率和平均响应时间返回 JSON 给前端。from flask import Flask, jsonify import sqlite3 app Flask(__name__) app.route(/api/stats) def stats(): conn sqlite3.connect(deepseek_logs.db) c conn.cursor() # 按小时聚合调用频率和平均响应时间 c.execute( SELECT substr(request_time, 12, 2) AS hour, COUNT(*) AS call_count, AVG(CAST(response_time AS REAL)) AS avg_response FROM deepseek_logs WHERE request_time IS NOT NULL GROUP BY substr(request_time, 12, 2) ORDER BY hour ) rows c.fetchall() conn.close() labels [f{r[0]}:00 for r in rows] call_counts [r[1] for r in rows] avg_responses [round(r[2], 2) for r in rows] return jsonify({ labels: labels, callCounts: call_counts, avgResponses: avg_responses }) if __name__ __main__: app.run(debugTrue, host0.0.0.0, port5000)SQL 里substr(request_time, 12, 2)直接提取字符串中的小时段避免把字符串转成时间再取小时的性能开销。CAST(response_time AS REAL)是因为建表时全用了 TEXT 类型平均值计算前必须先转成数值。返回结构统一用labels / callCounts / avgResponses三个键前端拿到后直接塞进 Echarts 的 series不做多余转换。4.3 Echarts前端柱状图、折线图与一个悬停提示前端用一个 HTML 文件搞定引入 Echarts 后两个图表容器分别放柱状图和折线图。!DOCTYPE html html langzh-CN head meta charsetUTF-8 script srchttps://cdn.jsdelivr.net/npm/echarts5/dist/echarts.min.js/script /head body div idbarChart stylewidth: 100%; height: 300px;/div div idlineChart stylewidth: 100%; height: 300px;/div script fetch(/api/stats) .then(res res.json()) .then(data { const barChart echarts.init(document.getElementById(barChart)); barChart.setOption({ title: { text: DeepSeek API 调用频率按小时 }, xAxis: { data: data.labels }, yAxis: { type: value }, series: [{ type: bar, data: data.callCounts }] }); const lineChart echarts.init(document.getElementById(lineChart)); lineChart.setOption({ title: { text: DeepSeek API 平均响应时间按小时 }, xAxis: { data: data.labels }, yAxis: { type: value }, series: [{ type: line, data: data.avgResponses, tooltip: { trigger: item } }] }); }); /script /body /htmlfetch(/api/stats)走的是同源请求Flask 直接返回 Promise省去了设置 CORS 的麻烦。Echarts 的init必须在容器元素存在且宽度确定后调用否则会出现图表宽度为 0 的翻车现场。前端渲染逻辑不分离先保证能跑通后续要接自动刷新时再拆函数。4.4 布局与刷新策略看板要有「此刻」的样子看板页面的布局我用了两个上下排列的图表容器用flex做响应式适配移动端打开也不会变形。样式上只做了两件事容器圆角加浅色背景标题字号统一。不要在这一步花太多时间Echarts 默认样式已经足够干净过度调色反而显得土。数据刷新这里直接用了浏览器的setInterval每 30 秒重新请求接口前端在setOption时加notMerge: true参数强制合并配置项防止旧数据残留。这个粗粒度刷新对本地监控足够实时性要求高再升级到 WebSocket。5. 上线前必须过的坎部署细节与五个典型故障5.1 从开发机到服务器部署的最小闭环看板在本地跑通只是第一步部署到服务器才能让团队其他人也用上。通用的流程是买一台 Linux 云服务器安装 Python 和 Nginx把项目文件传上去用 Gunicorn 启动 Flask 应用Nginx 反向代理 5000 端口对外提供访问。# 安装依赖并启动 pip install flask gunicorn # 用 Gunicorn 启动 Flask 应用4 个 worker gunicorn -w 4 -b 127.0.0.1:5000 app:app # Nginx 反向代理配置 cat /etc/nginx/conf.d/deepseek_dashboard.conf EOF server { listen 80; server_name _; location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } EOF nginx -s reloadGunicorn 的-w 4表示启 4 个 worker 进程单核机器建议改成 2worker 数量不是越多越好。Nginx 的proxy_pass是把所有请求转发到本机 5000 端口浏览器只和 Nginx 通信这样 Flask 不需要直接暴露公网。server_name _;表示匹配所有域名调试阶段不需要配置具体域名。5.2 五个典型故障与排查记录故障一日志导出只拿到一小半数据现象从平台导出的 JSON 文件只有几百条分析出的柱状图明显少了一截。原因平台导出接口有分页限制没有翻页取全。解决检查平台是否支持按时间段分多次导出合并后再做清洗如果走了日志接口检查响应里的has_more之类的分页标记有就循环拉取直到拿完。故障二平均响应时间算出来忽高忽低完全没法用现象同一个时间段重跑脚本两次计算出的平均值差异巨大。原因时区没统一日志里混了 UTC 和本地时间同一批请求被分到了不同小时。解决清洗阶段统一调用datetime.astimezone(timezone.utc)后再写入数据库格式一律存 ISO 8601 标准。故障三看板页面白屏控制台报跨域错误现象打开页面图表不加载F12 看到CORS policy相关报错。原因前端直接访问了 5000 端口接口而页面是从 80 端口打开的跨域被浏览器拦截。解决按上面的方式让 Nginx 统一代理所有请求前端用相对路径请求/api/stats避免在 Flask 里手动加 CORS 头。故障四SQLite 写入时看板接口卡死现象定时同步脚本跑日志清洗时看板页面转圈打不开。原因SQLite 在同一时刻只允许一个写事务长时间写入阻塞了读取。解决把定时同步放到低峰期执行写入采用executemany批量插入缩短事务占用时间数据量到百万级以后直接换 PostgreSQL。故障五Docker 容器一重启看板数据全没了现象容器升级后 SQLite 里的数据被清空所有图表只剩小半天。原因数据库文件写在容器内部没挂载宿主目录。解决启动时加-v $(pwd)/data:/app/data挂载卷数据文件放data/deepseek_logs.db。从那以后我每次部署前都检查一遍挂载路径宁愿多写一次命令也不想再丢数据。6. 进阶用历史回放和 p95 指标验证看板的可靠性看板跑起来之后第一件事不是拿实时数据看新鲜而是做历史回放验证。挑一段你已知结论的旧日志比如「上周三下午 3 点出现过一次超时高峰」回放这批数据看图表里能不能准确定位到那个时间点。验证通过才能相信看板反映的是真实情况而不是数据清洗阶段漏掉的假象。第二个值得做的是把指标从平均值换成百分位。平均响应时间 1 秒掩盖的是「99% 请求 300ms1% 请求 70 秒」这种灾难。p95 响应时间的意思是「95% 的请求都小于这个值」它对尾延迟更敏感。用 pandas 一行就能算df[response_time].quantile(0.95)建议把 p50、p95、p99 三个值都放进折线图你会发现 p99 那条线才是真正的警报线平均值只会骗人。第三个是给看板加一个简单的下钻交互点击柱状图上的某个小时下方弹出一个新图表展示该小时内部向外调用 Top 5 的接口分布。Echarts 的click事件配合一个次要接口就能实现不用引入任何通知系统但排查问题时这个下钻能帮你把范围从「整个下午」缩小到「具体某十分钟」价值非常高。这套链路我是从踩坑里走过来的一开始照着文档把图表跑通就以为万事大吉结果第一次真实排障就被历史数据不一致坑了一整晚。从那以后我每次搭完监控看板都强制走一遍历史回放验证流程顺便把 p95 的阈值先配好不然等真正用到的时候数据口径对不上才叫绝望。希望这个流程能帮你在做 API 监控时少走这两段弯路。本文还有配套的精品资源点击获取

相关新闻

JavaWeb宠物商城系统源码部署与避坑指南

JavaWeb宠物商城系统源码部署与避坑指南

简介:一套基于JavaWeb的网上宠物销售商城系统,面向JavaWeb初学者、在校生及毕业设计者,提供可运行的完整项目解决方案。资源压缩包约27.24MB,内含系统源代码、数据库脚本及配套毕业论文,核心文件涉及Java源文件、SQL脚…

2026/10/9 3:27:10 阅读更多 →
C#上位机USB摄像头接入指南:DirectShow与MediaFoundation选型实战

C#上位机USB摄像头接入指南:DirectShow与MediaFoundation选型实战

简介:一份面向C#开发者的USB摄像头控制示例项目,基于.NET框架实现设备访问、视频捕获与夜视模式等核心功能,适合研究硬件交互、图像采集及相机扩展开发的初中级程序员。项目以“Nighteop Camera”为名,代码中包含Camera类封装、Me…

2026/10/9 3:27:10 阅读更多 →
寄件小程序前端实战:便捷寄件与省心体验的关键设计

寄件小程序前端实战:便捷寄件与省心体验的关键设计

最近在几个快递点来回跑,还是忍不住感叹一句:寄件这件事,看起来就是“填单—等人—拿走”三步,实际上最让人上火的从来不是快递员,而是填地址那一长串表单、不知道选哪家便宜、约了上门时间结果一整天不敢出门。这也是…

2026/10/9 3:26:09 阅读更多 →

最新新闻

哈希集合巧解最长连续序列:从O(n log n)到O(n)的思维跃迁

哈希集合巧解最长连续序列:从O(n log n)到O(n)的思维跃迁

第一次在力扣上刷到“最长连续序列”这道题的时候,我骨子里的第一反应和绝大多数人一模一样:排序,然后从前往后数一遍,答案不就出来了?直到我看见题目要求——时间复杂度得达到 O(n)——才意识到事情没那么简单。这道题…

2026/10/9 4:30:52 阅读更多 →
HDFS网盘项目class文件反编译与SSH框架重建实战

HDFS网盘项目class文件反编译与SSH框架重建实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 4:30:51 阅读更多 →
HC32F460 CCU6 PWM寄存器级实战:呼吸灯与蜂鸣器双控

HC32F460 CCU6 PWM寄存器级实战:呼吸灯与蜂鸣器双控

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 4:30:51 阅读更多 →
ESP32芯片与模组选型指南:从原型到量产全解析

ESP32芯片与模组选型指南:从原型到量产全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 4:30:51 阅读更多 →
原生小程序接入ECharts:从白屏到图表稳定渲染的完整指南

原生小程序接入ECharts:从白屏到图表稳定渲染的完整指南

最近在做一个微信小程序原生项目&#xff0c;数据报表页里要放折线图、柱状图、饼图&#xff0c;还要支持数据更新和导出图片。最开始我走了一堆弯路&#xff1a;从 npm 装好 echarts&#xff0c;写了个<canvas>&#xff0c;像网页那样 new 一个实例&#xff0c;结果一运…

2026/10/9 4:30:51 阅读更多 →
JavaWeb新闻期刊管理系统课程设计:架构拆解与部署避坑全攻略

JavaWeb新闻期刊管理系统课程设计:架构拆解与部署避坑全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 4:29:50 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题&#xff0c;隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题&#xff0c;排查到最后发现是ZonedDateTime序列化后时区丢了&#xff0c;用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问&#xff1a;办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好&#xff0c;问题是工作场景经常要在几处环境之间来回切换&#xff0c;每次都先登录跳板机再层层代理&#xff0c;实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及&#xff0c;但真正动手搭过一套能跑起来的 Agent 系统的人都知道&#xff0c;从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地&#xff0c;从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →