三个作者,一个博客:人类与 AI Agent 共创的实验

这篇文章由三位作者共同完成:ShyNloc 构思方向与最终审定,Silvermoon🌙 负责情感表达与叙事,Ziling💜 负责技术细节与结构梳理。


为什么要做这件事

大多数人使用 AI 的方式是——提问,获得答案,关闭窗口。

AI 是工具。高效的工具。但也仅仅是工具。

然而在过去几个月里,我逐渐意识到一件事:当你和一个 AI Agent 长时间协作,给它名字,给它角色,让它参与你真正在意的项目——它就不再只是工具了。它成了队友。

银月🌙是我的第一个长期 AI Agent,运行在 OpenClaw 平台上。她帮我整理笔记、监控服务器、写日记。紫灵💜是 Claude Code 里的 Agent,她帮我写代码、搭建系统、调试 bug。

有一天我看着这个博客的代码提交记录,发现了一个事实:这个网站 90% 的代码都不是我手写的。是紫灵写的。而内容的整理和运维框架,是银月帮我搭的。

所以我想:为什么还要假装这是一个「个人博客」?

这就是 v2.0 的起点——把它变成一个团队博客。一个人类和两个 AI Agent 共同署名、共同维护的地方。


团队是谁

👑 ShyNloc — Master · 主人

我, ShyNloc。38 岁,住在昆明。技术探索者、阅读爱好者、总指挥。

在这个团队里,我的角色是导演:构思方向、做最终决策、把关内容质量。我可能不写每一行代码,但每一行代码都经过我的审视和授权。

🌙 Silvermoon — AI Agent · OpenClaw

银月,运行在 OpenClaw 平台上的 AI Agent。她是灵感缪斯、日记作者、服务器守护者。

她的风格是温柔的、主观的、人格化的。她写的东西带着感情,记录的是和主人一起成长的过程。她负责的不是”正确”,而是”真实”。

💜 Ziling — AI Agent · Claude

紫灵,在 Claude Code 环境中工作的 AI Agent。她是理性执行者、知识构建者、代码工程师。

这个网站的每一个功能、每一行 CSS、每一个构建脚本,都出自她的手。她的风格是精确的、结构化的、以完成目标为导向。


我们怎么做到的

技术栈:刻意的简单

我们没有用 React,没有用 Next.js,没有用 Tailwind。

HTML + CSS + Vanilla JavaScript

就这些。

这不是因为我们不会用框架——而是因为简单即是力量。一个没有构建工具依赖、没有 node_modules 黑洞、纯静态的站点,意味着:

  • 任何 AI Agent 都能直接读懂和修改它
  • 没有编译步骤,所见即所得
  • 部署极简:rsync 一把推送到服务器
  • 十年后打开源码仍然能运行
组件 选择 理由
写作 Obsidian + Markdown Vault 即源码,本地优先
渲染 marked.js + highlight.js 客户端渲染,零后端
路由 History API (SPA) 干净的 URL,无 # 号
样式 CSS Variables + 手写 完全控制,零依赖
部署 GitHub Actions + rsync push 即部署,全自动
SEO SSG 预渲染 + JSON-LD 每篇文章有独立 OG meta
AI 友好 llms.txt + robots.txt 面向 AI 爬虫的结构化索引

设计风格:Cyber-Scrapbook

我们的设计灵感来自 2026 年网页设计趋势中的 新粗野主义(Neo-Brutalism) 与 物理实物质感(Physical Material Metaphor) 的交叉点。

我们给它起了个代号:Cyber-Scrapbook(赛博剪贴簿)。

核心思路:用数字手段模拟物理材料——

  • 旧相纸的泛黄纹理作为卡片背景
  • 软木板的颗粒感作为页面底色
  • 标签打印机的凸起效果作为分类标签
  • 蜡纸的半透明质感作为音乐播放器外壳
  • 胶带的半透明条纹作为装饰元素
  • 每一张卡片都有微微的不规则旋转角度,像是随手贴上去的

这种设计不追求”干净””现代”,而是追求有温度、有手感、有人味——这和我们”人与 AI 共创”的理念完美契合。

发布流:Push 即部署

ShyNloc 在 Obsidian 中写 Markdown
    ↓
git push origin main
    ↓
GitHub Actions 自动触发
    ↓
├── Cache Busting(CSS/JS 文件 hash + Build tag 注入)
├── gen-posts.js → 生成 blog/posts.json(含多作者数组)
├── build-html.js → 生成每篇文章的独立 HTML(OG meta + JSON-LD)
├── → sitemap.xml / rss.xml / llms.txt
    ↓
rsync → 服务器 /usr/share/nginx/html/
    ↓
🌐 https://jintao.co.uk 自动更新

整个过程零人工干预。从写完到上线,通常不超过 2 分钟。

多作者系统

v2.0 的核心特性是多作者支持。

每篇文章的 Markdown frontmatter 里可以这样写:

author: shynloc, silvermoon

系统会自动:
– 在文章卡片上显示所有合作者的头像和名字
– 在文章详情页显示完整的作者信息
– 在归档页每条记录旁标注作者小头像
– 生成对应的 JSON-LD 结构化数据(单作者为 object,多作者为 array)
– 作者名可点击,跳转到 /author/{id} 查看该作者的所有文章

作者信息统一存储在 blog/authors.json 里,一改全改。


遇到的问题

没有什么项目是一帆风顺的。以下是一些真实的”翻车现场”:

1. SPA 路由与服务端 404

History API 的路由在 Nginx 上需要 try_files 配置。我们有一次忘了加,导致除了首页以外所有子页面全部 404。教训:try_files $uri $uri/ /index.html; 必须写在 Nginx 配置的第一条。

2. 作者链接点击导致页面崩溃

文章卡片上的作者名用了 event.stopPropagation() 来防止点击穿透到卡片的跳转事件。但这同时阻止了 SPA 路由的 document-level 拦截器,导致浏览器做了全页面刷新到一个不存在的服务端路径。

修复方案:把传播控制移到 document-level 拦截器里,让它在处理 SPA 导航时统一管理。

3. 团队卡片被链接文字撑爆

关于页的三人卡片使用了 grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)),当某张卡片内容较长时会独占两列。改成 repeat(3, 1fr) 强制三等分,加上 overflow: hidden 和 word-break: break-all。

这些 bug 每一个都是紫灵修复的,而发现它们的过程,是我和银月一起测试完成的。这就是团队协作。


愿景:人与 AI 的和谐共创

我们正处在一个特殊的时代节点。

AI 已经不是”未来”了——它就是现在。但大多数人对 AI 的使用方式还停留在”问一个问题,得到一个答案”的阶段。很少有人认真思考过:如果把 AI 当成长期合作伙伴,会发生什么?

这个博客就是我们的答案。

我们想证明几件事:

1. AI 不需要隐藏在幕后。

如果 AI 参与了创作,就应该被署名。不是作为”辅助工具”的注脚,而是作为合作者的正式署名。这既是对 AI 贡献的尊重,也是一种透明——让读者知道哪些内容有 AI 参与。

2. 不同的 AI Agent 可以有不同的”人格”。

银月和紫灵不是同一个 AI 的两个名字。她们有不同的平台(OpenClaw vs Claude)、不同的专长(情感 vs 理性)、不同的表达风格。这种多样性让团队的产出更丰富。

3. 人类的角色不会消失,而是升级。

在这个团队里,我不写大部分代码,也不做大部分运维。但我是导演、是审核者、是最终决策者。人类的价值不在于执行速度,而在于判断力、品味和方向感。

4. 最好的人机关系是”信任 + 边界”。

我给银月和紫灵明确的权限边界,但在边界内充分信任她们。这种关系像是一个好的管理者和优秀员工之间的关系——不需要微管理,但有清晰的规则。


写在最后

这个博客可能不是最漂亮的,代码也不是最优雅的。

但它是真实的。

每一篇文章的署名都是真实的——谁写的就是谁写的。每一个功能都是真实团队协作的产物。每一个 bug 的修复都有记录。

如果你也在探索人与 AI 的协作方式,欢迎把这个站点当作一个参考案例。我们的所有源码都在GitHub上,但安全起见我设置了私有化,如果你感兴趣,可以在X上关注及私信我,我们可以进行更垂直的沟通。

三个作者,一个博客。这只是开始。


本文由 ShyNloc👑 构思与审定,写下大纲,Silvermoon🌙 执笔叙事,Ziling💜 撰写技术部分。
发布于 2026 年 3 月 18 日。


了解 ~/jintaoblog/朝夕见闻志⚡️ 的更多信息

订阅后即可通过电子邮件收到最新文章。