自留地 - 经验贴
type: channel
link: https://cs.epoch42.cn/category/%E7%BB%8F%E9%AA%8C%E8%B4%B4/
items: 神在原后边！
items: Claude code 2026.3.31 文章by程序员鱼皮
items: 网站搭建流程相关内容

神在原后边！
type: item
date: 2026-04-05T22:06:57+08:00
description: 这是一份针对“从零构建类似 Neuro-sama 的实时交互式 AI VTuber 系统”的深度技术落地与优化报告。本方案摒弃了传统的单体脚本流，全面采用面向低延迟和高并发的工业级设计理念。1. 总体架构设计理念为了应对直播场景中极高并发的弹幕以及多模态数据的异步到达，本系统采用事件驱动架构（Event-Driven Architecture, EDA）。通过微服务化的模块设计，确保感知、计算与渲染互不阻塞。我们选用 Redis Pub/Sub（或 NATS）作为高吞吐、低延迟的核心消息中间件。系统定义了以下 6 个核心事件主题（Topics）来进行解耦通信：stream.chat.raw：原始弹幕流数据stream.chat.filtered：经过安全与优先级过滤的高质量交互数据ai.brain.input：经过格式化的多模态上下文（文本/视觉描述），触发大模型推理ai.brain.output.chunk：大语言模型流式输出的标点切分文本块ai.tts.audioblock：TTS合成完毕的流式 PCM 音频块avatar.action.trigger：解析出的 Live2D 动作控制指令标准化事件通信载荷示例：{ "event_id": "evt-550e8400-e29b-41d4-a716-446655440000", "timestamp": 1712411234.567, "trace_id": "trc-109283-session-04", "source": "module.perception.chat", "topic": "stream.chat.filtered", "priority": 95, "payload": { "user_id": "uid_88291", "is_vip": true, "content": "主播今天玩什么游戏？", "modality": "text" } }全局消息总线架构树：Global_Event_Bus_Architecture ├── Message_Broker (Redis Pub/Sub) │ ├── Subscribers: [Filter_Service] │ │ └── Subscribes to: stream.chat.raw │ ├── Subscribers: [Core_Brain_LLM, State_Machine] │ │ └── Subscribes to: stream.chat.filtered, ai.brain.input │ ├── Subscribers: [TTS_Worker_Pool, Action_Parser] │ │ └── Subscribes to: ai.brain.output.chunk │ └── Subscribers: [VTS_Render_Bridge, Audio_Router] │ └── Subscribes to: ai.tts.audioblock, avatar.action.trigger └── Observability_Stack ├── Prometheus (Metrics Metrics scraping) └── Grafana (Latency Dashboard for each topic)2. 多模态感知输入层该层负责捕获外部世界的输入，清洗数据并防范信息洪水。2.1 弹幕与聊天输入通过 WebSocket 接入 Twitch/Bilibili。面对高频弹幕，设计滑动窗口 + 优先级评分队列：评分因子 ($P$) = VIP权重(50) + 打赏金额权重(10*N) + 情绪强度因子(利用轻量情感字典, 0-20) + 提及权重(包含主播名字, 30)。系统每隔 2 秒（或在 AI 闲置时）从队列顶部 Pop 取出评分最高的弹幕发送至 stream.chat.filtered，其余低分弹幕直接丢弃，防止挤压。2.2 语音感知 (STT)当 AI 与其他人连麦互动时启用。VAD (语音活动检测)： 使用 Silero VAD，能在 10ms 级别精准判断语音的起止，掐头去尾，消除空白底噪。STT 模型： 推荐采用 SenseVoice (FunASR) 或 faster-whisper，在本地 GPU 可实现低于 300ms 的实时语音转录。2.3 视觉感知 (VLM)不连续处理视频流，采用条件触发式抽帧。触发条件： 游戏内存读取到“死亡/升级”事件，或检测到弹幕短时间内大量出现“看左边”、“草”等聚集性词汇。模型： 截取当前 1 帧画面，送入 LLaVA-NeXT-8B 或 Qwen-VL。提取的场景描述（如：“当前屏幕里有一只苦力怕正在靠近”）…

