<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title>小光头禅院</title><id>https://www.tgf21.com/blog/</id><link href="https://www.tgf21.com/blog/"/><link rel="self" href="https://www.tgf21.com/blog/feed.xml"/><updated>2026-11-02T22:00:00+08:00</updated><author><name>小光头禅院</name></author><entry><title>使用Hexo和github搭建个人博客</title><id>https://www.tgf21.com/blog/post/fc33988f.html</id><link href="https://www.tgf21.com/blog/post/fc33988f.html"/><published>2014-10-25T22:00:00+08:00</published><updated>2014-10-25T22:00:00+08:00</updated><summary>这篇文章详细描述了，如何使用hexo搭建个人静态博客。 前言 我以前的个人博客，是使用 jekyll 搭建的，jekyll 是使用ruby开发的，很多的语法和使用习惯都有深深的ruby风格，按理说，作为一个rubyer，…</summary></entry><entry><title>推荐Sublime插件</title><id>https://www.tgf21.com/blog/post/f487045f.html</id><link href="https://www.tgf21.com/blog/post/f487045f.html"/><published>2015-06-23T22:00:00+08:00</published><updated>2015-06-23T22:00:00+08:00</updated><summary>作为一个码农，一款趁手的编辑器是必不可少的，最近开始使用了SublimeText了，的确是很好的。它用户界面十分整洁，功能非同凡响，性能快得出奇。这些非常棒的特性包括任意跳转（Goto Anything）、多重选择（mu…</summary></entry><entry><title>MAC常用快捷键</title><id>https://www.tgf21.com/blog/post/74904c71.html</id><link href="https://www.tgf21.com/blog/post/74904c71.html"/><published>2015-08-12T22:00:00+08:00</published><updated>2015-08-12T22:00:00+08:00</updated><summary>杂乱的记录一下一些常用快捷键。 快捷键 在x86版中： win键 ＝ 花键 ctrl键 ＝ Ctrl^键 Alt 键 ＝ Option shift 键 ＝ shift 屏幕捕捉快捷键 动作……………………….保存到…………</summary></entry><entry><title>Hexo进阶以及常见问题</title><id>https://www.tgf21.com/blog/post/951e94ad.html</id><link href="https://www.tgf21.com/blog/post/951e94ad.html"/><published>2015-12-30T22:00:00+08:00</published><updated>2015-12-30T22:00:00+08:00</updated><summary>本文主要包括一些hexo的进阶功能，比如自定义主题，静态网页，评论，统计，RSS等等。。。 Hexo基础知识，请浏览本博客前面的文章- 如何使用hexo搭建个人博客 。 heox进阶 添加个性化域名 注册一个域名，可以选…</summary></entry><entry><title>初识Aifred</title><id>https://www.tgf21.com/blog/post/9a8eb8.html</id><link href="https://www.tgf21.com/blog/post/9a8eb8.html"/><published>2016-03-25T22:00:00+08:00</published><updated>2016-03-25T22:00:00+08:00</updated><summary>第一次知道AIfred，就被它强大的能力深深的吸引了！ 小TIPs 安装（不说了去 Google 吧） 基础快捷键：option+space 打开应用程序：Alfred 几乎是一切程序的入口，你再也不需要找妈妈要开始菜单…</summary></entry><entry><title>jQuery小知识</title><id>https://www.tgf21.com/blog/post/83c07de9.html</id><link href="https://www.tgf21.com/blog/post/83c07de9.html"/><published>2016-04-22T22:00:00+08:00</published><updated>2016-04-22T22:00:00+08:00</updated><summary>回到顶部的按钮 通过使用jQuery中的animate 与 scrollTop 方法可以创建一个非常简易的带有平滑滚动的回到顶部的按钮： 1 2 3 4 5 6 7 // Back to top $('a.top').c…</summary></entry><entry><title>JavaScript面试题</title><id>https://www.tgf21.com/blog/post/3a213ca.html</id><link href="https://www.tgf21.com/blog/post/3a213ca.html"/><published>2016-05-09T22:00:00+08:00</published><updated>2016-05-09T22:00:00+08:00</updated><summary>前言 看到一个比较涉及知识面较广的一个面试题，在这里给大家分享一下。 所检测的都是JS中比较常见却很容易混淆的知识点，包括： 变量作用域 变量声明提升 this 关键字 运算符优先级 问题 1 2 3 4 5 6 7 8…</summary></entry><entry><title>Ember-Unit-Test</title><id>https://www.tgf21.com/blog/post/c45a3bf6.html</id><link href="https://www.tgf21.com/blog/post/c45a3bf6.html"/><published>2016-06-27T22:00:00+08:00</published><updated>2016-06-27T22:00:00+08:00</updated><summary>Testing is a core part of the Ember framework and its development cycle. Test framework QUnit PhantomJs How to…</summary></entry><entry><title>React:手把手搭建React大型应用</title><id>https://www.tgf21.com/blog/post/66849a10.html</id><link href="https://www.tgf21.com/blog/post/66849a10.html"/><published>2016-07-10T22:00:00+08:00</published><updated>2016-07-10T22:00:00+08:00</updated><summary>前言 最近正在奋力研究React中，被它的魅力深深的吸引了。 关于如何使用React和外部API搭建大型应用，看到一遍非常好的文章，于是乎翻译了一份，方便大家一起学习。 本文会一步一步演示如何搭建一个完整的React的项…</summary></entry><entry><title>Redis小入门</title><id>https://www.tgf21.com/blog/post/c4bcd63f.html</id><link href="https://www.tgf21.com/blog/post/c4bcd63f.html"/><published>2016-08-21T22:00:00+08:00</published><updated>2016-08-21T22:00:00+08:00</updated><summary>两年前买了 ， 可是一直都没有拿起来研究，最近team使用Redis，才开始有所了解，捡回来重新看看。 总结一些基本的不能更基本的知识： 数据结构 字符串 - String string类型是二进制安全的。意思是redi…</summary></entry><entry><title>让你的Vim支持ES6和React</title><id>https://www.tgf21.com/blog/post/26f2ab8a.html</id><link href="https://www.tgf21.com/blog/post/26f2ab8a.html"/><published>2016-09-30T22:00:00+08:00</published><updated>2016-09-30T22:00:00+08:00</updated><summary>开始进入到了全民ES6的时代了，React 也越来越火，作为码农神器的Vim怎么能掉队呢？ 自从开始使用 ES6 和 React 以来，vim的高亮和语法检查就不听话了，很多ES6的新特性都不认识了，怎么办呢？ JSX …</summary></entry><entry><title>Vue小结</title><id>https://www.tgf21.com/blog/post/fb918704.html</id><link href="https://www.tgf21.com/blog/post/fb918704.html"/><published>2016-11-24T22:00:00+08:00</published><updated>2016-11-24T22:00:00+08:00</updated><summary>试着用Vue做了一个小东西，总结一下，很多都是官网有的，只是记录下了作为一个学习笔记吧。 Vuejs 组件 组件的使用，需要先注册再使用。 1 Vue.component('componentName',{ /*comp…</summary></entry><entry><title>学习资料整理</title><id>https://www.tgf21.com/blog/post/80455495.html</id><link href="https://www.tgf21.com/blog/post/80455495.html"/><published>2017-01-02T22:00:00+08:00</published><updated>2017-01-02T22:00:00+08:00</updated><summary>人生都是一个一个阶段开始的，在去年的这个时候，我大概是自我感觉最良好的时候，也恰恰是最无知的时候。那时候，感觉自己无所不能，特别是前端相关的知识，总觉得没有解决不了的问题和不会的知识。 随着时间和经验的积累，越来越发现自…</summary></entry><entry><title>JS代码运行性能检测</title><id>https://www.tgf21.com/blog/post/dc8fc4a0.html</id><link href="https://www.tgf21.com/blog/post/dc8fc4a0.html"/><published>2017-01-28T22:00:00+08:00</published><updated>2017-01-28T22:00:00+08:00</updated><summary>有时候需要检测一段代码的性能，怎么做呢？ 借用chrome检测可以帮忙检测。 启动chrome 通过命令行： 1 chrome –enable-memory-info 启动chrome 创建一个HTML： 1 2 3 4…</summary></entry><entry><title>JavaScript ES6 核心功能一览[转]</title><id>https://www.tgf21.com/blog/post/b0c4a4b8.html</id><link href="https://www.tgf21.com/blog/post/b0c4a4b8.html"/><published>2017-02-22T22:00:00+08:00</published><updated>2017-02-22T22:00:00+08:00</updated><summary>JavaScript 在过去几年里发生了很大的变化。这里介绍 12 个你马上就能用的新功能。 JavaScript 历史 新的语言规范被称作 ECMAScript 6。也称为 ES6 或 ES2015+ 。 自从 199…</summary></entry><entry><title>How to Work With GitHub and Multiple Accounts</title><id>https://www.tgf21.com/blog/post/1952925e.html</id><link href="https://www.tgf21.com/blog/post/1952925e.html"/><published>2017-03-16T22:00:00+08:00</published><updated>2017-03-16T22:00:00+08:00</updated><summary>Step 1 - Create a New SSH Key We need to generate a unique SSH key for our second GitHub account. 1 ssh-keygen…</summary></entry><entry><title>Curl常用命令</title><id>https://www.tgf21.com/blog/post/558ee8cc.html</id><link href="https://www.tgf21.com/blog/post/558ee8cc.html"/><published>2017-04-19T22:00:00+08:00</published><updated>2017-04-19T22:00:00+08:00</updated><summary>Download a Single File The following command will get the content of the URL and display it in the STDOUT (i.e…</summary></entry><entry><title>JavaScript编译器如何工作[转]</title><id>https://www.tgf21.com/blog/post/8464b9e6.html</id><link href="https://www.tgf21.com/blog/post/8464b9e6.html"/><published>2017-04-26T22:00:00+08:00</published><updated>2017-04-26T22:00:00+08:00</updated><summary>当我们谈论JavaScript引擎的时候，通常是指它的编译器，一个把人类可读的源代码（本文中指JavaScript代码）翻译成机器可读的指令的程序。如果你还没考虑过你的代码在运行时会发生什么，那么这听起来可能相当神奇，但…</summary></entry><entry><title>Flex布局学习笔记</title><id>https://www.tgf21.com/blog/post/d15bd75e.html</id><link href="https://www.tgf21.com/blog/post/d15bd75e.html"/><published>2017-05-09T22:00:00+08:00</published><updated>2017-05-09T22:00:00+08:00</updated><summary>布局一直是web页面中的重要话题，以前最常见的就是盒子模型的布局，再加上 position 以及 float 属性来完成基本的页面布局。当然我们用的最多的，还是由 Bootstrap 封装过的栅格流水式布局，例如： 1 …</summary></entry><entry><title>浅谈JS的柯里化</title><id>https://www.tgf21.com/blog/post/62d6d33c.html</id><link href="https://www.tgf21.com/blog/post/62d6d33c.html"/><published>2017-06-24T22:00:00+08:00</published><updated>2017-06-24T22:00:00+08:00</updated><summary></summary></entry><entry><title>让你网站变得更酷儿的101中方法[译]</title><id>https://www.tgf21.com/blog/post/36ce4f85.html</id><link href="https://www.tgf21.com/blog/post/36ce4f85.html"/><published>2017-07-08T22:00:00+08:00</published><updated>2017-07-08T22:00:00+08:00</updated><summary>原文链接 : 101 Ways to Make Your Website More Awesome 原文作者 : Nicholas Tart 译文出自 : 掘金翻译计划 译者 : 达仔 校对者: jamweak 、 cy…</summary></entry><entry><title>伪强迫症患者的新MAC配置小记 - 工具篇</title><id>https://www.tgf21.com/blog/post/3775de54.html</id><link href="https://www.tgf21.com/blog/post/3775de54.html"/><published>2017-12-18T22:00:00+08:00</published><updated>2017-12-18T22:00:00+08:00</updated><summary>最近到手2017 Mac Book Pro， 还真有点小兴奋呢。 经过大概两天闲暇时间的折腾，终于可以让我满意的用来工作啦，那么面对一台全新的mac，作为程序员的我，到底做了些什么呢？ 系统设置 设置 Trackpad（…</summary></entry><entry><title>伪强迫症患者的新MAC配置小记-开发环境篇</title><id>https://www.tgf21.com/blog/post/ec5c55fa.html</id><link href="https://www.tgf21.com/blog/post/ec5c55fa.html"/><published>2017-12-20T22:00:00+08:00</published><updated>2017-12-20T22:00:00+08:00</updated><summary>经过前排一篇的安装和设置之后，感觉笔记本在手上顺手多了，我可以打开电脑，打上一直兴奋剂，music up，就可以美美的开始工作啦！！！ 等等，工作？！ 哇，原始的terminal，糟糕的界面，各种缺失。 作为一个程序员，…</summary></entry><entry><title>前端面试知识梳理(ES6, 2018向)</title><id>https://www.tgf21.com/blog/post/2ffb9ce9.html</id><link href="https://www.tgf21.com/blog/post/2ffb9ce9.html"/><published>2018-01-21T22:00:00+08:00</published><updated>2018-01-21T22:00:00+08:00</updated><summary>最近思考了很多，关于生活，关于工作，做出了一些可能影响深远的计划和行动。 这段时间也梳理了一下一些知识点，前端部分，主要是偏向于ES6 的一些可能面试点，罗列了下来。 主要分为以下几个方面的问题： ES6/js 语言相关…</summary></entry><entry><title>2018年初雪的碎碎念</title><id>https://www.tgf21.com/blog/post/a5ae4cf8.html</id><link href="https://www.tgf21.com/blog/post/a5ae4cf8.html"/><published>2018-02-03T22:00:00+08:00</published><updated>2018-02-03T22:00:00+08:00</updated><summary>时光飞逝，光阴冉冉，前几天迎来了2018年的第一场雪，这在上海异常的难得，看着窗外雪白的世界，心瞬间平静了很多，思绪也有机会开始飞扬开始整理！ 不知不觉间，来上海已经八个年头了，四年大学 四年工作，这些年日里，人生发生了…</summary></entry><entry><title>博客评论工具Gitment实现原理探究</title><id>https://www.tgf21.com/blog/post/b6db774d.html</id><link href="https://www.tgf21.com/blog/post/b6db774d.html"/><published>2018-02-08T22:00:00+08:00</published><updated>2018-02-08T22:00:00+08:00</updated><summary>最近对博客又折腾了一轮，换了一个简洁一些的主题，并且对博客SEO和评论系统做了一些优化。 之前的使用的是 Disqus 作为评论系统，但是由于大家都懂的原因,在墙内无法访问，总是造成页面的持续lodaing。 在多方面的…</summary></entry><entry><title>Webpack --- React多页应用</title><id>https://www.tgf21.com/blog/post/ef9db4a8.html</id><link href="https://www.tgf21.com/blog/post/ef9db4a8.html"/><published>2018-10-21T22:00:00+08:00</published><updated>2018-10-21T22:00:00+08:00</updated><summary>前言 工作遇到这样的需求，相同的项目中，需要打包出多个单页应用，但是又希望能够在开发和维护中共享很多配置或者组件。 于是乎，使用 webpack 做了一些简单配置 项目 tree 结构大致如下： 预期目标是， 在 rou…</summary></entry><entry><title>Webpack优化系列(一) -- 性能分析可视化</title><id>https://www.tgf21.com/blog/post/c3fa870e.html</id><link href="https://www.tgf21.com/blog/post/c3fa870e.html"/><published>2018-10-26T22:00:00+08:00</published><updated>2018-10-26T22:00:00+08:00</updated><summary>最近觉得项目的打包速度异常的慢，于是利用webpack插件 webpack-bundle-analyzer 查看打包出来的各个模块的体积已经路径，寻找优化的方向，这里做简单的总结： 安装 1 npm install --…</summary></entry><entry><title>Webpack优化系列(二) -- Js&amp;css模块分离</title><id>https://www.tgf21.com/blog/post/3af31a87.html</id><link href="https://www.tgf21.com/blog/post/3af31a87.html"/><published>2018-10-27T22:00:00+08:00</published><updated>2018-10-27T22:00:00+08:00</updated><summary>Webpack将所有的静态资源都视为模块，比如JavaScript，scss，图片等，从而引入对应的loader去 加载相应的资源，并且处理成相应的模块。和大多数包管理器不一样的是，Webpack的加载器之间可以进行串联…</summary></entry><entry><title>ShadowsocksR科学上网</title><id>https://www.tgf21.com/blog/post/ff56cfee.html</id><link href="https://www.tgf21.com/blog/post/ff56cfee.html"/><published>2018-11-15T22:00:00+08:00</published><updated>2018-11-15T22:00:00+08:00</updated><summary>此文仅仅用于技术交流，科学的进行技术交流所用！！！ 之前一直使用国外的供应商的VPS，速度已经稳定率都非常的让人担忧。最近发现阿里爸爸提供了海外的ECS，经过测试之后，发现稳定性非常高，延迟维持在50ms以内。正好赶上双…</summary></entry><entry><title>Linux(centos) FTP 服务配置</title><id>https://www.tgf21.com/blog/post/661c9634.html</id><link href="https://www.tgf21.com/blog/post/661c9634.html"/><published>2018-11-17T22:00:00+08:00</published><updated>2018-11-17T22:00:00+08:00</updated><summary>最近需要把服务器从腾讯云，迁移到了阿里云（主要是阿里云11月的两折优惠啦），重新折腾了一下部署方式，启用服务器的FTP功能，做一个小记录。 Linux上最著名的FTP要数vsftpd了，小巧轻快，简单易用。 准备工作 安…</summary></entry><entry><title>Linux Iptables 防火墙</title><id>https://www.tgf21.com/blog/post/37a12b05.html</id><link href="https://www.tgf21.com/blog/post/37a12b05.html"/><published>2018-11-24T22:00:00+08:00</published><updated>2018-11-24T22:00:00+08:00</updated><summary>最近把服务器更新成了阿里云的Centos， 于是倒腾了系列防火墙的东东 ~~ Centos中默认的防火墙并不是iptables， 而是firewall，因此需要自己安装iptables服务。 禁用原有的 firewall…</summary></entry><entry><title>Webpack优化系列(三) --- 公共模块与业务模块隔离</title><id>https://www.tgf21.com/blog/post/1092a999.html</id><link href="https://www.tgf21.com/blog/post/1092a999.html"/><published>2018-12-01T22:00:00+08:00</published><updated>2018-12-01T22:00:00+08:00</updated><summary>在我们实际的项目中，模块大致可以分为业务相关的模块，以及公共基础模块，比如第三方的依赖模块（React， lodash， echart）等。 并不会常常更新，而且相对来说体积都比较大。如果和业务代码一起打包，不容易利用缓…</summary></entry><entry><title>Webpack优化系列(四) --- 减肥:压缩和混淆代码</title><id>https://www.tgf21.com/blog/post/aa6507f5.html</id><link href="https://www.tgf21.com/blog/post/aa6507f5.html"/><published>2018-12-01T22:00:00+08:00</published><updated>2018-12-01T22:00:00+08:00</updated><summary>前面通过使用 CommonsChunkPlugin 插件，将公共模块与业务模块分开处理，但是打包输入的文件任然体积比较大，。 浏览器从服务器访问网页时，需要下载这些源文件，文件越大传输时间就越长。 为了提升网页加速速度和…</summary></entry><entry><title>Webpack优化系列(五) --- DllPlugin处理外部依赖</title><id>https://www.tgf21.com/blog/post/36cda913.html</id><link href="https://www.tgf21.com/blog/post/36cda913.html"/><published>2018-12-02T22:00:00+08:00</published><updated>2018-12-02T22:00:00+08:00</updated><summary>我们可能已经遇到了这个问题，webpack已经区别出业务模块和公共模块的代码，为了利用浏览器缓存 我们也添加了hash，然而又有了这些问题： 每次打包，公共组件的hash都会变化，浏览器缓存形同虚设 打包时间越来越长，特…</summary></entry><entry><title>基于GitHub/Webhook的简单自动化部署架构</title><id>https://www.tgf21.com/blog/post/fc66e3c5.html</id><link href="https://www.tgf21.com/blog/post/fc66e3c5.html"/><published>2018-12-09T22:00:00+08:00</published><updated>2018-12-09T22:00:00+08:00</updated><summary>每次个人项目更新以后，都需要通过FTP将代码传到服务器，或者登录服务器上运行部署命令，个人的小项目，又不愿意安装Jenkins等复杂管理工具，能不能达到如下图的自动部署流程呢？ 当有更新时， PUSH 代码到相应代码库 …</summary></entry><entry><title>做权限平台时，我开始重新理解用户、角色与资源</title><id>https://www.tgf21.com/blog/posts/roles-and-resources/</id><link href="https://www.tgf21.com/blog/posts/roles-and-resources/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>做权限平台时，一个“能编辑”就足够让几个人讨论半天。有人指按钮能点，有人指某个空间里的页面能改，还有人把发布也包括在里面。角色表容易建，麻烦在于大家用的是同一个词，说的却不是同一件事。</summary></entry><entry><title>单点登录接通之后，还有哪些用户体验要处理</title><id>https://www.tgf21.com/blog/posts/sso-after-login/</id><link href="https://www.tgf21.com/blog/posts/sso-after-login/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>几个应用都能用同一个账号登录，演示通常很顺。用户实际点开的却可能是一台设备的详情，链接里还带着日期和筛选条件。认证后只回到首页，登录虽然成功，原来的工作却断了。</summary></entry><entry><title>一个用户最终能看到哪些数据？</title><id>https://www.tgf21.com/blog/posts/which-data-can-a-user-see/</id><link href="https://www.tgf21.com/blog/posts/which-data-can-a-user-see/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>菜单少一个通常一眼就能发现，数据少几台设备却难得多。用户看到的是“这张图不对”，研发拿管理员身份一查又有结果，讨论很容易变成来回加权限。</summary></entry><entry><title>把独立产品接入统一权限平台，需要改哪些地方</title><id>https://www.tgf21.com/blog/posts/integrating-authorization/</id><link href="https://www.tgf21.com/blog/posts/integrating-authorization/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>独立产品接入统一权限平台，表面上是换登录和菜单，实际上是在替换一批原来藏在代码里的约定。原来的管理员管多大范围，已有页面属于谁，后台任务以谁的身份跑，都要重新核对。</summary></entry><entry><title>做可视化平台，配置项越来越多怎么办？</title><id>https://www.tgf21.com/blog/posts/too-many-settings/</id><link href="https://www.tgf21.com/blog/posts/too-many-settings/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>可视化产品做久了，配置面板会越来越长。字号、间距、图例，每一项都有一个合理需求。问题是，用户搭趋势图时，通常只想选数据、定时间、看到结果，不想在空白页面上把全部选项学一遍。</summary></entry><entry><title>组件复用以后，数据和交互如何一起复用</title><id>https://www.tgf21.com/blog/posts/reusing-data-and-interactions/</id><link href="https://www.tgf21.com/blog/posts/reusing-data-and-interactions/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>卡片样式存成模板，下次复用很方便。可卡片一旦带上设备、时间和联动，复制就可能把原页面的依赖一起带走。新页面长得没问题，查询的却仍是原来的设备。</summary></entry><entry><title>给现有产品接入 AI：构建一个懂产品的 AI 专家</title><id>https://www.tgf21.com/blog/posts/a-product-expert-assistant/</id><link href="https://www.tgf21.com/blog/posts/a-product-expert-assistant/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>给已有产品加一个聊天入口，用户马上就会问：“这个参数为什么不能选？”通用模型很容易解释参数的概念，却未必知道页面处于只读状态，也未必知道用户用的是哪个版本。</summary></entry><entry><title>从一次 RAG 探索，看业务知识接入的真实难点</title><id>https://www.tgf21.com/blog/posts/rag-in-practice/</id><link href="https://www.tgf21.com/blog/posts/rag-in-practice/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>上个月准备 RAG 分享时，“提问、检索、回答”画在一张图上很直观。整理产品资料以后，困难却大多发生在回答之前。文字找到了，条件没找到，模型仍然会给出方向错误的操作建议。</summary></entry><entry><title>让 AI 修改业务页面：从一句话到一次可验证的变更</title><id>https://www.tgf21.com/blog/posts/a-verifiable-page-change/</id><link href="https://www.tgf21.com/blog/posts/a-verifiable-page-change/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>“标题字号改成 20，能耗换成平均功率。”两句话都像改配置，影响却不同。字号改变外观，指标替换还会改变单位、聚合和坐标轴。让模型直接改整份页面，容易把这些区别藏起来。</summary></entry><entry><title>从工程实现走向产品设计：把一个筛选需求拆清楚</title><id>https://www.tgf21.com/blog/posts/from-implementation-to-product/</id><link href="https://www.tgf21.com/blog/posts/from-implementation-to-product/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>“选一个场站，下面的图表一起刷新。”这类需求我以前很容易直接想到事件总线，导航器发事件，图表订阅，接起来就能跑。最近越来越多参与需求、交互和排期，发现需要解释的事情发生在事件之前。</summary></entry><entry><title>AI 开始写代码以后，前端工程师还要负责什么</title><id>https://www.tgf21.com/blog/posts/engineering-with-ai/</id><link href="https://www.tgf21.com/blog/posts/engineering-with-ai/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>最近用 AI 写页面，布局、样式和简单交互确实快了不少。生成一个能点的保存按钮不难，困难是确认它在请求失败、重复点击、切页和继续输入时仍然保存了正确内容。</summary></entry><entry><title>AI 能生成页面以后，低代码平台还剩下什么价值？</title><id>https://www.tgf21.com/blog/posts/low-code-after-generation/</id><link href="https://www.tgf21.com/blog/posts/low-code-after-generation/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>AI 已经能生成像样的前端页面，原来的低代码可视化产品还应该投入在哪里？这个问题不能只拿一次漂亮的生成结果回答。页面要接业务数据、改参数、发布并交给别人维护，后面的工作同样决定产品能不能用。</summary></entry><entry><title>调研 AI 数据分析产品时，我关注哪些环节</title><id>https://www.tgf21.com/blog/posts/evaluating-ai-analysis-tools/</id><link href="https://www.tgf21.com/blog/posts/evaluating-ai-analysis-tools/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>上传表格，问一个问题，几秒后得到图表和解释，演示很吸引人。若要每周用它做分析，我更关心几次修改以后计算口径有没有变、结果能否核对、导出能否交付。</summary></entry><entry><title>一次流式响应为什么卡住：从页面查到反向代理</title><id>https://www.tgf21.com/blog/posts/why-the-stream-stalled/</id><link href="https://www.tgf21.com/blog/posts/why-the-stream-stalled/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>最近接入流式接口，服务端任务还在跑，页面却没有变化，有时直到最后才一下出现整段内容。接入时调整过代理缓冲和超时，也在测试环境验证过。相同的表象仍可能来自不同位置，不能看到卡顿就归给模型。</summary></entry><entry><title>把 Agent 接进企业系统，需要怎样的平台能力</title><id>https://www.tgf21.com/blog/posts/agents-in-enterprise-systems/</id><link href="https://www.tgf21.com/blog/posts/agents-in-enterprise-systems/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>注册 Agent、接 MCP 工具、关联知识和管理提示词，经常被当成一组配置页面。真正连进业务系统才会发现，可见的工具不一定能用，能连接也不一定有权查询，改完配置还可能影响正在运行的会话。</summary></entry><entry><title>研究 ACP 以后，我怎样划分协议、框架和平台的职责</title><id>https://www.tgf21.com/blog/posts/acp-and-platform-boundaries/</id><link href="https://www.tgf21.com/blog/posts/acp-and-platform-boundaries/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>接第二种 Agent 实现时，会话、工具调用、权限请求和取消的差异就开始影响界面。若每种实现都带来一套聊天状态，接入数量增加以后，界面与执行侧很难一起维护。</summary></entry><entry><title>从告警到处理报告：一个业务 Agent 应用的完整路径</title><id>https://www.tgf21.com/blog/posts/from-alarm-to-report/</id><link href="https://www.tgf21.com/blog/posts/from-alarm-to-report/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>最近准备业务助手演示，从收到告警到生成处理报告，几步连起来很自然。真正做设计时，难的是每一步采用什么依据、哪些结论还不确定，以及动作失败后报告应该怎么写。</summary></entry><entry><title>怎样把一次 AI 对话变成持续运行的业务能力</title><id>https://www.tgf21.com/blog/posts/conversation-to-recurring-work/</id><link href="https://www.tgf21.com/blog/posts/conversation-to-recurring-work/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>用户拿到一份报告后说：“以后每天早上都做一份。”保存这段提示词还不够。补跑日期、模板更新、通知失败和历史追溯，都会让每天一次变成不同的执行。</summary></entry><entry><title>Agent 产品中的聊天框、工作台与业务界面如何分工</title><id>https://www.tgf21.com/blog/posts/where-chat-belongs/</id><link href="https://www.tgf21.com/blog/posts/where-chat-belongs/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>设计业务用户的 Agent 界面时，第一屏放什么讨论了好几次。聊天框容易理解，可每天来处理告警、看运行和做审批的人，未必想从一个空白输入框开始。</summary></entry><entry><title>怎样把一个工作空间交付成别人能使用的 AI 应用</title><id>https://www.tgf21.com/blog/posts/delivering-an-ai-app/</id><link href="https://www.tgf21.com/blog/posts/delivering-an-ai-app/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>工作空间里的应用能跑，往往依赖很多默认条件：工具已经连接，模型已经配置，目录里还有以前试验留下的文件。复制目录能把页面交过去，却不一定交付了可维护的应用。</summary></entry><entry><title>给每个人一个 Agent：实例、身份和生命周期怎么设计</title><id>https://www.tgf21.com/blog/posts/one-agent-per-user/</id><link href="https://www.tgf21.com/blog/posts/one-agent-per-user/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>一个 Agent 应用开放给多人，实例怎么分，会直接影响会话、文件、业务身份和升级。共享页面不等于共享助手，给每人一个目录也不等于完成业务隔离。</summary></entry><entry><title>用户点了一行数据，怎样让 Agent 理解他的问题</title><id>https://www.tgf21.com/blog/posts/page-context-and-agent/</id><link href="https://www.tgf21.com/blog/posts/page-context-and-agent/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>业务页面旁边有了助手，用户很快会问：“这一行为什么这么高？”人看着屏幕知道是哪一行，助手只收到一句话，未必知道。让用户重述图名、时间和数值，实际是在重新输入已经存在的信息。</summary></entry><entry><title>从一次 Agent 资源失控，重新理解平台的责任</title><id>https://www.tgf21.com/blog/posts/resource-runaway/</id><link href="https://www.tgf21.com/blog/posts/resource-runaway/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>这次故障由一个自动执行任务触发。下载接口没找到，Agent 转而探查，在压缩脚本中用正则寻找路由。相关进程资源失控，内存持续增长，同宿主其他服务开始超时，直到内核终止异常进程后恢复。</summary></entry><entry><title>从工作日志到个人知识库：让 AI 找到依据</title><id>https://www.tgf21.com/blog/posts/notes-to-personal-knowledge/</id><link href="https://www.tgf21.com/blog/posts/notes-to-personal-knowledge/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>周报、笔记、方案和资料攒了不少，真要找一个决定为什么这样做，还是经常翻很久。问题不只是搜索不好用，原始讨论、阶段进展和当前结论原本就混在不同地方。</summary></entry><entry><title>让 AI 帮用户搭建 Agent Team：蓝图、草稿与运行配置</title><id>https://www.tgf21.com/blog/posts/building-an-agent-team/</id><link href="https://www.tgf21.com/blog/posts/building-an-agent-team/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>让用户描述“收到问题后分析，重要操作交给我确认”，比让他逐个建工作空间、配工具和拼引用更接近业务。AI 可以帮助完成配置，但直接修改正在运行的团队，会把一次理解错误变成真实变更。</summary></entry><entry><title>团队成员、产品 Agent 与外部依赖，为什么需要分开</title><id>https://www.tgf21.com/blog/posts/team-product-and-dependencies/</id><link href="https://www.tgf21.com/blog/posts/team-product-and-dependencies/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>研发团队里有开发、评审和测试 Agent，交付的产品本身也可能有 Agent。它们都放在工作空间中，很容易被当成同一种成员。可团队归档时，生产应用可能还在服务用户，清理规则不能相同。</summary></entry><entry><title>从用户权限到 Agent 授权：哪些经验可以沿用</title><id>https://www.tgf21.com/blog/posts/from-rbac-to-agent-delegation/</id><link href="https://www.tgf21.com/blog/posts/from-rbac-to-agent-delegation/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>以前做权限平台，多半是在判断用户能看什么、改什么。Agent 接到目标以后，却会根据中间结果继续选工具和动作。用户说“处理这个异常”，没有把所有后续操作都授权出去。</summary></entry><entry><title>多 Agent 怎样通过任务、审批和产出物完成可靠交接</title><id>https://www.tgf21.com/blog/posts/reliable-agent-handoffs/</id><link href="https://www.tgf21.com/blog/posts/reliable-agent-handoffs/"/><published>2026-11-01T22:00:00+08:00</published><updated>2026-11-02T22:00:00+08:00</updated><summary>最近把多 Agent 阶段协作接到外部工作项上，最容易画出的流程是开发、评审、测试、回写完成。可“开发完成”这句话没有说明交付的是哪个版本，也没有说明下一阶段能相信哪些检查。</summary></entry></feed>