agentic-stack 安全模型详解:本地优先、零遥测与路径门控,如何守护你的隐私和代码安全
【免费下载链接】agentic-stackOne brain, many harnesses. Portable .agent/ folder (memory + skills + protocols) that plugs into Claude Code, Cursor, Windsurf, OpenCode, OpenClaw, Hermes, or DIY Python — and keeps its knowledge when you switch.项目地址: https://gitcode.com/gh_mirrors/ag/agentic-stack
agentic-stack 是一个跨 AI 编码助手(Claude Code、Cursor、Windsurf、Codex 等)的可移植.agent/大脑文件夹。它的核心安全模型可以概括为三根支柱:本地优先(Local-first)、零遥测(Zero Telemetry)、路径门控(Path Gating)。所有记忆、技能与协议都以本地文件形式存储,不向任何远端发送遥测数据,而每一次工具调用都要先经过权限检查。下面带你完整了解这套机制如何守护你的隐私和代码安全。
为什么 Coding Agent 的安全值得你关注? 🤔
当你让 AI 代理替你写代码、跑命令、改文件时,它接触到的正是你最敏感的资产:源码、密钥、工作记忆。大多数"大脑层"方案会把数据放进厂商云端——而 agentic-stack 的设计哲学恰好相反,正如 docs/architecture.md 开篇那句:
"the harness is dumb, and the knowledge, telemetry, and reusable artifacts are inlocal files."(执行壳是"哑"的,知识、遥测和可复用产物都在本地文件里。)
这意味着:换工具不丢记忆,换工具也不泄露记忆。
安全支柱一:本地优先——数据不出你的机器 💾
agentic-stack 的全部智能都装在项目根目录的.agent/文件夹里,由四层记忆组成:
| 层 | 内容 | 特点 |
|---|---|---|
working/ | 当前任务状态 | 易失,2 天后归档 |
episodic/ | 历史运行记录 | 本地 JSONL 文件 |
semantic/ | 蒸馏后的经验教训 | 本地lessons.jsonl |
personal/ | 你的个人偏好 | 永不合并进 semantic 层 |
本地优先还体现在无人值守的环节上。每夜运行的记忆整理脚本 auto_dream.py 只做"机械式文件操作"(聚类、暂存、预过滤、衰减),官方明确标注:no git commits, no network, no reasoning(无 git 提交、无网络、无推理),因此可以安全地放在 crontab 里整夜运行。
安全支柱二:零遥测——无跟踪、无上传 📡
这是该项目最醒目的承诺。在 README.md 中反复出现同一句话:"without training a model or sending telemetry"(不训练模型,也不发送遥测)。具体体现在:
- 数据层(Data Layer):跨助手的仪表盘导出(活动、cron 时间线、KPI、token/成本估算)全部标注为local-only,产物落在
.agent/data-layer/exports/<date>/里,是给你自己看的数据,不是发给别人的数据。详见 docs/data-layer.md。 - 数据飞轮(Data Flywheel):把人工批准的运行记录转成训练就绪的 JSONL 时,同样只在本地产出制品,且默认经过**脱敏(redacted)**处理。详见 docs/data-flywheel.md 与 schemas/flywheel/。
- 外发需明示:仪表盘截图若要投递,必须经用户明确批准并走用户自己配置的通道——默认不存在任何"顺手上传"。
一句话:想监控你的 agent 套件的只有你自己,通过agentic-stack dashboard或本地网页版 Mission Control。
安全支柱三:路径门控——给 Agent 划出不可逾越的红线 🚧
这是 agentic-stack 最硬核的一层。它由三道关卡组成:
关卡 1:三级权限清单 permissions.md
.agent/protocols/permissions.md 是一份人类维护、Agent 无权修改的规则清单,把操作分成三档:
| 档位 | 示例 |
|---|---|
| ✅ Always allowed | 读取项目内文件、跑测试、创建分支、写入memory/ |
| ⏸️ Requires approval | 合并 PR、部署到任何环境、数据库迁移、改 CI/CD 配置 |
| 🚫 Never allowed | 强推到main、直接访问密钥凭证、访问未批准的域名、修改 permissions.md 本身、绕过 pre_tool_call 钩子 |
注意一个巧妙的自洽设计:Agent 连"给自己松绑"的配置文件都不能碰——规则由人写,执行由钩子做。
关卡 2:pre_tool_call 钩子——每次工具调用前的闸门
.agent/harness/hooks/pre_tool_call.py 在每一次工具调用之前执行拦截逻辑:先查 tool_schemas 中的类型化接口,命中blocked_targets(如往production分支 force push)直接返回BLOCKED;命中requires_approval则挂起等待人工批准;最后还会解析permissions.md的 Never allowed 条款做关键词兜底拦截。
配套的 hook_patterns.json 让用户可以把自家服务(如stripe、kubectl、npm publish)加入高危词表,让失败/成功被更高权重地记录进记忆——门控不仅拦截,还让 Agent"记住教训"。
关卡 3:Loop 路径门控——Deny Paths + Allowlist
v0.19 引入的有界 agentic loop 在执行自动任务时,由 harness_manager/loops/policy.py 做确定性的路径审计:
- path_escape:绝对路径、
..目录逃逸、Windows 盘符一律视为危险,直接熔断; - deny_paths:命中禁用通配模式(如
*.env、secrets/**)立即停止; - allow_paths:若配置了白名单,白名单之外的改动一律拒绝;
- 预算熔断:尝试次数、运行时长、token、输出字符数、改动文件数均有上限,连续失败且失败签名相同会触发stagnation(停滞)刹车。
官方也诚实地划清边界:supervisor 是"边界与审计",不是操作系统级沙箱——更强的隔离应交给宿主工具原生的沙箱机制。这种诚实本身就是安全文档该有的样子。
额外防线:密钥扫描与完整性校验 🔐
即便你要把记忆从一台机器搬到另一台,transfer向导也有多重保险,核心逻辑在 harness_manager/transfer_bundle.py:
- 导出前密钥扫描:内置正则匹配私钥块(
-----BEGIN ... PRIVATE KEY-----)、sk-/rk-/pk-开头的 API token、以及OPENAI_*_KEY=等环境变量形式的密钥——命中任意一条就抛出BundleSecurityError,整个包导出中止; - SHA-256 完整性校验:打包时生成摘要,导入时必须提供匹配的 digest,防止包被篡改或截断;
- 运行时文件隔离:
.index、snapshots、exports、__pycache__等运行时状态和.pyc/.db文件默认被排除在传输范围之外。
再加上"批准 + 脱敏"两道前置条件,你的数据飞轮制品从源头就是干净的。
安全机制速查表 📋
| 机制 | 保护什么 | 关键文件 |
|---|---|---|
| 本地优先存储 | 记忆不被云端化 | docs/architecture.md |
| 零遥测 | 活动数据不出机器 | docs/data-layer.md |
| 三级权限清单 | Agent 的操作边界 | .agent/protocols/permissions.md |
| pre_tool_call 钩子 | 每次调用的实时拦截 | .agent/harness/hooks/pre_tool_call.py |
| Loop 路径门控 | 自动任务的文件改动范围 | harness_manager/loops/policy.py |
| 密钥扫描 + SHA-256 | 记忆迁移不被夹带/篡改 | harness_manager/transfer_bundle.py |
结语
agentic-stack 的安全模型没有炫技,而是把三件朴素的事做到了极致:数据在本地、流量为零、越权必被拦。当你在 Claude Code、Cursor 之间自由切换时,这套.agent/大脑既不会让你"失忆",也不会让你"失守"。如果你的团队正在评估 Coding Agent 的隐私风险,这份 README.md 加 docs/architecture.md 值得完整读一遍。
【免费下载链接】agentic-stackOne brain, many harnesses. Portable .agent/ folder (memory + skills + protocols) that plugs into Claude Code, Cursor, Windsurf, OpenCode, OpenClaw, Hermes, or DIY Python — and keeps its knowledge when you switch.项目地址: https://gitcode.com/gh_mirrors/ag/agentic-stack
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考