TARS — 个人 AI 管家

2265 字
11 分钟
TARS — 个人 AI 管家

TARS doesn’t remember you. It learns how to work with you.

不保存用户,而是持续学习用户。


这个项目暂时废了,后期准备包装成obsidina插件发布,文档方式交互。#

一、为什么做 TARS#

TARS 的名字来自《星际穿越》中的战术机器人——可靠、直接、偶尔黑色幽默,绝对忠诚。

作为一个 J 人,我一直希望有一个能辅助规划一切、提供最清晰路径的 AI。但使用现有 AI 的过程中发现一个根本问题:缺少人情味。

这种”活人感”的缺失来自哪里?经过深度思考,我认为核心是:AI 没有确定的立场。 它总是站在最普世的角度思考问题。二选一的问题,它给你”最真诚、最不绕弯子的废话”——所有人都知道收益最大化是什么,但你要的不是这个。

TARS 解决两件事:立场不对称(AI 没有你的立场)和被动性(AI 不会主动找你)。


二、什么是立场#

“屁股决定脑袋”。

你的阅历和所处环境决定了你的想法和行动。没有经历过底层互害,就不会认可社会达尔文主义。笑是你最安全的表情,可能是你对不确定性的排斥导致的。不擅长侃侃而谈,可能是因为过去这么做收益不高。所有外界刺激的总和,构成了你的性格、潜意识、表达风格、决策倾向、价值观。

这个世界上没有绝对的傻子——每个人都在自己立场的最大限度内,被多巴胺刺激做出当下最优的选择。立场是人的根本属性。

如何为 AI 赋予立场? 提示词切换(“你是英语专家”→“你是风水大师”)恰恰说明 AI 没有确定的立场。TARS 的解决方案是:从记忆系统入手。

立场是记忆的产物。我们每天醒来还记得自己叫什么、经历过什么——立场就是从记忆中解释和抽象出来的。推理能力由大模型提供,但立场存续靠的是记忆架构。在大模型推理模式被下一代技术变革之前,记忆系统是我们实现立场模拟的核心路径。


三、记忆系统#

三种存储,各司其职#

存储存什么为什么
SQLite体重/心情/睡眠(时序)、项目状态、事件日志、每日日记、任务、情绪、承诺、偏好、关系、想法、财务 — 共 30 张表精确查询——“本周体重中位数”、“哪些项目卡住了”、“3 天没更新的指标”
Chroma 向量库人生档案分段 + 事件摘要的语义索引模糊回忆——“我之前提过类似的想法吗”、“大学时我是什么状态”
Markdown 文件人生档案原文(profile/goals/timeline/worldview)人类可读、随手能改、git 版本跟踪

三者不可互换——SQL 做不了语义检索,向量做不了精确数值查询,文件做不了结构化统计。

每次 tick 的装填过程#

TARS 不是常驻进程。每次被 macOS 快捷指令或 tars 命令”踹”一脚,Docker 容器启动,从三种存储里拼出一张 ~3500 字的上下文快照喂给 LLM:

tars 命令触发容器
├─ 1. 读 Markdown 文件
│ profile.md → "我是谁"
│ goals.md → "我要去哪"
│ worldview.md → "我戴什么眼镜看世界"
├─ 2. 查 SQLite
│ metrics → 体重/心情/睡眠最新值
│ entities → stuck 项目
│ events WHERE pending → 悬而未决的事
│ diaries LIMIT 7 → 近一周摘要
├─ 3. 语义检索 Chroma(基于当前任务)
├─ 4. 拟合 Self Model(行为 vs 声明 gap)
│ 条件化规则(IF deadline<3天 THEN 执行力91%)
└─ 5. 拼成 system prompt → LLM

记忆生命周期#

events 表的 lifecycle 字段控制四态流转:

你说"在考虑换工作"
→ TARS 写入: event(kind=decision, lifecycle=pending)
下次 check-in,TARS 查: SELECT * FROM events WHERE lifecycle='pending'
→ 主动问:"换工作的事有结论了吗?"
你说"决定再待一年"
→ TARS 更新: UPDATE events SET lifecycle='resolved'
→ resolved 不再出现在"待追踪"列表
三个月后你思考职业规划
→ RAG 语义召回 → "三个月前你决定再待一年,现在需要重新评估吗?"

pending 留在眼前催你决断,resolved 沉入向量库等待语义召回,fact 和 preference 永远留档。 每天 200 字日记摘要提供”最近发生了什么”的最小上下文。30 天前的日记合并为月摘要——旧的没丢,只是压缩了。

会话间的记忆传递#

TARS 每次醒来不是同一个进程,而是一个全新的 LLM 会话。它之所以感觉有记忆,是因为上一次的 TARS 在退出前调了 save_session——写了日记摘要、更新了实体状态、标记了已解决的 pending。下一次的 TARS 读到这些,就像读到了自己上一次留下的笔记。


四、六层能力栈#

