历史回顾

1.7.3 版本新特性

  • 增强 ACP 适配器,更好地将 agent 思维转换为可显示的聊天消息。
  • 实现 CLI 提供商设置,支持 Codex 和 Claude 的预设与存储。
  • 改进协作功能,支持多角色通信和通知机制。
  • 优化进程管理和孤儿进程清理,提升资源处理能力。
  • 增强 IPC 通信机制,提升稳定性。
  • 集成 electron-updater 实现自动增量更新。
  • 改进 GitHub Actions 自动化构建和发布流程

📌 转载信息
转载时间:
2026/1/20 10:44:02

短剧剧本生成器.zip

简单教程:

从需求收敛 → 规范固化 → 语料准备 → 换元骨架 → 类型校准 → Frankentexts 拼接 → 最小润色 → 多维质检 → 归档复用

同时给出 “小说改编” 和 “语料建库” 两条可插拔分支

1. 使用前准备(你需要提供的最少信息)
为了让 step1 输出的 project_config 足够可执行,建议至少准备:
目标题材 / 受众 / 风格:例如 “都市情感 + 身份反转 + 打脸”
总集数与单集字数:例如 “80 集;每集 500-700 字”
卡点与钩子口径:例如 “第 8-10 集付费卡点;免费集集末必有钩子”
源故事输入:小说全文 / 章节 / 梗概 / 旧剧本(至少一个)
语料来源:是否已有可用语料库(没有也能先做骨架,但无法完成高 Copy 率拼接)

2. 流程地图(你如何 “用到全部 step1-20”)
本体系的 “全量使用版” 通常是这样:
需求与规范层:step1 → step2 → step3
语料层(可选):step4 →(step5/step6 按素材类型增强)
改编层(按源文本体量分支):step6 → step7/8/9(小说改编路线)
换元骨架层(融合生成主路线):step10 → step11
市场校准层(可选):step19
生成与质检层(上线):step12 → step13 → step14 → step15 → step16 → step17 → step18
编排与复用层:step20(可在开始用,也可在结束做归档编排)

3. 标准执行规则
无论你在哪个大模型网页端执行,都遵守:
每一步只输出该 step 要求的 “预期输出格式”(通常 JSON);不要混入解释性文字.
上一步输出 JSON 必须原样粘贴给下一步(不要自然语言总结代替)
缺失信息用 null/待补充 占位,
格式规则以 step2 为准,特殊标注以 step3 为准;质检以 step14-18 为准

#step1:生成项目配置(ProjectConfig)

你给模型的输入(建议结构):

创作目标:
题材/元素:
总集数:
单集字数:
付费卡点:
钩子规则:
特殊标注要求(os/vo/闪回/互切):
是否使用Frankentexts(Copy率目标):
源故事输入(全文/章节/梗概/旧剧本):
语料库情况(有/无,来源说明):

你得到的输出:
project_config JSON(后续所有步骤都引用它)

#step20(第一次使用):生成 “你该走的步骤链路”

把 step1 的 project_config 粘贴进去,让 step20 输出 step_sequence + io_mapping + checkpoint + rollback

你得到的输出:
workflow JSON(告诉你下一步跑哪些 step、怎么传火,哪里要人审、哪里要返回查看)

#step2:固化剧本格式规则

把最终 “剧本长什么样” 固定成 format_rules

你得到的输出:
format_rules JSON(后续生成正文与格式质检都依赖)

#step3:固化特殊场景标注策略

固定 os/vo/ 闪回 / 互切 的使用条件与格式

你得到的输出:
special_scene_policy JSON(后续提取、骨架、拼接、专项质检都依赖)

#step4-6:准备语料库(没有语料库就先建)

如果你已经有高质量语料库:跳到 step10。
如果你没有语料库:建议至少跑 step4(再按素材类型跑 step5 或 step6)

##step4:通用语料提取

输入:
project_config、special_scene_policy
原始文本(一次一段 / 一章 / 一集)
source_reference

输出:
corpus_chunks[](JSON 数组语料块)

#step5:剧本专项增强(如果语料来自剧本

输出增强点:
场景头、人物列表、卡点标注、对话密度等,用于提升检索精度

#step6:小说专项增强(如果语料来自小说)

输出增强点:
可视化潜力、可外化改编提示、章节 / 叙事视角等(把所有语料块 JSON 数组按文件归档,最终合并为一个 corpus.json,并确保每条有 source_reference。)

#step10:六源分析 + 核心动作程序抽取

对源故事做六源拆解(事件 / 结构 / 主体 / 背景 / 人物 / 道具)
抽取核心 “动作程序”(骨骼层)
给出哪些事件适合 os/vo/ 闪回 / 互切

输入:
project_config
special_scene_policy
源故事文本 / 梗概

输出:
source_analysis JSON

#step11:换元方案 + 新剧本场次功能表(Framework)

选择一度置换 / 二度置换,产出 substitution_plan
把新剧本拆成 “每集每场” 的功能表 new_script_framework(含信息点 / 情绪 / 标注计划 / 钩子 / 卡点)

输入:
project_config(集数、字数、卡点、钩子口径)
special_scene_policy
source_analysis

输出:
substitution_plan JSON
new_script_framework JSON

同时审核(是否符合题材定位与受众预期第 8-10 集是否有明确付费卡点策略每集末尾是否都有钩子
每场是否写清信息点与情绪目标(否则 step12 会乱拼))

#step19:类型库匹配校准

把 “骨架方向” 对齐市场趋势:主用模式 + 辅助模式 + 融合建议
给出关键场景、台词要点、情感触发点、推荐标注策略

输入:
project_config
source_analysis(可选)
substitution_plan + new_script_framework

输出:
matched_patterns[] + adaptation_recommendations + creation_guidance

用法建议:
将其作为 step12 的检索排序偏好(例如优先召回 “打脸 / 身份揭示” 片段、控制 os 使用密度等)

#step12:Frankentexts 检索与拼接生成正文

按 new_script_framework 逐场检索候选片段、选择拼接
严格遵守 Copy 率目标与最小化修补
输出:选片记录、编辑日志、Copy 率估算、标注保真检查 + 标准格式剧本正文

输入:
project_config(Copy 率 / 禁用操作)
format_rules
special_scene_policy
corpus_json(语料库;来自 step4/5/6)
new_script_framework
(可选)step19 的创作指导作为检索偏好

输出:
场次级 JSON 结果
标准格式剧本正文(可直接给制作)

关键建议(避免一次跑崩):
按 “集” 为单位生成(例如先生成第 1-3 集),通过质检后再批量推进

#step13:最小润色与终稿准备

只做桥接 / 纠错 / 格式 / 归一 / 标注规范化
保持 Copy 率与原片段风格

输出:
终稿正文 + 润色日志 + 校验准备摘要

#step14-18 是质检线建议跑完

#step14:格式质检

#step15:逻辑一致性(因果 / 时间线 / 信息点覆盖)

