@ cleocode/ git-shim (英语)
部分 平等机会委员会。从 root README 开始;运行
cleo <command> --help对于任何命令.
策略-不可知论 git PATH 覆盖了栅栏代理( 工人 \\ \ 领导 \ )
副代理人) 被引用. 提供两层强制执行:
- T1118 拒绝列表 ——分行流动业务
(单位:千美元)
checkout, (中文(简体) ),switch, (中文(简体) ),branch -D, (中文(简体) ),worktree add, (中文(简体) ),reset --hard, (中文(简体) ),rebase, (中文(简体) ),push --force(见a/c.5/49/70,附件). - T1591 边界围栏 - 相关规则与
工作树与违约模式(ADR-055)+工作树与综合
(ADR-062): (英语)
- (a) 国家
git add活动工作树内的必经舞台路径. - (b) 国家
git commit -m "<msg>"必须嵌入 CLEO 任务ID (单位:千美元)T<NUM>) (中文(简体) ). - (c))
git merge需要由completeAgentWorktreeViaMerge(通过CLEO_ORCHESTRATE_MERGE=1) (中文(简体) ). - (d)
git cherry-pick <ref>千万不要拿一个task/T<NUM>来源 (樱桃从工作树树枝上摘取是腐烂的融合) 路径被ADR-062所取代.
- (a) 国家
每个区块和每个绕行都被记录在
<XDG_DATA_HOME ?? ~/.local/share>/cleo/audit/git-shim.jsonl。 。 。 .
安装
闪电船作为 git 此软件包的本条目。 指挥家
实现a git 内相链接 <projectRoot>/.cleo/bin/ (或任何
shim 目录)通过 installShimSymlink(...) 并预留
产出物剂目录 PATH。 。 。 .
激活门
Shim仅在代理角色受到限制时执行:
CLEO_AGENT_ROLE=worker # or lead, subagent
兽人(无 CLEO_AGENT_ROLE 或者说
CLEO_AGENT_ROLE=orchestrator绕过shim完全 —— 这保持
管弦乐编码路径快而无拘束.
环境合同
| 变量 | 设定 | 目的 |
|---|---|---|
CLEO_AGENT_ROLE | 管弦乐手(发作) | 为被限制的角色激活栅栏. |
CLEO_WORKTREE_ROOT | 管弦乐手(发作) | 明确的工作树路径;自动从cwd中检测到其他路径. |
CLEO_TASK_ID | 管弦乐手(发作) | 活动任务 ID; 自动出自工作树路径. |
CLEO_ORCHESTRATE_MERGE | completeAgentWorktreeViaMerge (T1587) (中文(简体) ) | 单一用途赠款——允许 git merge. 见下文. |
CLEO_ALLOW_BRANCH_OPS | 运算符(手工) | 遗产拒绝列表的单发绕道. 经审计. |
CLEO_ALLOW_GIT | 运算符(紧急) | 任何T1591边界块的通用绕道. 经审计. |
CLEO_AUDIT_LOG_PATH | 测试 | 覆盖审计日志位置. |
CLEO_REAL_GIT_PATH | 测试 | 跳过 PATH 步; 使用此二进制作为真正的 git . |
CLEO_SHIM_MARKER | 安装器( 可选) | 识别 shim dir 的路径碎片 。 默认 : .cleo/bin/git-shim。 。 。 . |
CLEO_ORCHESTRATE_MERGE=1 合同(T1587/ADR-062集成)
packages/core/src/spawn/branch-lock.ts::completeAgentWorktreeViaMerge
这是 仅限 被制裁的入境点 git merge cLEO任务
树枝。 它必须设置 CLEO_ORCHESTRATE_MERGE=1 在洞穴中传入
产卵 git merge --no-ff 进程。 shim的边界(c)拒绝任何
其他项目 git merge 援引有限的作用.
具体(见 branch-lock.ts:830:
execFileSync('git', ['merge', '--no-ff', branch, '-m', subject], {
cwd: gitRoot,
encoding: 'utf-8',
stdio: ['pipe', 'pipe', 'pipe'],
env: { ...process.env, CLEO_ORCHESTRATE_MERGE: '1' },
});
如果您发现了需要引用的代码路径 git merge 从
有限作用上下文 其他 completeAgentWorktreeViaMerge, (中文(简体) ),
提交后续任务——不要默默设置 CLEO_ORCHESTRATE_MERGE=1
别的地方 狭义的内地是边界
可审计.
--abort, (中文(简体) ), --continue,以及 --quit 引用旗帜是例外的——
它们不进行合并.
旁通工作流程
对于正当的紧急情况(如操作员热修,事件分解):
# One-off bypass; audit entry written to git-shim.jsonl.
CLEO_ALLOW_GIT=1 git <subcommand> ...
绕行器有完整的上下文记录(子命令、参数、cwd、角色、, 任务 d, 工作树 path 。 审查者可通过下列方式列出绕行:
jq 'select(.outcome | startswith("bypassed"))' \
~/.local/share/cleo/audit/git-shim.jsonl
审计记录计划a
interface AuditRecord {
ts: string; // ISO 8601
outcome: 'blocked' | 'bypassed-allow-git' | 'bypassed-orchestrate-merge';
boundary: 'a' | 'b' | 'c' | 'd' | 'denylist';
code: string; // E_GIT_OP_BLOCKED | E_GIT_BOUNDARY_*
subcommand: string;
args: string[];
cwd: string;
worktree_path: string | null;
task_id: string | null;
role: string | null;
context: Record<string, string>;
}
计划为项目不可知性:下面的审计日志
~/.local/share/cleo/audit/ 由每个CLEO管理
在主机上的项目.
深入防御管道
Git- 二进制栅栏( 此套件) 是多检查点的一层 管道:
| 层 | 软件包 | 接头 |
|---|---|---|
| Git 二进制 | @cleocode/git-shim (这个) | 代理人的直接援引 |
| 提交 msg 钩子 | @cleocode/core (T1588) (法语) | 编辑流程输入( 无内置) -m(中文(简体) ) |
| 漂流监视器 | @cleocode/core (T1594) (中文(简体) ) | 在工作树外修改的文件 |
| 预推调节 | @cleocode/core (T1595) (中文(简体) ) | 推动前分行状态漂移 |
| 同步插件 | CI(T1598) (中文(简体) ) | 审查时间政策错配 |
T1588(hook)和T1591(shim,边界b)均强制执行 承诺主题 T -ID规则。 这是蓄意深入辩护:a 禁用本地钩子的开发者仍然会通过 shim .
参考资料
- ADR-055 — 工作树与违约代理隔离
- ADR-062——工作树一体化
git merge --no-ff(不是樱桃点心) - T1118 — 原始分支锁定引擎( 密度列表)
- T1587次列车 -
completeAgentWorktreeViaMerge(套数)CLEO_ORCHESTRATE_MERGE=1(中文(简体) ) - T1591——这一围栏(边界a/b/c/d)