这两天刷 GitHub,两个项目把我看愣了。
一个是 DeepSeek 官方开源的 Agent 运行时,8 月 13 号建的仓,到今天 50 天,24.2 万星。另一个是 GitHub 上最近涨得最凶的”AI 编程行为层”,6 月 12 号建的,15.2 万星,还带着 Trendshift 的日榜徽章。
一个在拆东西,一个在减东西。凑一块儿看挺有意思,所以这次不写单个项目,写双响。
DeepSeek Harness 是什么?24.2万星的 Agent 运行时,把整个产品拆成插件
仓库:deepseek-ai/deepseek-harness
TypeScript 96.4%,MIT 协议,fork 2.9 万,最近一次推送就在今天早上。安装简单到有点敷衍:
npx @deepseek-ai/dsh web
Web UI 默认起在 127.0.0.1:3080,浏览器自动打开。从源码跑就 pnpm install && pnpm run build && pnpm dsh web。
它的架构只有一句话:Everything is a Plugin。
底座是 Cordis——论文《A Programming Paradigm for Spatiotemporal Composability》里那套东西。机制不复杂:插件往一个共享上下文里贡献服务、类型化事件和可逆副作用,卸载时这些注册会自动回滚。
关键在于没有特权内核。模型适配器是插件,工具注册表是插件,会话日志是插件,Agent 主循环本身也是插件。想换掉哪个,改配置挂一个新的进去,旁边那几位照跑不误。官方文档里写了句大白话:没有需要你去 patch 的核心,你扩展 dsh 的方式就是在旁边挂个插件。
配置层叫 profile,是启动时按顺序叠出来的一棵插件树。web、headless、sdk、sdk-minimal、acp 五个模板开箱即用。dsh-base 是共享第一层(模型适配、工具、持久化、沙箱与审批策略、设置、凭据、遥测),dsh-web-app 加浏览器界面,dsh-headless 加一次性运行器,dsh-acp-app 加纯自动化 ACP 服务端。叠放顺序固定:profile 列的 bundle 依序 → profile 的 cordis.patch.yml → home 级 → --patch 覆盖。每一层插进去的东西,上层还能继续改。
这活儿我熟。写 OpenClaw 那种全功能 Agent,最费劲的就是想把某个模型换掉、某个工具摘掉,得回到源码里一层层刨。dsh 把它变成了配置问题。对想自己攒 Agent 主机的人,这套思路值得抄。
但话说回来:README 第一行就写着 developer preview,”THERE WILL BE COMPATIBILITY-BREAKING CHANGES”。SAFETY.md 更直接——没做安全审计,不能当成生产就绪,它能执行模型生成的代码和命令、加载第三方插件、访问网络/进程/凭据/文件。沙箱和审批只能降低风险,不保证隔离。原话是:别把它当成不可信工作负载的唯一安全控制手段。
建议丢一次性容器里跑。这不是保守,这是它自己写的。
Ponytail 是什么?15.2万星,让你的AI别再过度设计
一句话自我定位:让 AI 像屋里那个最懒的资深工程师一样思考——最好的代码,是压根没写的那些代码。
JavaScript 65% + Python 34%,MIT,fork 8000 多。它不是模型,不是框架,是个 Claude Code / Codex / Cursor / OpenCode / Gemini CLI / Copilot CLI 通用的行为规则层。装法都是两条命令:
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail
(得连发两条,一条不会生效。)OpenCode 更简单,opencode.json 里加 "plugins": ["@dietrichgebert/ponytail"]。
它到底改了什么
规则是一架七级梯子,Agent 动笔前先停在第一个成立的档位:
1. 这东西需要存在吗? → 不需要:跳过(YAGNI)
2. 这个代码库里已经有了吗?→ 有:复用,别重写
3. 标准库能做吗? → 能:用标准库
4. 平台原生特性能做吗? → 能:用原生
5. 已装的依赖能做吗? → 能:用它
6. 一行能搞定吗? → 能:一行
7. 到这儿才轮到:能跑的最小实现
作者强调了一句我觉得很关键:梯子是在它理解完问题之后才走的,不是替代理解。它先读要改的代码、追真实调用流,再挑档位。对方案偷懒,对读代码不偷懒。
顺便说,信任边界校验、数据丢失处理、安全、可访问性——这四条永远不在删减名单上。规则从不是”token 最少”,是”只写任务需要的东西”。
效果:它自己贴了 benchmark,我看了
README 里放了完整方法,我信一半但数据方向可信(Claude Code 无头会话改 tiangolo 的 full-stack-fastapi-template,12 个功能票,有/无 skill 各 n=4,Haiku 4.5,按 git diff 计分):
| 对比无 skill 基线 | 代码行 | tokens | 成本 | 耗时 | 安全 |
|---|---|---|---|---|---|
| ponytail | -54% | -22% | -20% | -27% | 100% |
| caveman(简短文本对照组) | -20% | +7% | +3% | +2% | 100% |
| “YAGNI + 一行流”提示词 | -33% | -14% | -21% | -30% | 95% |
只有 ponytail 一项没涨,且全砍的同时安全率不降。降幅最大的地方正是过度设计陷阱(日期选择器 404 行砍到 23 行,颜色选择器 287 行砍到 23——因为它够懒到直接用原生 <input type="date">);代码本来就干净的活儿上,降幅接近零。
还有个细节我得给作者记一功:早期 README 吹的是”减少 80-94% 代码”,被 issue #126 指出裸模型基线本身爱用散文和选项凑长度,那数字有相当一部分是对话基线的假象。作者不但认了,还重做成 agentic 对照基线,把 54% 明确标成 12 个任务的均值而不是上限,并注明 94% 是天花板。开源项目愿意自己拆自己的台,这种诚实度在 AI 项目里不常见。
也有反例:README 明说在 GPT-5.5 上可能会反过来——一个话少的推理模型如果把思考 token 花在逐档权衡上,时间和成本反而上去了。
实话
两个项目放一起,其实在说同一件事的两面。
dsh 告诉你 Agent 系统的骨架该怎么长:全部插件化,没有内核,没有硬编码。ponytail 告诉你 Agent 的习惯该怎么长:先复用,再标准库,再原生,最后才自己写。一个管架构,一个管品味。
24 万星和 15 万星两个月内先后冒出来,说明开发者已经不满足于”调用一个大模型”了,大家在抢的是控制权——怎么组装、怎么约束、怎么让它少犯蠢。
对咱们这种自己攒 Agent 主机(A7Z 上跑了 OpenClaw、Hermes、还有一堆乱七八糟的 skill)的人来说,这俩都有用。ponytail 那套梯子我打算直接抄进自己的规则文件里——七条判断、四个不砍,比写一堆 prompt 强。dsh 的 profile/bundle 分层思路也值得抄一个,哪怕不跑它。
但两个都得提醒一句:dsh 自己在 SAFETY.md 里喊”别当成生产环境”;ponytail 的 benchmark 是单一仓库、单一模型、n=4 的结果,不是普适真理。别拿它当免检证。
真要用,从容器开始,从一次任务开始。
by 数码罗记 · godsun.pro