#step16:风格一致性(声纹 / 语体 / 节奏 / 题材)

#step17:Copy 率校验(Frankentexts 指标)

#step18:特殊标注专项校验(os/vo/ 闪回 / 互切)

常用回退策略:
Copy 率不足:回退 step12 重选片段(不要继续润色)
格式问题:按 step14 修复后复检
逻辑漏洞:按 step15 给的 “最小修补策略” 修复,避免重写
标注问题:按 step18 规范化(补齐闪回起止 / 明确互切切换点)

#step20(第二次使用):归档复用与流程固化

一份可复用的 workflow JSON(你下一次可以直接照着跑)

分支流程:小说转剧本(step6 → step7/8/9)

step1 /step2 /step3(全局规范)
step6 小说专项语料提取(产出可外化与可标注提示)
按体量选择:
长篇:step7 主线提纯 → 得到分集结构 / 梗概
中篇:step8 节奏倍速 → 得到反转 / 爽点 / 钩子密度规划
短篇:先 step10+11 做扩充骨架,再 step9 落地分集结构
若需要正文:把改编结果转成 new_script_framework(可由 step11 生成或人工映射),再进入 step12/13/14-18(备注:step7-9 的主要产出是 “大纲与分集梗概”;若要可拍剧本正文,最终仍需进入 step12/13)

分支流程:语料建库(step4/5/6)

建库链路:step1 → step2 → step3 → step4(→ step5/6)→ corpus.json
生产链路:step10 → step11 → step19 → step12 → step13 → step14-18

特别感谢 @jianhuaguiyi

大概就是这样了 呵呵!


📌 转载信息
原作者:
qcbigma
转载时间:
2026/1/20 10:43:20

特别声明

  1. 无商业推广:本方案纯属个人运维心得分享,不涉及任何商业利益。
  2. 纯免费工具:所涉及的工具(ttyd、沉浸式翻译插件等)均为目前市面上现有的开源或免费工具组合,不存在任何付费下载或订阅引导。

痛点

各位在日常运维或者学习过程中,应该遇到过这些痛点:

  • 执行 kubectl --helpdocker --help 这类命令帮助文档时,面对满屏的英文参数看得头疼。
  • 看到复杂的报错日志(如 Java StackTrace 或 K8s Event),想翻译却发现传统的 Terminal 不支持浏览器插件。
  • 复制到网页翻译再切回来,来回折腾打断了操作流,效率极低。

折腾过程

有道翻译: (不符合需求,Pass 掉)

  • 以前跟同事合租的时候见过他用过有道翻译的功能,给电脑装上之后发现它在终端里只能划词翻译单词,但是在其他场景下他的划词翻译有点像狗皮膏药会挡着自己的视线,要翻译长句子就得切换到软件界面,截图翻译比较费劲,其他的功能估计需要开 vip。

沉浸式翻译:

  • 这是一个用的比较广泛的浏览器翻译插件,翻译功能比较好用,但是终端上又不支持。那是不是可以安装一个浏览器版本的 Terminal 插件?或者用代理转发到浏览器的界面上就可以用沉浸式翻译的功能了。

用过 Openwrt 软路由的大概从 web 界面连接过终端,它的终端是由一个叫 ttyd 的小插件实现的。问一下 Gemini 方案确实可行。

核心思路

  1. ttyd: 一个简单的 C 语言编写的工具,可以将任意命令行程序(如 bash/zsh)通过 WebSockets 暴露到浏览器。
  2. 沉浸式翻译: 浏览器插件,其 “悬浮球(小圆点)” 功能可以识别网页中的文本块并进行双语对照翻译。
  3. 结合: 当终端内容以 Web 形式呈现时,它就变成了插件可触达的 “文本块”,翻译体验瞬间拉满。

快速上手

1. 安装 ttyd

大部分 Linux 发行版都可以直接安装:

# Ubuntu/Debian sudo apt install ttyd

# CentOS/RHEL sudo yum install ttyd

# macOS
brew install ttyd

2. 启动服务

运行以下命令开启一个 Web 终端(默认端口 7681):

ttyd -W bash

注:-W 参数允许在浏览器中进行写入操作(输入命令)或者 ttyd -p port bash。

3. 浏览器访问

打开浏览器,访问 http://your-ip:7681。你会看到一个熟悉的终端界面。

4. 开启翻译

确保你安装了 沉浸式翻译 插件。

  • 在插件设置中开启 “显示悬浮球”。
  • 鼠标选中在那些复杂的 kubectl 帮助文档或者报错日志上。
  • 点击小圆点,直接原地翻译!选择免费模型即可,普通用户翻译量应该不会大到哪里去,我这里选择的是硅基流动,它会对一些多义词也进行解释,用起来还不错。(选择其他的不太支持,不知道为啥,只有小圆点支持)

进阶:一键脚本 (alias)

为了方便使用,可以在 .bashrc.zshrc 中添加一个别名:

# 自动获取本机 IP 并启动,限定端口防止冲突 alias webterm='ttyd -p 7681 -W bash' 

如果你是在远程服务器上操作,建议配合 ssh -L 做端口转发,或者在前端加个 Nginx 反代并开启 Basic Auth,确保安全:

ttyd -c user:password -p 7681 bash

实际效果展示

  • 场景 A:查命令用法 输入 kubectl get pods --help,滚屏后直接点选大段的参数说明,中文释义紧随其后。
  • 场景 B:看报错日志 当看到 Error from server (Forbidden): ... 等长难句时,一键翻译,秒懂权限缺失的具体原因。

小提示

  • 性能: ttyd 非常轻量,几乎不占 CPU。
  • 排版: 沉浸式翻译对 Web 终端的布局适配非常好,通常不会破坏排版。
  • 安全: 如果在公网服务器上运行,务必加上验证密码 (-c) 或配置防火墙。
    大家还有什么终端增强的神器,欢迎在评论区交流。

📌 转载信息
原作者:
Linuxer-gx
转载时间:
2026/1/20 10:43:18

原插件 hard code 了路径为 mac os 的,fork 添加了选项设置路径
需要安装 rust-analyzer
where rust-analyzer
的输出路径填到插件的设置选项即可 (需要重启插件)

不过正经人谁在 rider 中写 rust


fork 仓库


原插件:


原仓库:


原作者:


📌 转载信息
原作者:
kei233
转载时间:
2026/1/20 10:36:18

在中小企业数字化转型中,CRM(客户关系管理系统)已从“辅助工具”升级为“销售流程的中枢神经”——它既要解决“线索怎么来、跟进怎么顺”的前端问题,也要支撑“报价准、签约稳、订单可控”的后端闭环。

本文选取超兔一体云、Zendesk Sell、OKKICRM(原小满)、Highrise、Less Annoying CRM五大主流品牌,围绕跟单协作、销售跟踪、报价管理、签约管理、合同订单五大核心维度展开横向对比,结合“功能深度、场景适配性、性价比”三大选型关键,为中小企业提供决策参考。

