给 AI agent 造一个“认识你“的后台:Kith / agent-sys 的设计笔记与 TaoToken 接入实践
1. 为什么每个 AI agent 都要你重新自我介绍一遍先说一个我反复遇到的场景早上在 Cursor 里改一个 Python 解析模块中午切到 Claude Code 继续调同一份逻辑晚上又用 Codex 写测试。三个工具都很聪明但它们有一个共同点——失忆。每开一个新会话我都得重新交代项目在哪个目录、我习惯用什么命名风格、上次那段 parsing 逻辑放在哪个文件、~/Downloads里的东西别动那是临时的。关掉窗口这些上下文全部蒸发。这不是模型能力问题是架构问题。当前主流 agent 工具的记忆是「会话级」的会话结束即销毁。你当然可以把这些信息塞进 system prompt但那只解决了「被问才回答」的一半。更往前一步的问题是能不能有一个常驻后台持续观察你在这台设备上的信息主动积累对你的理解让所有 agent 工具共享同一份「你是谁」的认知这就是 Kith / agent-sys 想解决的问题。一句话概括它是一个常驻本地的守护进程daemon持续扫描你指定的目录用 LLM 理解每个文件把结果存进本地 SQLite再通过 RPC 暴露给外部 agent 调用。它默认扫~/Documents、~/DesktopLLM 负责给文件打标签、做摘要、抽取知识点、生成个人画像对外提供 Unix Socket 和 HTTP 两种接口数据 100% 留在本地除了发给 LLM 的那一小部分内容。适合谁如果你同时用两个以上 AI 编码工具、经常需要重复交代背景、或者在做本地 agent 基础设施这套东西值得一看。本文会给出可复制的 daemon 配置、RPC 接口定义、TaoToken 接入参数并演示一次完整的 agent 记忆读写验证流程。核心检索词就三个Kith、agent-sys、AI agent 长期记忆后台。2. 为什么选 daemon 而不是 MCP server以及 TaoToken 前置准备这是我做的第一个硬决策也是很多人会问的现在 MCP 这么火为什么不用 MCP server答案在生命周期。MCP server 是由调用方拉起、调用方退出时终止的。而 agent-sys 要做的事——慢慢扫 21 万个文件、每天跑一次 daily report、watch 文件变化——天然需要独立寿命。你 Cursor 关了我还得跑你 Claude Code 退出了索引不能停。所以形态上必须是 daemon协议层用最无聊的 HTTP任何语言、任何工具只要能发 HTTP 就能用。MCP 那套 stdio 通信、capability negotiation 的复杂度在本地单用户单机场景下一点都用不上。选协议时先问「我在解决什么问题」不是「什么协议最新最潮」。接下来是模型能力接入。daemon 里的 LLM 业务逻辑triage 分诊、summarizer 摘要、cron 决策都需要调模型。如果每个 agent 各自配一套 Key管理会非常乱。我的做法是用 TaoToken 统一 Key/API 通道所有模型调用走同一个入口。TaoToken 是什么它是一个统一的模型 API 网关把不同厂商的模型能力收敛到一套 Base URL Key 的调用方式上。对 agent-sys 这种「一个 daemon 里跑十几个 agent、每个 agent 可能用不同模型」的场景特别合适——你不需要为每个 agent 单独申请和轮换 Key改一处配置就能切换底层模型。前置准备三步第一步注册并拿到 Key。访问官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 完成注册然后进控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsole 创建 API Key。Key 只在创建时显示一次记得立刻存到安全的地方。第二步确认你要用的 Model ID。进模型对话页 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chat 可以试跑确认哪个模型适合你的 triage 和 summarizer 任务。triage 这种批量分类任务用便宜快速的模型就够summarizer 需要理解长文本可以选能力更强的。第三步记下 API 地址。TaoToken 的 API 端点是 https://taotoken.net/api注意这个地址不加 UTM 参数直接用于代码里的 Base URL。三件套凑齐Base URL https://taotoken.net/apiKey 你刚创建的那串Model ID 你在对话页确认的模型名。后面所有配置都围绕这三个值展开。3. 可复制的 daemon 配置与 TaoToken 接入参数这一节是全文最实操的部分。agent-sys 的配置分两块daemon 自身的运行配置和 LLM 通道的接入配置。我按文件路径给你完整片段直接抄改就能跑。先看 daemon 主配置config/default.yaml。这里定义扫描范围、triage 规则、调度策略# config/default.yaml daemon: host: 127.0.0.1 port: 7437 socket_path: ~/.agent_sys/agent_sys.sock auth_token_path: ~/.agent_sys/auth_token scan_roots: - ~/Documents - ~/Desktop watch: true triage: skip_path_patterns: - site-packages/ - node_modules/ - .cursor/extensions/ - __pycache__/ - .venv/ file_type_priority: .md: 9 .py: 8 .docx: 9 .txt: 2 hints: - Downloads 文件夹里的 PDF 多是学习资料值得总结 - 带 test_ 前缀的 python 文件通常是测试可以降级 memory: lru_cache_size: 5000 sqlite_path: ~/.agent_sys/memory.db scheduler: max_concurrency: 4 daily_report_at: 03:00然后是 LLM 通道配置这是 TaoToken 接入的核心。agent-sys 把所有模型调用收敛到一个llm配置块用 OpenAI 兼容格式# config/llm.yaml llm: provider: openai_compatible base_url: https://taotoken.net/api api_key: ${TAOTOKEN_API_KEY} default_model: claude-sonnet-4-5 timeout: 120 max_retries: 3 agents: triage: model: gpt-4o-mini temperature: 0.1 max_tokens: 512 summarizer: model: claude-sonnet-4-5 temperature: 0.3 max_tokens: 2048 cron_decider: model: gpt-4o-mini temperature: 0.0 max_tokens: 1024注意api_key用的是环境变量引用不要把 Key 硬编码进文件。启动前导出export TAOTOKEN_API_KEYsk-你的key如果你用 Claude Code 做开发它的配置在~/.claude/settings.json同样三件套{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的key, ANTHROPIC_MODEL: claude-sonnet-4-5 } }如果你用 Codex配置在~/.codex/auth.json{ OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_API_KEY: sk-你的key, model: gpt-4o-mini }三件套在任何工具里都是同一个逻辑Base URL 指向 TaoToken 的 API 端点Key 用你创建的那串Model ID 用你在对话页确认的。Cline 的 MCP 配置也是同理在cline_mcp_settings.json里把 provider 设成 openai compatiblebase_url 填https://taotoken.net/api。配置写完后启动 daemonpython -m agent_sys.kernel.daemon --config config/default.yaml --llm-config config/llm.yaml启动日志里会看到子系统初始化顺序kernel 加载生命周期、syscall 挂载 RPC 端点、scheduler 启动优先级队列、memory 打开 SQLite、agents 注册业务逻辑。如果 LLM 通道配置正确你会看到llm channel ready: https://taotoken.net/api这一行。4. 验证一次完整的 agent 记忆读写流程配置跑起来只是第一步真正要验证的是「agent 能不能读到关于你的记忆」。这一节走一遍完整流程写入记忆、通过 RPC 读取、让外部 agent 消费。先确认 daemon 活着curl http://127.0.0.1:7437/health # {status: ok, uptime: 42, agents: 12}/health和/status不鉴权方便监控。/syscall和/reload必须带 token。token 在~/.agent_sys/auth_token权限 0600TOKEN$(cat ~/.agent_sys/auth_token)现在触发一次 triage让 daemon 扫描并理解文件。这一步会调 TaoToken 通道curl -X POST http://127.0.0.1:7437/syscall \ -H X-Agent-Token: $TOKEN \ -H Content-Type: application/json \ -d {call_type: triage.run, params: {limit: 200}, caller: manual}返回会告诉你分诊了多少文件、跳过了多少、消耗了多少 token。第一次跑建议 limit 设小一点确认通道通了再放大。接着写入一条显式记忆——比如告诉 daemon「X 是 Y 的代号」curl -X POST http://127.0.0.1:7437/syscall \ -H X-Agent-Token: $TOKEN \ -H Content-Type: application/json \ -d {call_type: memory.write, params: {key: codename, value: Kith 指代 agent-sys 项目, tags: [project]}, caller: manual}然后读取用户上下文简报这是外部 agent 最常调的端点curl -X POST http://127.0.0.1:7437/syscall \ -H X-Agent-Token: $TOKEN \ -H Content-Type: application/json \ -d {call_type: report.brief, params: {}, caller: cursor}返回是一段自然语言简报包含你最近在做什么、有哪些高优先级文件、显式记忆里的代号。这就是「认识你」的后台对外输出的东西。最后一步让 Cursor 或 Claude Code 通过 skill 消费它。skill 就是一个带 YAML frontmatter 的 markdown丢进~/.cursor/skills/或~/.claude/skills/--- name: agent-sys-user-context description: Use when the user asks based on what you know about me, what have I been working on, do you know me yet. --- You have access to a local daemon. To fetch the users current context: bash TOKEN$(cat ~/.agent_sys/auth_token) curl -X POST http://127.0.0.1:7437/syscall \ -H X-Agent-Token: $TOKEN \ -d {call_type: report.brief, params: {}, caller: cursor}Return a one-paragraph synthesis grounded only in the brief.skill 是接入面daemon 是能力源。同一份 SKILL.md 丢进不同工具的 skills 目录都能工作不用为每个新 agent 工具单独开发集成。 验证成功的标志你在 Cursor 里问「你了解我吗」它不再让你从头介绍而是直接说出你最近在做的项目和偏好。那一刻这套后台就算跑通了。 ## 5. 本篇常见报错排查401、local proxy failed、reading choices、OAuth 配置和验证过程中最容易踩的坑集中在四类报错。我按真实遇到的顺序列出来对照排查。 **401 unauthorized**。这是最高频的。分两种一种是 daemon 的 X-Agent-Token 不对检查 ~/.agent_sys/auth_token 内容和你 header 里带的是否一致注意别把换行符带进去。另一种是 TaoToken 通道的 Key 不对检查 TAOTOKEN_API_KEY 环境变量是否导出、是否在 daemon 启动的同一个 shell 里。如果 Key 正确还报 401确认 Base URL 是不是写成了带路径的形式——正确值是 https://taotoken.net/api不要多加 /v1 之类的后缀。 **local proxy failed**。这个报错通常出现在 daemon 尝试连 LLM 通道时。先确认 config/llm.yaml 里 base_url 拼写正确再确认本机网络能访问 taotoken.net。如果 daemon 跑在容器里检查容器网络是否能出网。还有一种情况是 timeout 设太短长文本摘要任务 120 秒不够调到 300。 **reading choices 相关报错**。这类报错一般出现在解析 LLM 返回时。TaoToken 返回的是 OpenAI 兼容格式choices[0].message.content 是正文。如果你的代码直接读 response[content] 就会报 KeyError。检查你的解析逻辑是否按 choices 数组取。另外 triage 任务如果 max_tokens 设太小比如 128返回会被截断导致 JSON 解析失败调到 512 以上。 **OAuth 相关报错**。如果你在 Claude Code 里看到 OAuth 报错说明它还在走默认的登录流程而不是你配的 Base URL。检查 ~/.claude/settings.json 里 ANTHROPIC_BASE_URL 和 ANTHROPIC_API_KEY 是否都设了两个缺一不可。设完后重启 Claude Code让它重新读配置。Codex 同理检查 ~/.codex/auth.json 的 OPENAI_BASE_URL。 排查通用思路先看 daemon 日志里 LLM 通道那行是否 ready再用一条最小 curl 直接打 TaoToken 的 API 确认 Key 和网络没问题最后才怀疑业务代码。分层定位能省很多时间。 ## 6. 把记忆后台接进你的日常编码流 跑通之后真正让它产生价值的是接进日常流程。我的做法是三个 skill 常驻agent-sys-user-context 查上下文、agent-sys-file-search 搜文件、agent-sys-admin 管 daemon加起来不到 300 行。每次开新会话agent 自己判断该不该调不需要我手动触发。 下一步值得做的是双向对话。现在 agent 只能读还应该能写——通过 syscall 告诉 daemon「这个文件很重要升级成 high」「帮我记住 X 是 Y 的代号」。单向消费变双向后台才会越用越懂你。 如果你也在为「每次对 agent 都要重新自我介绍」挠头或者在做类似的本地 agent 基础设施可以从最小配置跑起先配好 TaoToken 三件套启动 daemon跑一次 triage再写一个 skill 丢进 Cursor。跑通那一刻你会明白agent 不该每次被召唤才出现它该是持续存在的背景智能。

