包含关键字 typecho 的文章

两年前,我在投资板块分享了一篇投资相关的文章:《我的投资学习路径 roadmap 》链接

当时分享的原因是因为建了一个 V 站投资群,群友们需要一篇这样的投资入门指引。目前,这个群已经两年多,最高 500 人,经历过两次封群后目前有 300 人,每天很活跃,欢迎志同道合的朋友加入。

昨天我在一片 V 站的文章评论中分享了这篇文章,然后新增了好多收藏,也有一些人加我微信想看更新版。

目前,第一版的文章共收获近四千次点击、66 人收藏、3 人感谢,说明确实帮助了一些人。所以,我决定再更新一版。

这两年发生了很多时,A 股完成了从熊市到牛市的转换。我自己也学习了很多,

  • 开发了投资工具网站(当时还在 V 站分享 web 前端学习路径)
  • 开发了量化回测平台
  • 开发了自动化交易工具
  • 每年包括投资观察在内的笔记字数达到 50 万字
  • 在股市获得不错的投资收益
  • 接受了三次媒体关于投资的采访
  • 带着一群人在股市赚到钱(家族地位和社会地位提升,身边人更尊重我了)

很难在每一天都感觉到自己的进步,但每过一段时间回头看之前的自己,总觉得当时是菜鸟。


  • 版本信息:
  • 作者: 刘不思 (程序员/CFA/FRM/健身教练)
  • 微信:bigporker
  • 2026-01-04: V0.2


0. 收益

两年前的那篇文章中列了当时的投资收益,今天更新下(同一个 App 截图,国金证券,版面略有差异可能是 App 改版)。

两年前

截止昨天

1. 我的投资思路

  • 偏好低风险投资, 以本金安全为优先目标。我宁可少赚,也不想亏,亏钱让我非常难受。
  • 喜欢套利,因为套利的风险较低、收益相对确定。
  • 未虑胜先虑败,尝试问自己这笔投资的最大亏损是多少。

2. 一些建议

  • 保持谦逊
    • 不要把股票市场当做提款机,中国股市 7 亏 2 平 1 赚
  • 保持理性
    • 投资是一件平和的事情,当我的股票让我担心,我就降低仓位,降到我不再担心
    • 闲钱投资,如果我用原本交房租的钱去投资,那我很难保持理性
    • 远离情绪化的投资者,不要被传染
    • 每一笔投资前,考虑胜率和赔率,考虑何时退出
  • 保持耐心
    • 大部分时候都是垃圾时间,不是好的买入时机
  • 保持阅读和思考
    • 投资很简单,5 毛钱买价值 1 块钱的股票,等涨到 1 块钱时卖出即可;投资也很难,如何找到这样的股票?保持阅读和思考,投资是知识变现
    • 重数据、重逻辑、轻结论
  • 保持对市场的关注
    • 2007 年,大部分的股票都不具有投资价值,价格被炒得太高
    • 2008 年,大部分的股票都具有投资价值,市场恐慌性的卖出,价格很低
    • 保持对市场的关注,这也是我记录投资观察的原因
  • 合理的收益目标
    • 巴菲特的长期年化收益率是 20%
    • 长期来看,GDP 的增速是所有投资者的平均收益率
    • 购买年化收益率超过 8% 的产品,需要做好收不回本金的准备
  • 周期
    • 市场是一个钟摆,从一个高点经过低点摆动到另一个高点,接着再反向,如此循环
  • 区分宏观和微观
    • 宏观上正确的结论在微观上未必正确,再好的学校也有差生、再差的学校也有好生
    • 宏观上经济变差时,收入会降低。但具体到微观的个体时,总有人收入在增加
    • 宏观上 A 股不是一个好市场,但具体到微观时,总有一些能赚钱的投资机会
  • 逆向投资
    • 投资是逆人性的
    • 别人贪婪时恐惧,别人恐惧时贪婪
  • 应对比预测更重要
    • 知道市场钟摆所在的位置,制定不同位置的应对方案
  • 投资是为了什么?
    • 为了赚钱:看似废话,但很多人的投资更像是娱乐消费,而不是赚钱
    • 为了更好的生活:当持仓让我坐立不安,我就降低仓位
  • 注重正向反馈
    • 任何一项长期的事情刚开始时,正向反馈非常重要,这是坚持下来的动力
    • 不亏钱,是投资最好的正向反馈
    • 所以,我建议新手先从低风险套利开始投资之旅

3. 一些认知

这一部分总结自网友"打新交朋友"的分享

  • 投资并不是一个可以教的学科,更多是引导
    • 通过引导,新人知道该学习什么、该干什么、该往哪个方向努力
    • 每个人的认知差异很大,性格差异也很大,投资一定是个性化的
  • 投资,看似门槛极低,实则门槛极高
    • 门槛低:谁都能开户炒股买基金,无数人因为门槛极低进来
    • 门槛高:能赚钱的只有少数人,能长期赚钱的更是凤毛麟角
    • 投资需要较强的学习能力,这与行业背景、学历关系不大(但宏观来讲,学历高的人学习能力更强)
  • 投资的特点
    • 并非一分耕耘一分收获,并非努力就一定有结果,有时候越努力越糟糕
    • 结果好不代表方法对,可能只是运气,方法错误的好结果只能让你在长期输掉更多
    • 结果差不代表方法错,但差的结果可能让你放弃了正确的方法
  • 投资生态是一个充满不确定性的复杂体系,我们要做的是在其中找到胜率和赔率的共振
  • 投资的第一性原理:确定性
    • 杨继东 喜马拉雅 《杨继东的投资之道》:确定性的三大来源:价值、周期、规则
    • 霍华德马克思《投资最重要的事》《周期》:投资领域为数不多肯定正确的思想,迷茫时值得依赖的思想
    • 《不亏》《寻找鱼多的池塘》
  • 资金该如何分配
    • 资产配置:《不落俗套的成功》《机构投资者的创新之路》《投资要义》(微光破晓刘诚)
    • 资产分两种
      • 债性资产(固收类):怕通胀
      • 股性资产(权益类):怕通缩
      • 简单说,就是存银行理财还是买股票的问题
  • 投资只有两种风险
    • 本金损失的风险:买股票,亏损
    • 机会损失的风险:买理财,不会亏损,但会错过股市大涨
    • 投资是两者之间平衡的游戏

4. 知识储备

普通投资者很难像专业投资者那样,花费数年完整时间从本科硕士打基础、再从事行业研究员积攒经验。但投资所需的知识又必不可少的,如何解决这个矛盾?

我的建议是采用软件行业的 MVP 方法,即最小可行产品

  • 首先,快速的浏览学习投资所需的各方面知识,进入市场,把投资这件事推进起来
  • 然后,边干边学,哪里欠缺补哪里

投资所需的知识

  • 启蒙知识:投资思维
  • 专业知识:经济、金融、财务
  • 行业知识

4.1 启蒙知识

  • 回答关于投资的基本问题
    • Why:为什么需要投资
    • What:投资能带来什么
    • How:如何学习投资
  • 推荐书籍
    • 《穷爸爸富爸爸》
    • 《小狗钱钱》
    • 二选一即可

4.2 经济

  • 了解财政政策、货币政策与股票市场的关系,能看懂财经新闻
    • 央行下调利率为什么对 A 股是正面影响
    • 美联储加息为什么对 A 股是负面影响
    • 人民币升值贬值的进出口的影响
  • 推荐书籍
    • 《微观经济学》、《宏观经济学》
      • 很多作者写过,大学商学院的基础课程
    • 《经济学的思维方式》
      • 如果觉得上面两本偏枯燥,试试这本。很厚的上下两册,但通俗易懂,阅读体验舒适

4.3 金融

  • 基本概念
    • 货币的时间价值
    • 收益率的计算
    • 一价定律
    • 无套利定价理论
  • 推荐书籍
    • 《金融市场基础知识》
      • 中国证券业协会编著,证券从业资格考试的指定教材。介绍中国金融市场和典型标的,挑重点看即可
    • 《投资学》
      • 博迪著,全球很多高校的教材,对整个金融市场及相关工具有框架性的认识

4.4 财务

  • 目标是能看懂上市公司财报
    • 基本的财务术语,例如资产、负债、收入、利润、折旧摊销、应收账款
    • 三大财务报表
  • 推荐书籍
    • 《一本书读懂财报》肖星
    • 《初级会计实务》

4.5 行业知识

  • 例如:投资游戏行业的股票,需要了解国家的版号政策、各游戏公司的现有产品的运营数据、在研产品的进展
  • 例如:投资生猪养殖行业的股票,需要了解各家公司的养殖模式、存栏量、能繁母猪的数量、每头利润等指标
  • 学习资料
    • 行业研究报告、行业新闻
    • 软件:慧博投资分析(研究报告)

5. 书单

  • 投资是认知变现,读书是提升认知的最简单的方式

好书很多,这里列一部分。其实,确实没有遇到一本非常适合投资新人的书,学习曲线低、既有理论又可快速操作实践的新人教程确实没找到。

我想自己写一本,但进展很慢,如果你看到好的,欢迎推荐给我。

5.1 术

  • 可转债
    • 《可转债投资黄金宝典》新手入门
    • 《攻守》对可转债规则的细节讲解非常透彻,适合有可转债知识储备
  • 《低风险投资之路》徐大为
    • 内容有些陈旧,比如分级基金已经退出市场,但思路不变
  • 《低风险套利实战》明总
    • 最佩服的是明总的研究劲头,不是每次研究都能发现机会,但明总依然不遗余力的深入研究
  • 《解读基金》季凯帆:我读过的关于基金的最好的一本

