内容
# EJClaw v2 — NanoClaw 的薄封装
EJClaw 不再是一个独立的应用。它是 **上游 NanoClaw + 最小化自定义** 的 EEYEJOKER 栈的 carry 仓库。旧的 Tribunal 栈(v0.x)已于 2026-07-14 退役(保存在 `retire/nanoclaw-migration` 分支和 `~/archive/ejclaw-retired-20260714/` 中,需要的人请自行查看)。
## 结构
```text
上游 nanoclaw (github.com/nanocoai/nanoclaw, main)
└─ eyejoker/carry-* 分支 ← 这个仓库镜像的 carry 提交系列
├─ feat(channels): Discord 适配器
├─ feat(providers): gpt-proxy (CLIProxyAPI Anthropic-compat,16行)
├─ feat(container-runner): OneCLI CA 环境 / git 部署密钥激活 / nested-claude 认证 sentinel
└─ 文档: EYEJOKER_STACK.md (carry 库存)
eyejoker/(这个仓库的额外 payload — nanoClaw 树外自定义)
├─ host-executor/ 容器→主机执行 MCP(Unix 套接字 + 审计日志 + 操作令牌注入)
│ ├─ server.py / client.py / test_server.py
│ ├─ nanoclaw-host-executor.service
│ └─ op.dropin.conf (systemd drop-in — 仅引用 EnvironmentFile,无令牌值)
├─ shared-claude-common.md 整个组共享指令(部署位置:~/.config/nanoclaw/shared-claude/)
└─ mount-allowlist.json 挂载 allowlist 快照(部署位置:~/.config/nanoclaw/)
```
## 运行原则
- **自定义最小化**。需要新功能时,① 检查 nanoClaw 默认设置是否可行 → ② 检查官方扩展点(提供者注册表、技能、MCP 注册)是否可行 → ③ 如果仍然不行,则进行 carry 补丁。顺序必须遵守。
- carry 补丁始终是 `eyejoker/carry-<日期>` 分支的独立提交。在上游更新时重新基准。
- 秘密绝对不会提交到这个仓库(1Password +.env,这里只包含引用路径)。
- 线上安装位于 `~/NanoClaw`(上游克隆 + carry 分支)。这个仓库是 carry 的备份/历史记录。
## 线上系统(algo 主机)
| 服务 | 角色 |
|---|---|
| `nanoclaw-v2-*.service` | 主体(Discord 4 方 + 调度器) |
| `nanoclaw-host-executor.service` | 主机执行 MCP(审计:`~/.local/share/nanoclaw-host-executor/audit.jsonl`) |
| `cliproxyapi.service` | Codex OAuth 池 → Anthropic-compat 端点 |
知识层:AgentMemory MCP(与 Hermes 共享)+ LLM Wiki(ro 挂载)+ 每个组的 CLAUDE.local.md。
## 重建过程(摘要)
1. `git clone https://github.com/nanocoai/nanoclaw ~/NanoClaw && cd ~/NanoClaw`
2. 将这个仓库的 carry 分支添加为远程仓库,并进行 cherry-pick(或从 `nanoclaw-src/` 镜像应用 diff)
3. 复制 `eyejoker/host-executor/` → `~/nanoclaw-host-executor/`,安装 systemd unit + drop-in
4. 将 `eyejoker/mount-allowlist.json`、`shared-claude-common.md` 放置到 `~/.config/nanoclaw/`
5. 配置 `.env`(Discord 令牌、CLIPROXY_BASE_URL 等 — 参阅 1Password)
6. `pnpm install && pnpm build`,使用 `ncl` CLI 重新生成组/wiring(参阅 EYEJOKER_STACK.md)
## 残余 v0 遗产
- `src/codex-usage-collector.ts` — 只读 Codex 使用情况收集器。在使用情况仪表板恢复时可重复使用。