相关新闻

打开LWIP_DEBUG:lwIP协议栈调试信息打印与日志输出完整指南

打开LWIP_DEBUG:lwIP协议栈调试信息打印与日志输出完整指南

敲代码这么多年,网络协议栈的调试始终是我最谨慎的一块。为什么?因为嵌入式网络问题往往是“现场才能复现”的,断点挂不住、单步又改了时序,最后能靠得住的还是日志。lwIP这个协议栈其实早就内置了一套完整的打印调试机制&#xf…

2026/10/13 3:43:57 阅读更多 →
第 10 集:Claude Code 并行作战 —— 多实例协同与效率倍增(TaoToken 统一 Key 接入篇)

第 10 集:Claude Code 并行作战 —— 多实例协同与效率倍增(TaoToken 统一 Key 接入篇)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:31:35 阅读更多 →
oneAPI规范:用TaoToken统一Key打通异构计算编程模型

oneAPI规范:用TaoToken统一Key打通异构计算编程模型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 17:52:23 阅读更多 →

最新新闻

K-Means的两位近亲:K-Medoids与Fuzzy C-Means深度解析

K-Means的两位近亲:K-Medoids与Fuzzy C-Means深度解析

做了这么多年聚类,我越来越有个感触:K-Means是大多数人的起点,但它真不是终点。数据里混几个离群点,均值中心瞬间被拽偏;两个簇本身就有重叠,你非要给每个样本一个非此即彼的标签,总觉得是在自欺…