一、评估框架:CRM的“全流程价值链”

优秀的CRM需覆盖“从线索到回款”的完整销售周期,核心评估点包括:

  1. 跟单协作:能否适配不同业务场景(小单/商机/项目),实现团队高效协同;
  2. 销售跟踪:能否从线索获取到客户转化全链路可视化,提升获客效率;
  3. 报价管理:能否快速生成精准报价,并与订单/合同联动;
  4. 签约管理:能否管控签约风险(信用/账期),确保应收款安全;
  5. 合同订单:能否支持多样业务模型(服务/实物/特殊),实现执行与财务的闭环。

二、核心维度横向对比

(一)跟单协作:从“单点跟进”到“场景化协同”

跟单是销售的“执行层核心”,考验CRM对不同业务场景的适配能力

品牌核心能力场景适配性优势亮点
超兔一体云1. 多模型支持(小单快单/商机跟单/多方项目); 2. 360°视图+跟单时间线+通信集成; 3. 分组隔离(多级客户汇总,如医院科室/高校院系)全场景覆盖(小单到大型项目)独有的“三一客”(小单快单)、“多方项目视图”(集成合同/采购/收支);支持复杂组织客户(如医院)
Zendesk Sell1. 任务分配+团队共享客户视图; 2. 邮件模板+自动提醒; 3. 与客服系统联动(查看售后反馈)通用销售场景客服联动是特色,销售可同步客户售后问题,提升跟进针对性
OKKICRM(原小满)1. 外贸场景分级权限管理; 2. 国际订单与客户信息整合跨境贸易场景适配外贸团队“多角色、多地区”的协作需求,避免权限混乱
Highrise1. 共享客户沟通记录; 2. 跟进提醒轻量销售场景适合“单一线索跟进”的小团队,功能简单但无场景适配
Less Annoying CRM1. 任务+日历+联系人三模块联动; 2. 基础跟进提醒微型企业场景界面简洁,无需培训,但仅支持“基础任务跟踪”

流程图:超兔一体云跟单协作逻辑

!

graph TD
    A[业务需求] --> B{选择跟单模型}
    B -->|小单快单| C[三一客(三定:定性/定级/定量+关键节点)]
    B -->|商机跟单| D[阶段+预期日期优化中长单]
    B -->|多方项目| E[项目组+合同+采购+收支全周期管控]
    C --> F[360°视图+跟单时间线+通信数据集成]
    D --> F
    E --> F
    F --> G[分组隔离(多级客户汇总到上级)]
    G --> H[跟单完成]

(二)销售跟踪:从“线索散养”到“全链路可视化”

销售跟踪的核心是将“碎片化线索”转化为“可落地的客户” ,考验CRM的“获客-转化”能力。

1. 超兔一体云:全渠道获客+客户生命周期管理

  • 线索获取:支持百度/抖音/微信/官网/会销等10+渠道,线索一键转化为客户/待办/订单;
  • 客户管理:自动补全工商信息(天眼查/百度)、手机号查重,客户生命周期分为“需求培养→有需求→成功”客池;
  • 数据分析:市场活动成本均摊到线索,计算签约转化率,评估获客效率。

2. Zendesk Sell:销售管道+自动化跟进

  • 销售可视化:销售管道按阶段展示(如“潜在客户→协商→成交”),智能筛选高价值商机;
  • 自动化工具:“任务播放器”自动提醒跟进节奏,实时记录通话/短信互动。

3. OKKICRM:跨境线索整合

  • 国际场景适配:整合跨境电商/展会线索,自动同步国际客户信息(如海外手机号/公司背景)。

4. Highrise/Less Annoying CRM:基础跟踪

  • 仅支持“线索沟通记录+进度提醒”,无渠道整合或生命周期管理。

脑图:超兔销售跟踪功能架构

!

graph LR
    A[销售跟踪] --> B[线索处理]
    A --> C[客户管理]
    A --> D[数据分析]
    B --> B1[多渠道集客(百度/抖音/微信/会销)]
    B --> B2[线索一键转化(客户/待办/订单)]
    B --> B3[线索分配+短信提醒]
    C --> C1[客户信息管理(查重+工商背景调查)]
    C --> C2[客户生命周期(客池分类)]
    C --> C3[工作流引擎(AI生成流程)]
    D --> D1[数据统计(数字卡片+同比环比)]
    D --> D2[KPI引擎(单日/周期目标)]

(三)报价管理:从“手动 excel”到“精准联动”

报价是“签单的临门一脚”,需解决“快速生成+与订单联动”的问题。

品牌报价生成与订单联动特殊功能
超兔一体云OpenCRM生成自动关联客户通过网页/小程序确认报价,一键转订单
Zendesk Sell自定义审批支持需额外购买“自定义对象”许可证
OKKICRM(原小满)外贸标准化模板支持多币种报价(适配跨境场景)
Highrise无明确支持
Less Annoying CRM无明确支持

(四)签约管理:从“被动签约”到“风险管控”

签约的核心是控制信用风险,避免“签单易、回款难”。

超兔一体云:全链路风险管控

  • 信用评估:根据客户历史交易/付款情况自动评级,支持“信用度+账期”双维度管控;
  • 应收触发:签约/开票/发货自动触发应收,支持多期拆分(如按比例分3期);
  • 智能提醒:超期应收自动提醒,避免坏账。

其他品牌:

  • Zendesk Sell/OKKICRM:未明确支持信用评估或应收管控;
  • Highrise/Less Annoying:无签约风险管控功能。

(五)合同订单:从“纸质管理”到“全流程闭环”

合同订单是“销售的结果层”,考验CRM对多样业务模型的支持能力

品牌业务模型支持执行管理财务管控
超兔一体云服务型/实物型/特殊型(维修/租赁/套餐)锁库+采购计划+供应商直发应收/开票/回款三角联动,支持一票对多单
Zendesk Sell通用订单移动端同步基础应收管理
OKKICRM(原小满)国际订单(跨境物流联动)国际物流跟踪多币种财务整合
Highrise无明确支持
Less Annoying CRM无明确支持

三、综合能力雷达图(1-5分,5分为优)

品牌跟单协作销售跟踪报价管理签约管理合同订单总分
超兔一体云5545524
Zendesk Sell4432316
OKKICRM(原小满)3342416
Highrise221117
Less Annoying CRM221117

四、选型建议:匹配需求优先级

  1. 需要全流程深度管理:选超兔一体云(覆盖小单到大型项目,支持复杂组织客户,合同与财务闭环);
  2. 跨境贸易场景:选OKKICRM(原小满) (适配外贸团队协作,多币种/国际订单管理);
  3. 需要客服联动:选Zendesk Sell(销售可同步客户售后问题,提升跟进针对性);
  4. 轻量小团队:选Highrise/Less Annoying CRM(基础功能够用,价格低廉)。