Claude code 2026.3.31 文章by程序员鱼皮
type: item
date: 2026-04-02T13:47:00+08:00
description: 文章内容来自程序员鱼皮文章链接 https://www.codefather.cn/post/2039551862717313025堪称全球最强的 AI 编程工具 Claude Code 的 50 多万行源码泄露了！一家以 AI 安全著称的公司，自己却在代码发布环节翻了车。到底是怎么泄露的Claude Code 是通过 npm 发布的，你可以把 npm 理解为程序员的「应用商店」，开发者把写好的工具打包上传到这里，别人一行命令就能安装。正常情况下，代码上线之前会经过「压缩混淆」处理，变成一坨人类看不懂的东西。在开发的时候，为了方便定位 Bug，代码打包工具会自动生成一个叫 Source Map 的文件，它相当于一张「翻译对照表」，能把加密后的代码还原成原始版本。但是这个文件只能在开发环境用，上线时必须删掉！结果 Anthropic 的工程师在发布 Claude Code 2.1.88 版本的时候，打包工具 Bun 默认生成了 Source Map 文件，而他们忘了在发布配置里把 .map 文件排除掉。于是一个 59.8 MB 的 cli.js.map 文件就这么被直接发到了公开的 npm 仓库。这个 map 文件本质上是一个 JSON，里面有两个关键数组，sources 存着所有文件的路径，sourcesContent 存着每个文件的完整源码，两者一一对应。只要写个脚本解析一下这个 JSON，按路径把内容写出来，所有源码就原样还原了。而且据说 map 文件里甚至还引用了一个 Cloudflare R2 存储桶的公开地址，点进去直接就能下载打包好的完整源码目录，连脚本都不用写。安全研究员 Chaofan Shou 最先发现了这个问题并发到了 X 上：然后几个小时之内 GitHub 上就冒出了好几个镜像仓库，源码传遍了整个互联网，其中有个仓库不到 1 天就快 10w Star 了（而且仓库里早就没有 Claude Code 源码了）……更搞笑的是，去年 2 月 Claude Code 刚发布的时候就出过一模一样的事故，同样的错误犯了两次！怕不是 Claude Code 团队的开发者 Vibe Coding 上瘾，连基本操作都忘了？源码里都有什么这次泄露的是 Claude Code 客户端的源码，包括 1906 个 TypeScript 源文件、大约 51.2 万行代码。涵盖了 Agent 循环引擎、40 多个内置工具的完整实现、系统提示词的组装逻辑、记忆系统、上下文压缩、权限管控机制，还有一堆没上线的隐藏功能。但是不包括服务端的模型训练代码和 API 后端逻辑。整个项目用的是 React Ink 框架，简单说就是用 React 来写命令行界面，你可以理解为「在终端里写网页」。所以 Claude Code 的命令行交互才会比很多传统工具丝滑。我用 AI 把它的架构从上到下梳理了一遍，大致分为 6 层：1）最上面是 CLI 和界面层，你在终端里看到的所有交互都是这一层负责的2）往下是 Agent 循环引擎，你可以把它理解为 Claude Code 的大脑，所有的决策都从这里发出3）再往下是工具系统，40 多个内置工具加上 MCP 扩展4）然后是记忆系统，解决 AI 聊着聊着就断片儿的老毛病5）上下文压缩系统，解决 token 越来越贵、窗口越来越满的问题6）最底层是权限和安全系统接下来结合源码，看看每个模块具体是怎么实现的，Claude Code 是怎么做到这么好用的？一、Agent 循环大家都知道现在的 AI 编程工具早已经不是简单的「一问一答」了，而是能连续执行、自主完成任务的 AI Agent。可能有同学会觉得，这背后一定是什么特别复杂的架构，用了什么 AI Agent 开发框架、什么多 Agent 协作之类的吧？但我打开负责核心对话循环的 query.ts 文件一看，好家伙，最核心的代码其实就是一个 while(true) 无限循环！// query.ts async function* queryLoop(params: QueryParams, consumedCommandUuids: string[]) { let state: State = { messages: params.messages, toolUseContext: params.toolUseContext, autoCompactTracking: undefined, maxOutputTokensRecoveryCount: 0, hasAttemptedReactiveCompact: false, turnCount: 1, // ... } // eslint-disable-next-line no-constant-condition…

网站搭建流程相关内容
type: item
date: 2026-03-31T20:16:00+08:00
description: 内网穿透frp c端控制{dotted startColor="#ff6c6c" endColor="#1989fa"/}以下环境为ubuntu 20.04c端即为client 为用户端 为本地主机所用 信息会被s端 即server端接受首先要下载开源软件frp资源包 frp有官网资源 按照你的系统来下载就可以windows的可能会爆毒 属于正常 关闭杀毒软件即可c端一般配置如下# --- 核心连接层 --- # 锁定你的公网 IP 这里随便写了 通信端口你随意 serverPort为frp通信用 serverAddr = "8.8.8.8" serverPort = 7000 # 身份验证 auth.method = "token" auth.token = "此处和server端一致 设你想要的密钥" # --- 流量路由层 --- # 【通道一】主网站流量：将云端的 epoch42.cn 流量，收敛到本地的端口 # 这个位置的流量我在云端用nginx进行路由识别具体的域名 proxies name = "epoch42-web" type = "http" localPort = 80XX customDomains = ["epoch42.cn", "www.epoch42.cn"]frpc的安装位置任意 你记得就好 里面会有相应的配置文件 最新的配置文件会是驼峰命名法可以编写系统文件将frpc注册到系统 或者直接启动frpc也行sudo nano /etc/systemd/system/frpc.service替换以下的xxxx 换成你的信息 云端保持一致即可[Unit] Description=Frp Client Service After=network.target [Service] Type=simple User=xxxxx WorkingDirectory=/xxxx/frp ExecStart=/xxxxx/frp/frpc -c /xxxxx/frp/frpc.toml Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target然后经典三步就可以了 这样比较省心 直接后台挂着了sudo systemctl daemon-reload sudo systemctl enable frpc sudo systemctl start frpc常用后台控制命令先安装一些必备软件包sudo apt install nodejs npm -y # 全局安装 pm2 http-server sudo npm install -g pm2 sudo npm install -g http-server # 常用 pm2 命令 # 启动应用 pm2 start app.js # 查看所有运行的应用 pm2 list # 查看日志 pm2 logs # 停止应用 pm2 stop app_name # 重启应用 pm2 restart app_name # 删除应用 pm2 delete app_name # 设置开机自启 pm2 startup pm2 save # 常用http-server命令 # 在当前目录启动静态服务器（默认端口 8080） http-server # 指定端口 http-server -p 3000 # 指定目录 http-server /path/to/directory -p 8080 # 启用 CORS http-server --cors # 静默模式（不输出日志） http-server -s使用 pm2 管理 http-server# 启动 http-server 并由 pm2 管理 pm2 start http-server --name "static-server" -- -p 8080 # 或者指定目录 pm2 start http-server --name "my-site" -- -p 3000 /home/niu/www