深度拆解NotFair本地Goal Loop架构agentgoal、tick循环与SQLite记忆【免费下载链接】notfair-pluginOpen-source SEO, GEO, and marketing skills for AI agents.项目地址: https://gitcode.com/gh_mirrors/to/notfair-pluginNotFair 是一个完全运行在你自己电脑上的开源 Goal Loop 系统它把「agentgoal」作为核心模型用 tick 循环驱动 AI 营销代理并依靠 SQLite 记忆实现 7×24 小时自主推进业务目标。本文带你逐层拆解这套本地 Goal Loop 架构的设计原理。一、核心理念为什么 agentgoal大多数 AI Agent 产品是任务驱动的你下指令它执行完就消失。NotFair 反其道而行——代理的身份就是目标本身。官方架构文档一句话概括了这一点One idea:agent goal, and a disciplined loop moves the number. —— ARCHITECTURE.md这意味着一个目标 一个专属代理。你说出志向比如把 CAC 降到 $30NotFair 就铸造一个只为此目标而生的 agent目标结束代理归档。用户只管理目标代理是不可见的管道invisible plumbing。没有组织架构图只有一种 agent多代理间通过共享工作区上下文PROJECT.md协作而不是层层委派。目标的生命周期是一条清晰的状态机intake → proposed → active ⇄ paused → achieved | failed | killed。定义过程完全发生在聊天里代理先用define_goal记录志向再用propose_goal_metric编写并测试一条可执行的度量查询最后在你明确确认目标值后才通过propose_target激活循环。二、tick 循环30 秒心跳如何驱动一切1. 唯一调度器轻量级 30 秒扫描整个产品只有一个调度器源码极其精简见 notfair/src/server/scheduler/tick.ts每 30 秒醒来一次做两件事——检查哪些 goal 到了心跳时间goals.next_tick_at检查哪些 PR 需要刷新。这两次检查都只是廉价的本地 SQL 读取只有时间戳真正到期时才会产生实际工作量。这就是经典的轮询兜底 时间戳触发模式比引入 cron 守护进程简单得多。2. 一次 tick 的完整生命周期真正的工作发生在 notfair/src/server/goals/tick.ts注释把它称为one OODA iteration观察-定向-行动-记录。一次 tick 分四步抢占先推进next_tick_at再开始干活——这个先占坑的顺序就是防双重触发double-fire guard。平台机械测量平台自己执行目标存储的 MCP 查询拿到最新数值agent 永远不自我申报它被考核的数字。组装简报buildTickMessage纯从数据库状态拼出简报——最新指标、停止条件、待评审动作、门控中的资源、近期学习、上次 tick 总结。跑一轮代理在tick-n会话上执行一次 adapter 回合所有事件持久化结果落入goal_ticks日记行。3. 聪明的心跳何时叫醒 Agent何时只观测这是设计里最有意思的一环。decideAgentTurnnotfair/src/server/goals/tick.ts决定这次心跳是否需要唤醒 LLM。规则是观测型检查需要正面证明无事可做测量失败→ 必须唤醒代理诊断有动作到期评审 / 有 open PR / 过了 deadline→ 唤醒一切正常且动作仍在观察窗口内→只记录快照不花 token日记里写No-op check。这样用户图表上每天都有数据点但 Agent 不会为了说今天没事做而浪费一次 LLM 调用。三、行为纪律观察窗口与可证伪的期望Goal Loop 之所以可信靠的是写入提示词和行为表里的硬纪律先记账后执行每个变更动作必须先通过log_goal_action登记附带可证伪的期望效果expected_effect和观察窗口review_after。实现见 notfair/src/server/goals/handlers.ts——甚至 mutation 类动作不填观察窗口会被直接拒绝。窗口内资源不可触碰到期前该动作碰过的资源对其他动作锁定到期后必须先review_goal_action打分才能做下一步。每 tick 至多一个新动作提示词协议明文规定at most ONE meaningful move防止代理一次改十个变量导致无法归因。这套纪律全部落在goal_actions表里expected_effect、review_after、observed_outcome字段让代理做了什么 → 预测了什么 → 实际发生了什么全程留痕。四、SQLite 记忆为什么状态不进上下文窗口官方架构图里有一句话点破本质Loop state lives in SQLite, not context windows.Contexts rotate;get_goalre-anchors an agent from the DB in one call.上下文会轮换数据库才是循环的记忆所有状态集中在单个 SQLite 文件~/.notfair/db.sqliteschema 定义在 notfair/src/server/db/schema.ts连接初始化见 notfair/src/server/db/db.ts。关键表一览表名职责goals目标状态机 可执行指标定义 心跳时间戳goal_ticks每次心跳的日记行状态、指标值、摘要goal_actions动作留痕期望效果、观察窗口、实际结果goal_learnings代理的长期记忆账本支持置信度与被取代关系goal_metric_snapshots指标快照序列喂给趋势图表goal_prs代理开的 PR 及其 GitHub 评审状态同步sessions/transcript_events聊天与 tick 的完整转录设计上值得学习的点单文件单 schema无迁移历史——单人本地应用改形状直接改CREATE IF NOT EXISTS指标是可执行的而非描述性的存的是精确的工具调用平台能在代理醒来前就复测验证记忆分层共享上下文PROJECT.md所有代理可读可写 每代理私有的goal_learnings账本log_learning/search_learnings实现见 handlers.ts。五、快速上手在你机器上跑起来NotFair 对新手友好的程度超出预期一条命令启动数据全部留在本地。前提Apple Silicon Mac Node 20并安装登录claude或codex其一启动npx notfairlatest随后浏览器打开 http://127.0.0.1:3327创建项目 → 连接数据源 → 说出你的目标在聊天里与目标代理确认指标和目标值按 START循环即刻启动。完整安装与 CLI 命令status/logs/autostart/doctor见 README。总结这套架构值得借鉴的三件事agentgoal把身份绑定到可度量目标上用户心智从管机器人变成管目标⏱️tick 循环30 秒心跳 时间戳触发 观测/行动分离用最低成本换持续自动化SQLite 即记忆状态、日记、转录、学习账本全部落库代理上下文可随意轮换循环永不失忆。对于想构建长期自主 AI 代理的开发者这份 架构说明 和 tick 运行器源码 本身就是一份免费的设计教程。【免费下载链接】notfair-pluginOpen-source SEO, GEO, and marketing skills for AI agents.项目地址: https://gitcode.com/gh_mirrors/to/notfair-plugin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
CSP初赛提分核心:阅读理解、逻辑建模与纸笔验证 1. CSP初赛到底考什么、为什么很多人栽在“看起来简单”的地方CSP初赛——全称是CCF计算机软件能力认证(Certified Software Professional)的初级阶段,但千万别被“初赛”两个字骗了。它不是编程入门考试,也不是学校机房里敲几行H… · 2026/9/26 10:21:26
AI编程工具数据上传排查:抓包验证与隔离加固实践 1. 从一条抓包告警说起:为什么"代码上传"这件事值得较真事情的起因很简单。我在本地用一款AI编程助手做日常开发,某天晚上例行查看路由器流量日志时,发现一个不太对劲的现象:明明只是敲了几行代码、让工具补全了一个函数… · 2026/9/26 10:21:26
富士通U9310X驱动安装全指南:BIOS固件+OEM定制+Windows兼容三层架构 1. 项目概述:为什么一台停产多年的富士通U9310X,现在装驱动还值得专门写一篇长文?富士通LifeBook U9310X——这台2019年发布的超轻薄商务本,机身厚度仅13.9mm,重量控制在895g,搭载第10代Intel Core i7-1065… · 2026/9/26 10:21:26
Gemini 3 完整指南(五):CLI 命令、无头模式、主题与快捷键配 TaoToken 实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 10:53:11
手写生产级MCP Server:鉴权、流式与状态三重攻坚 1. 为什么“手写一个MCP Server”不是炫技,而是工程落地的必经之路最近在几个AI工具链集成项目里反复踩坑,最深的一次是把某开源MCP Server直接扔进生产环境跑了一周,结果第三天凌晨三点告警炸了:用户A的操作突然触发了用户B的会话… · 2026/9/26 10:53:05
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46