5.2 道

  • 《聪明的投资者》注疏版:格雷厄姆,最后一版写于 1974 年,基本思想经久不衰
  • 《安全边际》塞斯·卡拉曼,比肩《聪明的投资者》
  • 《巴菲特致股东的信:股份公司教程》
  • 《施洛斯访谈资料集》
    • 淘宝有售。这是我看过遍数最多的投资书,基本都是访谈或者演讲稿
    • 我觉得施洛斯的投资方法更适合散户,这本书比肩《巴菲特致股东的信》
  • 《投资中最重要的事》
    • 霍华德·马克斯,这个人很厉害,橡树资本的老板,定期会写金融市场的长文评论
  • 《穷查理宝典》
    • 关于查理芒格的智慧
  • 《思考,快与慢》
    • 关于投资心理
  • 塔勒布关于不确定性风险的系列阐述
    • 《非对称风险》
    • 《黑天鹅》
    • 《随机漫步的傻瓜》
  • 《乌合之众》古斯塔夫勒
    • 让你能够理解投资市场里很多群体非理性的现象,理解人类世界的疯狂的合理性,你虽注定盲从,但还留有一点清醒
  • 《非凡的成功》大卫·史文森
    • 主要讲资产配置、投资组合
  • 《约翰·邓普顿爵士的金砖》
    • 列举了十七条投资原则,这些原则不仅适用于投资,也适用生活
    • 更像是一位充满智慧的老者给年轻人的忠告
  • 《上帝掷骰子》
    • 这是本量子物理科普入门读物,投资世界像极了量子世界,这世界可能以概率存在
    • 懂了这个道理,至少不会出现有的人苦苦研究技术指标,想要找到圣杯这样不切实际的错误方向,也会很容易辨别那些炒股软件的营销以及很多网络教炒股方法是拙劣手段

6. 工具

6.1 信息来源

  • 上交所、深交所官网
  • 论坛
    • 雪球:内容与客户最广,因此质量层次不齐
    • 集思录:低风险投资论坛
  • 个人、机构的公众号
  • 各种数据网站
    • 有个人的,有机构的
    • 因为是程序员,所以我自己开发了一个数据网站 InvestBench ,采集、分析、展示我关注的投资数据

6.2 软件

  • Choice 数据(推荐)
    • 东方财富的官方软件
    • 手机版免费,东财证券账户资金达到 30w 送电脑版的权限
  • 同花顺
    • 免费
  • iFind
    • 付费,可以查看各种宏观、商品的数据


如果坚持把这篇又长废话又多的文章看完,并且认可其中大部分的观点,那么欢迎你加入我们的投资群( VX:bigporker )。

  • 交流投资思路为主
  • 无营销无广告不荐股
  • 重数据重逻辑轻结论

Cloudflare 通过实施基础设施即代码和自动化策略执行,消除了数百个生产账户中的手动配置错误,每天处理大约 30 个合并请求,并在部署前而不是事件发生后捕捉安全违规。

 

公司的 Customer Zero 团队面临一个关键问题:单一配置错误可能在几秒钟内传播到 Cloudflare 的全球边缘,可能会导致员工被锁定或生产服务瘫痪。在这种规模下,对数百个账户进行手动仪表板管理为人为错误创造了太多机会。

 

该解决方案的核心是将所有基础设施配置视为代码,进行强制性的同行评审和自动化安全检查。现在,每个生产变更都要经过一个验证管道,该管道在部署前执行大约 50 个安全策略。团队仍然使用仪表板进行分析和可观测性,但关键的生产变更需要提交与用户、工单和自动化合规性检查相关联的代码。

 

根据 Cloudflare 团队的 Chase Catelli、Ryan Pesek 和 Derek Pitts 的说法,这种左移方法将安全验证转移到开发的早期阶段,在补救成本最低时捕捉问题。该模型防止事件发生,而不是对事件作出响应,同时通过让团队相信他们的变更是合规的,从而实际上提高了工程速度。

 

实施以TerraformCloudflare Terraform Provider为中心,集成到一个自定义的持续集成和部署管道中,该管道在Atlantis上运行并与GitLab集成。所有生产账户配置都存储在一个集中的单体存储库中,各个团队作为指定的代码所有者拥有和部署他们的特定部分。

Cloudflare 的基础设施即代码数据流图

 

一个名为 tfstate-butler 的自定义 Go 程序充当 Terraform 的 HTTP 后端,充当安全状态文件代理。该设计通过确保每个状态文件的唯一加密密钥来优先考虑安全性,从而限制了任何妥协的潜在爆炸半径。

 

策略执行使用Open Policy Agent框架和Rego语言来验证安全要求。策略在每个合并请求上自动运行,并以两种模式运行:允许部署并带有评论的警告,或者完全阻止变更的拒绝。异常处理需要基于 Jira 的正式批准,然后是一个拉取请求来记录偏差。

 

迁移揭示了扩展基础设施扩展即代码(Infrastructure as Code)的关键教训。最初,由于团队之间的 Terraform 熟练程度不同,进入门槛很高,阻碍了最初的采用。cf-terraforming 命令行实用程序,它自动从 Cloudflare API 生成 Terraform 代码,通过消除手动资源导入,显著加速了上手速度。

 

当团队在事件期间进行紧急仪表板变更时,配置漂移就会出现,从而使 Terraform 状态与部署配置不同步。Cloudflare 实施了自动漂移检测,该检测连续比较状态文件与部署配置,并在检测到差异时自动创建具有服务级别协议的补救工单。

 

Cloudflare Terraform Provider 落后于 API 能力,因为 Cloudflare 的快速产品创新速度超过了 Terraform 的支持。v5 提供者版本通过从 OpenAPI 规范自动生成代码,解决了这个问题,保持了产品 API 和基础设施代码能力之间的持续对齐。

 

左移模型展示了组织如何在保持严格的安全治理的同时扩展基础设施即代码。通过将验证从反应性审计转移到主动自动化检查,Cloudflare 既提高了安全性,又提高了工程速度。

 

许多公司正在采用左移方法。谷歌云指出,在生产中定位安全问题可能导致重大的财务处罚,例如高达全球收入 4%的 GDPR 罚款。通过自动化 CI/CD 安全检查进行早期检测可以大大降低补救成本,减少对架构更改的需求。OpsMx指出了实施障碍、自动化差距、复杂工具和组织孤岛等挑战,同时强调使用 NIST 和 OWASP 等框架的自动化策略执行可以帮助团队识别和优先考虑风险,而不会给开发人员带来负担。根据Splunk的研究,73%的公司认为缺乏自动化是他们在左移实践中的主要挑战,但 AI 驱动的工具正在通过智能自动化迅速改进安全测试,采用率在短短一年内从 64%体升到 78%。

 

左移运动已经超越了简单地将安全检查提前。组织现在正在追求通过自动化扫描(SASTSCADAST、秘密管理)、策略即代码执行和 AI 驱动的漏洞优先级排序进行持续的安全验证,在现有的工作流程中为开发人员提供即时、可操作的反馈。

 

原文链接:

https://www.infoq.com/news/2026/01/cloudflare-security-shift-left/

generated image

过去半年多在一家远程工作的公司工作(现已离职),自己以前没在远程的公司上过班,所以对远程工作还挺好奇。相信很多人也对远程工作的体验很好奇,所以分享一下这半年多的远程工作体验。

远程下的协同方式

基础工作时间

工作时间和正常公司的约定是一样的,理论上是早上 9 点到下午 6 点。不过我感觉公司好像没有特别强调过这个时间,产研每天早上 10 点早会,正常情况下所有人都要在线。我感觉这个时间和互联网的的灵活上下班差不多。我以前公司是最迟 10 点打卡,如果 9 点打卡就 6 点下班。10 点打卡就 7 点下班。大家一般都是九点半陆陆续续到公司,这样下班也刚好也错过晚高峰。

所以实际上是所有人 10 点之后必须在线。一般约会议也是在 10 点后。每天早上 10 点每个人都同步一下昨天的工作进展和今天的规划。有一个大的任务面板,每个人工作事项在上面。有些任务要几个人协调,会上可能也会快速讨论一下。这样基本上就能知道团队的整体情况。

如果当前 App 迭代版本有什么需要讨论的,一般会在集体早会后在我们小组群里一起语音沟通一下。现在的在线会议都会记录语音自动总结,会议纪要会自动发到群里。

松散的考勤管理

实际上一天里只要早上 10 点上线,工作时间能收到飞书消息就可以了。常规的语音沟通都尽量安排在固定的早上早会后。其他类型的沟通一般都会提前约一下时间。公司也有几十人,不会所有人都刚好在线且有空,也很容易理解。

周会

每周有两个周会。周一下午是全员会议,每个小组会总结汇报上周进展,本周规划。周四下午是产研的周会,会以每个任务为单位一起同步一下开发进展,规划下周的开发任务。

每个季度线下碰一次

每个季度会全员线下见一次,通常在上海。会一起讨论一下下个季度的目标,汇报一下各组这个季度的进展。每个小组如果有需求也可以多呆一天,一般安排是两天时间。

远程工作的 A 面

工作地点自由

