Newshot
Account

How HN:Agent-brain——面向 AI 智能体的不依赖特定笔记工具的第二大脑操作模型

Translation(model translation, not the source's own text)

agent-brain

题图
题图

不依赖特定笔记工具的第二大脑操作模型 + 多运行时代理配置/记忆版本管理。

agent-brain 是面向 AI 编码代理(Claude Code、OpenCode、Codex、Antigravity CLI)的个人操作模型。它为你提供:

  • 一套第二大脑知识结构(日志、WIP、记忆、任务),该模型可构建在任意笔记文件夹之上——Obsidian 只是其中一种选择,并非必需。
  • 受版本控制的运行时配置与记忆:你的 CLAUDE.md / AGENTS.md、记忆和运行时设置存放在由 git 跟踪的 brain 中,并通过符号链接接入各运行时(~/.claude、~/.config/opencode、…),因此你的代理配置和记忆可随你跨机器迁移。
  • 由 brain skill 驱动的会话生命周期(每日笔记、会话笔记、整合)。
  • 可选的 boyscout skill:工作时发现改进机会,然后将其转入明确的修复工作流或待办列表。

前置条件

  • Python 3.x(运行时脚本仅使用标准库;完整受控测试门禁会使用 uv 安装其验证依赖)
  • 至少安装一个受支持的代理运行时:Claude Code → ~/.claude/ OpenCode → ~/.config/opencode/ 共享代理目录 → ~/.agents/ Codex CLI → ~/.codex/(AGENTS.md 和 config.toml 持久化在私有 brain 的 _AGENTS/CODEX/ 下;brain skill 安装于 ~/.agents/skills/brain) Antigravity CLI → ~/.gemini/antigravity-cli/(仅 skill 集成)
  • Claude Code → ~/.claude/
  • OpenCode → ~/.config/opencode/
  • 共享代理目录 → ~/.agents/
  • Codex CLI → ~/.codex/(AGENTS.md 和 config.toml 持久化在私有 brain 的 _AGENTS/CODEX/ 下;brain skill 安装于 ~/.agents/skills/brain)
  • Antigravity CLI → ~/.gemini/antigravity-cli/(仅 skill 集成)

安装


        curl -fsSL https://raw.githubusercontent.com/juanyque/agent-brain/main/bootstrap-zero.sh | bash
      

这会将 agent-brain 克隆到 ~/.local/share/agent-brain 并运行编排器,它会询问你的 brain 路径(Obsidian vault、笔记文件夹或新的空目录)。默认以 dry-run 模式运行。查看计划后,使用末尾打印的准确公开 apply 命令;它会保留所选的 brain、运行时过滤器和符号链接策略:


        curl -fsSL https://raw.githubusercontent.com/juanyque/agent-brain/main/bootstrap-zero.sh \
  | bash -s -- --brain /path/to/brain --apply
      

如果 _COMMON 已存在

如果你的 brain 已经有一个指向不同模型的 _COMMON 符号链接(例如之前的设置),dry-run 会分别报告当前条目和期望的符号链接,包括损坏链接的原始目标。它还会检查由 home_setup 管理的每个模板符号链接,并报告过期目标。执行 --apply 时,安装器会将现有的 _COMMON 条目保留为 _COMMON.backup-<ts>,将 _COMMON 重新指向 agent-brain,并通过新的 _COMMON 重新链接过期的受管模板。常规模板文件保持不变。安装前创建的 Git 快照提供了额外的回滚锚点。

参数

参数用途
--brain <path>brain 根路径(跳过交互式提示)
--apply执行(默认:dry-run)
--update在接入前对仓库执行 git pull --ff-only

| --runtime claude,opencode,agents,codex,antigravity | 限制为逗号分隔

  • runtime_manager——所有运行时配置:检测每个运行时,将本地配置摄取到 brain 中(Direction A),将 brain 配置植入本地(Direction B),处理冲突,链接 skills。
  • runtime_health——针对每个已选运行时的只读应用后验证,使用与 runtime_manager 相同的映射矩阵。

运行时策略和私有配置属于私有 brain,而非此公共仓库。当 brain 包含 _AGENTS/SHARED/memory/ 时,Codex 会在 ~/.agents/brain-memory 处获得一个稳定指针;捆绑的查询工具会按需对小部分已索引笔记进行排序。Codex 自身生成的 ~/.codex/memories/ 目录保持为本地且独立。

Environment profiles

Environment profiles 提供了一种运行时中立契约,用于选择 issue tracker、仓库、项目约定以及可选的私有资源,而无需将这些值嵌入公共核心。Profiles 位于私有 brain 的 _AGENTS/SHARED/profiles/ 下;当 profiles 变化时,全局运行时符号链接保持稳定。

有关版本化 schema、选择算法、优先级、安全规则和脱敏示例,请参阅 docs/runtime-profiles.md。当 brain 中存在这些文件时,model/SCRIPTS/runtime_health.py 会加载并验证它们。使用 --profile <id> 进行显式选择,或使用 --cwd <path> 来执行项目规则选择。MCP/API 可用性被委托给活动运行时适配器;只读检查从不将已配置的 provider 名称视为实时访问的证明。

Skills 可以调用 skills/brain/scripts/profile_context.py,将通用能力解析为脱敏的 provider 上下文。--live 会检查 Codex MCP 注册表/认证边界,而调用方可传入确切的 --available-tool 名称以及 --tool-catalog-complete 来强制实施活动暴露。省略或不完整的 catalog 保持未验证状态。Claude 的实时发现会被拒绝,因为其官方 registry 命令可能会重写运行时设置。

运行时适配器可以使用 model/SCRIPTS/profile_overlays.py 投射独立的私有 profile 资源。适配器为每种选定的资源类型提供显式根目录;先进行 dry-run 的投射器会链接 brain 拥有的源、隔离冲突,并且可以安全地重复应用而无需重写运行时配置。

model/SCRIPTS/profile_secrets.py 会检查引用的 secret 名称而不返回其值。环境存在性、仅元数据的 macOS keychain 查找以及脱敏的运行时原生 catalog 共享相同的 fail-closed 状态契约。

Git 被用作回滚锚点:在任何变更之前都会创建本地快照提交或带注释的标签。快照消息是确定性的,且快照签名被禁用,因此无人值守的 bootstrap 运行永远不会打开编辑器或 GPG 提示。不会自动推送任何内容。

Skills

Agent-brain 附带多个 skills,但只有 operating skill 会被自动安装;其余为选择加入:

SkillCommandInstallationPurpose
brain/brain (Codex: $brain )Automatic连接到 brain,管理会话生命周期、每日笔记、站会报告( /brain daily )以及标准化
boyscout/boyscout (Codex: $boyscout )Opt-in发现改进机会并将其路由到显式的修复工作流或待办列表
explain-with-cards/explain-with-cards (Codex: $explain-with-cards )Opt-in导师模式:通过小型卡片讲授会话主题,包含理解检查和持续学习计划
step-by-step/step-by-step (Codex: $step-by-step )Opt-in引导模式:将待处理的问题和任务转变为有序清单,并逐卡关闭

Skills 位于 brain 之外,并符号链接到仓库。Codex 和 OpenCode 共享 ~/.agents/skills/;Claude 使用 ~/.claude/skills/;Antigravity CLI 使用 ~/.gemini/antigravity-cli/skills/。旧版 Gemini CLI 路径不受管理。Skill 文件使用普通名称,不带 .common.md 后缀。

brain skill 的 session-open apply 是幂等的:它会创建或更新一条 session 笔记,按完整 session ID 为键恰好 upsert 一条每日恢复条目,保留手动编辑过的摘要,并检查最终生成的 session/daily 状态。活跃的 WIP 笔记可以用随附的只读工具 brain_check.py 对照 WIP/WIP.md 看板进行检查。

仅在需要时安装 opt-in skill(这里以用于 Codex 的 boyscout 为例)。先查看 dry-run;其他 opt-in skill 以相同方式安装,只是目录名不同:


        bash ~/.local/share/agent-brain/model/SCRIPTS/skill_link.sh boyscout ~/.agents
bash ~/.local/share/agent-brain/model/SCRIPTS/skill_link.sh boyscout ~/.agents --apply
      

同一个安装器也接受仓库自有的 skill 目录,并能把它链接进所有检测到的 runtime:


        bash ~/.local/share/agent-brain/model/SCRIPTS/skill_link.sh /path/to/project/skills/confold
bash ~/.local/share/agent-brain/model/SCRIPTS/skill_link.sh /path/to/project/skills/confold --apply
      

仓库布局


        agent-brain/
├── bootstrap-zero.sh     # curl 入口点(克隆仓库,分派给 orchestrator)
├── docs/                 # 公开架构与带版本号的 profile schema
├── examples/profiles/    # 脱敏后的环境 profile 示例
├── model/                # 运行模型 —— brain 内部 _COMMON 符号链接指向的内容
│   ├── AGENTS.common.md  # 共享 agent 指令
│   ├── BRAIN.common.md   # brain 结构与约定
│   ├── RULES-*.common.md # 每日笔记、文件命名、链接、session、证据
│   ├── JOBS.common.md    # 周期性维护例程
│   ├── TASK_TYPES/       # 常见任务类型的操作指南
│   ├── TEMPLATES/        # 每日笔记、WIP、issue、报告模板
│   └── SCRIPTS/
│       ├── brain_state.py       # 状态机(共享)
│       ├── home_setup.py        # 结构(清理、暂存、_COMMON、wrapper)
│       ├── runtime_catalog.py   # runtime 配置主目录与 skill 目标位置
│       ├── runtime_manager.py   # runtime 配置(Direction A/B、冲突、skill 链接)
│       ├── runtime_health.py    # 针对所有受支持 runtime 的 apply 后检查
│       ├── profile_overlays.py  # 可选的私有资源投影
│       ├── profile_secrets.py   # 无值的 secret 引用预检
│       ├── runtime_install.sh   # 底层符号链接辅助脚本(由 runtime_manager 调用)
│       └── skill_link.sh        # 非默认 skill 的手动安装器
└── skills/
    ├── brain/            # session 生命周期、每日笔记、维护
    │   ├── SKILL.md
    │   ├── scripts/      # session_open.py, brain_check.py, find_home.py, ...
    │   └── references/   # project-aware-loading, setup-and-attach, brain-maintenance, runtime-merge
    └── boyscout/         # 改进点识别 + 待办管理
        ├── SKILL.md
        ├── scripts/      # backlog.py, doctor.py, fix-ceremony.sh
        └── references/   # finding-schema、检测指南、工单后端、deep-mode、...
      

model/ 下的文件保留 .common.md 的命名约定,因为它们通过 _COMMON 存在于 brain 内部,必须对笔记类应用保持链接安全。skills/ 和仓库根目录使用普通命名。

测试

测试套件完全针对临时的 brain、home 和 Git 仓库运行。生命周期子集和聚焦子集仅依赖标准库;完整的受管控门禁使用 uv 提供 jsonschema、pydantic 和 pyyaml:


        uv run --python 3.12 \
  --with 'jsonschema>=4.25,<5' \
  --with 'pydantic>=2.10,<3' \
  --with 'pyyaml>=6.0.2,<7' \
  python3 -m unittest discover -s tests -v
      

CI 在 macOS 和 Linux 上执行同一套件。profile 集成测试使用隔离的临时 HOME,验证 dry-run 安全性、冲突隔离以及双重 apply 的幂等性。

覆盖的契约、单项测试命令和 fixture 规则见 tests/README.md。

本地与 CI 门禁

规范的本地门禁是 todo19 QA-manifest 别名 complete-local-gate,仅通过 tests/support/evidence_cli.py run-todo 执行。它会运行当前 unittest 测试套件、不可变的 113-ID 基线重放、Python 编译、shell 语法检查、已提交差异的空白检查、工作树范围/空白检查、严格的 operating-model 检查器,以及零 __pycache__ 断言。

GitHub Actions 在 ubuntu-latest 和 macos-latest 上镜像严格的本地门禁。该工作流检出完整历史(fetch-depth: 0),从有效的 pull-request base、push base、固定的不可变基线或 root-commit fallback 中解析 MODEL_BASE,验证所选提交对象,然后在测试套件之前运行已提交范围门禁,并在编译/shell 检查之后运行工作树门禁。该工作流只是契约映射;private-brain 迁移仍是明确的用户工作,不会自动进行。

许可证

The translation is machine-generated and individual terms may be off. Nothing is rewritten or cut; the original is authoritative.

Published by HN AI
This site only summarises and aggregates; copyright stays with the original author. Headlines and summaries follow the source — where they differ, the original wins.
Read the original ↗