Plurnk 发布智能体虚拟机:用可寻址内存替代上下文压缩
Show HN: An Agentic Virtual Machine
Plurnk 发布智能体虚拟机(Agentic Virtual Machine),放弃上下文压缩,改为由模型持续策展上下文,文件、工具、其他 worker 和模型自身历史都有地址,可用同一套选择代数访问。
苦涩的教训同样适用于 harness。
- 永续上下文。就像为你的 token 准备的“永续炖锅”,Plurnk 完全舍弃压缩,转而采用持续的、由模型驱动的上下文策展。
- 可寻址记忆。观察结果、程序和模型自身的推理都保留着可回读、可策展或可退役的地址;它的笔记每一轮都以自己的口吻返回。
- 通用模式。你的整个仓库在进入时即被索引,让模型可以通过正则表达式、XPath、JSONPath、全文和 tree-sitter 符号来探索和编辑项目。
模型应当决定记住什么、在哪里查找、何时委派以及如何推进。Plurnk 是一个智能体操作系统和编程语言,将这些决策交到模型手中。
文件、工具和智能体自身的上下文都成为一个可寻址的环境。可组合的操作让它能够搜索该环境、做出精确修改、策展自己的记忆,并构建自己的委派拓扑。运行时提供可靠的机制;模型提供策略。
Plurnk 是一个智能体虚拟机:每一轮模型编写一段简短程序,机器针对一个地址空间运行它并记录结果,模型读取日志并编写下一段。文件、工具、其他 worker 以及模型自身的过去都有地址;一个选择代数即可触及其中每一个;其边界就是生态系统的标准。论据,以及它今天的代价:PLURNK.md。
使用本地或云端模型来构建软件、调查代码库,或跨工具自动化工作。从你的终端或编辑器进行交互,或将 Plurnk 与普通 shell 管道组合使用。
本仓库提供 plurnk-service(其后端)的 CLI 和交互式终端客户端。
工作区和 worker 对话存在于守护进程中,独立于客户端会话。无需替换环境即可选择你的模型、上下文限制、工具和能力策略。无需 Plurnk 账户。
开始使用
要求:
- Node.js 26+
- npm
- git
npm install -g @plurnk/plurnk
plurnk --workspace="myProject"在你的项目目录中运行。或者无需全局安装即可试用:npx @plurnk/plurnk --workspace="myProject"。
没有 --workspace 时,目录名即工作区名称(例如 ~/projects/myProject);TUI 打开 worker user。在同一文件夹中启动的实例在同一守护进程/数据库上共享该工作区。用 --workspace 或 --worker 覆盖任一身份;两者都不会更改现有工作区的文件夹。
从你的主目录启动新工作区时会要求指定项目文件夹。对于脚本,用 --project-root=/path/to/project 选择一个,或使用 --project-root= 表示不指定文件夹。现有工作区保留其已保存的文件夹。
用普通语言给它一个任务。模型使用操作语言;你无需学习它即可使用 Plurnk。如果未选择模型,请遵循启动提示或在下方选择一个。当没有共享服务运行时,随附的后端会私下启动,并在退出时停止。历史记录会被保存;打印出的恢复命令会重新打开同一工作区和 worker。
默认情况下提案会被自动接受(PLURNK_CLIENT_YOLO=1);将其设为 0 或以 ? 开始提示即可审查它们。两者都不会覆盖能力限制。
模型
将你的提供商 API 密钥提供给后端——例如,在启动 Plurnk 之前设置 export DEEPSEEK_API_KEY="your-api-key"。在 TUI 中,/models 列出已配置凭据的模型,/model <provider/model> 选择一个。你也可以用 --model=<provider/model> 启动;别名是可选的。
要为新的 worker 设置默认值,请将你选择的路由添加到 ~/.config/plurnk/.env(设置后为 $XDG_CONFIG_HOME/plurnk/.env):
PLURNK_MODEL=deepseek/deepseek-v4-flash
重启已在运行的守护进程以加载更改后的启动设置;现有 worker 保留其选择。有关本地端点和调优,请参见 模型配置。
服务
对于共享的持久环境,请单独安装 @plurnk/plurnk-service 并运行 plurnk-service start。客户端默认连接到 http://127.0.0.1:1066/agui。
Linux 用户可以安装该软件包附带的示例 systemd 用户单元(位于软件包根目录的 plurnk.service);其注释涵盖安装、可执行文件路径和环境设置。该服务必须接收你的提供商凭据——systemd 不会加载你的交互式 shell。
对于仅客户端安装,请使用
npm install -g @plurnk/plurnk --omit=optional。
设置 PLURNK_CLIENT_AUTOSTART=0 以要求使用现有服务。不会自动安装或启用任何系统服务。有关其他部署方式,请参见 服务配置。
TUI 与 CLI
交互式终端
plurnk --workspace="myProject"一个原生支持回滚的 TUI,具有多行提示、在提供商支持时流式输出推理过程、Markdown 和 Mermaid 渲染,以及用于管理模型、worker 和工具的斜杠命令。运行 /help 进行探索;/model 和 /child 选择对话模型和委派模型。
CLI 与流水线
plurnk "Explain how this project's request handling works" plurnk "Summarize this repository" > overview.md git diff | plurnk "Review this patch for correctness" plurnk --json "Explain the test layout" | jq -r .response
一次性命令将答案输出到 stdout,将进度输出到 stderr。--json 返回一个结构化文档,包含答案、操作轨迹、诊断信息和用量。连接丢失时会以错误退出,同时保留已接收的证据;缺失的最终用量保持未知。不会重放任何提示。
使用 plurnk --help 查看 CLI 选项。plurnk models 列出可用的模型路由。
可组合的模式
模式引擎连接发现和上下文管理。路径 glob 可与全文搜索、正则表达式、JSONPath、XPath 和符号图查询组合使用。模型可以搜索短语、检查结构化数据,或跟踪符号关系,而无需为每个问题编写脚本。
例如,这些模型侧操作会查找匹配 retry 或 timeout 的 TypeScript 文件,然后将较早的 READ 回执裁剪到其前 16 行:
````FIND (src/**/*.{ts,tsx}) ~retry OR timeout
````
````KILL (log:///1/[1-7]/*/READ) <17,-1>
````
第二个操作针对循环 1 的第 1–7 轮中的 READ 结果。它整理的是日志,而不是源文件。一个表达式可以管理许多条目:agent 对其自身上下文拥有批量操作能力,而不仅仅是对你的代码。
扩展与配置
Plurnk 使用 AG-UI 面向客户端,使用 MCP 面向外部工具,使用 Agent Skills 提供可复用指令,并使用 A2A 面向远程 agent。工具、技能和 agent 可以按工作区被发现、添加和启用,而无需重启守护进程:/mcp discover <query> 搜索 MCP Registry,/mcp add <alias> <command|url> [args...] 声明一个工作区服务器。标准 MCP 文件、Agent Skills 文件夹和 Agent Plugin 捆绑包通过相同的配置级联提供内容。文档按需检索,而不是将每个工具的 schema 加载到每个提示中。
配置使用级联环境变量和 .env 文件,包括位于 ~/.config/plurnk/.env 的 XDG 用户配置。模型发现使用 models.dev。使用单独安装的服务检查完整且有文档记录的配置目录:
plurnk-service config defaults
文档
贡献
欢迎在
GitHub issues 中提出问题、错误报告和反馈。为了向我们展示发生了什么,/share <folder>(或在运行时使用 --share <folder>)会将工作区的记录写入该文件夹。该记录未经脱敏:它包含模型看到和写入的内容,因此在附加之前请先检查。开发指导请参阅共享的
贡献指南。
许可证
MIT。
来源:Hacker News · github.com