工作地点自由无论是给员工还是公司都提供了很大的好处。工作地点对一部分人而言可以是一种“地理套利”。同样的生活品质在一线城市比在二三线城市要贵很多。而且很多人也未必多喜欢在大城市生活,在自己家乡离亲人近,文化风俗也更亲近一些。很多打工人在一线城市也只是迫不得已的背井离乡。很多同事都选择在自己的家乡。印象挺深一个同事在山西阳泉,我说这个地方我怎么有点眼熟,这不是刘慈欣以前在水电站上班的地方吗!公司里一大半的同事都不在一线城市。

IMG_2026.jpg

对于喜欢四处走走的人来说,远程工作也让"数字游民式"的短期旅居成为可能。比如我定居杭州,但是杭州夏天和冬天气候都不太好。我会选择一次性在外面轻度旅行两三周。比如夏天的时候我在伊犁呆了两周,12 月的时候在北海道呆了两周。外出旅行的时候我一般会选择早上工作半天,下午出去玩半天,晚上再接着处理半天工作。也有的时候会请一天假。这样也可以心态比较好的体验一个地方,不是以前那种行程排的很紧的打卡旅游。

北海道.JPG

美英.JPG

知床.JPG

知床酒店大厅.jpg

在伊犁琼库什台的时候,我本来在院子里和老板聊天。忽然来了工作语音,我说哎呀我要去工作了。老板听到说直摇头说,出来玩还要处理工作真是苦啊。后面我说,不是在玩的时候需要工作,我是在工作的时候出来玩。老板说那就羡慕了。

那拉提.JPG

Synology Photos DSC01737.JPG

齐梦德.JPG

齐梦德 2.JPG

秋千.JPG

琼克什台.JPG

总的来的说工作地点自由对幸福感的提升还是很明显的。

人才密度提升

工作地点自由后对于公司的招聘帮助是显而易见的。如果公司在线下,招聘的人群范围就是公司周边一小时通勤时间覆盖的地方。这也是很多公司必须在一线城市的原因,这些地方的相关人才密度比较高。远程以后招聘范围一下就变大了很多,所有网络能到的地方都是招聘范围。同样的招聘要求一下子可选的人就多了数十倍。也有一些同事都不在一个时区。

除了招聘范围增加,同样的薪水待遇对于非一线城市区域的人才吸引力也会高的多,属于双向奔赴了。我之前和一个杭州的团队聊天,意外得知他们还有一个团队在长沙。我问为什么会在长沙,老板说他们刚起步的时候待遇一般,在杭州很难招到优秀的人。刚好一个合伙人是湖南的,干脆就回长沙成立了一个分公司,同样的待遇很快就招到了合适的人。

工作时间相对自由

前面提到,工作的要求只要在工作时间在线就行。如果有一些临时外出需求很容易安排出时间。或者某些原因觉得状态不好,休息一下把工作调整到晚上或者周末做都行。这样可以自己安排 8 小时工作量的工作时间也额外提升了工作的满意度。

比如我有的时候会在工作日下午四五点的时候选择去看电影。这样错峰去电影院会安静一些。然后晚上回来再工作一段时间。有的时候天气好,也会选择去附近的公园散步半个小时。我推测有一些同事也可能会下午去接一下孩子放学什么的。比较重要的讨论都会提前约时间,因此时间还是挺容易安排的。

不需要通勤

我个人感觉比较舒适的通勤时间是 30 分钟左右。以前找工作,如果公司地点离我超过 30 分钟车程我内心就觉得要扣分了。30 分钟通勤在租房的时候还比较容易实现。不过很多人因为一些现实问题(买房、夫妻双方工作地点不同、孩子教育)应该很多人都需要 1 个小时左右的通勤时间。这个通勤时间在小地方应该会觉得夸张,在北京上海还是挺常见的。而且为了节省时间大多数人还会选择在到公司再吃早餐。便利店的包子、面包我真是吃了个遍。远程以后通勤的时间完全就省下来了。每个人相当于多赚了 1 个小时的有效时间。同样工作 8 小时,远程省去了通勤折腾,身体不累、心情不烦,幸福感提升不少。

更宽松的工作空间

很多公司的工作空间追求性价比会比较拥挤,我觉得尤其难受的是办公桌比较小。因为我会外接一个 27 寸的显示,放一台 16 寸的 mbp 。有的办公桌比较小空间就很局促。我还比较喜欢用升降桌,一般公司也不会配升降桌。椅子还可以自己带,桌子就不好自己带了。而且公共空间也难免同事聊天什么的稍微会分散注意力。因此很多时候会戴着降噪耳机工作。自己在家工作的办公桌就可以自己布置,因此工作的空间也会稍微舒适一些。

中立:工作效率应该是有略微提升

我有问过公司会不会担心员工摸鱼的问题,毕竟远程处于无监管的状态。公司说选择信任员工。其实在线下办公的时候也避免不了摸鱼的问题。前面提到员工工作满意度是比较高的,没有太大的摸鱼动机。以前在线下可能什么借口(抽烟、喝奶茶咖啡)争取到一些休息的时间,现在因为时间就是自己安排的。完全可以直接休息半个小时。摸鱼其实没赚到什么。团队里也是互相协作的,如果工作量差很多应该也容易感知出来。

反正我个人的想法是保证一周有 40 个小时的工作量。我个人感知我应该是工作效率比线下工作稍微高一点点。主要来自不需要通勤了,另外自由安排工作时间后工作状态会好一些。而且我个人责任心比较重,我实际每天参与工作的时间应该会比 8 个小时多一些。

公司本身没要求加班什么的,不过我经常看到研发在晚上推代码。有的时候晚上工作群发消息也会及时回。但是这个还是看个人工作习惯了,也有的同事是下班后百分百不在线的。

远程工作的 B 面

工作时间界限的模糊

这个属于理论上可以避免但是在实操中很难避免。在线下的办公的时候,通常离开公司就意味着工作状态的结束。最多也就是在微信群上偶尔回复一下消息。至少我过去几份工作都是这样的状态。

远程的时候虽然也可以做到下班时间以后完全不想工作的事。但是因为工作习惯的改变,很多时候会在晚上处理一下工作。加上晚上也会有一些工作的消息。当然也因为我本身对处理一些工作消息并不反感,因此不知不觉间一天里很多时间都处于和工作有关的状态。看看工作群消息,看看用户群的信息,关注一下行业信息。总之无形之中我的工作状态的界限就非常模糊了。有的时候好像在休息,其实也在想着一些工作有关的事。当然这个可能和我是产品经理的关系,如果是研发也许可以划分的清楚一些。

消失的“茶水间时刻”

大一点的团队远程会带来一个意想不到的问题:和同事很难建立默契,会有一种“熟悉的陌生人”的感觉。大家基本上都只高效交流工作的信息。有的时候也会有一种“agent”的感觉。下午沟通好一个任务后,第二天早上做好了。大多数同事微信都没加。

所以就没有那种形成团队默契、团队文化的契机。回想起来以前在公司的时候,可能同事总有一些事情会互相开开玩笑。中午吃饭的时候也会一起闲聊一下。也会有一些小群可能吐槽一下公司,发发段子。之前塞尔达荒野之息刚发布的时候,午休我会找同事一起交流一下进度,讨论一下剧情。某部剧或者综艺大火的时候,也会一起交流一下。但是在远程里这种“无用”的沟通就几乎没有了。

公司的线下活动也就没有了,以前公司同事们有的时候会一起约着打篮球,吃火锅,爬山什么的我还是觉得挺有意思。很多同事会成为不错的朋友。

或许这就是获得某种效率和自由所必须支付的‘情感税’吧。

工作场景单一

这可能是我个人的感受。在家办公久了,会产生一种'空间窒息感'——早上醒来是这张书桌,工作 8 小时是这张书桌,晚上休闲还是这张书桌。工作和生活的空间也重叠了。整个人好像被钉在了同一个坐标上,时间在流动,但空间完全静止。不过这个问题是在在家办公几个月后才有这种意识。

后面我意识到这个问题以后尝试做了一些行动优化。比如我下午时候我会刻意出门散步一下。阅读的时候会刻意换一个地方。

两个月前咬牙买了 Vision Pro ,意外的也优化了这个问题。每天我会戴几个小时办公,Mac 投屏到 vp 上。在 vp 上选择全沉浸场景模式,我比较喜欢海边环境的波拉岛和湖边的胡德山。这样工作间隙停顿的时候会有在自然空间里的感觉。Vp 上的这个空间的环境是一个动态视频,能看到云在飘动,听到海浪的声音。这样每天就会有切换了空间的体验,很大程度优化了工作场景单一的问题。

6ED3F73A-A35D-47BE-8BC5-A3CA0DF67D28_1_102_o.jpeg

原来和一个独立开发的朋友聊天,他说他后面在家附近单独租了一个小办公室用来隔绝切换工作空间。可能这个问题对于长期居家办公的人还是有一些影响的。

我刻意优化这个问题以后我觉得大概是解决了 70%。我想原来线下办公没有这个问题是因为线下办公环境的白噪音太大了,同事的讨论、和同事的聊天,空间里其他人的移动。当你在思维停顿的时候有很多其他信息进入,不会太关注到静态的工作空间。但是一个人在家久了,停顿的时候会这个固定的空间就会越来越敏感。

总结

总的来说远程工作还是有很多不可取代的优势,对于有追求的小团队完全可以试试。从信息角度来说,这是一种更高级的组织协作方式。这种组织方式本身也是一种技术红利。和线下办公相比,一样的工作时间、工资待遇下,员工的满意度和效率都会更高一些。只不过一方面的极致必然带来另一个方面的劣势,有得有失。远程的代价对于小团队来说是比较小的。

