我用 Rust 构建了本地优先的 Agent Runtime(以及为何包装现有 CLI 不起作用)

发布: (2026年2月22日 GMT+8 06:59)
6 分钟阅读
原文: Dev.to

抱歉,我目前无法直接访问外部链接获取文章内容。请您把需要翻译的文本粘贴在这里,我会按照要求保留源链接并将内容翻译成简体中文。

为什么我构建了它

我一直在本地 20–30B 模型中看到相同的失败模式:

  • 脆弱的工具行为
  • 偶尔的无答案情况
  • 步骤执行不一致
  • 难以调试的失败,且没有可重放的状态

答案不仅仅是“换一个更好的模型”。
答案是要强化运行时流程:

  • 明确的安全门
  • 确定性的产出
  • policy + approvals
  • eval + baseline comparisons
  • replay + verification

什么是 LocalAgent

LocalAgent 是一个本地‑优先的代理运行时 CLI,专注于控制和可靠性。它支持:

  • 本地提供者:LM Studio、Ollama、llama.cpp 服务器
  • 带硬性门控的工具调用
  • 信任工作流(策略、批准、审计)
  • 可重放的运行产物
  • MCP stdio 工具来源(包括 Playwright MCP)
  • 确定性的评估框架
  • TUI 聊天模式

GitHub:

Safety defaults (important)

Defaults are intentionally restrictive:

  • trust 已关闭
  • shell 已禁用
  • write tools 未公开
  • file‑write execution 已禁用

You have to explicitly enable risky capabilities.

架构(高级)

在高级别上,每次运行执行:

  1. 构建运行时上下文(提供者/模型/工作目录/状态/设置)
  2. 准备提示消息(如果启用,则包括会话/任务记忆/指令)
  3. 应用压缩(如果已配置)
  4. 调用模型(流式或非流式)

如果返回工具调用:

  • 首先运行 TrustGate 决策
  • 仅在被允许时执行
  • 标准化工具结果封装
  • 将工具结果反馈给模型
  • 重复此过程,直至得到最终输出或满足退出条件
  • 尽力写入制品/事件,以便重放/调试

该设计将副作用置于显式的门控之后,并使失败可被检查。

为什么它比仅使用包装器更好

外部包装器很有用,但当工具执行发生在你无法控制的其他运行时中时,它们的作用有限。

使用 LocalAgent

  • 工具标识/参数是一级内部数据
  • 在产生副作用之前评估策略和批准
  • 在同一执行图中生成事件/审计/运行产物
  • 重放和验证使用相同的运行时语义

简而言之:安全性和可靠性控制是执行模型的一部分,而不是事后附加的。

快速入门

cargo install --path . --force
localagent init
localagent doctor --provider lmstudio
localagent --provider lmstudio --model  chat --tui

一次性运行

localagent --provider ollama --model qwen3:8b --prompt "Summarize README.md" run

慢速硬件注意事项

在较慢的 CPU / 首令牌占用较高的设置下,重试可能导致糟糕的用户体验(在完成之前重新发送提示)。调试时,使用更大的超时时间并禁用重试:

localagent --provider llamacpp \
  --base-url http://localhost:5001/v1 \
  --model default \
  --http-timeout-ms 300000 \
  --http-stream-idle-timeout-ms 120000 \
  --http-max-retries 0 \
  --prompt "..." run

我迄今为止的收获

最大的可靠性提升来自于流程约束,而不是模型炒作:

  • 有界任务
  • 严格的输出预期
  • 执行前参数验证
  • 确定性的评估 + 基线
  • 可重放的工件用于根因调试

对于高度模糊的推理,我仍然会使用更强大的托管模型。对于大量的生产力辅助工作,只要运行时保持纪律,本地模型也是可行的。

当前文档

  • README: 项目概述 + 工作流
  • CLI reference: 完整的命令/标志映射
  • Provider setup guide: LM Studio / Ollama / llama.cpp
  • 模板、政策文档和评估文档

Repo:

我想要的反馈

  • 哪些本地模型 + 运行时组合在工具调用方面最稳定?
  • 哪些提示/输出约束对您提升可靠性最有帮助?
  • 什么能让本地优先的编码工作流感觉“可投入生产”?

如果这有帮助,我可以写一篇后续,提供具体的评估/基线工作流和模型路由策略。

0 浏览
Back to Blog

相关文章

阅读更多 »

Subnetting 详解

什么是 Subnetting?可以把它想象成把一栋大型公寓楼拆分成不同的楼层。每层 subnet 拥有自己的编号主机(hosts),以及建筑……