@elephantalker/claude-code-toolkit
v0.22.0
Published
Installer and drift-safe uninstaller for Elephantalker's curated Claude Code toolkit.
Readme
Elephantalker Claude Code Toolkit
一个安装到当前项目的精选工具包,目标 Agent 为 Claude Code、Kimi Code、pi 与 DeepSeek Harness。Claude 侧组件(Skills、Hooks、Agents)装入单个插件目录 .claude/skills/ett/(技能命令为 /ett:<name>,hooks 由插件根 hooks/hooks.json 注册,安装不写 .claude/settings.json);Kimi 侧无插件壳,Skills 平铺到 .kimi-code/skills/ett-<name>/(以 /skill:ett-<name> 调用),Agent 文件写入 .kimi-code/agents/;pi 侧同样平铺到 .pi/skills/ett-<name>/(以 /skill:ett-<name> 调用),Agent 文件写入 .pi/agents/(需 pi-subagents 扩展提供项目级 agent 发现);DeepSeek Harness 侧平铺到项目 .dsh/skills/ett-<name>/(无 Agent 目录概念)。脚本与配置写入项目根 eccToolkit/(多目标共享一份),不修改用户级配置,也不向上搜索 Git 根目录。
当前版本:0.22.0。
先看结论
工具包提供三个可独立选择的组件:
| 组件 | 作用 | 安装后的主要入口 |
|---|---|---|
| hello | 验证安装、插件发现和 ett 命名空间 | /ett:hello |
| continuous-learning-v2 | 安全采集项目经验,经人工审核后复用或生成 Skill/Agent | /ett:setup、/ett:review、/ett:evolve 等 |
| project-docs | 初始化并同步模块级 AGENTS.md 与 DESIGN.md(模块 CLAUDE.md 恒为一行 @AGENTS.md 导入) | /ett:init、/ett:doc-update、/ett:doc-update-lite |
project-docs 同时支持 Claude Code、Kimi Code、pi 与 DeepSeek Harness(Kimi/pi 侧入口为 /skill:ett-init、/skill:ett-doc-update、/skill:ett-doc-update-lite;DeepSeek Harness 侧为同名 ett-* Skill);hello 与 continuous-learning-v2 为 Claude Code 专属。组件按兼容矩阵分配到支持它的已选目标 Agent,没有任何落点的组件会报错中止。
本插件的专属名词(instinct、observation、Observer、人工审核闸门、受管安装等) 详见 docs/glossary.md;正文首次出现处会链接到对应条目。
环境要求:Node.js >=22.20.0,以及 Claude Code、Kimi Code 或 pi(pi 的 agent 文件需 pi-subagents 扩展)。只有 continuous-learning-v2
的 full 模式额外需要 Python 3、Claude CLI 和可运行脚本的 Bash;Windows 推荐
Git Bash。
安装与卸载
在目标项目根目录运行交互安装:
npx @elephantalker/claude-code-toolkit@latest非交互安装可重复传入 --skill:
npx @elephantalker/claude-code-toolkit@latest \
--skill continuous-learning-v2 \
--skill project-docs \
--agent claude-code \
--yes可用安装参数:
| 参数 | 含义 |
|---|---|
| --skill hello\|continuous-learning-v2\|project-docs | 选择组件,可重复 |
| --agent claude-code\|kimi-code\|pi-agent\|deepseek-harness | 目标 Agent,可重复;kimi-code、pi-agent 与 deepseek-harness 只接受 project-docs |
| --yes | 非交互确认;使用 --skill 或 --agent 时必须提供 |
安装到 Kimi Code:
npx @elephantalker/claude-code-toolkit@latest \
--skill project-docs \
--agent kimi-code \
--yes安装到 pi(.pi/skills/ 平铺;agent 文件需 pi-subagents 扩展,缺失时由 SKILL 内置指引降级):
npx @elephantalker/claude-code-toolkit@latest \
--skill project-docs \
--agent pi-agent \
--yes安装到 DeepSeek Harness(.dsh/skills/ 平铺;DSH 从项目根 .dsh/skills/ 读取技能,优先级高于用户全局技能目录):
npx @elephantalker/claude-code-toolkit@latest \
--skill project-docs \
--agent deepseek-harness \
--yes同时传多个 --agent(如 --agent claude-code --agent kimi-code --agent pi-agent --agent deepseek-harness)即多目标安装,各目标共享一份
eccToolkit/ 载荷。当前目录不是 Git 仓库根时会警告(Kimi Code 从最近的 .git
祖先加载项目级组件,pi 从 cwd 及祖先目录加载,DeepSeek Harness 以最近的 .git 祖先为项目根):交互安装需确认后继续,--yes 打印警告后继续。
Claude Code 目标安装后执行 /reload-plugins,或从项目根重启 Claude Code;
Kimi Code 目标在新会话中自动加载;pi 目标在 pi 中运行 /reload(或重启会话)后加载;
DeepSeek Harness 目标在新会话中自动加载。
卸载命令:
npx @elephantalker/claude-code-toolkit@latest uninstall
npx @elephantalker/claude-code-toolkit@latest uninstall --yes
npx @elephantalker/claude-code-toolkit@latest uninstall --agent kimi-code --yes
npx @elephantalker/claude-code-toolkit@latest uninstall --agent pi-agent --yes
npx @elephantalker/claude-code-toolkit@latest uninstall --agent deepseek-harness --yes交互卸载默认选择“否”;非交互环境必须使用 --yes。卸载默认移除全部检测到的目标;
--agent <id> 只卸指定目标。卸载只删除经过哈希验证的
受管内容——Claude 侧插件壳 .claude/skills/ett/、Kimi 侧 .kimi-code/skills/ett-*/
与 pi 侧 .pi/skills/ett-*/、DeepSeek Harness 侧 .dsh/skills/ett-*/ 及受管 Agent 文件,
以及项目根 eccToolkit/ 载荷;载荷由多目标共享,其他目标仍安装时
保留载荷。卸载不修改 .claude/settings.json,保留 .claude、.kimi-code、.pi、.dsh、学习数据以及
后来发布的 Skills/Agents。检测到修改、缺失、额外文件或非法状态路径时会拒绝删除;唯一的例外是
ETT 数据产物 eccToolkit/ett-docs.json(由 docs.mjs index 生成的模块索引),它不视为额外文件,
卸载后保留在 eccToolkit/ 原位供项目归档。
Continuous Learning v2:它如何运作
最短上手流程
/ett:setup capture-only # 先只采集,不调用模型
/ett:status # 核对实际生效模式
/ett:setup full # 需要自动生成候选时再开启
/ett:review # 人工批准或拒绝候选
/ett:evolve # 可选:把已批准经验生成为 Skill/Agent推荐先用 capture-only 检查采集范围和脱敏结果,再逐项目启用 full。
完整数据流
flowchart TD
A["PostToolUse / PostToolUseFailure"] --> B{"排除规则 · 脱敏 · 裁剪"}
B -->|命中排除项| X["整条丢弃"]
B -->|通过| C["observations.jsonl(本项目本地观察)"]
C --> D{"有效模式为 full?"}
D -->|"off / capture-only"| E["仅积累观察,不调用模型"]
D -->|"达到 minObservations 或兜底间隔"| F["Observer 读取安全批次,调用 Claude CLI"]
F -->|"失败 / 超时 / 限流:保留观察"| C
F -->|"成功:批次归档"| H["instincts/pending(待审核候选)"]
H --> I["/ett:review(人工审核闸门)"]
I -->|批准| J["instincts/personal(项目已批准)"]
I -->|拒绝| K["instincts/rejected(留档不删)"]
J --> L["SessionStart 注入(≤6 条 · 置信度 ≥0.7)"]
J --> M["/ett:evolve 聚类生成 Skill/Agent 候选"]
M --> N["/ett:evolve-review(第二道闸门)"]
N -->|批准| O["发布到 .claude/skills 或 .claude/agents"]
J --> P["/ett:promote(迁移到全局作用域)"]
G["ecc@ecc 已启用 → 实际模式强制 off"] -.互斥.-> D图中名词见名词解释:观察、 Observer、instinct、 注入、人工审核闸门、 作用域与提升、 Evolve 与 Evolved 候选。
关键边界:
- 只采集
PostToolUse和PostToolUseFailure,不保存普通用户提示、助手回复或完整会话。 - 敏感路径整条排除;常见凭据字段和令牌会脱敏;MCP 结果只保留受限结构。
- 输入、输出分别限制在约 5000 个序列化字符。
- Observer 只能创建
pending候选,不能自动批准、注入或发布。 - 只有人工批准的 instinct 才可能进入后续会话;默认最多注入 6 条、置信度至少
0.7。 - Observer 成功后归档已处理批次;失败、超时或限流时保留原观察,供以后重试。
- 如果当前有效配置启用了完整
ecc@ecc,精选版严格互斥并把实际采集模式置为off。
三种模式
三种采集模式的行为差异:
| 模式 | 采集 | Observer 模型调用 | 已批准经验注入 |
|---|---:|---:|---:|
| off | 否 | 否 | 是 |
| capture-only | 是 | 否 | 是 |
| full | 是 | 达到调度条件时调用 | 是 |
内建全局默认始终为 off。capture-only 只有显式使用
--global-default --confirm-privacy 才能成为后续项目的默认值;full 只能逐项目启用。
用户配置文件(config.json)
Observer、注入与排除项等调优设置保存在学习数据目录的
projects/<项目ID>/config.json,由用户手工编辑、保存即生效(下一次 Hook/Observer
读取时);文件解析失败回退默认值并告警,不会中断采集。/ett:status 的
user config: 一行显示当前项目的实际路径。
| 字段 | 默认值 | 含义 |
|---|---|---|
| observer.model | haiku | Observer 调用的模型 |
| observer.minObservations | 20 | 触发 Observer 所需完整观察数 |
| observer.sampleLimit | 200 | 单批最多读取数 |
| observer.timeoutSeconds | 120 | Claude CLI 超时秒数(1~3600 的整数;慢环境可调大,如 300) |
| observer.intervalMinutes | 5 | 有完整观察时的低频兜底间隔(分钟) |
| injection.enabled | true | 是否在 SessionStart 注入已批准经验 |
| injection.confidenceThreshold | 0.7 | 注入置信度下限 |
| injection.maxInstincts | 6 | 单次最多注入条数 |
| capture.excludeTools / excludePaths / excludeMcp | [] | 排除的 glob 列表 |
完整示例与逐字段说明见安装产物的 references/continuous-learning-v2.md。
模式与 full 依赖记录不在配置文件中,只能经 /ett:setup 修改。
Observer 用项目级 lease 防止重复运行。Claude CLI 的内层超时之外,Node runner 只增加
固定 30 秒启动/清理宽限,不会给模型增加调用时间。Python 与 Claude CLI 的标准输入输出
固定使用 UTF-8。模型偶尔用三个反引号(可带 md 或 markdown 标签)包住整份文档时,
运行时只移除这一层;候选正文里的代码块会保留,歧义或未闭合
围栏则判为失败并保留观察。
命令速查
零参数调用以下技能时,Claude Code 会进入对话流程;带参数时直接执行。
| 入口 | 作用 | 参数 |
|---|---|---|
| /ett:setup | 查看选择并配置模式 | 见下方“setup 参数” |
| /ett:status | 显示配置模式、有效模式、ECC 状态、注入和 Observer 限制、用户配置文件路径 | 无 |
| /ett:review | 列出、批准或拒绝 pending instinct | list\|approve <id>\|reject <id>\|approve-all\|reject-all,可带 --scope project\|global;单条批准可带 --action <文本> |
| /ett:promote | 把已批准的项目 instinct 提升到全局作用域并移除项目来源;零参数时列出并多选批量提升 | <id> [...] |
| /ett:evolve | 分析已批准经验,或生成 Skill/Agent 候选 | --generate --type skill\|agent --name <name> [--instinct <id> ...] |
| /ett:evolve-review | 列出、批准或拒绝 evolved 候选 | list\|approve <id>\|reject <id>;批准可带 --content-file <edited.md> |
导入导出、projects 列表、pending 清理、旧版观察整理和维护脚本没有入口命令;
它们的 CLI 调用方式见安装产物的 references/continuous-learning-v2.md。
/ett:promote <id> 是作用域迁移,不是复制。工具先创建全局 instinct,成功后再从实际项目来源中移除同 ID 的块;混合文件中的其他块保持不变。若全局写入失败,项目来源不变;若全局写入成功但来源清理失败,命令保留全局结果并明确报告部分成功。批量提升时逐条独立执行、逐条报告。
setup 参数
/ett:setup off
/ett:setup capture-only
/ett:setup full| 参数 | 作用 |
|---|---|
| --global-default | 修改后续项目的全局默认;只允许 off、capture-only |
| --confirm-privacy | 把 capture-only 设为全局默认时的必需确认 |
Observer 模型与超时、注入与排除项等调优不再经 setup 参数设置,请编辑
config.json(见“用户配置文件”一节)。
旧观察整理
旧版观察整理是文档化操作(没有入口命令,调用方式见参考文档),只处理 当前项目。默认先分类并预览:
legacy:明确识别的旧 ECCtool_start、旧tool_complete;current:当前 ETT 记录;parseError、malformed、unknown:不移动,留给人工判断。
确认后,旧记录按原始文本和顺序写入唯一的 observations.legacy/*.jsonl。实际写入要求
有效模式为 off 且没有活动 Observer lease。中断可能留下
observations.cleanup/<事务ID>;再次预览会列出残留,按参考文档中的
clear-observations --resolve <事务ID|all> 解决。
“解决”会依据 manifest 和 SHA-256 恢复原活动文件或保留已提交文件,不是直接删备份。
任一残留存在歧义时 all 整体拒绝。已完成的 observations.legacy 归档不会被命令自动删除;
用户核对后可以手工删除。
Continuous Learning v2 会创建哪些文件
1. 项目中的受管安装(壳 + 载荷)
Claude Code 目标的安装产出两处受管目录:壳(项目 .claude/)与载荷(项目根 eccToolkit/)。
Kimi Code 目标无插件壳:Skills 平铺为 .kimi-code/skills/ett-<name>/,Agent 文件位于
.kimi-code/agents/,安装状态为 .kimi-code/.ett-install.json;pi 目标同样平铺为
.pi/skills/ett-<name>/,Agent 文件位于 .pi/agents/,安装状态为 .pi/.ett-install.json;
DeepSeek Harness 目标平铺为 .dsh/skills/ett-<name>/(无 Agent 目录),安装状态为
.dsh/.ett-install.json。三个平铺目标与 Claude 侧共享同一载荷。
壳(Claude 侧心智产物与身份)
| 路径 | 用途 |
|---|---|
| .claude/skills/ett/.claude-plugin/plugin.json | Claude Code 插件清单和版本 |
| .claude/skills/ett/.ett-install.json | 安装器所有权、已选组件、壳与载荷的受管哈希;安全升级/卸载依据 |
| .claude/skills/ett/agents/ | project-docs 的 doc-maintainer Agent |
| .claude/skills/ett/skills/setup/ … | 嵌套的 6 个 /ett:<name> 技能入口(frontmatter 保持模板简名) |
| .claude/skills/ett/hooks/hooks.json | CL-v2 的插件 Hook(SessionStart、ConfigChange、PostToolUse、PostToolUseFailure、SessionEnd),经 ${CLAUDE_PROJECT_DIR}/eccToolkit/... 调用载荷脚本;安装不写 .claude/settings.json |
载荷(项目根 eccToolkit/,完全受管)
| 路径 | 用途 |
|---|---|
| runtime/ | 配置、采集、审核、整理、注入和演化逻辑 |
| observer/ | Bash、Node、Python 和 Claude CLI 的 Observer 执行链 |
| maintenance/ | 维护脚本(旧数据迁移、ECC 来源对照),无命令入口 |
| provenance/source-lock.json | 固定 ECC 来源与文件哈希 |
| references/ | 配置表、文档化操作与维护脚本参考(continuous-learning-v2.md) |
| templates/ | project-docs 的模块文档模板 |
| THIRD_PARTY_LICENSES/、LICENSE | 来源许可 |
不要手改受管文件;修改后安装器会拒绝覆盖或卸载,避免误删用户内容。
2. Claude Code 分配的插件数据
根目录由 ${CLAUDE_PLUGIN_DATA} 提供,命令和 Hook 会使用同一目录:
| 相对路径 | 用途 |
|---|---|
| continuous-learning-v2/global.json | 全局安全默认模式 |
| continuous-learning-v2/projects/<项目ID>.json | 项目模式、Observer、注入、排除项和 full 依赖 |
| continuous-learning-v2/runtime-state/<项目ID>.json | 最近一次 ecc@ecc 状态核对结果 |
3. 学习数据目录
学习数据目录的优先级:绝对 CLV2_HOMUNCULUS_DIR → 绝对
XDG_DATA_HOME/ecc-homunculus → ~/.local/share/ecc-homunculus。
| 相对路径 | 用途与生命周期 |
|---|---|
| projects.json | 项目 ID 注册表 |
| projects/<ID>/project.json | 当前项目元数据 |
| projects/<ID>/config.json | 用户所有的调优配置(Observer、注入、排除项);手工编辑生效 |
| projects/<ID>/observations.jsonl | 当前活动观察流 |
| projects/<ID>/observations.archive/*.jsonl | Observer 成功处理过的批次 |
| projects/<ID>/observations.legacy/*.jsonl | 用户确认整理后的旧 schema 原始行;永不自动删除 |
| projects/<ID>/observations.cleanup/<事务ID>/ | 整理中断残留;含 manifest、backup、next,正常成功后移除 |
| projects/<ID>/.observation-cleanup.lock | 整理/恢复期间的互斥锁;采集 Hook 和 Observer 看见它时跳过工作 |
| projects/<ID>/.observer.lease | 防止同项目并发 Observer;运行结束后移除 |
| projects/<ID>/.observer-batch-*.jsonl | 本次送入 Observer 的临时批次 |
| projects/<ID>/.observer-output-*.md | Observer 临时候选输出 |
| projects/<ID>/.observer-state.json | 最近成功或失败时间及错误 |
| projects/<ID>/instincts/pending/*.md | Observer 生成、尚未审核的候选 |
| projects/<ID>/instincts/personal/*.md | 已批准的项目经验 |
| projects/<ID>/instincts/inherited/*.md | 导入到项目作用域的经验 |
| projects/<ID>/instincts/rejected/*.md | 已拒绝候选 |
| projects/<ID>/instincts/review-decisions.jsonl | instinct 审核日志 |
| projects/<ID>/evolved/pending/*.json | 待审核 Skill/Agent 候选 |
| projects/<ID>/evolved/rejected/*.json | 已拒绝演化候选 |
| projects/<ID>/evolved/review-decisions.jsonl | 演化审核日志 |
| instincts/personal/*.md | 全局已批准/已提升经验 |
| instincts/inherited/*.md | 导入到全局作用域的经验 |
Observer 临时文件正常结束后会清理。学习数据和插件数据位于受管插件目录之外,因此普通卸载 不会删除它们。
批准 evolved 候选后,最终用户文件写到项目的 .claude/skills/<name>/SKILL.md 或
.claude/agents/<name>.md;这些文件不归安装器管理,也不会被卸载。
Project Docs
project-docs 不注册 Hook,也不会在安装时修改文档。
| 命令 | 作用 | 参数 |
|---|---|---|
| /ett:init [path] | 扫描整个仓库或指定范围,经确认后创建/协调模块 AGENTS.md 与 DESIGN.md;包根及其 src 下的直接业务子目录(如 backend/src/movies)都会成为模块候选 | 可选仓库内文件或目录 |
| /ett:doc-update [path] | 完整协调:对比 HEAD 和完整工作区,对受影响模块做语义 reconciliation(含 README 迁移、质量自评分),并重建索引;每次运行的最终 validate 全量检查索引内全部模块 | 可选仓库内文件或目录 |
| /ett:doc-update-lite [path] | 轻量同步:修正受影响模块的过时描述、为新模块建 AGENTS.md/DESIGN.md 并入索引;内联执行、不委派 doc-maintainer,token 开销最小 | 可选仓库内文件或目录 |
三个入口都只由用户显式调用(模型不自动触发)。Kimi Code 侧对应入口为
/skill:ett-init、/skill:ett-doc-update、/skill:ett-doc-update-lite(pi 与 DeepSeek Harness 侧相同)。
/ett:init 会生成应提交的 eccToolkit/ett-docs.json 模块索引,并在根 AGENTS.md
加入受管协作规则。索引按模块记录同步基线(synced):提交代码时漏跑同步,下次
/ett:doc-update 或 /ett:doc-update-lite 会从该基线起 diff,自动捞回遗漏的变更。
模块文档采用解耦双文档模型:AGENTS.md 是给 AI 的精简文件,只记录无法从代码直接得出的
内容(硬约束、不变量、坑、决策理由),不重述可从代码/清单查到的入口与命令,也不指向
DESIGN.md;DESIGN.md 是给人看的设计地图(目标、架构流程、接口依赖、决策权衡、
不变量、失败模式、限制),帮助写提示词时定位"哪块代码做什么、该改哪个模块哪块 UI"。
模块 CLAUDE.md 恒为一行 @AGENTS.md 导入,供 Claude Code 读取同一正本。
模块 README 只有在有价值内容全部迁移且用户确认后才可能删除;根 README 永不删除。
文档同步 Skill 不执行 git add 或 git commit。
docs.mjs index 以完整 --module 清单为前置条件(fail-closed):清单为空时拒绝写入、
不改变既有索引,除非显式 --force 声明放弃既有状态;validate 在索引为空时显式报错,
对模块文档中的过时绝对路径(如失效的 D:\... 盘符路径)报 STALE_ABSOLUTE_PATH
警告并汇总点名,使非受影响模块的历史残留也能被发现。ETT 工具自身安装物(eccToolkit/、
.ett.*、模块索引)不进入业务候选与未映射变更报告,但保留在 changes 中可见。
可在仓库根创建 .ettignore(gitignore 风格语法,支持 ! 取反与 ** 跨目录)声明
不想纳入模块发现的路径;/ett:init 与 /ett:doc-update 自动读取并把命中项从模块候选、
changes 与未映射变更中排除。显式 index --module 传入被排除路径会放行并提示警告;
.ettignore 的取反只在自身规则内生效,不能解除 .gitignore 或工具安装物的硬排除。
常见问题
full 无法启用
先运行 /ett:status。setup 会核对 claude plugin list --json,并探测 Python、Claude CLI
和 Bash。Windows 可用 CLAUDE_CLI_PATH、ELEPHANTALKER_BASH_PATH 或 Claude Code 的
CLAUDE_CODE_GIT_BASH_PATH 显式指定路径。兼容覆盖
ELEPHANTALKER_CLAUDE_PLUGIN_LIST_JSON、ELEPHANTALKER_FULL_DEPENDENCY_JSON 仍受支持,
但正常环境不应依赖它们。
从 0.18.0 升级到 0.19.0
0.19.0 是基于全量代码审查的缺陷修复版本,不改变安装布局与状态 schema。修复要点:
共享载荷按「所有引用目标 ∪ 本次安装」的组件并集重建,避免多目标顺序安装后新组件载荷文件缺失、
以及重装时误删其他目标仍在引用的载荷文件(同时同步各引用目标状态中的载荷哈希);doc-update
的变更收集不再把 ETT 自身安装物(eccToolkit/*、.ett.*、ett-docs.json)误归到根模块;
非交互环境未带 --yes 运行安装器时改为明确报错而非悬挂;instinct-review approve/reject
缺 id 时拒绝批量处理;以及卸载 settings Hook 解析容错、迁移空目录、索引原子写、AWS 凭据脱敏、
kimi agent frontmatter 改写、CLI --help/--version 等一批健壮性修复。已安装项目重跑一次
安装命令即可升级。
从 0.20.0 升级到 0.21.0
0.21.0 修复 ETT 卸载被自身数据产物硬阻断的问题:eccToolkit/ett-docs.json(由 docs.mjs index 在安装后
生成)不在安装清单中,此前卸载与重装都会把它当“额外文件/未记录文件”拒绝且无 force 绕过。现在它被归类为
ETT 数据产物:卸载与重装的额外文件检查都豁免它,卸载后保留在 eccToolkit/ 原位供项目归档,重装/升级时
自动保留并复用;其他非数据产物的额外文件仍 fail-closed 拒绝。已安装项目升级后重跑一次卸载即可正常完成,
eccToolkit/ett-docs.json 会保留。
从 0.21.0 升级到 0.22.0
0.22.0 新增 DeepSeek Harness 目标(--agent deepseek-harness):Skills 平铺到项目 .dsh/skills/ett-<name>/,
安装状态为 .dsh/.ett-install.json,无 Agent 目录概念(不安装 doc-maintainer);frontmatter 按 DSH 规范改写
(kebab-case 调用键、去掉 allowed-tools/argument-hint)。project-docs 白名单扩为四个目标。
同时调整模块文档模型(解耦双文档):模块级 AGENTS.md 只保留无法从代码直接得出的内容,不再指向
DESIGN.md;DESIGN.md 作为给人看的设计地图;根 AGENTS.md 的 ETT 文档规则块改为"涉及架构/接口/设计决策时
先读模块 AGENTS.md"(旧块含阅读规则的仍通过校验,重跑一次 root-rule apply 即换成新文案)。
新增轻量入口 /ett:doc-update-lite:内联修正受影响模块描述、为新模块建文档并入索引,token 开销最小;
/ett:init、/ett:doc-update、/ett:doc-update-lite 均改为只由用户显式调用(模型不自动触发)。
已安装项目重跑一次安装命令即可升级。
从 0.19.0 升级到 0.20.0
0.20.0 调整 project-docs 写入根 AGENTS.md 的 ETT 文档规则块:移除“执行任何 git commit 前必须先
运行 doc-update 文档同步 Skill”的强制同步要求,规则块只保留阅读规则——“阅读任何模块的代码或内容前,
先阅读该模块的 AGENTS.md(任务涉及架构、接口或设计决策时再阅读 DESIGN.md)” 。validate 的根规则
校验同步收紧:规则块必须包含该阅读规则才算有效;0.18/0.19 存量旧块(含同步段与阅读段)自动通过,无需
改写;仅含旧同步要求的极旧块需重跑一次 /ett:init(或 /ett:doc-update)重新应用规则块后通过。
doc-update 技能工作流本身不变,仍可在需要时主动同步模块文档。
从 0.17.x 升级到 0.18.0
0.18.0 新增 pi 目标 Agent:Skills 平铺到 .pi/skills/ett-<name>/,Agent 文件写入
.pi/agents/,安装状态为 .pi/.ett-install.json。project-docs 白名单扩为三个目标;
根 AGENTS.md 的 ETT 规则块新增一条“阅读模块前先读该模块 AGENTS.md(必要时 DESIGN.md)”
规则,并把 pi 调用名并入提交前同步规则的文案。已有安装重跑一次安装命令即可(载荷与
规则块保留原文,新增阅读规则只对新写入的规则块生效)。pi 侧 agent 文件依赖 pi-subagents
扩展提供项目级 agent 发现;扩展缺失时 ett-init / ett-doc-update 会按 SKILL 内置指引
直接执行维护(降级路径)。
从 0.17.0 升级到 0.17.1
0.17.1 修复 Kimi Code 侧 Skill 显示名与内置 init 撞名的问题:安装时把 frontmatter
name 改写为 ett-init / ett-doc-update(此前只改了目录名,未生效)。已安装
0.17.0 的项目重跑一次安装命令即可换上改名后的 Skill。
从 0.16.x 升级到 0.17.0
0.17.0 新增 Kimi Code 目标 Agent,安装状态 schema 从 v3 升到 v4。已有的 v3 受管安装
不会被自动迁移:升级工具后需先
npx @elephantalker/claude-code-toolkit@latest uninstall --yes,再重新安装。
学习数据与插件数据不受影响。
从 0.9.x 升级到 0.10.0
0.9 把 Skills 平铺为 .claude/skills/ett-* 普通 Skill、把 Hooks 合并进
.claude/settings.json,两者因此失去插件上下文(CLAUDE_PLUGIN_DATA),真实会话
全部 fail-closed。0.10.0 让 Skills/Hooks 重新成为 ett 插件的组件:命令从
/ett-* 恢复为 /ett:<name>,hooks 由插件根 hooks/hooks.json 注册,新安装不再写
.claude/settings.json。0.9 旧实例不会被自动迁移:升级工具后需先
npx @elephantalker/claude-code-toolkit@latest uninstall --yes,再重新安装。
学习数据与插件数据不受影响。
从 0.8.x 升级到 0.9.0
安装布局从单目录整包改为「壳 + 载荷」两处受管目录:技能平铺为
.claude/skills/ett-*,脚本与配置移入项目根 eccToolkit/,hooks 改经
.claude/settings.json 分发。命令前缀从 /ett:* 改为 /ett-*。
0.8 旧整包实例不会被自动迁移:升级工具后需先
npx @elephantalker/[email protected] uninstall --yes,再重新安装。
学习数据与配置不受影响。
从 0.6.x 升级到 0.7.0
重新运行安装命令即可完成原子升级;学习数据与配置不受影响。注意以下行为变化:
- 8 条入口消失:
/ett:continuous-learning-v2、/ett:projects、/ett:prune、/ett:import、/ett:export、/ett:clear-observations、/ett:source-status、/ett:migrate-legacy。对应能力全部保留,调用方式见安装产物的references/continuous-learning-v2.md。 /ett:setup不再接受--model、--timeout-seconds、--injection-*、--exclude-*等调优参数;旧设置会在首次读取时自动迁移到config.json。/ett:promote零参数时支持多选批量提升。- ECC 兼容参考实现
compat/instinct-cli.py已移除(无运行时引用;溯源见provenance/source-lock.json)。
从 0.3.1 或更早版本升级
旧插件名为 elephantalker-toolkit。新版不会覆盖旧目录,先运行:
npx @elephantalker/[email protected] uninstall --yes
npx @elephantalker/claude-code-toolkit@latest来源、许可与开发
精选 CL-v2 固定到 ECC 提交
591ab5cbd3f2f65860ea91c226e410b1502c8e2e、continuous-learning-v2 2.1.0、
ECC 包和插件 2.1.0。运行包自包含,不在用户机器下载 ECC。来源与改写记录见安装产物的
provenance/source-lock.json,ECC MIT 许可见 THIRD_PARTY_LICENSES/ECC-LICENSE。
本地开发:
npm install
npm test
npm pack --dry-runLicense: MIT © elephantalker