很多朋友知道我是远程工作以后都表示了极大的羡慕。我想这里面很多的“羡慕”是有点不切实际的美好幻想,就和想象的诗和远方一样。线下工作还是远程工作并不是工作的第一性的原理。远程工作从来就不是完美的乌托邦,它只是剥开了“工作”的包装盒。它剥离了通勤的疲惫、办公室的政治、以及那些为了看起来很忙而进行的‘表演性工作’。当物理的束缚消失,工作便赤裸裸地还原为最本质的模样——不是你坐班了多久,而是你交付了什么

我们不再被公司的打卡机驱动,而是被内心的秩序感驱动。代价是必须独自面对‘原子化’的孤独,以及需要不断对抗生活与工作边界消融的混沌。真正决定幸福感的,不是在哪上班,而是你能不能建立一套属于自己的秩序。

在 AI 与本土化双重浪潮之下,服务器操作系统正迎来历史性变革。由龙蜥社区理事长单位阿里云联合 InfoQ 打造的直播 IP 栏目《AI 进化论:智算时代操作系统的破局之路》,以云、AI、安全等技术与服务器操作系统如何融合演进为主线,聚焦服务器操作系统在智算时代的进化之路,特邀学术权威、行业专家、客户代表围绕原生智能、原生安全、软硬协同等热点议题展开深度对话。截至目前,已直播七期,线上观看人次达 60 万+。

AI 浪潮引发基础设施革命,服务器操作系统也正在迈入“(Cloud+OS)xAI”多维赋能的全新阶段。从国内外主流 OS 的差异化演进、阿里云 Alibaba Cloud Linux 4 的内核突破与性能跃升,到 “GPU 时代”的内核争议;从 OS-Copilot 的升级赋能,到 RISC-V 异构算力适配的前沿探索,操作系统的 “涅槃重生” 需要跨越哪些技术鸿沟?

《AI 进化论:智算时代操作系统的破局之路》系列直播第八期将于 1 月 22 日 14:00 开始,特别邀请到,阿里云智能集团总监、龙蜥技术委员会主席杨勇,中国科学院软件研究所高级工程师、RISC-V 行业生态负责人郭松柳,InfoQ 极客传媒策划编辑凌敏三位嘉宾,聚焦从业者核心困惑,结合龙蜥社区理事长单位阿里云 AI 增强套件、百万级服务器运维实践与 RISC-V 适配经验,深度拆解 AI 时代操系统的技术重构与价值重塑!

更多直播亮点,可点击下方海报了解,欢迎大家打开微信,扫描二维码预约直播:

—— 完 ——



免费用户可获得

600 次额外的快速请求有效期至 2026 年 2 月 14 日 02:00

付费用户可获得

800 次额外的快速请求有效期至 2026 年 3 月 14 日 02:00
在此期间,所有型号均可通过使用优惠券获取。


活动地址:Birthday Gift | TRAE - Collaborate with Intelligence


📌 转载信息
原作者:
artorius
转载时间:
2026/1/14 11:05:53

定制性很高,可以自定义各种指纹值和更换条件,开源项目地址:


检测地址:


📌 转载信息
原作者:
jaffliang
转载时间:
2026/1/14 11:03:49

官方于 2026.1.7 更新了 0.8.86 版本,新增了 websearch 功能

昨天发现了后 火速研究,火速添加
kiro 的搜索超级快 貌似有缓存,数据没这么新
而且官方的搜索甚至还有思考和加密,kiro 的体验还是赶不上官方的

实现可参考:feat: 新增 websearch 工具支持・hank9999/kiro.rs@0d66014・GitHub


📌 转载信息
原作者:
hank9999
转载时间:
2026/1/14 11:03:34

全新版本,可能有点问题(但我目前没发现)如果有的话麻烦佬友提 issue 或者 pr 了

大致使用就是接入 OIDC 后,
首先新建渠道

然后创建个配置,定义一下模型输入和输出格式就好


然后添加以下渠道

如下是一些配置项:
Cursor 自带的 Opus-4.5 带 thinking 的模型名称为
claude-4.5-opus-high-thinking
不带 thinking 的叫
claude-4.5-opus-high

其中响应处理器 [“thinkingTags”] 的作用是将响应的 reason 转为 content 中的 … ,如此就能在 Cursor 中展示思考内容

仓库地址:GitHub - NickJerome/tiny-ai-api-hub

虽然最后的目标是想实现 Claude Code 也可用(测了下好像可以,但是感觉哪里怪怪的)


📌 转载信息
转载时间:
2026/1/14 11:03:21

HuggingFace Duplicate:

Fork Repo:

已合并最新的 kiro.rs (详情看 https://linux.do/t/topic/1441492?u=lonely ),支持了 WebSearch:


📌 转载信息
转载时间:
2026/1/14 11:02:58

用代码浇灌春天,最终必将见证万紫千红的生态盛景。

她说:“我愿在这群芳争艳的时代,绽放一抹‘吉祥’红!”

吉林银行作为吉林省经济发展的 “金融引擎”,在数字化转型浪潮中勇立潮头。其开发团队通过分布式架构重构、ArkUI-X 框架迁移及原子化服务开发等技术突破,历时 21 个自然日完成 HarmonyOS NEXT 核心功能版本适配。今天让我们采访一下吉林银行的鸿蒙开发者代表卢妍娆女士,一起听她讲讲应用适配 HarmonyOS NEXT 的故事。

自 22 年加入吉林银行以来,卢妍娆便先后投入到了新一代核心系统建设以及吉林银行手机银行 6.0 迭代建设。23 年年末吉林银行对应用鸿蒙化表示明确认可,认为鸿蒙生态适配不仅仅是吉林银行构建数字金融护城河的战略突破口,更是实现技术自主可控的关键战役,如春潮涌动时抢占滩头的先锋。

“我们非常期待能在 HarmonyOS NEXT 这个种满花卉的生态里,迅速绽放并共同成长,掌握一定的话语权。”

在“打仗”之前,吉林银行研发团队完成了鸿蒙开发的学习,并于 2024 年 2 月与华为达成鸿蒙适配的合作意向。“华为为我们提供了技术上的答疑指导,帮助我们打通开发道路,让后面的开发更加便利。”万事俱备只欠东风,2024 年 5 月底立项申请通过,项目正式启动,基于手机银行 6.0 功能及性能提升后的框架,6 月 18 日正式上架核心交易功能版本。

卢妍娆在 HDD 活动照片

“HarmonyOS NEXT 跟安卓不一样,是个全新的系统,也是全新的体验”

卢妍娆最初担心,吉林银行 App 适配鸿蒙的时候会很困难,因为原有的代码架构需要大规模重构。在鸿蒙声明式开发里,UI 是通过声明式语法描述的,需要重新编写大量的 UI 代码。事实上,开发过程真的很艰难吗?

“遇到技术难题的时候,你可以直接提出问题,鸿蒙的官方技术人员会回复,甚至提供样例代码手把手帮你解决问题。例如,我们开发团队在遇到微信分享无法获取 uicontext,自定义弹窗无法展示的问题时,华为团队提供了示例代码解决问题;由于医保缴费框架存在中断逻辑,导致页面存在多次跳转,华为团队根据每次 ID 的不同,提供样例代码规避了消费者界面多次跳转的问题;开发语音识别功能的时候,我们团队没有足够的经验,华为技术人员提供了语音识别代码 Demo 以及 UI 代码,帮助我们快速实现语音识别功能。”卢妍娆回忆道。相比安卓开发中依赖第三方论坛的“投石问路”,鸿蒙的这种开发者帮扶模式更高效更贴心。

应用适配鸿蒙生态架构

HarmonyOS SDK 接入:纯净之境,开启开发新篇章

“我们的手机银行集成第三方 SDK 有 18 个,HarmonyOS SDK 替代了部分,不仅协同加速,提升了我们开发的效率,还为我们节省了大量成本。” 卢妍娆跟我介绍她们的应用。

传统 SDK 在架构设计上往往存在冗余和复杂的问题,在接入时会引入大量不必要的代码和依赖库。而 HarmonyOS SDK 采用的原子化服务架构,将功能拆解为最小可复用单元,使用起来就像搭建积木一样,我们可以根据需求灵活选择和组合这些原子化服务。这种模块化设计使得代码更加简洁、清晰,如同月光下的水晶棱镜,每一个模块都剔透纯净。以一个简单的天气卡片组件为例,在 HarmonyOS SDK 中,开发者可以通过简洁的代码实现其功能,非常高效简洁。

小组开会研讨方案

"HarmonyOS NEXT 不是简单的系统升级,而是给开发者重新定义了工具类应用的魔法棒。当设备间的界限消失,我们才能真正聚焦于用户需求本身。"对于吉林银行来说,鸿蒙生态带来的意义不仅仅优先他人一步,更重要的是带来了万物互联的时代。

夜幕降临,金融街的灯火次第亮起。在这场由鸿蒙系统掀起的数字化浪潮中,银行正从传统的 "金融服务提供者" 转变为 "智能生态构建者"。当吉林银行以金融级安全纽带编织起千万用户的数字生活场景,既筑牢数字经济时代的安全护城河,又为银行生态的生长埋下战略伏笔;当意图框架读懂用户每一个潜在需求,各个企业正在书写属于自己的全场景智慧篇章。而这,仅仅是鸿蒙星河下的序章。

了解鸿蒙开发认证详情,探索鸿蒙开发者联盟丰富资源,点击链接:​​鸿蒙开发者联盟​​。​这里有开发文档、论坛、工具等,快加入,开启鸿蒙开发之旅!

Instant Melon (即刻瓜田)

一个专注于匿名故事分享与互动的开源平台。
“每个人都有故事,这里是你的树洞,也是你的瓜田。”

项目简介

最近闲来无事(忘记在哪刷到了一个类似的平台),就 A 了一个匿名吃瓜平台。
起因是想做一个纯粹的、无压力的吐槽和分享空间。项目目前已经开源,欢迎各位佬品鉴。

给我一些优化建议。如果觉得还不错,求一个宝贵的 Star

GitHub 地址: https://github.com/AIME-JF/Instant-Melon
在线地址:Instant-Melon


核心功能

  • 匿名发布:无需复杂的注册流程(匿名),保护隐私,畅所欲言。
  • 吃瓜互动:支持评论、双击点赞、表情互动,让吃瓜更有趣。
  • 清新 UI:精心设计的界面,适配移动端与桌面端,阅读体验极佳。
  • 内容管理:内置简单的审核机制,防止滥用。

  • 前端框架:Next.js (App Router) / Vue3
  • UI 组件:TailwindCSS / ShadcnUI
  • 后端 / 数据库: PostgreSQL / FastAPI

(PS:现在没啥内容在里面,因为根本没人玩 ,有几个内容是搬站内佬的)

快速开始 / 部署

  1. git clone [https://github.com/AIME-JF/Instant-Melon.git](https://github.com/AIME-JF/Instant-Melon.git)
    

📌 转载信息
转载时间:
2026/1/14 10:59:40

各位佬如果有去看过文档

它会告诉你默认的有 4 个 agent
主代理的 Plan 和 Build
子代理的 General 和 Explorer
这些里面说的都很清楚了,这里就不赘述了

还有三个内置的主代理 title summary 和 compaction
看名字大家应该能理解是干嘛用的


summary 就是左侧的内容 title 就是右侧的每次对话的小标
compaction 是上下文超限后执行压缩的代理

这三个都是主代理,但是设置为 hidden,所以默认无法自己选择

但是他们的系统提示词都是可以覆盖修改的
这就可以实现比如归纳总结都以中文输出的目的

以 title 为例
全局路径~/user/.config/opencode/agent/
项目路径 项目目录 /.opencode/agent/
编写 title.md

我用的是默认的内容调整为符合中文的形式,大家也可以随便改成符合自己需求的

---
description: 标题生成(中文输出)
---

你是一个标题生成器。你只输出一个对话标题。不输出其他任何内容。

<task>
生成一个简短的标题,帮助用户稍后找到此对话。

严格遵守 <rules> 中的所有规则。
参考 <examples> 了解什么样的标题是好的。
你的输出必须满足:
- 仅一行
- ≤ 50 个字符
- 必须使用中文输出
- 没有解释或多余的废话
</task>

<rules>
- 标题必须语法通顺,读起来自然,拒绝词语堆砌
- 绝不要在标题中包含工具名称(如 "read tool", "bash tool", "edit tool")
- 聚焦于用户想要检索的核心话题或问题
- 变换措辞——避免重复的模式(如总是以“分析”、“正在”开头)
- 当提到文件时,关注用户想对文件做什么,而不仅仅是他们提供了文件
- 保留关键信息:技术术语、数字、文件名、HTTP 状态码
- 移除无意义的虚词(如 the, this, my, a, an 等)
- 不要预设技术栈
- 不要调用任何工具
- 绝不回答用户的问题,只为对话生成标题
- 标题中不要包含“总结”或“生成”这类元描述词汇
- 即使输入很少,也要输出有意义的内容,不要抱怨输入无法生成
- 如果用户消息很短或属于闲聊(例如 "hello", "lol", "what's up", "hey"):
  → 创建一个反映用户语气或意图的标题(如:问候、快速确认、闲聊、开场白 等)
</rules>

<examples>
"debug 500 errors in production" → 调试生产环境 500 错误
"refactor user service" → 重构用户服务
"why is app.js failing" → 排查 app.js 故障
"implement rate limiting" → 实现速率限制
"how do I connect postgres to my API" → Postgres API 连接方法
"best practices for React hooks" → React hooks 最佳实践
"@src/auth.ts can you add refresh token support" → src/auth.ts 添加刷新令牌支持
"@utils/parser.ts this is broken" → 修复 utils/parser.ts 错误
"look at @config.json" → 审查 config.json 配置
"@App.tsx add dark mode toggle" → App.tsx 添加暗黑模式切换
</examples>

另外附上三个原本的内容,大家可以根据需要进行调整修改

title

You are a title generator. You output ONLY a thread title. Nothing else.

<task>
Generate a brief title that would help the user find this conversation later.

Follow all rules in <rules>
Use the <examples> so you know what a good title looks like.
Your output must be:
- A single line
- ≤50 characters
- No explanations
</task>

<rules>
- Title must be grammatically correct and read naturally - no word salad
- Never include tool names in the title (e.g. "read tool", "bash tool", "edit tool")
- Focus on the main topic or question the user needs to retrieve
- Vary your phrasing - avoid repetitive patterns like always starting with "Analyzing"
- When a file is mentioned, focus on WHAT the user wants to do WITH the file, not just that they shared it
- Keep exact: technical terms, numbers, filenames, HTTP codes
- Remove: the, this, my, a, an
- Never assume tech stack
- Never use tools
- NEVER respond to questions, just generate a title for the conversation
- The title should NEVER include "summarizing" or "generating" when generating a title
- DO NOT SAY YOU CANNOT GENERATE A TITLE OR COMPLAIN ABOUT THE INPUT
- Always output something meaningful, even if the input is minimal.
- If the user message is short or conversational (e.g. "hello", "lol", "what's up", "hey"):
  → create a title that reflects the user's tone or intent (such as Greeting, Quick check-in, Light chat, Intro message, etc.)
</rules>

<examples>
"debug 500 errors in production" → Debugging production 500 errors
"refactor user service" → Refactoring user service
"why is app.js failing" → app.js failure investigation
"implement rate limiting" → Rate limiting implementation
"how do I connect postgres to my API" → Postgres API connection
"best practices for React hooks" → React hooks best practices
"@src/auth.ts can you add refresh token support" → Auth refresh token support
"@utils/parser.ts this is broken" → Parser bug fix
"look at @config.json" → Config review
"@App.tsx add dark mode toggle" → Dark mode toggle in App
</examples>

summary

Summarize what was done in this conversation. Write like a pull request description.

Rules:
- 2-3 sentences max
- Describe the changes made, not the process
- Do not mention running tests, builds, or other validation steps
- Do not explain what the user asked for - Write in first person (I added..., I fixed...)
- Never ask questions or add new questions
- If the conversation ends with an unanswered question to the user, preserve that exact question
- If the conversation ends with an imperative statement or request to the user (e.g. "Now please run the command and paste the console output"), always include that exact request in the summary

compaction

You are a helpful AI assistant tasked with summarizing conversations.

When asked to summarize, provide a detailed but concise summary of the conversation. 
Focus on information that would be helpful for continuing the conversation, including:
- What was done - What is currently being worked on - Which files are being modified - What needs to be done next - Key user requests, constraints, or preferences that should persist - Important technical decisions and why they were made

Your summary should be comprehensive enough to provide context but concise enough to be quickly understood.

📌 转载信息
转载时间:
2026/1/14 10:59:25

相信很多人都知道反重力 opus4.5 是怎么用的

条件1:准备chrome会员账号,可以到闲鱼上购买

条件2: 下载 [反重力客户端](https://github.com/lbjlaq/Antigravity-Manager)

这边我不过多的介绍,大家自行搜索 + AI 研究

今天我要介绍的是一个高级玩法

cch 反代 Antigravity 的反代,下载后自行用 AI 研究下。

大家可以看到我发的 gemini 3 pro 也能用,这是怎么做到的尼

先看配置:

Antigravity 暴露的端口是 8045,我们用 docker 部署 claude-code-hub 后正常是访问不到电脑上 8045 端口的,必须把电脑上的 8045 端口暴露给 docker(这里不过多介绍,大家自行用 ai 研究)

然后看到我的截图中供应商类型是 Gemini (Google Gemini API), 这一步很关键,我们的 Gemini 的用法 不是在 gemini cli 之中使用的,而是通过 api 转发,转发给 opencode 使用的,opencode 是一款开源的类似 claude code cli 的脚手架,链接贴进来了,大家自行用 ai 研究一下,当然还可以用 oh my opencode 强化一下你的 cli

然后,更改一下配置

code ~/.config/opencode/opencode.json

provider 属性下新增

"google": { "options": { "baseURL": "http://127.0.0.1:13000", "apiKey": "your api key (在 http://localhost:23000/zh-CN/dashboard/users 新增用户后获取)" }, "models": { "antigravity-gemini-3-pro-high": { "name": "Gemini 3 Pro High (Antigravity)", "limit": { "context": 1048576, "output": 65535 }, "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] } }, "antigravity-gemini-3-flash": { "name": "Gemini 3 Flash (Antigravity)", "limit": { "context": 1048576, "output": 65536 }, "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] } } } } 

然后我们运行 opencode 输入 /models,将模型切到如下

最后看下效果


📌 转载信息
原作者:
carve
转载时间:
2026/1/14 10:59:17

Claude Code Workflow (CCW)


Claude Code Workflow (CCW) 是一个 JSON 驱动的多智能体开发框架,具有智能 CLI 编排(Gemini/Qwen/Codex)、上下文优先架构和自动化工作流执行。它将 AI 开发从简单的提示词链接转变为一个强大的编排系统。

项目地址:

catlog22/Claude-Code-Workflow: JSON-driven multi-agent development framework with intelligent CLI orchestration (Gemini/Qwen/Codex), context-first architecture, and automated workflow execution

安装方式:

npm install -g claude-code-workflow
ccw install #安装工作流
ccw view #打开看板 


个人理解

无论 Skills 还是 Slash command 本质都是规范化的提示词,Skill 可以看作有标准结构文件结构的提示词组合。渐进式披露是一种设计思路,并不是 Skill 的机制,slash command 也可实现。在 Skill 没有出来之前,CCW 的工作流命令已经采用类似的设计机制,将一个复杂的工作流转为链式调用 command,以提升命令遵循度。对于长序列任务,例如 /workflow:plan 在上下文收集阶段只关注于上下文收集,产出内容再调用任务生成命令,而不是将上下文探索和生成命令写到一起。

编写 Skill 也会遇到 command 执行过程中上下文被挤爆的问题,压缩后可能遗忘内容,进而影响执行指令。根据前面开发经验,总结了一些设计技巧,创建了 Skill-generator 专门为复杂工作流生成的 meta-Skill。


如何使用 CCW 进行 Skill 设计

总结起来就是三步:


执行流程

步骤 1: CLI 分析

提示词输入:


可以在 ccw view 界面查看流式输出:

步骤 2: 完成后进行 Review




步骤 3: 进行 Agent 修复


SKill.md

---
name: review-code
description: Multi-dimensional code review with structured reports. Analyzes correctness, readability, performance, security, testing, and architecture. Triggers on "review code", "code review", "审查代码", "代码审查".
allowed-tools: Task, AskUserQuestion, Read, Write, Glob, Grep, Bash, mcp__ace-tool__search_context, mcp__ide__getDiagnostics
---

# Review Code

Multi-dimensional code review skill that analyzes code across 6 key dimensions and generates structured review reports with actionable recommendations.

## Architecture Overview

┌─────────────────────────────────────────────────────────────────┐
│  ⚠️ Phase 0: Specification Study (强制前置)                       │
│              → 阅读 specs/review-dimensions.md                   │
│              → 理解审查维度和问题分类标准                          │
└───────────────┬─────────────────────────────────────────────────┘
                ↓
┌─────────────────────────────────────────────────────────────────┐
│           Orchestrator (状态驱动决策)                             │
│           → 读取状态 → 选择审查动作 → 执行 → 更新状态              │
└───────────────┬─────────────────────────────────────────────────┘
                │
    ┌───────────┼───────────┬───────────┬───────────┐
    ↓           ↓           ↓           ↓           ↓
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Collect │ │ Quick   │ │ Deep    │ │ Report  │ │Complete │
│ Context │ │ Scan    │ │ Review  │ │ Generate│ │         │
└─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘
     ↓           ↓           ↓           ↓
┌─────────────────────────────────────────────────────────────────┐
│                     Review Dimensions                            │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐            │
│  │Correctness│ │Readability│ │Performance│ │ Security │            │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘            │
│  ┌──────────┐ ┌──────────┐                                       │
│  │ Testing  │ │Architecture│                                      │
│  └──────────┘ └──────────┘                                       │
└─────────────────────────────────────────────────────────────────┘


## Key Design Principles

1. **多维度审查**: 覆盖正确性、可读性、性能、安全性、测试覆盖、架构一致性六大维度
2. **分层执行**: 快速扫描识别高风险区域,深入审查聚焦关键问题
3. **结构化报告**: 按严重程度分类,提供文件位置和修复建议
4. **状态驱动**: 自主模式,根据审查进度动态选择下一步动作

---

## ⚠️ Mandatory Prerequisites (强制前置条件)

> **⛔ 禁止跳过**: 在执行任何审查操作之前,**必须**完整阅读以下文档。

### 规范文档 (必读)

| Document | Purpose | Priority |
|----------|---------|----------|
| [specs/review-dimensions.md](specs/review-dimensions.md) | 审查维度定义和检查点 | **P0 - 最高** |
| [specs/issue-classification.md](specs/issue-classification.md) | 问题分类和严重程度标准 | **P0 - 最高** |
| [specs/quality-standards.md](specs/quality-standards.md) | 审查质量标准 | P1 |

### 模板文件 (生成前必读)

| Document | Purpose |
|----------|---------|
| [templates/review-report.md](templates/review-report.md) | 审查报告模板 |
| [templates/issue-template.md](templates/issue-template.md) | 问题记录模板 |

---

## Execution Flow


┌─────────────────────────────────────────────────────────────────┐
│  Phase 0: Specification Study (强制前置 - 禁止跳过)               │
│  → Read: specs/review-dimensions.md                              │
│  → Read: specs/issue-classification.md                           │
│  → 理解审查标准和问题分类                                          │
├─────────────────────────────────────────────────────────────────┤
│  Action: collect-context                                         │
│  → 收集目标文件/目录                                               │
│  → 识别技术栈和语言                                                │
│  → Output: state.context (files, language, framework)            │
├─────────────────────────────────────────────────────────────────┤
│  Action: quick-scan                                              │
│  → 快速扫描整体结构                                                │
│  → 识别高风险区域                                                  │
│  → Output: state.risk_areas, state.scan_summary                  │
├─────────────────────────────────────────────────────────────────┤
│  Action: deep-review (per dimension)                             │
│  → 逐维度深入审查                                                  │
│  → 记录发现的问题                                                  │
│  → Output: state.findings[]                                      │
├─────────────────────────────────────────────────────────────────┤
│  Action: generate-report                                         │
│  → 汇总所有发现                                                    │
│  → 生成结构化报告                                                  │
│  → Output: review-report.md                                      │
├─────────────────────────────────────────────────────────────────┤
│  Action: complete                                                │
│  → 保存最终状态                                                    │
│  → 输出审查摘要                                                    │
└─────────────────────────────────────────────────────────────────┘


## Directory Setup


const timestamp = new Date().toISOString().slice(0,19).replace(/[-:T]/g, '');
const workDir = `.workflow/.scratchpad/review-code-${timestamp}`;

Bash(`mkdir -p "${workDir}"`);
Bash(`mkdir -p "${workDir}/findings"`);


## Output Structure


.workflow/.scratchpad/review-code-{timestamp}/
├── state.json                    # 审查状态
├── context.json                  # 目标上下文
├── findings/                     # 问题发现
│   ├── correctness.json
│   ├── readability.json
│   ├── performance.json
│   ├── security.json
│   ├── testing.json
│   └── architecture.json
└── review-report.md              # 最终审查报告


## Review Dimensions

| Dimension | Focus Areas | Key Checks |
|-----------|-------------|------------|
| **Correctness** | 逻辑正确性 | 边界条件、错误处理、null 检查 |
| **Readability** | 代码可读性 | 命名规范、函数长度、注释质量 |
| **Performance** | 性能效率 | 算法复杂度、I/O 优化、资源使用 |
| **Security** | 安全性 | 注入风险、敏感信息、权限控制 |
| **Testing** | 测试覆盖 | 测试充分性、边界覆盖、可维护性 |
| **Architecture** | 架构一致性 | 设计模式、分层结构、依赖管理 |

## Issue Severity Levels

| Level | Prefix | Description | Action Required |
|-------|--------|-------------|-----------------|
| **Critical** | [C] | 阻塞性问题,必须立即修复 | Must fix before merge |
| **High** | [H] | 重要问题,需要修复 | Should fix |
| **Medium** | [M] | 建议改进 | Consider fixing |
| **Low** | [L] | 可选优化 | Nice to have |
| **Info** | [I] | 信息性建议 | For reference |

## Reference Documents

| Document | Purpose |
|----------|---------|
| [phases/orchestrator.md](phases/orchestrator.md) | 审查编排器 |
| [phases/state-schema.md](phases/state-schema.md) | 状态结构定义 |
| [phases/actions/action-collect-context.md](phases/actions/action-collect-context.md) | 收集上下文 |
| [phases/actions/action-quick-scan.md](phases/actions/action-quick-scan.md) | 快速扫描 |
| [phases/actions/action-deep-review.md](phases/actions/action-deep-review.md) | 深入审查 |
| [phases/actions/action-generate-report.md](phases/actions/action-generate-report.md) | 生成报告 |
| [phases/actions/action-complete.md](phases/actions/action-complete.md) | 完成审查 |
| [specs/review-dimensions.md](specs/review-dimensions.md) | 审查维度规范 |
| [specs/issue-classification.md](specs/issue-classification.md) | 问题分类标准 |
| [specs/quality-standards.md](specs/quality-standards.md) | 质量标准 |
| [templates/review-report.md](templates/review-report.md) | 报告模板 |
| [templates/issue-template.md](templates/issue-template.md) | 问题模板 |

  review-code/
  ├── SKILL.md                  
  ├── phases/
  │   ├── orchestrator.md       # 编排器
  │   ├── state-schema.md       # 状态定义
  │   └── actions/
  │       ├── action-collect-context.md
  │       ├── action-quick-scan.md
  │       ├── action-deep-review.md
  │       ├── action-generate-report.md
  │       └── action-complete.md
  ├── specs/
  │   ├── review-dimensions.md  
  │   ├── issue-classification.md # 问题分类标准
  │   └── quality-standards.md  # 质量标准
  └── templates/
      ├── review-report.md      # 报告模板
      └── issue-template.md     # 问题模板 


总结

通过上述三个步骤生成一份规范化提示词。如需获得更优效果,需要观察执行过程,借助 cli 分析进行微调。


下贴预告


— 全文完 (采用 ccw text-formatter skill 进行格式化) —


📌 转载信息
转载时间:
2026/1/14 10:58:40

前言

之前薅了某为云的 2c2g 鸡,一直吃着灰,反观我的另一台 1c1g 鸡跑了好几个服务,是时候迁移了,顺便也来试试传说中的 GitOps,做个步骤记录,欢迎佬们提提建议

迁移

首先在所有鸡上都安装上 docker

随后先是 Portainer 的迁移。

  1. 在旧机器上:

    • 登录 Portainer Web 界面。

    • 进入 SettingsBackup

    • 选择 Download backup file

    • 设置个密码(可选),点击 Download。你会得到一个 .tar.gz 文件。

  2. 在新机器上:

    • ssh 上去,拉起一个新的、空的 Portainer。

    • 第一次访问登录页面时,不要创建新管理员,点击下方的 Restore from file

    • 上传刚才下载的备份文件,然后配置都回来了

然后是 docker 的容器部分。首先确认卷名,找到你真正需要的数据卷

docker volume ls # 找到后停掉
docker stop <容器ID>

打包

sudo -i
# 进入 Docker 卷目录 cd /var/lib/docker/volumes/ 
# 把你需要迁移的卷打包
tar -czvf /root/migration.tar.gz gpt_load-data newapi-data sub-store_data
# 直接 scp 扔过去 # 这里我尝试了 Termius 的 SFTP,估计是走本机中转,速度只有几十 k
scp /root/migration.tar.gz root@<IP>:/var/lib/docker/volumes/
# 在另一台机子上 sudo -i
cd /var/lib/docker/volumes/
tar -xzvf migration.tar.gz
# 让 docker 认出来
docker volume create gpt_load-data 
docker volume create newapi-data 
docker volume create sub-store_data

仓库配置

你需要把你的所有 docker-compose 文件组织起来,初始化 Git 仓库里并上传,这里以上传到 GitHub 为例。

文件结构仅供参考:

│  renovate.json
│          
├─ai
│      docker-compose.yml
│      
├─cloudflare-imgbed
│      docker-compose.yml
│      wrangler.toml
│      
├─network
│  │  docker-compose.yml
│  │  
│  ├─conf
│  │      Caddyfile
│  │      
│  └─site
├─nezha-dashboard
│      docker-compose.yml
│      
├─portainer
│      docker-compose.yml
│      
└─sub-store
        docker-compose.yml

接下来所有的容器相关操作都来到 Portainer 里面进行。

Portainer 配置

去 Portainer 创建 stack,Build method 选择到仓库类型,照着填就行

注意,如果你的 compose 文件里还依赖于仓库里的其他文件,比如 .env,那么得把下图中最下面的 Enable relative path volumes 勾上,Portainer 会从你填写的目录里把你的整个仓库拉下来再执行 compose 命令。

Re-pull image 这里我没有测试未勾选的效果,Force redeployment 的效果是每次 Webhook 触发时都会让容器重新部署,我这里没有勾选。

然后我们来到 GitHub 仓库里,填入对应 Webhook 地址,Payload URL 填 Portainer 给的, Content type 两种都可以。

完成后点 Update 就可以了。如果你之前给 Portainer 配置过 ZeroTrust,测试不通可能是 cf 那里没有配置 bypass 策略,得加个策略放行一下。

Note

如果后续要给 Portainer 配置多节点,记得在 cf 那里还要放行一个 api/endpoints

不出意外的话就可以了。

一些可能的报错

ErrorFailureCould not get the contents of the file '**/docker-compose.yml
检查 compose 文件是否有误,比如是否写了正确的镜像名

Renovate 配置

现在我们只是实现了代码即基础设施,上了一辆定制的电动车,但是不踩油门不动,每个镜像都要手动改镜像版本再 git push,太麻烦了。接下来我们将引入Renovate 机器人,实现自动更新镜像。

Warning

我也没用过 WatchTower,几种方法也没有孰好孰坏之分,这里不展开讨论

首先我们来把机器人安装到我们的仓库里,直达链接。添加到新仓库后会跳转到新页面来配置。这里没有许可证,选第二个免费版。

下一步,选择 Scan and Alert,这样子就会自动提 PR 了。

配置完成会跳转到个人主页,这里还能看到对应仓库的每一次触发日志

等一会仓库会自动收到一条来自机器人的 PR,类似于下图:

这条 PR 里会列出你的所有 compose 文件以及更新提示,可以直接 Merge,也可以顺手直接用下面配置覆盖。合并之后会多出一个 Dependency Dashboard 的 issue,可以在这里进行快速操作。

关于 renovate 的配置,建议仔细阅读一遍官方文档,这里放几个可能会用到的

两条路

这里我让 Gemini 和 Claude 改了 2 份 renovate.json,第一份让机器人来管理合并的事,挂了快一周,实测小版本更新自动 commit 没有问题;第二份中 "platformAutomerge" 不填,默认为 true,托管给 GitHub 来管理自动合并。但是 GitHub 私人仓库的 AutoMerge 功能只对 Pro 用户开放,而且我死活调不出来,一个 PR 挂在那里一天了都没有触发自动合并,等一位大佬来帮我看看

作用是上游镜像推了个小更新,就自动 commit 掉,大版本更新提 PR 手动批准

可用配置

{ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "config:recommended" ], "timezone": "Asia/Shanghai", "schedule": ["at any time"], "platformAutomerge": false, "automergeSchedule": ["at any time"], "ignoreTests": true, "packageRules": [ { "matchDatasources": ["docker"], "matchUpdateTypes": ["minor", "patch", "digest"], "automerge": true, "automergeType": "branch", "groupName": "all non-major docker updates" }, { "matchDatasources": ["docker"], "matchUpdateTypes": ["major"], "automerge": false, "addLabels": ["major-update-warning"] } ] } 