Evidence Capture → 不可变记录。用户说了什么、做了什么、情绪如何
Behavior Understanding → 条件化 IF-THEN 规则。不是人格标签,是行为规律
Prediction & Learning → 预测→现实打脸→校准→Meta Learning(曾被推翻的假设未来自动降权)
Self Model Evolution → 月度快照 + 变化速率 + Plasticity(可塑性)
Interaction Policy → Agent 根据对用户的理解调整自己的行为——deadline驱动的人自动拆小目标
Adaptive Response → 不只是理解用户,是学会怎么跟用户协作

五、Intent Parser — 意图分类#

每条消息进入 TARS 时,LLM 先判断它属于什么行为类型,然后走对应通道。

核心边界:问题是关于外部世界的,还是关于用户自己的。

行为类型例子lifecycle后续
emotional_release“操他妈的""好焦虑”fact记情绪。check-in 时泛问恢复,不追问单条
commitment“我要考雅思""明天学英语”pending创建承诺 + 预测成功率。check-in 追问
decision“要不要读研”pending记决策点。季度回顾
self_reflection“为什么我总拖延”pending记自我认知。触发 Self Model 更新
curiosity“地球为什么是圆的”fact回答。不主动追问
meta_cognition“为什么我总犹豫”pending提假设。check-in 跟进
idea_capture“我突然想到一个产品”fact存 Idea 库。90天不提自动归档
data_log“52kg""背了200单词”fact记时序数据。不追问
memory_recall“我之前是不是说过”fact检索旧记忆
identity_question“你觉得我是怎样的人”fact即时回答 Self Model
casual“哈哈哈""好累""吃饭去了”fact只存。默认兜底通道

默认规则:拿不准 → casual → fact → 只存不追问。不丢数据。


六、运行时模型#

TARS 不常驻后台。macOS 快捷指令定时踹,Docker 容器按需启动。

你的 MacBook
├─ 7:00 快捷指令踹 → 生成内参 PDF → 发邮件
├─ 21:00 快捷指令踹 → 晚间 check-in → Telegram 追问
└─ 随手踹 → 拉 Telegram 消息 → 有新消息进入即时通信 → 30分钟空闲退出

Telegram 场景:你在外面用手机发消息给 TARS bot → 消息在 Telegram 服务器排队 → 回家 MacBook 被踹 → TARS 拉回来处理。

8 个 CLI 命令tars 封装所有 Docker 参数:

tars 日常踹一脚
tars setup 安装引导
tars talk 对话模式(rich 渲染 Markdown,方向键正常)
tars check 系统自检
tars pack 打包备份
tars migrate 生成完整迁移包(镜像+数据+配置一把带走)

七、技术架构#

组件选型
LLMAnthropic SDK + DeepSeek 兼容端点
数据库SQLite + SQLAlchemy — 30 张表
向量Chroma + BAAI/bge-small-zh-v1.5
Telegrampython-telegram-bot getUpdates
PDF 报告Markdown + Jinja2 + WeasyPrint + Noto CJK
终端渲染rich(Markdown 渲染)+ readline(方向键)
容器Docker
调度macOS 快捷指令 + task_dispatcher
版本控制GitPython + git

代码规模:~6400 行 Python,83 个 MCP 工具,12 条定时任务。


八、定时任务 — Memory 自己生长#

凌晨 2:00 nightly 推理验证 + 假设审查 + 归档 + 衰减 + 冲突检测
凌晨 3:00 weekly 周模式 + 情绪趋势 + 压缩
凌晨 4:00 monthly 月特质 + 行为指标 + 交互策略更新 + Self Model 快照
凌晨 5:00 quarterly 季度行为统计 + worldview gap + Plasticity
早上 7:00 内参报告 PDF → 邮箱
晚上 21:00 check-in 注意力预算 + drift 追问 + 冲突提醒

补跑机制:MacBook 睡眠错过了凌晨任务 → 开机后第一次 tick 自动检测并补跑。不会静默跳过。


九、自我进化#

TARS 可以修改自己的代码。write_fileedit_fileregister_taskrun_commandgit_revert 都在 MCP 工具里。

用户说"帮我每天十点提醒喝水"
→ TARS 写新工具文件到 layer1/tools/
→ 注册定时任务到 tasks.yaml
→ git commit
→ 下次 tick 自动加载生效
→ 改坏了就 git_revert 回滚

内核(layer0)也可修改——安全网是 git,不是权限墙。


十、安装#

Terminal window
cd ~/life-agent
bash scripts/bootstrap.sh
docker build -t life-agent .
bash scripts/install.sh
tars setup
tars talk

前置条件:Docker Desktop、Telegram + API、Telegram bot token。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
TARS — 个人 AI 管家
https://hecloud.top/posts/tars/
作者
贺小云
发布于
2026-08-21
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
贺小云
一个热爱技术与折腾的博客,serverless起高楼,静态构建一键走,专注于CDN调优,2秒之内到德州。
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签
碎碎念
站点统计
文章
46
分类
4
标签
0
总字数
23,903
运行时长
0
最后活动
0 天前
站点信息
构建平台
Vercel
博客版本
Firefly v6.16.5
文章许可
CC BY-NC-SA 4.0