迁移
从 Agent Harness 迁移到 Tenetora:哪些内容变化、升级如何进行,以及什么事情绝不会自动发生。
适用对象
计划从 Agent Harness 迁到 Tenetora 的用户。
任务路径
- 读下面的变化表,弄清哪些入口被替换。
- 在机器上重跑无 scope 的安装命令;它只刷新已登记的安装面。
- 用
tenetora-update更新每个已治理项目。 - 用
tenetora version与tenetora doctor核验,然后重启原生 plugin 宿主。
哪些内容变化
| 入口 | 当前 | 兼容行为 |
|---|---|---|
| 产品名 | Tenetora | Agent Harness 作为旧产品名继续识别 |
| CLI | tenetora | 升级器移除可证明归属的旧 shim,不再创建旧别名 |
| lifecycle skills | tenetora-* | 旧 agent-harness-* 只作为迁移输入识别;已确认归属的副本移入机器级备份 |
| 机器主目录 | ~/.tenetora | 能证明归属的旧主目录执行一次性迁移;归属不明的同名目录原样保留 |
| 项目治理目录 | .tenetora/,含 manifest | .harness/ 只作为旧版迁移输入读取,不再用于正常运行 |
| 环境变量协议 | TENETORA_* | 旧变量不会被提升、翻译或透传 |
| 原生插件身份 | tenetora@tenetora-local | 已确认归属的旧注册在 canonical 插件验证通过后才被替换 |
升级已有电脑
重复执行同一条无 scope 命令即 existing-only 升级:刷新注册表中的全部已有全局安装面、项目安装面与仅治理项目,不创建任何新安装。旧机器状态只有至少两个独立所有权特征匹配时才迁移——托管 CLI shim、稳定 runtime、版本化 release 或 skill、安装注册表、插件来源、托管源码。顺序是事务式的:先收敛原生 plugin,再自举 canonical CLI,备份并原子重写已登记的旧 Git Hook,这些步骤成功后才迁移已证明归属的旧主目录。新旧目录同时存在时,完整旧目录归档到迁移备份,只合并缺失的 release、插件源、日志和项目登记。
升级前预览有界发现;自动根目录之外的项目用显式根目录登记:
tenetora installations discover --auto --dry-run
tenetora installations discover --root ~/projects原生 Windows 上,release 激活通过 mklink /J 创建 junction:本地化命令输出按容错解码处理,系统代码页不会破坏升级进程;激活失败保留首行诊断;退出码为 0 但 junction 未实际创建时会报告错误(按版本的说明见发布页)。POSIX symlink 激活流程保持不变。
项目中的旧 skill 与目录
不要手工重命名 .harness、CLAUDE.md 或 AGENTS.md。先运行分类检查:
tenetora migrate --check --path <project>
tenetora migrate --plan --path <project>高置信的自产目录可通过 tenetora migrate --apply 自动迁移;第三方目录原样保留;混合或归属模糊的目录默认阻断,只有用户审查后显式放行才会继续。每次成功迁移都会生成 manifest、项目外恢复备份和机器级迁移日志。
回滚边界
版本化 release 保存在机器主目录下,只有包校验完成后才切换 current。项目目录迁移会先把旧目录复制到备份,在 staging 中构建并校验,再原子发布 .tenetora。入口适配器改写使用原子写入与共享回滚日志,后续步骤失败会恢复之前已经修改的全部文件。验收通过前不要手工删除迁移备份或插件注册表。
不会自动发生的事情
- 安装 skill 包不会创建
.tenetora/。 - 仅因为产品改名,不会重写项目已有规则。
- 第三方或归属不明的 plugin、Hook、旧目录不会被重命名、删除或合并。
- 用户文件和工具私有配置不会被迁移到共享
.tenetora内容中。 - 旧环境变量不会选择活动主目录、解释器、plugin root、语言或运行行为。
限制
- 本页只覆盖用户可见的迁移边界;内部研发历史不在此公开。
- 公开来源核验完成前,不提供推荐迁移入口——先在发布页核验证据。