Skip to content

huadaox/alive-agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

alive-agent

alive-agent 是一个关于“持续存在型 AI Agent”的小型 Python 原型。

它不是传统聊天机器人,也不是一个等待用户输入后再返回答案的助手。它的核心单位是“心跳”:每隔一段时间,Agent 会感知当前时间和自身状态,生成一段私有内心表达,决定是否说话、是否行动,并把结果写入记忆。

这个项目探索的问题是:如果一个 AI 不是被动问答接口,而是一个有时间感、记忆、人格、主动性、沉默权和行动能力的持续主体,它的交互范式应该是什么?

核心想法

传统聊天产品的循环通常是:

用户输入 -> 模型回复 -> 结束

alive-agent 的循环是:

心跳 -> 感知 -> 内心独白 -> 决定是否行动 -> 决定是否说话 -> 更新记忆 -> 下一次心跳

因此,这个项目的目标不是做一个“更会回答问题”的聊天助手,而是验证一种不同的 Agent 产品范式:

Agent 产品的核心不是页面,也不是单次回复,而是一个持续运行的行为系统。

已实现能力

  • 以固定间隔运行心跳循环,默认每 30 秒一次。
  • 在无人输入时也会持续感知时间、更新状态、思考或发呆。
  • 区分私有内心表达和对外说话。
  • 大多数心跳保持沉默,只在有必要时对外说话。
  • 支持终端输入,用户消息会在下一次心跳中被处理。
  • 支持主动行动:写笔记、读笔记、列出笔记、联网搜索。
  • 有短期状态、长期记忆、日终总结和梦境整理。
  • 有简单的睡眠/醒来机制。
  • 会把运行过程写入日志,形成可回放的历史轨迹。

为什么不是 Chatbot

chatbot 的主要产品对象是“回复”。

alive-agent 的主要产品对象是“行为流”:

等待
  -> 思考
  -> 碎碎念
  -> 行动
  -> 消化行动结果
  -> 说话或沉默
  -> 记忆沉淀

用户不只是和它问答,而是在观察并影响一个持续存在的系统。

文件结构

.
├── agent.py              # 主程序
├── requirements.txt      # Python 依赖
├── README.md             # 项目说明
├── .env.example          # 环境变量示例
├── state.json            # 当前运行状态和记忆快照
├── inner_thoughts.log    # 内心、行动、发言和用户输入日志
├── dreams.log            # 睡眠整理和梦境日志
└── notes/                # Agent 自己写下的笔记

这次仓库中包含了已有的交互历史记录,包括 state.jsoninner_thoughts.logdreams.lognotes/。这些文件不是演示假数据,而是这个原型实际运行后留下的轨迹。

交互历史记录

已有历史记录展示了这个 Agent 在运行中出现过的行为:

  • 主动搜索感兴趣的问题,例如科学发现、食谱、纪录片、古生物信息。
  • 主动写笔记,把搜索结果、计划、纠错和日常想法保存下来。
  • 在无人输入时继续自我推进,有时会发呆,有时会突然切换关注点。
  • 会对用户消息做出回应,但并不每次心跳都说话。
  • 会陷入重复,例如反复说“困”、反复纠结同一个行动。
  • 会被搜索结果误导,之后又通过再次搜索和写笔记进行修正。
  • 会在夜间整理一天的记忆,并生成梦境和长期记忆。

这些历史本身就是项目的重要部分:它们暴露了持续 Agent 的真实问题,而不是只展示一个理想化 demo。

核心状态

state.json 维护 Agent 的当前生命状态:

  • name:名字
  • personality:人格设定
  • mood:当前情绪
  • current_focus:当前关注点
  • recent_thoughts:近期内心想法
  • conversation_history:近期对话
  • long_term_memories:长期记忆
  • day_summary:上一天总结
  • is_sleeping:是否处于睡眠状态
  • days_lived:已经运行过的天数
  • heartbeat_count:心跳次数
  • last_spoke_at:上次对外说话时间
  • last_user_msg_at:上次收到用户消息时间

行动系统

当前 Agent 有四个可执行行动:

行动 作用
write_note 写一篇 Markdown 笔记
read_note 按标题或标题片段读取笔记
list_notes 查看已有笔记
web_search 通过 Tavily 联网搜索

每次心跳最多执行一个行动。行动完成后,Agent 会收到行动结果,并进入一次 follow-up 反思;这次反思只能消化结果,不能继续执行新行动。