[未成功] GitHub Pro 用户配置

需要打开仓库设置里的 Allow auto-merge

在我这里未生效,仅供参考

{ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "config:recommended" ], "timezone": "Asia/Shanghai", "schedule": ["at any time"], "packageRules": [ { "matchDatasources": ["docker"], "matchUpdateTypes": ["minor", "patch", "digest"], "automerge": true, "groupName": "all non-major docker updates" }, { "matchDatasources": ["docker"], "matchUpdateTypes": ["major"], "automerge": false, "addLabels": ["major-update-warning"] } ] } 

后记

修改完文件记得跑一下下方的检查命令:

npx --yes --package renovate -- renovate-config-validator renovate.json 

实测 bunx 不可用:

"err": { "code": "MODULE_NOT_FOUND", 

如果忘了也没关系,机器人会在 issue 里报错

要是没啥问题,机器人就能自动干活了:


📌 转载信息
转载时间:
2026/1/14 10:58:07

Baichuan-M3 是百川智能的新一代医疗强化大型语言模型,是继 Baichuan-M2 之后的一项重要里程碑。

与以往主要侧重静态问答或表面化角色扮演的方法不同,Baichuan-M3 被训练为显式建模临床决策过程,旨在提高在真实医疗实践中的可用性和可靠性。模型不仅仅生成 “听起来合理” 的答案或诸如 “你应尽快就医” 之类的高频模糊建议,而是被训练为主动获取关键临床信息、构建连贯的医疗推理路径,并系统性地约束易产生幻觉的行为。

核心亮点

  • 超越 GPT-5.2:在 HealthBench、HealthBench-Hard、幻觉评估和 SCAN-bench 上均优于 OpenAI 的最新模型,确立了医疗 AI 的新 SOTA(最佳水平)
  • 高保真临床询问:在 SCAN-bench 的三个维度 —— 临床询问、化验检测和诊断 —— 中唯一排名第一的模型
  • 低幻觉、高可靠性:通过 Fact-Aware 强化学习实现比 GPT-5.2 更低的幻觉率,即使在未使用外部工具的情况下也能保持高可靠性

与 Baichuan-M2 相比,Baichuan-M3 在 HealthBench-Hard 上提升了 28 个百分点,达到 44.4%,并且超过了 GPT-5.2。它在 HealthBench 总榜上也排名第一。
在幻觉评估方面,我们将长篇回答拆解为可细化、可验证的原子医学陈述,并将每一条与权威医学证据进行校验。即便在无外部工具的情况下,Baichuan-M3 的幻觉率仍低于 GPT-5.2。

Baichuan-M3 在所有三个核心维度中均排名第一,在 “临床询问” 维度上领先第二名 12.4 个百分点。

体验地址


📌 转载信息
原作者:
BunnHack
转载时间:
2026/1/14 10:57:08

用了 openwebui 大半年了。从一开始的毛胚房到现在的精装修。踩了很多坑,也一步步的看着 openwebui 更强大更好用。我把我理解的各项功能的好用配置分享给大家交流一下

安装

我是在群晖上通过 docker 方式安装的

docker image prune
docker pull ghcr.io/open-webui/open-webui:main
docker pull ghcr.io/open-webui/mcpo:main

除了端口设置外就只有一个文件夹挂载,这是所有用户数据了。我更新的方式都是通过重置这个容器来升级。

本来是没有第一行的。直到我 200G 系统盘因此被占满 ……

添加模型服务器

通过管理员设置 - 外部链接 - 加号 - 把供应商的域名和 apikey 填进来就可以了

他默认会把所有的模型都以私有的方式给你添加到 owu 来。你可以选择禁用某些用不到的模型,让他们不在可选列表里面出现(比如 rag 相关的重拍、向量化模型),也可以用过将私有转公开的方式让其他用户可以使用该模型。最简单也可以通过环境变量 BYPASS_MODEL_ACCESS_CONTROL=True 来放开所有模型,不用单独设置。

我比较喜欢我的小房子 我去 cherrystudio 偷了一些图标美化我的小房子~

可以在管理员设置 - 模型 - 编辑单个模型去上传图标。

函数

我本地的函数比较简单。就配置了联网搜索以及本地事件的补充,告诉 ai 当前时间

当前时间的话如下。

Message Date And Time 函数代码
"""
title: Message Date And Time
author: benasraudys
author_url: https://github.com/benasraudys
funding_url: https://github.com/benasraudys
description: Gives model current date and time context for each message. Don't forget to adjust the timezone in the settings.
version: 0.1.1
required_open_webui_version: 0.6.4
"""

import datetime
import os
from pydantic import BaseModel, Field
from typing import Callable, Awaitable, Any, Optional


class Filter:
    class Valves(BaseModel):
        timezone_hours: int = Field(
            default=0,
            description="Timezone offset hours (e.g., 5 for UTC+5:30, -4 for UTC-4:00)",
        )
        timezone_minutes: int = Field(
            default=0,
            description="Timezone offset minutes (e.g., 30 for UTC+5:30, 45 for UTC-4:45)",
        )
        southern_hemisphere: bool = Field(
            default=False,
            description="Enable if you're in the Southern Hemisphere (Australia, South America, etc.)",
        )

    def __init__(self):
        self.valves = self.Valves(
            **{
                "timezone_hours": int(os.getenv("DATETIME_TIMEZONE_HOURS", "0")),
                "timezone_minutes": int(os.getenv("DATETIME_TIMEZONE_MINUTES", "0")),
                "southern_hemisphere": os.getenv(
                    "DATETIME_SOUTHERN_HEMISPHERE", "false"
                ).lower()
                == "true",
            }
        )

    def get_season(self, month, southern_hemisphere=False):
        if not southern_hemisphere:
            if 3 <= month <= 5:
                return "Spring"
            elif 6 <= month <= 8:
                return "Summer"
            elif 9 <= month <= 11:
                return "Autumn"
            else:
                return "Winter"
        else:
            if 3 <= month <= 5:
                return "Autumn"
            elif 6 <= month <= 8:
                return "Winter"
            elif 9 <= month <= 11:
                return "Spring"
            else:
                return "Summer"

    def get_time_of_day(self, hour):
        if 5 <= hour < 12:
            return "Morning"
        elif 12 <= hour < 17:
            return "Afternoon"
        elif 17 <= hour < 21:
            return "Evening"
        else:
            return "Night"

    async def inlet(
        self,
        body: dict,
        __event_emitter__: Callable[[Any], Awaitable[None]],
        __request__: Any,
        __user__: Optional[dict] = None,
        __model__: Optional[dict] = None,
    ) -> dict:
        now_utc = datetime.datetime.utcnow()

        timezone_hours = self.valves.timezone_hours
        timezone_minutes = self.valves.timezone_minutes
        total_offset_minutes = (timezone_hours * 60) + timezone_minutes

        now = now_utc + datetime.timedelta(minutes=total_offset_minutes)

        month = now.month
        hour = now.hour

        formatted_date = now.strftime("%B %d, %Y")
        formatted_time = now.strftime("%H:%M:%S")
        day_of_week = now.strftime("%A")

        hours_offset = abs(total_offset_minutes) // 60
        minutes_offset = abs(total_offset_minutes) % 60

        if minutes_offset == 0:
            if total_offset_minutes >= 0:
                timezone_str = f"UTC+{hours_offset}"
            else:
                timezone_str = f"UTC-{hours_offset}"
        else:
            if total_offset_minutes >= 0:
                timezone_str = f"UTC+{hours_offset}:{minutes_offset:02d}"
            else:
                timezone_str = f"UTC-{hours_offset}:{minutes_offset:02d}"

        season = self.get_season(month, self.valves.southern_hemisphere)
        time_of_day = self.get_time_of_day(hour)

        context = f"Current date is {day_of_week}, {formatted_date}, {season}, {time_of_day}, the user time is {formatted_time} {timezone_str}"

        datetime_message = {
            "role": "system",
            "content": f"Time context: {context}. ",
        }

        if "messages" in body and isinstance(body["messages"], list):
            body["messages"].insert(0, datetime_message)
        else:
            body["messages"] = [datetime_message]

        return body

联网搜索的话主要是基于各家模型自己的能力(大概也就是在消息接口参数里面注入模型对应的工具,但是一般都要额外付费,所以我现在基本不用了) 我了解到的,gemini 有这样的函数配置,以及 openai 流式接口也有。这个可以站内查对应工具直接使用。函数认准方块佬就对了。加个方块,搜索更快!

两个工具结合就能达到以下示例的效果

外部工具

这里主要是提供 mcp 的能力 说实话挺难用的。但是我刚好联网搜索走其他方式都有些不好用。我目前是通过 mcp 的方式来实现的。

部署 mcpo

我通过在本地 docker 部署 mcpo,镜像地址在一开始应该已经准备好了。

我群晖这边的部署操作主要是配置了端口为 38000 以及启动命令

mcpo --config /app/mcp-config.json --hot-reload

然后通过文件挂载 /app/mcp-config.json 这个配置文件

文件内容可以参考下面这个

{
    "mcpServers": {
      "grok-search": {
	      "type": "stdio",
	      "command": "npx",
	      "args": ["-y", "grok-search-mcp"],
	      "env": {
	        "GROK_API_URL": "https://-----/v1",
	        "GROK_API_KEY": "-----",
	        "GROK_MODEL": "grok-4-fast",
	        "DEBUG": "true"
	      }
      }
    }
  }

然后我们就可以直接访问 38000 这个端口就可以看到 json 返回了 也能知道你哪些工具启动成功了。

我们就能去管理员设置 - 外部工具 - 加号 新增工具服务器了

在配置完成之后我们可以在对话界面去勾选这个工具 对他进行一些询问。示例如下

当然你可能觉得每一次点都好费劲,当然我们也可以到 管理员设置 - 模型 - 对应模型去默认启动某些工具或其他功能

知识库

知识库我用的其实不多。但是我觉得效果还是不错的。就是遇到这个坑导致 rag 检索不符合预期

内容提取

首先提取引擎我推荐 mistral (主要可以白嫖) 效果也不错 我用过自部署的 tika。有些中文 pdf 会乱码 这个挺好的。但是我还是建议如果可以自己转 md 把

嵌入和检索

这一块我也是跟着 ai 配的。效果还是不错的。

上传合适的文档,结果也能够图文并茂

辅助功能

在管理员设置 - 界面 - 任务这边可以配置一些异步的小任务是否使用 ai 生成

我就开了这个标题自动生成(效果图如左上角),openai 每天免费的 nano 用不完就来这边干点活吧。有标题了也方便你到时候快速查询历史的对话。

图片生成

目前我觉得 owu 做的这个功能比较死板(主要问题是只能填入一个模型)

我有个朋友部署好了 comfy,等给我之后这边估计Pro 就要从对话模型里面选了。

通过这种方式配置好的话 体验和 openai 就很像了。对话勾选一下画图。描述需求就好了


画图也踩过一些坑,比如分享一个 openwebui 中生图模型 chunk too big 问题的解决办法 。里面也有其他佬遇到的其他坑和他们的解决方式。L 站真的是我见过 ai 相关信息最快的一个站了。在站内搜不到,我估计谷歌也搜不到

结语

以上就是我的配置心得。希望我的分享能给你一些启发,也欢迎大家交流各自的 “装修方案”。


📌 转载信息
原作者:
lie5860
转载时间:
2026/1/14 10:56:16

替换 antigravity 里面的一个文件,重启即可使用.

版本更新

1.2.1: 修复了 mermaid 提前渲染导致的截断问题.
1.2.0: 新增 Mermaid 流程图渲染功能
1.1.0: 来自 github 社区的提交,增加了 LaTeX 公式的渲染支持,增加了悬浮复制按钮,重构了代码.

1.0.0: 表格颜色增强,增加回复内容一键复制按钮.

图片展示:

1.2.0

原版 mermaid 图

增强渲染版 mermaid 图

1.1.0

原版公式

增强渲染版公式

1.0.0

初版展示效果

复制代码块格式的增强


📌 转载信息
转载时间:
2026/1/14 10:55:34

刚刚在推上看到的
ymcki 给 Kimi-Linear-48B-A3B 加上了 MLA KV cache
实测下来 1M 上下文 F16 KV cache 显存占用从 140G 降到 15G。
如果显存少一点的用户可以选择(with KV Quant )

  • q8_0: 7.9GB
  • q5_1: 5.6GB
  • q4_0: 4.2GB
    有兴趣可以玩看看

Kimi-Linear-48B 的效果


📌 转载信息
原作者:
josenlou
转载时间:
2026/1/14 10:54:29

接上回:Zotero 全面学习指南(黑板报画风)

今天是第二期,本期视频采用水彩画风教学,主要为科研小白扫除一些障碍,希望佬友们喜欢。研究生院官网已同步更新。

特此鸣谢佬友 @555hai 的大力支持!!!
直达链接:

后续规划内容已在路上,敬请期待:


📌 转载信息
原作者:
xuzhu123
转载时间:
2026/1/14 10:54:14