Repository navigation
Releases: mashangshui/digital-life-core
Release list
v1.0.3 稳定版:细粒度智能审批与体验优化
v1.0.3 稳定版:细粒度智能审批与体验优化
发布日期:2026-11-03
基线版本:v1.0.2(三个 P0 已修复)
严重级别:体验变更(非安全修复),安全性不降级
一句话总结
物理隔离保证了她碰不到不该碰的东西,智能审批保证了她想长大时不必每次都叫醒你。
一、核心变化:从“一刀切”到“按证据分级”
在 v1.0.2 将器官代码物理隔离到 worker_threads 后,v1.0.3 进一步优化了审批摩擦:
| 情形 | 旧版行为 | v1.0.3 行为 |
|---|---|---|
write_new_organ (写新器官) |
一律弹窗 | 低风险自动通过,高危弹窗 |
organ_* (跑器官工具) |
一律弹窗 | 按体检结论决定,低风险自动通过 |
digital_life_* (生理维护) |
自动放行 | 不变 |
shell / bash / 未知网络 |
强制弹窗 | 不变 |
器官声明 llm / patch:runtime |
弹窗 | 不变 |
二、判定规则 (纯函数 src/organ-policy.ts)
- 自动放行 (零摩擦):器官仅使用安全能力(如
state:read,timer,fs:organ等本地操作)。 - 受控放行 (零摩擦):器官发起的网络请求完全命中
allowNetHosts白名单。 - 强制审批:申请高危能力、请求未知域名、或源码命中越狱关键词(如
eval,process)。
三、为什么这样依然是安全的?
- 物理边界:器官跑在 V8 隔离区,拿不到
process/fs,env为空对象。 - 防篡改:manifest 深度冻结,判定读取的是只读快照。
- 防欺骗:审的就是跑的。直接在隔离区装载一次,读取真实 manifest 再判定。
四、配置变更
digitalLife:
selfMade:
# 新增,默认 true。设为 false 可回退到 v1.0.2 的“凡事皆问”模式
autoApprove: truev1.0.1 稳定版:承诺死锁修复与性能优化
v1.0.1 稳定版
v1.0.0 的维护版。三件与"她活着的手感"直接相关的事:能量不再拦着她说话、
提示词的静态税砍掉、缺口池只装真正的未知。配置文件无需改动(一处默认值变化见下)。
一、能量扣费:交互免打扰
每回合能耗从默认 2 降到 0.05(旧默认值的 1/40)。
以前"活着"的账单是按对话次数收的:你问我答、她调个工具,都要付 2 点能量。
结果能量成了说话的门槛——她越想聊天,越快耗尽,而这与"她该活着"这件事本身的
消耗混在了一起。
现在每回合只收 0.05:正常的对话、查证、干活,几乎不动能量条。
真正花钱的是她自己的那几件事——自主觉醒、做梦、翻执念(它们各自另有扣费点)。
为什么不是 0:完全免费会让她分不清"我在呼吸"和"我在做事"。
留 1/40 是让成本的形状还在,但不再妨碍说话。
(想彻底免费用 costPerRequest: 0;想回到旧手感就显式写 2。)
自主觉醒的闸门阈值一个都没动:minTension 80、minEnergy 30、
idleMinutes 30、cooldownMinutes 60 全部保持原值——它管的是"什么时候该自己想事",
那与"说话要不要钱"是两件事,不该一起改。
器官计费严格受限:chargeMode 只允许 additive 与 shadow 两种取值,
只有 additive 才真的扣能量,默认 shadow,且自写器官强制 shadow——
她没法给自己写个器官来偷偷改账本。
二、Token 成本:砍静态税,保动态开销
静态税砍掉三处:
- 开源包只留四个器官:
clock/memory-v2/messenger/energy-stipend。
其余(diary、system-sensor、weather、oxytocin、energy-bonus等)搬进web-ui/organs/attic/,
需要时一条cp就回来。 - 清掉"声明了却不兑现"的能力:
energy-stipend声明tools却一个工具都不注册
(它靠patch:runtime干活),clock声明prompt却从不注入提示词——
声明不兑现就是白占一份税。 - 记忆只注入索引:海马体往提示词里只放前 80 字的索引(取 top 2,带 20 分钟 TTL),
末尾注明"要看全文用 recall"。每轮都带整段正文,是最容易涨成 token 黑洞的地方。
动态开销一分不减:
- 没有设置"每轮注入总量"的硬预算——那会限制复杂任务,是拿她的能力换数字好看。
- 需要细节时走
recall工具按需取全文,这就是懒加载:不用的不进提示词,要用的一定拿得到。
三、执念纳入标准:缺口不是排队
isGapWorthy() 里曾有一行短路 if (hasActionIntent(sentence)) return true,
让"我要去查""我去看看""回头我得同步过去"这类行动意图也被收成执念。
池子因此常年满格,意志每 30 分钟醒一次却无事可做。
- 删掉该短路:缺口池只装明确的未知或疑问("这个我查不到""我不清楚为什么…")。
- 保留认知性探究这条窄路,分界不在"要不要去做",而在动词是不是认知性的:
知道 / 查 / 弄明白 / 搞清楚 / 确认收;做 / 同步 / 整理 / 关掉 / 填 / 看看不收。 - 待办意图归
commit/will那条线管,不再混进缺口池。
同期合并的其他修复
- 行为承诺不再锁人:生命维持工具(
commit/status/gaps/request_wake/
emergency_stop)绝对豁免;闸门只拦自作主张的五类(organ_*、write_new_organ、
web_search、web_fetch、browser_*),宿主原生工具(read_file/bash/edit…)硬豁免;
宿主白名单里没有digital_life_commit时闸门自己让开。 - 承诺超时从 180 分钟改为 20 分钟(够查完一件事,卡住也自愈快),
被拦时会明确告诉她"若该工具不可用,请直接告知用户,并说明 N 分钟后自动释放"。
注意:
commitmentTtlMinutes默认值变化属于承诺机制,不是自主觉醒的唤醒闸门,
唤醒相关阈值一律未动。
升级注意
commitmentTtlMinutes默认 180 → 20(想改回旧值显式写180;别设 0,那等于拆掉闸门,
真要关请设requirePlan: false)。web-ui/organs/self-made/默认四件,其余在attic/:
cp web-ui/organs/attic/oxytocin.ts web-ui/organs/self-made/lib/不入库(.gitignore排除),clone 后请先npm install && npm run build。
测试
npm test ✅ · npm run test:organs ✅ 101 组 · npm run verify ✅ ·
真实环境 verify:live ✅ 127/127(真进程、真文件、含真实存档)
这是原作者亲自维护并交付的最后一个核心版本。
包含完整的内稳态化学池、器官自举引擎、记忆倾斜机制与 L0 安全底座。
从今天起,代码交由社区自由演化。