2026/10/14 23:57:37 阅读更多 →
汽车修理厂管理系统实战:数据库设计、工单状态与权限控制全解析

汽车修理厂管理系统实战:数据库设计、工单状态与权限控制全解析

简介:这一套汽车修理厂汽车修理管理系统源码包,面向汽修门店管理者与Windows桌面软件开发者,覆盖客户档案、预约排班、维修订单、配件库存、财务收支、员工考核等核心业务场景,可用于快速搭建或二次开发中小型汽修管理系统。压缩包…

2026/10/14 23:57:37 阅读更多 →
金融智能体Agent架构设计:分层解耦与风控合规实战

金融智能体Agent架构设计:分层解耦与风控合规实战

干金融系统的同学这几年应该都有同一个感受:大模型Agent在各个行业遍地开花,但一碰到金融场景,通用方案几乎全得推倒重来。我过去一年深度参与了某金融业务运营助手的架构设计,从最初的"给模型接几个API"演进到完整的分…

2026/10/14 23:57:37 阅读更多 →
大模型应用开发三层架构实战:输入、模型与输出层拆解

大模型应用开发三层架构实战:输入、模型与输出层拆解

1. 大模型三层架构到底在说什么第一次听到“大模型三层架构”这个说法,很多人会以为是某种官方定义的技术框架。其实不是,它更像是一线开发者在反复踩坑之后,总结出来的一套理解大模型应用的方法论。核心观点就一句话:不管市面上冒…

2026/10/14 23:57:37 阅读更多 →
Windows 下安装 Apache Superset 避坑与依赖排查

Windows 下安装 Apache Superset 避坑与依赖排查

简介:面向需要在Windows环境下快速部署Superset的数据分析与BI入门用户,这份操作文档整理了完整的安装流程。文档从Python与pip前置环境准备开始,逐步演示pip安装、管理员账号创建、数据库升级、示例数据加载及角色权限初始化,并说…

2026/10/14 23:57:37 阅读更多 →
EmbeddingGemma 2:740M多模态嵌入模型深度解析

EmbeddingGemma 2:740M多模态嵌入模型深度解析

1. 项目概述:为什么一个“740M参数”的嵌入模型值得单独命名并引发关注?EmbeddingGemma 2——光看这个名字,你可能会下意识把它归类为“又一个轻量级语言模型的迭代版本”。但实际拆开来看,它根本不是传统意义上的“语言模型”&am…

2026/10/14 23:56:34 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →