返回资讯中心
外部精选
软件工程
#开发者实时流

Current 发布:为 AI agent 提供变更管控,基于 Elixir 构建

来源标题:Show HN: Current – Change control for AI agents (Elixir)

Current 是一个让 AI agent 只提交变更提案、由用户批准后才执行的变更管控工具,并用防篡改哈希链日志记录每一步。agent 全程无法直接操作,模型也拿不到仓库,只能查看目录结构并按需请求内容。目前处于早期阶段,仅支持单节点和本地项目。

Hacker News 最新santosh_ycomb2026/11/6 · 今天30 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

Agent 提出变更。Current 负责验证这些变更,等待你的批准,再执行它们,并把每一步都记录在防篡改日志中。 一句话介绍 · 查看实际演示 · 快速上手 · 工作原理 · 来源追溯 · 可复现性 · 可验证性 · 架构 · Intent · CLI · HTTP API · MCP · 配置 · 安全 · 状态 · 路线图 为什么不直接用 Claude Code 或 Codex?当然可以。但在那里,agent 一边行动,你一边逐步批准。而在 Current 中,agent 完全不能行动。它交出一份完整的提案,在提案被批准并执行之前,什么都不会发生。 该日志采用哈希链,因此对历史记录的改动可以被检测出来,并且可以在另一台机器上从日志重建完整状态。 状态:早期阶段。单节点,本地项目。Current 不是沙箱,也不是认证系统:被批准的命令以运行时自身的权限执行。参见安全与威胁模型。 让 Current 为自带的 Next.js 示例添加 CSRF 防护: current run "add CSRF protection to this app"
--dir examples/nextjs-auth
--model openai:gpt-5.6-sol 模型始终拿不到整个仓库。它只能看到目录结构,并按需索取所需内容,由 Current 逐个获取文件: … 第 1 轮:模型请求查看 8 项内容 ✓ read_file app/api/login/route.ts 769 B ✓ read_file lib/auth.ts 626 B ✓ read_file lib/rate-limit.ts 2.4 KB ✓ read_file tests/login.test.ts 847 B ✓ read_file tests/rate-limit.test.ts 2.3 KB ✓ read_file package.json 343 B ✓ read_file tsconfig.json 221 B ✓ read_file .gitignore 83 B 读取被限制在项目范围内。依赖、构建产物、.git 和 .env* 文件永远不会展示给模型,而且每一次读取都会被记录。 Agent 生成的提案 proposal sha256:672c4973787b… 登录路由在解析凭证之前已经调用了一个缺失的 CSRF 校验器。请实现该校验器,采用同源 Origin 检查的失败即拒绝策略,并为接受的来源和被拒绝的来源补充针对性测试。 PROPOSED 1 WriteFile lib/csrf.ts 2 WriteFile tests/csrf.test.ts 3 RunCommand npm test 4 Report Add fail-closed same-origin CSRF validation for the login route and unit tests covering valid, absent, malformed, and cross-origin headers. ✓ 提案已解码 ✓ 提案已校验 等待批准。尚未应用任何变更。 agent 已经提出了变更。你的项目未受任何影响。 你可以审阅确切的文件和命令,或者把机器可读版本(--json)交给另一个 agent 征求第二意见: current review sha256:672c4973787b 然后做出决定。带上反馈把它退回,模型会读取更多内容并返回一份新提案: current revise sha256:672c4973787b -m "add a test for a missing Origin header" 或者批准它。批准会被记录,但此时还不会运行任何东西: current approve sha256:672c4973787b -m "LGTM" ✓ Approved sha256:672c4973787b message LGTM 尚未应用任何变更。用以下命令应用: current apply sha256:672c4973787b 应用是独立的步骤。由 Current(而不是 agent)写入文件并运行命令: current apply sha256:672c4973787b ✓ Proposal approved ✓ Workflow completed MODE: APPLY 4 effects executed. 检查 current events sha256:1429719b7546 current proposal sha256:672c4973787b current artifact sha256:fb30687f1722 (raw model output) 上述每一步——从请求、模型读取的每个文件,到它的原始回复、批准记录以及每个 effect 的输出——现在都成为该工作流记录的一部分。current events 会将其打印出来。 环境要求 Erlang/OTP 上的 Elixir 1.19(mise.toml 固定了 OTP 28.5 和 Elixir 1.19.5;如果你使用 mise,运行 mise install) git、make 和 bash 一个 OpenAI 或 Anthropic API key

  1. 获取代码并构建 git clone https://github.com/santosh79/current.git cd current mix deps.get mix compile make client
  2. 启动运行时 在一个终端中,导出 key 并启动服务器。它监听 127.0.0.1:4000,并在每个请求和提交发生时打印出来。 export ANTHROPIC_API_KEY="..." # or OPENAI_API_KEY export CURRENT_ALLOWED_COMMANDS=npm # commands are denied unless allowlisted bin/current-server
  3. 发起请求 在另一个终端中,从仓库根目录执行: export PATH="$PWD:$PATH" # puts the local current CLI on PATH current models # the models your keys give you MODEL="openai:gpt-5.6" # replace with a model listed above current run "add CSRF protection to this app"
    --dir examples/nextjs-auth
    --model $MODEL 当提案等待审阅时,run 会停止。不同模型和不同运行的输出会有所不同。如果需要一份可以审阅但永远不会被应用的提案,请用 plan 代替 run。 current review <proposal-id> current revise <proposal-id> -m "keep the route check, add edge cases" current approve <proposal-id> -m "reviewed" current apply <proposal-id> 或者用 current reject <proposal-id> -m "..." 结束工作流。修订会产生一个新的提案 ID,必须依次审阅并批准;之前的提案则作废。ID 可以缩短为至少四个十六进制字符的唯一前缀。 current events <workflow-id> # the full chain, in log order current proposal <proposal-id> # intents, claims, and what the model read current artifact <artifact-id> # exact bytes: a file, command output, a raw reply 工作原理 在典型的 agent 中,工具调用就是行动本身:模型决定写入某个文件的那一刻,文件就被写入了。而在 Current 中,模型的输出是一份提案,即一组带类型的 intent: "在 lib/signup.ex 中,把这段文本替换为那段文本";"运行 mix test";"声明测试通过,因为该命令退出码为 0" 提案本身不会做任何事。在提案与你的项目之间,运行时负责: 每一步都是一个事件。圆角框表示工作流结束的位置。 任务通过 prompt、项目目录和模型提交。 目录被解析一次为其真实路径并记录下来。 模型会获得项目的目录结构:路径和大小,不包含内容。依赖、构建产物、版本控制目录和 .env* 文件被排除在外。 模型可以回复一个 observe 请求:最多 20 个 read_file、glob 或 grep intent,每个都附有理由。运行时执行这些

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →