deepseek-harness-molt

by houyongsheng

1 工作流与自动化github收录于 08-23

会自己长出工具的编码 agent

The coding agent that grows its own tools

安装

dsh plugin --profile web add github:houyongsheng/deepseek-harness-molt

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

简体中文 · English

MOLT 🦀

会给自己长工具的编码 Agent。

大多数 Agent 干完你的活就忘了自己学到了什么。MOLT 不会忘。 每完成一个任务,它会复盘自己做了什么;一旦发现可复用的模式,它就给自己写一个新工具、跑测试验证,然后把它存进技能库。下次再遇到同样的模式,工具已经在那等着了。

看这个工具库是怎么复利的:

$ molt run "tidy the config files" --learn --mock

── molt run — task ─────────────────────────────────────────────
  task: tidy the config files
  model: mock

── final answer ────────────────────────────────────────────────
  All done — I inspected the workspace and the job is complete.

── learn ───────────────────────────────────────────────────────
  ✔ grew a new tool: `parse_csv_line` → .molt/skills/parse_csv_line

$ molt skills list
  parse_csv_line    [project]  Parse a CSV line of key=value pairs into a dict.

$ molt run "parse some key=value config" --mock      # 下次它已经在工具列表里了

这就是全部想法:你的 AI 不只是写代码,它会"蜕皮"——脱掉旧壳、长出新工具,然后把新工具留下。


为什么用 MOLT

  • 它会复利。 每一次任务都可能让下一次更便宜、更可靠。你的 Agent 越来越懂你的代码库,而不只是"总体上更聪明"。
  • 它是诚实的自我进化。 一个新工具只有在通过了它自己的测试之后才会进入技能库。Agent 可以给自己长新工具,但先得证明自己真的能用。
  • 它可以分享。 molt export 打包你的工具库,molt install 拉取别人的。Agent 千辛万苦攒下来的技能,可以变成能被 fork、star、分享的库。
  • 它属于你。 MIT 协议、零追踪、跑在任意 OpenAI 兼容模型上(默认 DeepSeek)。

快速上手

# 从 PyPI 安装(发布名为 molt-agent):
pip install molt-agent

# …或直接从源码安装:
git clone https://github.com/houyongsheng/deepseek-harness-molt
cd deepseek-harness-molt
pip install -e .

export DEEPSEEK_API_KEY=sk-...

跑一个任务,让它学习:

molt run "add retry logic to the http client" --learn

没有 API key?用内置的假模型跑完全一样的流程:

molt run "tidy the config files" --learn --mock
molt evolve "polish the project" -n 5 --mock     # 看着工具库一点点长大

命令

命令 作用
molt run "任务" [--learn] 跑一个任务。--learn 会把发现的可复用工具留下。
molt run --stream --sandbox 实时流式输出答案;让技能代码在子进程里跑。
molt evolve "目标" -n N 循环"子任务 + 学习" N 次,看工具库累积。
molt learn 对上一次的任务记录重新做一次复盘。
molt skills list / show <名> / remove <名> / dedup 管理并去重技能库。
molt eval <名> [--cases FILE] 用标注用例评测技能的准确率。
molt export [--out DIR] 打包你的技能,方便分享。
molt install <路径或 git 地址> 把别人的技能拉进你的工具库。
molt publish [--remote URL] 把工具库发布到 git 注册中心(社区中心)。

原理

  任务 ─▶ Agent 循环 ─▶ 答案
              │
              └──▶ 复盘:"我有没有碰到可复用的模式?"
                       │ 有
                       ▼
                  写一个新工具(python + schema + test)
                       │
                  先跑测试 ── 不过 ── 丢弃
                       │ 通过
                       ▼
                  存入 .molt/skills/(下次自动成为工具)
  • 运行 —— Agent 循环,带 shell、read_file、write_file,再加上你长出来的每一个技能。
  • 复盘 —— 第二次 LLM 调用问:这里面有可复用的吗?有就返回一个 JSON 形式的技能。
  • 测试 —— 技能自带测试,在一个全新的子进程里跑;没有测试就不入库。
  • 复用 —— 技能变成可调用的工具,项目级技能优先于个人技能库。

技能放在 .molt/skills/<名字>/(项目)和 ~/.molt/skills/(个人)。每个都是普通文件:skill.json(名称/描述/参数)、skill.py(def run(**kwargs))、test.py。

评测与发布

技能值不值得留,要看它准不准。molt eval 用带标注的用例给技能打分(用例放在技能旁的 cases.json,或用 --cases 指定任意文件):

molt eval parse_kv_records
# accuracy: 5/5 (100%)

满意之后,可以分享单个技能,也可以把整个工具库发布到一个 git 注册中心:

molt export --out ./my-toolbox          # 普通复制 + 清单
molt publish --remote git@github.com:you/toolbox.git   # 推送,并打印安装命令
# 别人:molt install git@github.com:you/toolbox.git

这就是一个生态的种子:你的 Agent 的技能是一个库,而库是用来被 fork、star、分享的。

信任与安全

  • 先测试再入库。 没测试或测试不过的技能永远进不了库。
  • 默认技能在进程内运行。 加 --sandbox 让技能代码在子进程里跑(进程隔离)。无论哪种方式,都像对待任何你 pip install 的代码一样谨慎,评估后再信任。
  • 普通文件,没有锁定。 你的工具库就是几个目录,删掉、分享、搬走都随意。

路线图

  • 技能去重/合并——molt skills dedup 清除被遮蔽的副本、标记相同代码
  • 技能评测——molt eval 用 cases.json 量化准确率
  • 注册中心发布——molt publish 把工具库推送到 git 注册中心
  • 流式 + 更丰富工具 + 沙箱——--stream、list_dir/search、--sandbox
  • 每次提交前自动跑技能评测
  • 可搜索的注册中心(molt search)——找到别人发布的技能

与 Codex / Claude 生态的结合

MOLT 长的工具就是纯 Python——所以它们天然能"出门"。两个方向:

MOLT → Claude Code / Codex。 把工具库导出成对方能直接用的格式:

molt export --format claude --out .claude   # → .claude/skills/<名>/SKILL.md
molt export --format codex  --out .         # → AGENTS.md 可复用流程块

把 .claude/ 放进项目,Claude Code 就能用这些技能;把 AGENTS.md 块追加进 Codex 的 AGENTS.md,Codex 也能照着重实现。现成模板在 examples/integrations/。

Claude Code / Codex → MOLT。 用一个单文件技能把"造工具"的活委托回 MOLT: examples/integrations/claude/molt-skill.md 告诉 Claude Code——一旦发现可复 用的模式,就跑 molt run "<任务>" --learn;长出来的工具大家都能用。

灵感来源

MOLT 的核心主张——让 Agent 自己写、自己测、自己留下工具——正是 DeepSeek Harness(dsh)的灵魂: 它的自指工具集让模型能检查、挂载自己运行时里的插件。MOLT 是对这个想法的 轻量、独立实现:一个可 pip install 的包、跑在任意 OpenAI 兼容模型上、 不需要学任何框架。想要"一切皆插件"的完整平台?去 dsh。想要一个下午就能 读完的轻量版?留在这里。

License

MIT —— 去吧,造一个会自己长工具的东西。

原始 README: https://github.com/houyongsheng/deepseek-harness-molt/blob/master/README.zh.md ↗