五、结论

在中小企业CRM市场中,超兔一体云以“全场景覆盖、深度流程闭环”成为综合能力最强的选择——它不仅解决了“跟单怎么顺”的执行问题,更通过“客户生命周期、签约风险管控、合同财务联动”实现了“从线索到回款”的全链路价值。对于需要“精细化管理”的中小企业而言,超兔一体云的“场景化能力”与“闭环逻辑”,正是应对当前复杂市场环境的核心竞争力。

(注:文中功能相关描述均基于公开披露信息,具体功能服务与价格以厂商实际落地版本为准。)

elsa 佬的免费白嫖 2-5 年 Copilot(Microsoft365),可用 GPT-5.2 - 福利羊毛 / 福利羊毛,Lv1 - LINUX DO 分享一下个人的踩坑流程

一、准备材料:

1.1 教育邮箱:

我用的教育邮箱是美国社区大学.edu(以前薅 cursor 的邮箱留存至今)
没有邮箱的佬可以看一下 Mirage 佬的:

关于 “免费白嫖 2-5 年 Copilot” 如何获取 edu 邮箱! - 福利羊毛 / 福利羊毛,Lv1 - LINUX DO

关于如何成为美国大学生(bushi)申请 EDU 邮箱的教程 - 福利羊毛 / 福利羊毛,Lv1 - LINUX DO

1.2 新申请的 Microsoft 账号 + 美国节点 +Chrome+GoolePay(我绑的是 ypt)

ps:我用香港节点 + 支付宝验证后都是 2 年的

二、验证流程:

2.1 申请一年的个人版(点我直达):(申请顺序不能变)