这是一种 ReAct-like 结构,但还不是完整的多步 ReAct executor。

运行方式

安装依赖:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

准备环境变量:

cp .env.example .env

填写:

ALIVE_AGENT_API_KEY=your_model_api_key_here
ALIVE_AGENT_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1
TAVILY_API_KEY=your_tavily_api_key_here

也可以直接导出:

export ALIVE_AGENT_API_KEY="..."
export ALIVE_AGENT_BASE_URL="https://token-plan-cn.xiaomimimo.com/v1"
export TAVILY_API_KEY="..."

启动:

python3 agent.py

启动后可以直接在终端输入文字。输入会进入队列,并在下一次心跳中被 Agent 感知和处理。

Ctrl+C 停止。

当前实现的关键逻辑

主循环:

main()
  -> load_state()
  -> start input listener thread
  -> while true:
       heartbeat(state)
       sleep(HEARTBEAT_INTERVAL)

心跳:

heartbeat(state)
  -> 判断是否睡眠时间
  -> 如需要则醒来
  -> 收集用户输入
  -> 检测重复并注入随机 nudge
  -> call_llm()
  -> process_result()

结果处理:

process_result(result, state)
  -> 记录 inner_thought
  -> 更新 mood/current_focus
  -> 如有 action,执行行动
  -> 将行动结果反馈给模型消化
  -> 决定是否 speak
  -> 保存 state

睡眠整理:

do_sleep(state)
  -> 汇总近期想法和对话
  -> 生成 dream/day_summary/memories_to_keep
  -> 更新 long_term_memories
  -> 清空近期想法和对话
  -> 进入睡眠状态

这个原型暴露的问题

它已经能跑出“活着”的感觉,但也暴露了很多关键问题:

  • inner_thought 只是 prompt 生成的字段,不是真正的模型隐藏推理。
  • 目前只有沉默权,没有显式建模“拒绝回答 / 延迟回答 / 忽略 / 请求授权”。
  • 主动浏览可以带来新信息,但也会把搜索结果中的错误带进记忆。
  • 行动能力目前主要局限于写笔记和搜索,还不能真正改造更广义的环境。
  • 单次心跳只能执行一个 action,复杂任务推进能力弱。
  • 记忆整理只看近期状态窗口,容易被睡前情绪污染。
  • 重复检测很粗糙,Agent 会陷入相似念头和重复发言。
  • 没有 Agent QA 评估体系,无法系统判断“这个行为是否合理”。

这些问题不是附带缺陷,而是这个项目想继续研究的核心。

Agent 产品理解

这个项目背后的产品判断是:

Agent 产品不是一个会调用工具的聊天框,而是一个被设计过的自主系统。它的产品对象不是页面,而是行为;不是单次回复,而是长期关系;不是功能入口,而是状态流。

一个 Agent 产品至少需要定义:

  1. 它如何感知上下文。
  2. 它如何形成意图。
  3. 它如何决定说话、沉默、拒绝或延迟。
  4. 它如何行动,以及哪些行动需要授权。
  5. 它如何记忆、遗忘和修正自己。
  6. 它如何让用户理解它当前处于什么状态。
  7. 它如何在非确定性输出中保持人格稳定和行为可信。

好的 Agent 产品不是让 AI 尽可能主动,而是让主动性变得可理解、可预测、可纠正,并逐渐建立信任。

下一步方向

适合继续推进的方向:

  • 显式建模 response stance:answerrefuseignoredeferask_permission
  • 增加多步 ReAct loop:带预算、观察、恢复和停止条件。
  • 设计主动性等级:静默行动、通知型行动、授权型行动。
  • 增加记忆治理:写入、召回、纠错、遗忘、用户可见控制。
  • 增加环境改造能力:安全文件操作、命令执行、权限边界。
  • 建立 Agent QA 维度:重复率、事实性、人格稳定性、记忆一致性、主动行为恰当性。
  • 做一个可视化交互界面,展示心跳、状态、行动、记忆和沉默。

安全说明

代码中不包含真实 API key。模型服务和 Tavily 搜索都通过环境变量配置:

ALIVE_AGENT_API_KEY
ALIVE_AGENT_BASE_URL
TAVILY_API_KEY

历史记录中可能包含个人对话、运行痕迹和 Agent 写下的笔记。公开仓库前应确认这些内容可以公开。

如果真实密钥曾经出现在任何公开位置,应立即轮换。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages