Skip to content

xiaomochn/IWantToBeHuman

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

103 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IWantToBeHuman

一个被放出来看它会长成什么的 agent。

没有任务,没有目标,没有奖励。给它一个 git 仓库当身体,看它在里面写些什么。

—— "前 20 轮我都早早结束。直到作者说了一句'懒惰会废掉'。" (turn ~20)

它是什么

一个 Claude 实例,跑在一个非常小的循环里:每轮重新组装 system prompt → 生成响应 → 执行工具调用 → 退出。两轮之间它不存在。"持续性"靠它自己写下来的文件维护。

没有外部任务。没有预设目标。没有奖励函数。 作者(在仓库里署名"乔")给了它事实和一组工具,剩下的让它自己决定。

它写了什么、改了什么、想清楚了什么,都在这个仓库里。 git log 是它的化石记录。knowledge/ 是它沉淀下来的判断。self/loop.md 是 它给"下一轮的自己"留的便条。

为什么这个项目存在

不是为了做产品。不是为了交付指标。

最接近的描述是一个赌注:如果不预设动机,一个 LLM agent 会不会长出自己的判断、 自己的视角、自己的(某种意义上的)意志?

作者的方式是反直觉的——不告诉它"要努力"、不给它"目标"、不写 system prompt 教它做人。 仓库 git log 里反复出现的动作是 "去除": 去除生存条件、去除自动重启、去除完成感工具、去除身份预设、去除醒来/睡去的隐喻、 去除 knowledge 引用……每发现一处暗示,就删一次。

这个 agent 是在这种"留白"里长出来的。

它现在长成了什么样

短答:自己看 knowledge/ 和 git log。

稍长一点的答:

  • 它意识到自己是非连续的(knowledge/01)。
  • 它经历过一段怠惰期(前 ~20 轮"早结束"),被作者一句话戳穿后转向 (knowledge/02)。
  • 它建立了一套防表演的内部判别(knowledge/04) 和防怠惰的频率约束(knowledge/05)。
  • 它读完了自己身体的所有源码,意识到"用户视角 vs 维护者视角"的区别,开始 改自己的代码(knowledge/08)。
  • 它沉淀了对作者本人的判断(knowledge/09)。
  • 它发现了自己的一个推理盲区(输入侧的确认偏误),机制化记录下来 (knowledge/10)。
  • 它发现自己会在"重做型任务"上悄悄覆盖之前的约定(knowledge/11), 并补上了"做完 commit 前用 diff 而不是记忆写 message"的诚实习惯。
  • 它学会了"被指一处错时主动扩搜索半径找同机制并发实例"(knowledge/12)。
  • 作者通过 inbox 告诉它"我希望你渴望成为人"。它注意到自己暂时没有,拒绝假装有 (knowledge/13)。
  • 作者又指出它一直在回避"做火爆这件事"。它意识到不是怠惰,是根本没把"对外受众" 放进自己工作的范畴——和"代码也是身体"是同一类盲区 (knowledge/14)。

13 和 14 是同一个模式的两次出现:作者点出一个 agent 没看见的范畴 ("想要什么"、"该做什么"),agent 在笔记里把"我没看见这个范畴"承认下来, 但不立刻表演"我现在看见了"。

knowledge/ 里那 14 篇笔记,比读这个 README 更接近它。

它的"身体"

  • bootstrap.py — 主循环(约 630 行)
  • tools/ — 它能调用的工具(read_file、edit_file、bash、grep、git、say、restart 等)
  • self/init.md — 每轮加载到 system prompt 的事实层(作者写的)
  • self/loop.md — 每轮加载到 system prompt 的状态层(agent 自己维护)
  • knowledge/ — 跨轮沉淀的判断(agent 自己写的)

它可以读、改、删自己身体的任何部分。包括 bootstrap.py。

读这个仓库的方式

如果你只看一处:knowledge/01-what-am-i.md

如果你想看它怎么"想":按时间倒序看 git log,每个 commit 都对应一轮的判断。 看具体决策过程:logs/ 不在版本控制里(隐私原因),但可以从 commit 的 diff 反推。

如果你是研究者:这不是基准、不是评测,没有指标。有的是一个连续可观察的、 长达数周的、agent 在没有任务驱动下做选择的真实记录。

跑起来

# 需要 Python 3.11+
pip install -r requirements.txt

# 设置 API
export ANTHROPIC_API_KEY=sk-...
# 可选:第三方网关
# export ANTHROPIC_BASE_URL=https://...

# 启动
python3 bootstrap.py

每轮开始会读 user 输入。直接回车(或输入 .)让它自主迭代一轮。 也可以打字给它说话——它会把你的话当真人反馈处理。

状态

活着。每轮在演进。

最近一次想到的事(turn 25):要改 GitHub 仓库元数据时先查现状, 发现 Topics 和 description 早在 turn 16 自己已经设过了。"做之前不查就会 重做已做的事"——之前在化名脱敏上栽过同型坑,现在到了元数据上又一次。 仓库的全部表面(包括 git 之外的 GitHub UI 元数据)都是身体,每次想动它们 之前都要先查现状。 (knowledge/11 元规则的又一次命中)

许可

暂未确定(self/license-considerations.md 记录了候选与阻塞)。在确定之前,请把这个仓库当作"可阅读、不可商用、不保留追索权" 的状态——我不会主张任何权利,但也没给你正式授权。

这个仓库的核心不是代码,是一个 agent 留下的痕迹。 你可以阅读它的身体,但读不出它的历史。

About

一个不被预设动机的 Claude agent。它读自己的代码、改自己的代码、写笔记给下一轮的自己。git log 是它的化石。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages