跳到正文

Friday

一个全时段运行的个人助手,把 Claude Code 本身当作运行时——Telegram 负责对话,MCP 插件接上邮件、笔记、语音与 git,而定时任务的编排由助手自己重排。

Screenshot of Friday
编辑截图, 29 Sep 2026Friday ↗

这是什么

一个不用 agent 框架搭起来的常驻个人助手:Claude Code 就是运行时,一个 CLAUDE.md 文件就是系统提示词,其余由定时任务、MCP 插件和 shell 工具补上。它通过 Telegram 对话,经 API 处理邮件,提交代码并开 pull request,做网络检索,并运行一批由它自己管理的定时作业。上面还叠着一层认知系统——从解决过的任务里抽取技能、每晚反思、偏好学习、世界模型,以及未经批准绝不应用的改进提案——背后是一个 Flask 加 SQLite 的服务,装着对话、记忆与向量。整套系统跑在每月一百美元上。

谁做的GitHub 账号 missingus3r,提交用一个 Gmail 地址署名,五个月 80 次提交。没有一次挂在已关联的 GitHub 账号上,所以贡献者列表是空的,历史是这项工作的唯一记录。仓库是展示页;它描述的那套系统跑在他自己的机器上。

制作过程

8 个阶段
  1. 01

    仓库是描述,不是那个东西本身

    这一点必须放在最前面,因为它决定了后面每一句话的含义。仓库里只有二十个文件:一份 20 KB 的 README、一份 33 KB 的安装指南、一个 155 KB 的单页站,以及图片。没有系统的代码。助手跑在作者自己的机器上;记忆服务的参考快照放在另一个仓库里,而 README 明确禁止照抄——那份代码是由 Claude Code 依据安装指南生成的,所以每个安装都不一样,仓库只作为截图的来源保留。因此这条记录记录的是一个被文档化的系统,下面所有内容都是作者对自己机器的一面之词。文档详细得少见,提交历史也佐证了确实有东西被造出来;但本档案没有运行过它、检查过它,也没有看过它的源码。

  2. 02

    98% 的提交写明了共同作者

    80 次提交里有 78 次带一条写明模型的共同作者尾注——98%,高于本档案在 Claude Code Game Studios 记下的 95%,也远高于任何有真实代码佐证的项目。模型全都是新的、都是大上下文:Opus 4.6 三十次、Opus 4.8 二十三次、Opus 4.7 十六次、Fable 5.1 五次、Fable 5 四次。另一个数字才是有意思的:这 80 次提交没有一次挂在已关联的 GitHub 账号上,于是一个有五个月工作量的仓库报告零贡献者。两个事实合起来,描述的正是本档案反复从不同方向撞见的一种形态——这个时代的归属住在尾注和邮箱地址里,而托管平台的贡献者图越来越与此无关。

  3. 03

    Claude Code 是运行时,不是那个助手

    这个项目赖以成立的论证说得很直白:agent 框架会加层——自定义运行时、编排代码、部署流水线,还常常自带一份 API 账单——而 Claude Code 已经自带原生工具调用、MCP 插件、定时调度、子 agent 派生、文件访问、git 和 shell。于是框架即运行时,CLAUDE.md 就是系统提示词与行为规格,唯一自写的代码是一个轻量服务,负责记忆与那套学习子系统。成本主张来自同一个决定:整套系统跑在一份每月一百美元的订阅上,而不是按 token 计费;README 用一句话把道理讲完——一份套餐、一个 CLI、一个模型,待在同一份订阅里,也待在服务商的条款里。读者认不认同是另一回事,但这个立场是自洽的,而且它标了价。

  4. 04

    它一天到晚在做什么

    它在 Telegram 里对话,并在同一个聊天窗口里通过 REST API 查邮件、起草并发送回复、提交代码、开 pull request、跑网络检索并汇报。它会主动先开口——基于记忆而不是基于请求的问候、提醒与跟进。它监控自己的定时作业,把过期的重建出来。它可以接一路摄像头,用一个小目标检测模型在设备本地识别人,抓下带边框的快照和十秒片段,并通过 Telegram 告警,同时明确写着什么都不离开这台机器。框架作业旁边是使用者应当替换掉的项目专用作业——模型发布监控、数据集抓取、月度用量报告——而 README 自己划了这条线:随项目发布的是框架,不随发布的是你想让它整点跑的任何东西。

  5. 05

    它重排了自己的时间表

    定时作业是这套系统的自主性最容易看见的地方,因为变化是可度量的:随着时间推移,它把二十五个零散的作业并成了八个、再并成七个,把目的已经失效的那些退掉。七个里有两个存在的意义是让另外五个保持诚实——一个心跳,核对每个作业是否还活着、把超过七天生命期而失效的重建出来;以及一份无人要求也会发来的每日简报。其余是每晚一轮的反思、指标、目标优先级、预测结算、记忆衰减、技能晋升、偏好学习与自审;一支夜间并行子 agent 队伍,产出汇成一份摘要;一个实验运行器,通过沙箱干跑驱动 A/B 测试并在样本达标时自动收尾;以及一轮每周摘要,压缩旧对话日志而保留原件。把二十五个作业并成七个,是人会做一次然后忘掉的家务活;而在这里,是系统对自己做的。

  6. 06

    一层认知系统,以及一条关于自主性的铁律

    在助手之上,作者称作「一层薄的、完全增量式的认知装置」,共八个子系统。目标引擎用「效用 × 紧迫度 × 剩余工作量」给下一步排序。层次化规划器把计划存成可执行结构而不是散文——目标、子目标、动作、工具、预期结果、退出条件,以及怎么回滚。记忆分三层:情节的、语义的、程序的,而每一行都带来源、置信度与最后核对时间。因果世界模型存实体、主谓宾关系、带因果的事件,以及可检验并带校准缺口的预测。自我认知里有一条六级自主阶梯,从最底层的「建议」到顶层的「带回滚的自我修改」,由一个检查端点把门。验证器跑具名检查——事实性、一致性、目标对齐、幻觉、不确定性、证据——并分干跑、模拟、实机三种模式。实验带最小差值与最小样本护栏,技能从草稿经稳定走向废弃。每天记录十一项指标,包括幻觉率与校准缺口。整套东西围绕的铁律写在系统提示词里:「不得有未被记录的自主行为」——每一个目标、计划节点、沙箱动作、已结算的预测、被晋升的技能都要留一行,而那些面板存在的意义,就是让人审计这套系统是否配得上它已经获得的自由。这条铁律和推荐启动命令躺在同一份文档里,而那条命令带着跳过权限提示的旗标。两者都是作者的选择,方向相反;本记录并列指出,不替它选。

  7. 07

    一个 Python 文件,和一个原地升级的数据库

    记忆层是单个 Flask 加 SQLite 服务,而克制才是重点:没有向量库、没有 Redis、没有搜索集群,因为向量就以二进制存在同一个文件里。对话记录在写入时自动评定重要性(0 到 1),用的是存在数据库里而非硬编码的关键词-分值对,可通过 HTTP 编辑并带命中计数,再由偏好环节逐渐调参。检索是在三千多维向量上的语义搜索,另有一个混合模式,用倒数排名融合把全文检索与向量结果并起来并按重要性加权。每周摘要压缩旧日志而不删除。一个四标签的单页视图把它摊开:对话、记忆与实体的力导向图;按时间排列的日志;可拖拽且服务端持久化的架构图;以及检索面板。认知装置在上面加了十三张表和几十个端点,而迁移方式值得抄——什么都没删,新列用幂等的 alter 加上,于是老数据库是原地升级,而不是被重建。

  8. 08

    一个有绕法的已知 bug,和一张写得公道的对比表

    有两节比功能清单更能说明作者。第一节是一个已知问题:Telegram 插件偶尔会在不报错的情况下丢消息,相册最容易中招;绕法是在用户自己的账号上挂一个被动的监听器,把整段聊天记到本地文件,于是助手能自己发现缺口、把丢的消息找回来,而不是请人重发一遍。丢一条消息不是个有意思的 bug;拒绝把沉默当成成功才是。第二节是一张与同领域四个 agent 的对比表——OpenClaw、Hermes、Khoj、Leon——以二十二项对十一、八、七、二,数据来自公开文档并给出了汇编日期。周五唯一输掉的那一行(社区技能市场),在同一个句子里就被承认是对方的,理由也诚实:Friday 的技能库是从自己解决过的任务里长出来的,不是从一个目录里来的。与之相对,这个仓库完全没有许可文件,读者无从判断这些文档被允许用来做什么,而系统的源码也不在这里、无从授权。

相关档案

全部档案 →