ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

ECC 仓库源码深度解析:/instinct-status 命令与 Continuous Learning v2 本能库状态可视化

ECC 仓库源码深度解析:/instinct-status 命令与 Continuous Learning v2 本能库状态可视化 ECC 仓库源码深度解析/instinct-status 命令与 Continuous Learning v2 本能库状态可视化【免费下载链接】ECCThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.项目地址: https://gitcode.com/GitHub_Trending/ev/ECC导读/instinct-status是 ECCEverything Claude Code生态中 Continuous Learning v2 技能的核心诊断命令用于在会话内以一条命令快速查看当前项目已学会哪些本能instincts、全局积累了哪些本能、置信度如何。本文以 .opencode/commands/instinct-status.md 为骨架结合 instinct-cli.py、resolve-ecc-root.js 与 hooks/hooks.json 等仓库源码逐层拆解该命令的调用链从如何在多插件根目录中准确定位 ECC 安装的 walker 解析逻辑到 CLI 后端的项目检测、范围合并、置信度可视化与 TTL 告警。读完你既能理解命令的真实运行机制也能直接看懂其输出格式并能在自己的 ECC 安装中复用这套定位器。一、命令是什么一条 OpenCode 斜杠命令的自我定位在 ECC 中.opencode/commands/目录存放面向 OpenCode 环境的斜杠命令定义每个命令是一个带 YAML frontmatter 的 Markdown 文件。instinct-status.md的元信息如下--- description: Show learned instincts (project global) with confidence agent: build ---description声明命令用途其中的$ARGUMENTS占位符表示用户输入参数命令体会被 frontmatter 引擎替换后执行agent: build指示该命令由build角色的 Agent 执行属于工程/编码上下文而非安全审计或规划类上下文。与之等价commands/instinct-status.mdClaude Code 斜杠命令目录中还有一份使用command: truefrontmatter 的副本说明同一条能力被封装进了多个 harnessOpenCode 与 Claude Code而执行逻辑完全一致。命令的正文首页直接点明意图Show instinct status from continuous-learning-v2:$ARGUMENTS即它把用户输入透传给continuous-learning-v2技能下的 instinct CLI 执行。其背后是一个完整的本能学习系统——continuous-learning-v2/SKILL.md 中描述的 v2.1 架构把每条学习到的行为封装为原子化本能instinct一条本能 一个 trigger 一个 action 一个置信度分值并按project项目作用域或global全局作用域存放。二、核心执行逻辑先定位 ECC 根再跑 CLI命令体是两行 bash构成一条典型的两段式调用链ECC_ROOT${CLAUDE_PLUGIN_ROOT:-$(node -e var r(function(){var prequire(path),frequire(fs),orequire(os);var eprocess.env.CLAUDE_PLUGIN_ROOT;if(ee.trim())return e.trim();var dp.join(o.homedir(),.claude);function L(x){try{return require(p.join(x,scripts,lib,resolve-ecc-root)).resolveEccRoot()}catch(_){return null}}var rL(d);if(r)return r;var s[ecc,eccecc,marketplaces/ecc,everything-claude-code,everything-claude-codeeverything-claude-code,marketplaces/everything-claude-code];for(var i0;is.length;i){rL(p.join(d,plugins,s[i]));if(r)return r}try{var g[ecc,everything-claude-code];for(var j0;jg.length;j){var cp.join(d,plugins,cache,g[j]);var Of.readdirSync(c);for(var k0;kO.length;k){var qp.join(c,O[k]);var Vf.readdirSync(q);for(var m0;mV.length;m){rL(p.join(q,V[m]));if(r)return r}}}}catch(_){}return d})();console.log(r))} python3 $ECC_ROOT/skills/continuous-learning-v2/scripts/instinct-cli.py status第一行解析出当前活跃的 ECC 插件根目录第二行以status子命令调用 instinct-cli.pyskill 内的 CLI 位于skills/continuous-learning-v2/scripts/。执行 CLI 时未对$ARGUMENTS做进一步解析——这与 Behavior Notes 中v2.1 该命令不支持额外过滤器的声明完全一致。2.1 为什么必须先解析 ECC 根规避 stale legacy 安装#2037原文档用很大篇幅强调解析根目录的 walker 必须与hooks/hooks.json使用的方式一致环境变量 → 标准安装 → 已知插件根 → 插件缓存 → 回退。原因是一个真实踩过的坑当CLAUDE_PLUGIN_ROOT未设置、而用户机器上还残留着旧版本手工安装的~/.claude/skills/continuous-learning-v2/目录时命令若直接按固定路径运行会读到过期的旧版 CLI/旧数据目录从而与当前活跃插件可能安装在~/.claude/plugins/cache/...下产生路径分歧。这与 issue #2037 记录的问题对应。因此命令必须在运行时动态确认到底哪一份 ECC 是活的。2.2 五级定位链的源码级解读内嵌的node -e片段是一个经过压缩的内联定位器即 resolve-ecc-root.js 中导出的INLINE_RESOLVE常量。它的职责分两步快路径若进程环境变量CLAUDE_PLUGIN_ROOT已设置且非空直接使用——Claude Code 为插件管理的 hooks 与命令都会注入该变量慢路径逐个探测候选目录尝试require(候选/scripts/lib/resolve-ecc-root).resolveEccRoot()命中即把权威决策委托给完整模块保持探测行为与 hooks 完全一致。完整模块 resolveEccRoot() 按如下顺序判定候选根测试覆盖见 tests/lib/resolve-ecc-root.test.js优先级候选位置说明1CLAUDE_PLUGIN_ROOT环境变量Claude Code 插件 hooks/命令注入2~/.claude/标准手工安装install.sh直接复制到该目录3~/.claude/plugins/{ecc, eccecc, marketplaces/ecc, everything-claude-code, everything-claude-codeeverything-claude-code, marketplaces/everything-claude-code}6 个已知插件根路径段兼容新旧 slug4~/.claude/plugins/cache/{ecc, everything-claude-code}/org/version/插件缓存自动探测遍历 org → version 两级子目录5~/.claude/回退历史默认行为值得注意的细节对技能类消费者默认需要同时存在脚本树scripts/lib/utils.js和哨兵技能skills/continuous-learning-v2才算完整根见DEFAULT_SCRIPT_PROBE/DEFAULT_SKILL_PROBE防止把只复制了 scripts 的残缺安装误判为完整 ECC 根对应 #2544 回归用例。而内联定位器之所以采用这种无...展开、无嵌套数组字面量、无转义双引号的压缩写法是为了能在node -e ...的引号包裹下于各类 shell含 Windows安全执行对应 #2368 修复。三、后端实现instinct-cli.py status 到底打印了什么定位到根目录后命令执行python3 $ECC_ROOT/skills/continuous-learning-v2/scripts/instinct-cli.py status。cmd_status()入口在 instinct-cli.py处理流程可概括为四步恰好呼应原文档 Behavior Notes 的行为约定。3.1 项目检测detect_projectCLI 首先调用detect_project()确认我当前在哪个项目里。检测顺序与 SKILL.md 及 shell 版detect-project.sh保持一致CLV2_NO_PROJECT1环境变量 → 直接进入global作用域CLAUDE_PROJECT_DIR显式指向的目录 → 取其 git 根非 git 目录按绝对路径哈希同样视为项目git rev-parse --show-toplevel当前目录 git 根都失败 → 回退global。项目 ID 是一个 12 字符的 SHA-256 截断哈希_project_hash()优先基于git remote get-url origin归一化后的 URL其次基于仓库路径这使得同一仓库在不同机器上得到相同的项目 ID、本能可移植~/.local/share/ecc-homunculus/projects.json注册表负责记录 ID → 名称/路径/远端地址的映射。3.2 加载与合并项目本能优先于全局本能load_all_instincts()instinct-cli.py先读取项目作用域的personalinherited两个子目录再读取全局的两个子目录去重规则正是原文档 Behavior Notes 中的第一条当同一 ID 同时存在于项目与全局时项目本能胜出、全局本能被丢弃——这与 v2.1React 项目里的模式留在 React 项目的设计目标一致防止跨项目污染。本能文件按扩展名过滤.yaml/.yml/.md见ALLOWED_INSTINCT_EXTENSIONS每个文件内部用成对的---分隔多条 YAML frontmatter由parse_instinct_file()解析未通过_validate_instinct_id()的条目会被忽略。3.3 空库时的兜底输出若当前没有任何本能命令不会报错而是打印空态指引No instincts found.同时列出实际的数据目录位置方便用户定位Project: my-app (a1b2c3d4e5f6) Project instincts: .../projects/hash/instincts/personal Global instincts: .../instincts/personal四、输出格式拆解domain 分组 置信度条 扩展状态有本能时输出先打印 60 字符分隔线组成的标题与统计区再按作用域分两节## PROJECT-SCOPED (项目名)与## GLOBAL (apply to all projects)这正是原文档输出按 domain 分组并带置信度条的落点 INSTINCT STATUS - 12 total Project: my-app (a1b2c3d4e5f6) Project instincts: 8 Global instincts: 4 ## PROJECT-SCOPED (my-app) ### WORKFLOW (3) ███████░░░ 70% grep-before-edit [project] trigger: when modifying code ## GLOBAL (apply to all projects) ### SECURITY (2) █████████░ 85% validate-user-input [global] trigger: when handling user input各字段的生成规则可以逐条对应到_print_instincts_by_domain()instinct-cli.py### DOMAIN (N)本能按domain字段分组未标注时默认归入general组内按confidence降序排列置信度条_confidence_bar()将confidence0.0–1.0放大 10 倍取整用█满格与░空格渲染 10 格条形若终端编码无法输出 Unicode如部分 Windows 管道场景自动降级为#/.相邻的百分比为int(conf*100)[project]/[global]展示该本能的最终生效作用域标签trigger:直接读取 frontmatter 中的 triggeraction:CLI 会从本能正文的## Action小节中正则抽取第一行并截断到 60 字符作为行为的快速摘要。随后cmd_status还会输出两类扩展状态这也是实战中非常有用的信息观测统计Observations: N events logged及observations.jsonl文件路径待审本能告警pending本能超过 5 条时提示 Unreviewed instincts auto-delete after 30 daysPENDING_TTL_DAYS 30距到期 7 天内PENDING_EXPIRY_WARNING_DAYS 7的条目逐条列出剩余天数。也就是说/instinct-status同时承担了本能库健康巡检的职责。五、遗留数据检测命令自带的迁移哨兵cmd_status最后调用_warn_legacy_data()若发现旧版数据目录~/.claude/homunculus/存在非空数据、而当前活跃目录已经迁移到 XDG 风格的新路径$CLV2_HOMUNCULUS_DIR或$XDG_DATA_HOME/ecc-homunculus或$HOME/.local/share/ecc-homunculus输出块会醒目地提示LEGACY DATA DETECTED Active data directory: ... Run the migration script to move your data: bash .../migrate-homunculus.sh Or set CLV2_HOMUNCULUS_DIRlegacy to use the legacy path.这解释了数据目录选择逻辑_resolve_homunculus_dir()优先CLV2_HOMUNCULUS_DIR须为绝对路径→ 其次$XDG_DATA_HOME/ecc-homunculus→ 默认~/.local/share/ecc-homunculus规避 Claude Code 对~/.claude的敏感路径保护让后台 observer 能自由写入。老用户可在迁移后通过 migrate-homunculus.sh 一键搬移全局本能。六、Behavior Notes 逐条对照v2.1 的行为契约原文档末尾的 Behavior Notes 是命令的行为契约可逐条与源码印证行为约定源码依据输出同时包含 project 与 global 本能load_all_instincts(project, include_globalTrue)同时加载两种作用域ID 冲突时项目本能覆盖全局本能去重时构建project_ids集合同 ID 的全局条目被跳过输出按 domain 分组、带置信度条_print_instincts_by_domain_confidence_barv2.1 不支持额外过滤器命令体只传固定status子命令$ARGUMENTS不参与解析七、横向对比与排障提示三种相关命令的区别/instinct-status只读查询instinct-export/instinct-import 负责库的备份与共享promote/projects/evolve/prune则覆盖项目→全局晋升、项目清单、聚合进化、TTL 清理等写操作——它们共享同一个instinct-cli.py入口只是子命令不同输出为空先别怀疑命令坏了优先检查三处——当前目录是否在 git 仓库中影响项目 ID 生成、数据目录$HOME/.local/share/ecc-homunculus/是否存在本能文件、是否残留旧~/.claude/skills/continuous-learning-v2/导致命中过期安装此时应升级为插件安装并信任CLAUDE_PLUGIN_ROOT注入终端乱码若置信度条显示为#/.而非█/░是 CLI 检测到当前流无法编码 Unicode 的自动降级不影响数据准确性行为可配置项observer 的enabled、run_interval_minutes、min_observations_to_analyze可在 skills/continuous-learning-v2/config.json 中调整而 status 相关的 TTL30 天与到期预警7 天阈值则以常量形式固化在 CLI 源码中。结语/instinct-status是理解 ECC Continuous Learning v2 数据模型的最小入口一条命令背后串联了插件根定位器解决多安装路径分歧 #2037、项目作用域检测git remote/路径哈希、本能解析与合并去重项目覆盖全局、置信度可视化与 TTL 健康巡检。无论你是想确认某条模式是否已被 Agent 记住还是想排查本能库为什么没生效从读懂这份输出格式与调用链开始就能准确地把问题定位到安装路径、数据目录、还是本能文件本身三层中的某一层。相关深入阅读continuous-learning-v2/SKILL.md本能模型与作用域决策指南、instinct-cli.py全部子命令实现、resolve-ecc-root.js五级定位器与 INLINE_RESOLVE、resolve-ecc-root.test.js定位链测试。【免费下载链接】ECCThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.项目地址: https://gitcode.com/GitHub_Trending/ev/ECC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表