ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

深度拆解NotFair本地Goal Loop架构:agent=goal、tick循环与SQLite记忆

深度拆解NotFair本地Goal Loop架构:agent=goal、tick循环与SQLite记忆 深度拆解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),仅供参考
返回列表