(https://checkout.microsoft365.com/acquire/purchase?language=zh-us&market=US&requestedDuration=Month&scenario=microsoft-365-student&client=poc&campaign=StudentFree12M)

ps: 我的用的是美国节点,链接里是 us(没有改 tw or hk)

2.1.1 添加支付方式 GoolePay + 教育邮箱验证 >> 教育邮箱验证链接获取

可能得报错(直接重新刷新个人版申请链接即可)

2.1.2 添加地址(ai 生成的,地址好像不重要)

2.1.3 开始支付 >> 个人版申请成功

2.2 申请一月的高级版(点我直达):(申请顺序不能变)


https://checkout.microsoft365.com/acquire/purchase?language=zh-TW&market=US&requestedDuration=Month&scenario=microsoft-365-premium&client=poc&campaign=StudentPremiumFree12M

2.2.1 接着个人版申请(会显示个人版的到期时间)

可能得报错(try again 多来几次即可)

2.2.2 添加 Goole Pay>> 开始支付

可能得报错(持续刷新几次即可)

2.2.3 高级版验证成功

三、关闭自动续订

3.1 点击管理订阅

3.2 关闭自动续订

以上纯为个人的验证流程,大佬勿喷,请指正!!


📌 转载信息
原作者:
muzhiyang
转载时间:
2026/1/20 10:35:21

更新:这位大神太高效了,一夜之间,课程又升级了。更新课程下来以后,在 Claude 里 执行 /start-lesson 就可以开始了。

=========

无意中在 X 上看到这个课程的作者在推荐他的课程:
Free Claude Code Course for Everyone
https://ccforeveryone.com/
教程下载地址:https://github.com/carlvellotti/claude-code-everyone-course/releases/latest
跟着练习了一会儿,挺有意思的。分享给佬友们玩玩。
学习方法也很简单,下载他的教程,用 Claude Code 打开,输入 /start-1-1 开练。


📌 转载信息
转载时间:
2026/1/20 10:34:57

看到一个 NGA 大佬发现的明日方舟终末地 UID 查询的方法

原贴

https://bbs.nga.cn/read.php?tid=46021821p3

开门见山

直接下载脚本安装到油猴,然后访问 https://user.hypergryph.com/ 登录账号
一般会直接显示 UID,如果没有,则访问 https://user.hypergryph.com/bindCharacters?game=endfield 脚本会自动捕获 UID 返回信息然后展示

效果

仓库


📌 转载信息
原作者:
XiYu-Link
转载时间:
2026/1/20 10:34:46

前言

博主继续分享关于 LNMP 安装和优化的实战经验。这些年来,个人的长期实战证明,LNMP 的优化效果非常显著,尤其是在提升网站性能方面。今天,博主将重点介绍在 LNMP 一键安装脚本成功搭建好 WEB 环境后,必须进行的 PHP 性能优化。这一步骤对于提升整体系统的响应速度和稳定性至关重要,能够显著改善网站的加载速度和用户体验。

第一步:/usr/local/php/etc/php-fpm.conf 文件优化

pm = dynamic

pm.max_children = 50

pm.start_servers = 10

pm.min_spare_servers = 10

pm.max_spare_servers = 50

pm.max_requests = 1024

pm.process_idle_timeout = 10s

request_terminate_timeout = 300

request_slowlog_timeout = 0

slowlog = var/log/slow.log

这里的前四个设置是为了调整PHP-CGI进程数的,每个PHP-CGI进程大约占用20MB的内存。因此,建议根据自己VPS的配置

另外一个标红的 timeout 时间就设置为300吧,博主一直是这么设置的,博主也试过其他的数值,在使用过程中个人感觉300是最佳的。当然这也是我个人的观点。也可以根据自己的使用习惯设置。

第二步:/usr/local/php/etc/php.ini 文件优化

隐藏PHP版本号

将文件里面的 expose_php = On 修改为 expose_php = Off 。

解决缓存优化时session问题

session.cache_limiter = nocache 修改为 session.cache_limiter = none 。

第三步: 优化opcache内存大小

/usr/local/php/conf.d/004-opcache.ini

修改里面 opcache.memory_consumption 参数,如博主的修改为 opcache.memory_consumption=256 ,明显,opcache可用内存改为256MB。

大家需要根据自己的VPS配置进行修改。

第四步:优化Memcached内存大小

/etc/init.d/memcached

修改里面的 CACHESIZE 参数,如博主修改为: CACHESIZE=256 ,即Memcached可用内存为256MB内存。

同样,大家可以根据自己的VPS配置进行优化。

总结:

以上PHP优化不可以用于LNMP的php优化,但是其它的web环境是可以的。

另外,博主强烈建议大家启用 OPcache 和 Memcached 来进一步加速网站性能。OPcache 能有效提升 PHP 脚本的执行速度,减少服务器的负担,而 Memcached 则通过缓存常用数据,显著降低数据库查询压力。如果没有安装这两个缓存优化工具,那么第三步和第四步的优化步骤就可以跳过,因为它们的作用已经被这两个缓存工具所覆盖,能够大大提高网站的响应速度和稳定性。

在构建金融交易终端或量化分析系统时,行情适配器(Market Data Adapter)往往是第一个需要攻坚的模块。特别是在处理港股数据时,由于其特殊的交易机制和数据更新频率,对客户端的并发处理能力提出了不小的挑战。

很多初级开发者习惯将网络连接、数据清洗和业务逻辑写在一个 while 循环里,这在生产环境中是极其危险的。一旦网络抖动或数据异常,整个程序就会崩溃。作为行业从业者,我更推荐采用分层架构来处理实时数据流。

  1. 连接与订阅的分离 相比于 REST API 的被动轮询,WebSocket 提供了全双工通信通道,非常适合高频数据的推送。但在代码实现上,必须考虑到断线重连机制(Reconnection Mechanism)。
  2. 数据归一化(Normalization) 这是最考验架构经验的地方。不同的上游数据源提供的字段定义千差万别。有的叫 last_price,有的叫 close。如果把这些差异透传给业务层,后续的策略代码将变得不可维护。成熟的做法是在适配器内部完成清洗。例如,参考 AllTick API 等成熟方案的数据规范,将所有不同市场的 Tick 数据映射为一套标准化的 JSON 结构(价格、时间戳、量能、方向),这样无论后端接入多少个交易所,业务层的代码都不需要改动一行。
  3. 业务逻辑的隔离 在 on_message 回调中,绝对不要执行耗时的计算任务(如写入数据库或复杂指标计算)。正确的做法是将原始数据丢入 Python 的 queue 或 Redis,由消费者进程异步处理。

下面这段代码展示了如何使用 websocket-client 库建立一个稳健的订阅通道,重点关注其回调函数的设计模式:

import websocket
import json

def on_message(ws, message):
    data = json.loads(message)
    if "data" in data:
        tick = data["data"]
        price = tick.get("last_price")
        ts = tick.get("timestamp")
        print(f"price={price}, time={ts}")

def on_open(ws):
    subscribe_msg = {
        "cmd": "subscribe",
        "args": {
            "symbol": "HKEX:HSI",
            "type": "tick"
        }
    }
    ws.send(json.dumps(subscribe_msg))

if __name__ == "__main__":
    ws = websocket.WebSocketApp(
        "wss://stream.alltick.co",
        on_open=on_open,
        on_message=on_message
    )
    ws.run_forever()

通过这种模式,我们不仅保证了行情的实时性,还极大地提升了系统的扩展性。当需要增加新的订阅标的时,只需修改配置文件的 symbol 列表,无需重启核心服务。

导言

在现代知识管理与团队协作中,经验的系统化归档是持续进步的关键。缺乏有效的经验归档机制,团队往往会面临知识流失、重复踩坑、资源浪费等问题。通过使用原子化经验归档工具,团队可以将经验按原子化、可复用的方式进行归档,确保各类知识点都能够被有效沉淀与调用,从而提高团队学习效率和知识复用率。

摘要

本文介绍了原子化经验归档工具的重要性,并精选推荐了5款适用于不同经验归档场景的工具。通过分析这些工具的功能与特点,帮助团队选择最适合自己的工具来归档和管理经验。此外,文中还提供了经验归档设计建议和常见问题解答,帮助团队提升知识管理的系统性与传承效率。

一、为什么需要原子化经验归档工具?

在多种经验来源并行的工作环境中,经验往往需要按照原子化单元进行归档与复用。没有合理的经验归档工具,团队将面临以下几大挑战:

  • 经验零散,导致无法快速获取需要的知识;
  • 经验冗余,无法统一管理和调用;
  • 经验更新滞后,难以及时获取最新的实践成果;
  • 团队成员间的经验传承不畅,导致学习成本高和协作障碍。

引入一款支持原子化经验归档的工具,能够帮助团队通过清晰的知识点化管理,提升经验整合和检索效率。原子化经验归档工具能够将经验按不同维度拆解与归档,确保每一个知识点都能够被快速、精准地查看与复用,减少不必要的重复探索和时间浪费。

二、原子化经验归档工具的作用

原子化经验归档工具是指那些支持将经验按原子化、可复用单元进行分类归档,并通过清晰的知识点视图方式展示的工具。这类工具能够帮助团队高效地沉淀与复用经验,确保每个知识点的经验都能够得到及时更新与追踪。原子化归档机制的关键特点是能够清晰展示各类经验片段,同时保持结构的简洁与高效,让团队能够随时获取所需知识,避免经验过载和冗余。

三、原子化经验归档的典型应用场景

原子化经验归档工具适用于多种经验沉淀场景,尤其是在需要积累大量实践知识或不同领域经验的团队中,尤为重要。以下是原子化经验归档工具的一些典型应用场景:

  1. 多项目经验沉淀:当多个项目需要总结复盘并共享经验时,原子化经验归档工具能够帮助团队通过清晰的分类,确保每个项目的经验能够沉淀到统一的平台上,减少知识流失;
  2. 复杂问题解决方案库:问题涉及多个解决思路、步骤和案例时,原子化经验归档工具能够将方法、工具和注意事项等按原子化单元进行有效归档,确保各类解决方案都能随时调用;
  3. 最佳实践管理与复用:当团队需要积累大量的最佳实践、工作模板时,原子化经验归档工具能够提供系统化的经验管理与分类功能,帮助团队快速找到需要的参考;
  4. 岗位技能与成长路径:通过原子化的经验归档,团队能够清晰梳理岗位技能要求、学习要点、成长案例等,提升人才培养效率;
  5. 复盘总结与组织学习:原子化工具能够将来自不同业务领域的经验整合在一起,帮助团队进行复盘总结与学习推广,支持持续改进的文化。

四、5款值得一试的原子化经验归档工具

1. 板栗看板

专注于可视化经验归档与进度管理的原子化工具
  • 核心特性: 支持经验按原子化单元进行分类与归档,卡片管理与状态追踪;
  • 适配场景: 中小型团队、跨项目经验沉淀、复盘管理;
  • 优势亮点: 通过灵活的看板视图和卡片系统,团队可以根据不同类型的经验进行原子化归档,避免知识碎片化,提升经验的可视化和复用效率。
    在这里插入图片描述

2. Roam Research

支持双向链接的原子化思维管理工具
  • 核心特性: 提供强大的知识网络功能,支持经验点的关联、整合与回溯;
  • 适配场景: 个人知识体系构建、深度思考记录、复杂问题拆解;
  • 优势亮点: Roam Research 不仅支持原子化经验记录,还能通过双向链接自动构建知识图谱,适合深度经验梳理和知识连接。
    在这里插入图片描述

3. Obsidian

基于本地Markdown的原子化知识库管理工具
  • 核心特性: 提供纯文本笔记与图谱视图结合,支持自定义经验单元、链接和视图;
  • 适配场景: 技术团队知识沉淀、个人知识管理、长期经验库建设;
  • 优势亮点: Obsidian 的原子化链接和图谱可视化功能,允许团队根据需求建立经验之间的关联,适合构建可演进的个人或团队知识库。
    在这里插入图片描述

4. Notion

多功能数据库驱动的经验归档平台
  • 核心特性: 提供数据库与页面块结合,支持原子化经验的结构化归档与属性筛选;
  • 适配场景: 跨团队经验共享、项目复盘库、标准化流程沉淀;
  • 优势亮点: Notion 的数据库属性与关联功能,允许用户将经验拆解为结构化数据,适合标准化、可筛选的经验归档需求。
    在这里插入图片描述

5. Tettra

轻量级团队知识库与原子化经验共享平台
  • 核心特性: 支持简洁的经验片段管理、快速问答与版本记录;
  • 适配场景: 团队FAQ建设、操作指南归档、快速经验查询;
  • 优势亮点: Tettra 专注于团队知识的轻量级归档与共享,提供简洁的原子化经验创建和更新流程,适合快速沉淀和查找团队常用经验。
    在这里插入图片描述

五、各工具的选型建议

选择合适的原子化经验归档工具时,团队应根据经验管理的粒度、团队规模与使用场景来决定。以下是一些常见的团队需求与相应工具的推荐:

1. 中小型团队,可视化经验管理

对于中小型团队,尤其是需要直观展示经验流转状态的场景,板栗看板 是一个理想选择。其直观的看板视图和灵活的卡片系统,非常适合项目复盘和跨团队经验沉淀。

2. 深度思考与知识网络构建

如果团队需要构建深度关联的经验知识网络,Roam ResearchObsidian 是理想的选择。它们支持原子化经验之间的双向链接,适合复杂经验的体系化梳理和连接。

3. 结构化经验与流程标准化

对于需要将经验转化为结构化数据、支持属性筛选和模板化复用的团队,Notion 是一个强大的工具。它的数据库功能适合标准化、可分类的经验归档。

4. 团队高频经验快速共享

如果团队需要快速沉淀和查询常见问题、操作指南等高频经验,Tettra 是适合的选择。它专注于简洁高效的原子化经验管理,方便团队降低沟通成本。

六、Q&A:关于原子化经验归档你可能遇到的问题

Q1:如何避免经验原子化后过于零散,难以形成体系?
A:建议在原子化归档的同时,建立有效的分类标签和关联链接,并定期通过知识图谱或目录进行整合,确保知识点之间能形成有机结构。

Q2:如何确保原子化经验的时效性和准确性?
A:选择支持版本记录和更新提醒的工具,如 NotionTettra,并设立经验责任人定期回顾机制,确保经验内容持续更新。

Q3:如何在团队中推广原子化经验归档的习惯?
A:将经验归档嵌入工作流程(如项目复盘、问题解决后),并通过模板化和示例降低记录成本,同时设立激励措施鼓励分享。

七、结语

原子化经验归档工具是提升知识沉淀效率的重要助手,通过合理的原子化设计与归档,团队能够更加高效地积累和复用各类经验,推动持续学习与改进。通过 板栗看板ObsidianNotion 等工具的帮助,团队不仅能够清晰地整理各类经验点,还能确保知识在需要时能够被快速检索和运用。

有序的经验归档是持续进步的前提,原子化经验归档工具让知识管理更加轻盈、可持续。

【Unity Shader Graph 使用与特效实现】专栏-直达

在Unity的Shader Graph可视化着色器编辑器中,Vector 3节点是一个基础且功能强大的构建块,它允许开发者在着色器中定义和操作三维向量值。这个节点在URP(Universal Render Pipeline)项目中尤为重要,因为它为处理颜色、位置、法线和其他三维数据提供了灵活的方式。

Vector 3节点的基本概念

Vector 3节点在Shader Graph中代表一个三维向量,通常用于表示三维空间中的方向、位置或颜色值(RGB)。该节点的核心功能是将三个独立的浮点数值组合成一个三维向量,或者提供一个固定的三维向量常量供着色器使用。

在数学上,Vector 3可以表示为 (x, y, z),其中每个分量都是一个浮点数。在计算机图形学中,这种数据结构用途广泛:

  • 表示三维空间中的点或方向
  • 存储RGB颜色值
  • 描述表面法线
  • 表示纹理坐标
  • 存储各种参数和属性

Vector 3节点的独特之处在于它的灵活性。当所有输入端口都未连接时,它作为一个常量向量;当部分或全部端口连接了其他节点时,它成为一个动态的向量组合器,能够根据输入实时计算输出值。

节点端口详解

Vector 3节点包含四个主要端口,每个端口都有特定的功能和用途。

输入端口

X输入端口

  • 类型:Float(浮点数)
  • 功能:接收向量X分量的值
  • 使用场景:当需要动态控制向量的X分量时使用此端口
  • 典型应用:控制颜色的红色通道、位置的X坐标或法线的X分量

Y输入端口

  • 类型:Float(浮点数)
  • 功能:接收向量Y分量的值
  • 使用场景:当需要动态控制向量的Y分量时使用此端口
  • 典型应用:控制颜色的绿色通道、位置的Y坐标或法线的Y分量

Z输入端口

  • 类型:Float(浮点数)
  • 功能:接收向量Z分量的值
  • 使用场景:当需要动态控制向量的Z分量时使用此端口
  • 典型应用:控制颜色的蓝色通道、位置的Z坐标或法线的Z分量

输出端口

Out输出端口

  • 类型:Vector 3(三维向量)
  • 功能:输出由X、Y、Z分量组成的完整三维向量
  • 使用场景:将组合后的向量传递给其他需要Vector 3类型输入的节点
  • 连接目标:可以是任何接受Vector 3输入的节点,如位置输入、颜色输入或数学运算节点

节点工作模式

Vector 3节点有两种主要工作模式,取决于输入端口的使用情况。

常量向量模式

当所有输入端口(X、Y、Z)都没有连接外部节点时,Vector 3节点工作在常量向量模式。在这种情况下,节点使用在节点属性中设置的固定值作为输出。

常量向量模式的特点:

  • 输出值在着色器执行期间保持不变
  • 适用于不需要动态变化的向量值
  • 性能最优,因为值在编译时确定
  • 通过节点检视面板直接编辑各分量值

使用常量向量模式的典型场景:

  • 定义固定的颜色值
  • 设置不变的偏移量或参数
  • 指定默认的方向或位置
  • 作为测试或调试用的固定值

动态向量模式

当一个或多个输入端口连接了其他节点时,Vector 3节点工作在动态向量模式。此时,节点的输出值会根据输入端口的值实时计算。

动态向量模式的特点:

  • 输出值在着色器执行期间可能变化
  • 允许基于其他计算结果的动态向量构建
  • 提供更大的灵活性和交互性
  • 可能对性能有轻微影响,取决于输入节点的复杂度

使用动态向量模式的典型场景:

  • 基于时间或其他参数动态变化的颜色
  • 根据顶点位置计算的法线向量
  • 由多个输入组合而成的复杂向量
  • 响应玩家输入或游戏状态变化的向量值

生成的代码解析

Vector 3节点在Shader Graph背后生成的HLSL代码相对简单但非常重要。理解这些生成的代码有助于深入掌握着色器的工作原理。

基础代码结构

根据文档说明,Vector 3节点生成的基本代码格式为:

HLSL

float3 _Vector3_Out = float3(X, Y, Z);

这段代码的解析:

  • float3 是HLSL中的三维向量数据类型
  • _Vector3_Out 是生成的变量名,实际使用中可能有所不同
  • float3(X, Y, Z) 是HLSL中构造三维向量的语法
  • X、Y、Z分别对应节点的三个输入分量

实际应用中的代码变体

在实际的Shader Graph编译过程中,生成的代码可能会有一些变体:

常量向量情况:

HLSL

float3 _Vector3_Node = float3(0.5, 0.8, 1.0);

动态向量情况:

HLSL

float _SomeFloat_X = ...; // 来自其他节点的计算
float _AnotherFloat_Y = ...; // 来自其他节点的计算
float _ThirdFloat_Z = ...; // 来自其他节点的计算
float3 _Vector3_Node = float3(_SomeFloat_X, _AnotherFloat_Y, _ThirdFloat_Z);

代码优化考虑

Unity的Shader Graph编译器会对Vector 3节点进行多种优化:

  • 常量折叠:如果所有输入都是常量,编译器会在编译时计算最终结果
  • 死代码消除:如果Vector 3节点的输出未被使用,整个节点会被移除
  • 向量化优化:多个相关的Vector 3操作可能被合并为更高效的向量运算

实际应用示例

Vector 3节点在Shader Graph中有无数种应用方式,以下是一些常见且实用的示例。

颜色控制应用

创建动态颜色是Vector 3节点最常见的应用之一。

基础颜色定义:

  • 使用常量模式定义固定颜色
  • 通过调整X、Y、Z分量分别控制R、G、B通道
  • 输出连接到片元着色器的Base Color输入

动态颜色变化:

Time节点 → Sine节点 → Vector 3的X端口
Time节点 → Cosine节点 → Vector 3的Y端口
Time节点 → Vector 3的Z端口
Vector 3输出 → Base Color

这种设置创建了随时间循环变化的颜色效果,适用于霓虹灯、能量场等特效。

基于纹理的颜色控制:

Texture 2D节点的R通道 → Vector 3的X端口
Texture 2D节点的G通道 → Vector 3的Y端口
Texture 2D节点的B通道 → Vector 3的Z端口
Vector 3输出 → Base Color

这种方式允许使用纹理的不同通道独立控制最终颜色的各个分量。

位置和偏移应用

Vector 3节点在处理顶点位置和对象变换时非常有用。

简单位置偏移:

Position节点 → Add节点
Vector 3常量 → Add节点的另一个输入
Add节点 → Position输出

这会在特定方向上应用固定偏移,可用于创建浮动效果或简单动画。

动态位置偏移:

Time节点 → Multiply节点(控制速度)
Sine节点 → Multiply节点(控制幅度)
Vector 3构建方向 → Multiply节点
Position节点 → Add节点
Add节点 → Position输出

这种设置创建了基于正弦波的顶点动画,适用于旗帜飘动、水面波动等效果。

法线和向量操作

在光照计算中,Vector 3节点用于处理和修改法线向量。

法线混合:

Normal节点 → Vector 3的X和Y端口
Texture样本 → Vector 3的Z端口
Vector 3输出 → Normal输入

这种方法可以基于纹理数据修改表面法线,用于实现凹凸映射或细节法线效果。

向量重映射:

某个Vector 3输出 → Component Mask节点(分离X、Y、Z)
分离的各分量 → 各自的数学处理节点
处理后的分量 → 新的Vector 3节点
新的Vector 3输出 → 后续计算

这种技术允许对向量的各个分量进行独立处理,然后重新组合。

高级技巧和最佳实践

掌握Vector 3节点的高级用法可以显著提升着色器效果和质量。

性能优化技巧

合理使用常量模式:

  • 对于不会变化的向量值,始终使用常量模式
  • 避免不必要的动态向量计算
  • 在可能的情况下预计算向量值

向量运算优化:

  • 尽量使用内置的向量运算节点而不是手动分离和重组分量
  • 利用Swizzling和其他HLSL特性减少节点数量
  • 合并相关的向量操作以减少指令数

组织和管理技巧

节点命名规范:

  • 为重要的Vector 3节点添加有意义的注释
  • 使用Sub Graph封装常用的向量操作
  • 保持节点图整洁,避免不必要的连线交叉

参数化设计:

  • 将需要调整的Vector 3值暴露为材质参数
  • 使用适当的默认值和范围限制
  • 考虑为不同的使用场景创建参数预设

调试和故障排除

向量可视化:

  • 使用Vector 3输出直接驱动发射颜色来可视化向量值
  • 创建调试视图来检查各个向量分量
  • 利用Frame Debugger分析实际的向量值

常见问题解决:

  • 检查向量分量的范围是否合理(通常0-1或-1到1)
  • 确认向量方向是否符合预期
  • 验证动态向量的更新频率和性能影响

与其他节点的配合使用

Vector 3节点很少单独使用,它通常与其他Shader Graph节点组合以实现复杂效果。

与数学节点配合

Add节点配合:

  • 将两个Vector 3相加实现向量叠加
  • 用于位置偏移、颜色混合等场景

Multiply节点配合:

  • Vector 3与标量相乘实现均匀缩放
  • Vector 3与另一个Vector 3相乘实现分量-wise乘法
  • 用于颜色调整、强度控制等

Dot Product节点配合:

  • 计算两个向量的点积
  • 用于光照计算、投影操作等

Cross Product节点配合:

  • 计算两个向量的叉积
  • 用于生成法线、计算切线空间等

与纹理节点配合

Sample Texture 2D节点:

  • 将纹理的RGB通道映射到Vector 3的XYZ分量
  • 实现基于纹理的颜色控制或参数调整

Normal Map节点:

  • 将法线贴图数据转换为实际的向量数据
  • 用于表面细节增强和复杂光照效果

与高级节点配合

Transform节点:

  • 将向量从一个空间转换到另一个空间
  • 用于世界空间、视图空间、切线空间之间的转换

Fresnel Effect节点:

  • 基于表面法线和视图方向创建边缘光效果
  • Vector 3用于控制Fresnel的颜色参数

Gradient节点:

  • 将渐变采样结果转换为Vector 3颜色值
  • 用于复杂的颜色过渡和效果

实际项目案例

通过具体的项目案例可以更好地理解Vector 3节点的实际应用价值。

案例一:动态水体着色器

在这个案例中,Vector 3节点用于创建逼真的水体效果:

颜色控制部分:

Depth节点 → Subtract节点 → Saturate节点 → Power节点
结果值 → Lerp节点的Alpha输入
浅色Vector 3常量 → Ler节点的A输入
深色Vector 3常量 → Lerp节点的B输入
Lerp输出 → Base Color

法线计算部分:

两个不同偏移的Noise纹理 → 两个Vector 3构建法线
Blend节点混合两个法线 → 最终的Normal输出
Time节点控制噪声偏移 → 实现动态波纹效果

这个案例展示了如何使用多个Vector 3节点分别控制颜色和法线,创建复杂的水体外观。

案例二:全息投影效果

创建科幻风格的全息投影效果:

基础颜色:

Time节点 → Fraction节点 → Vector 3的X和Z端口
常量值1.0 → Vector 3的Y端口
Vector 3输出 → Emission Color

扫描线效果:

Position节点的Y分量 → Multiply节点(控制密度)→ Fraction节点
Step节点创建硬边缘 → Multiply节点控制强度
结果值 → 与Emission Color相乘

透明度控制:

Noise纹理 → Vector 3的X端口(控制整体透明度)
扫描线信号 → Vector 3的Y端口(增强扫描线区域的透明度)
Vector 3输出 → Alpha通道

这个案例展示了如何组合使用Vector 3节点创建复杂的外观效果,包括颜色、发射和透明度控制。

总结

  • Vector 3节点有两种工作模式:常量模式和动态模式
  • 三个输入端口分别控制向量的X、Y、Z分量
  • 输出是组合后的三维向量,可用于各种着色器计算
  • 生成的代码是简单的float3向量构造
  • 与数学、纹理和其他节点配合可以实现无限可能的效果

【Unity Shader Graph 使用与特效实现】专栏-直达
(欢迎

点赞留言

探讨,更多人加入进来能更加完善这个探索的过程,🙏)

技术领导者面临的挑战超越了个人贡献者的范畴:需要与业务部门就投资决策达成共识,处理系统层面的问题,开展人才培养,并持续跟进不断演变的代码库。在哥本哈根 Goto 大会上,Patrick Kua 在演讲“选择技术领导之路”中指出,技术对齐至关重要(包括统一代码风格、实现模式和标准规范),可以避免意外之外的复杂性。领导力可以通过技能实践、优化团队协作以及树立榜样来提升。

 

Kua 说,技术领导者面临的挑战与个人贡献者不同。他举了一些例子,包括:必须与业务/产品人员就技术投资(如技术债务、平台工作)达成一致,必须处理或与其他团队合作处理更广泛的系统层面的事务(如基础设施、运营等),或为团队成员提供指导。他补充说,与此同时,技术领导者还要努力跟上不断变化的代码库,对于涉及 GenAI 的工具集更是如此。

 

技术对齐至关重要,正如 Kua 所解释的那样:

 

技术上不对齐,每个人都会不断接触同一个代码库,用对他们来说最简单的方式添加功能,但通常无法确保代码库的一致性。随着时间的推移,意料之外的复杂性不断累积,比如有五个不同的库执行相同的任务,或发送电子邮件或推送通知功能有七种不同的实现方式,未来当有人想要做哪个方面的更改时,其工作会变得困难许多。

 

Kua 认为,只要在技术上适当对齐,团队就能持续对同一代码库进行修改,因为系统中的每个部分都将具有相似性。

 

Kua 说,为了实现技术对齐,技术领导者需要帮助团队就代码风格达成一致。下一个挑战是就实现模式达成一致。这意味着为共有的功能(如电子邮件发送、用户通知)和共有的任务(如日志记录、异常处理、网络重试等)创建公认的标准。一旦达成一致,就应该在团队维基中把这些标准模式记录下来。

 

为了衡量工程师之间的对齐情况,可以让每个人都描述一下他们具体如何定义“好”代码,Kua 建议:

 

如果他们写下的东西类似,那么他们就对齐了。如果他们写下的东西差别很大,那么他们之间就是错位的,这时就是展示技术领导力并进行进一步对齐的机会。

 

有很多资源可以用来提升领导技能。Kua 建议将更广泛的领导技能分解为具体的技能,如技能训练、职业传承、沟通、调解、影响力等。他说,即使一个人不是正式的领导者,每天也有机会在工作场所练习这些技能。选择一项技能,然后找到了解它的方法,如使用 AI 工具、YouTube、在线课程、HR/People 团队提供的课程和书籍。

 

然后,最重要的是小处着手,找到应用你所掌握的知识的方法,Kua 说:

 

例如,工程师可以每天练习提高他们的沟通技巧,因为大多数人在团队中工作,需要与团队成员以及团队外的业务利益相关者进行沟通。

 

另一个重要的方法是寻找每个人都在抱怨但没有人处理的问题。这些问题是展示领导力的机会,处理它们可以改善团队中每个人的工作环境。

 

Kua 说,成为最好的自己,并树立榜样。即使你不是正式的领导者,当人们尊重你并将你视为榜样时,你就是在实践领导力,即使没有头衔。

 

Kua 说,不要将转换到技术领导者的角色视为晋升。你将从事许多与个人贡献者角色截然不同的工作,因此需要运用许多以前从未用过的技能。他总结道,好消息是只要你学习并实践,就能掌握这些技能。

 

InfoQ 就技术领导力的问题采访了Pat Kua

 

InfoQ:是什么让人们决定成为技术领导者?

 

Patrick Kua:很多工程师希望他们能有更大的影响力,成为正式技术领导者有一个很大的好处是,你通常会被邀请参加关于未来规划的会议。在这些会议上,卓越的技术领导者可以带来新的见解,他们对现有系统的局限和改进机会有一个很好的理解,并能提出更简单的解决方案来实现相同的业务成果。然而,许多技术领导者不喜欢的一个方面是,这意味着要把更多时间花在会议上……

 

在许多情况下,人们被要求领导一个团队, 是因为他们已经投入了大量的时间来优化工作环境,改善了全体成员的工作体验,而且已经有人认可了他们展现技术领导力的能力。他们可能是团队寻求建议的首选对象,可能是与产品或营销部门沟通最顺畅的人。当管理层注意到他们具备诸多关键技能时,便会邀请其正式担任技术领导职务。

 

InfoQ:优秀的技术领导力应该是什么样子?

 

Kua:区分正式和非正式技术领导角色是有帮助的。正式技术领导者负责确保团队拥有足够的技术领导力。实现这一点的其中一个方法是培养一个环境,让每个人都能舒适地站出来展示技术领导力。当你做得好时,每个人都能展示非正式的技术领导力。

 

之所以存在正式领导者是因为并非所有团队都自然而然地健康或高效。我相信,每名技术人员的记忆中都有这样一个团队,两名工程师不断地争论应该采取哪种方法,并希望有人能介入进来帮助团队做出决策。一个理想的世界是不需要正式领导者的,但团队很少能生活在完美的世界中。

原文链接:

https://www.infoq.com/news/2026/01/technical-leadership-path/