用全新上下文分轮推进仓库改动或架构设计并审计
28.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add cperion/ralphi该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · search
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 17 处,展示前 12 条)
- 写入本地文件plugin.js:360
await appendFile(join(dir, 'ANSWERS.md'), `${lines.join('\n')}\n`, 'utf8').catch(() => {}) - 写入本地文件plugin.js:425
if (!existsSync(filePath)) await writeFile(filePath, text, 'utf8') - 读取本地文件plugin.js:425
if (!existsSync(filePath)) await writeFile(filePath, text, 'utf8') - 写入本地文件plugin.js:432
writeFileSync(tmp, text, 'utf8') - 写入本地文件plugin.js:433
renameSync(tmp, filePath) - 读取本地文件plugin.js:439
if (existsSync(join(current, '.git'))) return current - 读取本地文件plugin.js:449
if (!existsSync(candidate) || !statSync(candidate).isDirectory()) { - 读取本地文件plugin.js:449
if (!existsSync(candidate) || !statSync(candidate).isDirectory()) { - 读取本地文件plugin.js:459
if (!existsSync(file)) return undefined - 读取本地文件plugin.js:461
const parsed = JSON.parse(readFileSync(file, 'utf8')) - 写入本地文件plugin.js:538
await mkdir(join(dir, 'experiments'), { recursive: true }) - 写入本地文件plugin.js:549
await mkdir(join(dir, 'work'), { recursive: true })
扫描于 2026/11/2(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 和 pi 上可续跑的全新上下文 Ralph 循环:kind=build 做可验证的仓库工作,kind=design 做架构探索。状态与审计记录都版本化保存在项目仓库里。
README
由 DeepSeek 最新模型翻译生成ralphi
ralph —— 一个可恢复的全新上下文循环,两套 harness 共用。一个参数背后是两套协议:
| kind | 目标 | 轮次 | 最终审计 |
| build(默认) | 在仓库里做出真实改动 | 一个工作单元,验证并提交 | 独立验证器针对目标运行项目检查 |
| design | 找出最简单的目标架构 | 一次设计调查 | 独立可实施性审计 |
一次调用会在项目仓库内创建(或恢复)docs/ralph/<slug>/,每轮用全新智能体跑 N 轮,然后执行审计。状态随代码一起提交;STATE.json 在中断后仍能保留。
无需手动设置:不用复制模板,不用创建文件。
用法
ralph({ goal: "Add cursor pagination to GET /items, tests included", rounds: 8 })
ralph({ kind: "design", goal: "Design the module structure and data types for X", rounds: 16 })
| 参数 | 含义 |
| goal | 目标。build 模式下:完成时必须成立的条件。design 模式下:问题、行为、约束、非目标。 |
| kind | build(默认)或 design。
展开完整文档(README 剩余 1 节)
ralphi
ralph —— 一个可恢复的全新上下文循环,两套 harness 共用。一个参数背后是两套协议:
| kind | 目标 | 轮次 | 最终审计 |
| build(默认) | 在仓库里做出真实改动 | 一个工作单元,验证并提交 | 独立验证器针对目标运行项目检查 |
| design | 找出最简单的目标架构 | 一次设计调查 | 独立可实施性审计 |
一次调用会在项目仓库内创建(或恢复)docs/ralph/<slug>/,每轮用全新智能体跑 N 轮,然后执行审计。状态随代码一起提交;STATE.json 在中断后仍能保留。
无需手动设置:不用复制模板,不用创建文件。
用法
ralph({ goal: "Add cursor pagination to GET /items, tests included", rounds: 8 })
ralph({ kind: "design", goal: "Design the module structure and data types for X", rounds: 16 })
| 参数 | 含义 |
| goal | 目标。build 模式下:完成时必须成立的条件。design 模式下:问题、行为、约束、非目标。 |
| kind | build(默认)或 design。 |
| constraints | 仅限硬约束:边界、兼容性、运行时、不变量。 |
| paths | 工作或设计必须考虑的现有文件/目录。 |
| rounds | 本次调用要跑的轮数。默认 24,上限 64;后续调用可追加。build 模式在目标验证通过后提前停止,所以这是上限,不是配额。 |
| name | 稳定的目录名。复用即恢复该次运行。 |
| project | 拥有 docs/ralph/ 的仓库根目录。默认取包含工作区的 git 根目录,否则取工作区。 |
| answer | 用户对上一次 needs-input 运行所提问题的回答。其他情况省略。 |
长时间运行:调用会阻塞当前回合。取消会保留每个已完成的轮次;用相同的 name 和 goal 再次调用即可继续。build 模式下,某轮报告 done 会立即触发独立验证器:接受目标则提前停止,拒绝则把具体缺口喂给下一轮。剩余轮次绝不会浪费在无谓的忙碌上。
创建的内容
位于项目仓库内,因此记录随代码一起版本化,并由 worker 提交:
docs/ralph/<slug>/
STATE.json controller-owned resume marker (next / in-progress round)
rounds.jsonl per-round reports (controller-owned)
runs.jsonl one record per call (controller-owned)
AUDIT.json independent verification result
ANSWERS.md controller-owned trail of user questions and answers
rounds/ per-round report files (pi port)
LOG.md append-only per-round record
kind=design 额外创建:
CONTRACT.md goal + constraints + paths
ARCHITECTURE.md best-known design; changes need evidence
QUESTIONS.md material open questions
experiments/ prototypes, benchmarks, re-derivations
kind=build 额外创建:
GOAL.md 目标 + 约束 + 路径 PLAN.md 当前方案,已完成 / 下一步 NOTES.md 长期有效的发现、命令、选定的解释 work/ 临时文件
一轮做什么
build:读 GOAL.md、PLAN.md、NOTES.md、LOG.md,检查仓库和 git 状态;从上一份报告的 next 接着做;从 PLAN.md 里挑价值最高的一步;实现它,只要还能安全推进就继续做(不是只做第一处小改动);跑项目的检查并修复问题;提交;更新那三个文件;报告 {action, summary, evidence, next, blocked, ask}。一轮结束时,仓库必须可衡量地更接近目标:不要求一轮做完整个目标,敷衍的工作会被打回。审计是一个全新的验证者,自己跑检查,返回 {satisfied, evidence, gaps} —— 它不相信日志。
design:读那四个设计文件;写三个候选问题,按重要性排序,追最重要的那个,直到用证据回答它(如果第一个问题不重要,就去追下一个,而不是结束这一轮);选 continue、simplify、experiment 或 rederive(只定契约,先独立设计);更新文件,提交,报告 {mode, question, evidence, decision, next, ask}。审计会尝试实现契约,并报告它第一次不得不自行发明语义的地方。
用户提问
一轮没有直接联系用户的通道,但也不必靠猜。当某个归用户拍板的决定会改变工作方向时,这一轮设置 ask,而不是自己编一个需求,也不是宣称自己 blocked:
- 控制器通过宿主的问题服务把问题转给用户,此时 ralph 调用仍然开着;
- 答案写进 ANSWERS.md 和 STATE.json,下一轮以 userAnswer 收到,必须先应用它;
- 如果转达跑不起来(没有应答者,或者 ralph 是在子代理里启动的),调用以状态 needs-input 结束,问题放在结果里。调用方去问用户,然后用同一个 name 和 goal 加上 answer 重新调用 ralph。
推进纪律
这一轮的提示词就是防止偷懒小步走的控制面。每一轮:
- 从上一份报告的 next 开始,不重做 LOG.md 或 NOTES.md 里已经记录过的探索;
- 只要还能安全推进就继续做,而不是停在第一处改动,或者停在一个现在就能执行的下一步;
- 把「blocked」只当作外部且具体的情况(缺凭证、服务不可用),绝不当作「这需要不止一轮」,也绝不当作归用户拍板的决定 —— 那些走 ask;
- 把 next 写成自包含的续接契约:哪个文件、哪处改动、哪条命令、哪个结果能证明它。
提前完成
build 模式在目标达成后不得继续工作。一轮 build 会设置只有跑完检查、并认为验收标准已满足时,才写 done: true。之后控制器会:
1. 立刻运行独立验证器(不等轮次预算);
2. 验证器认可时,以 complete 停止,并输出一行提前停止说明;
3. 否则把验证器给出的具体缺口作为反馈传入下一轮,让这一轮去修真正的缺口,而不是靠猜;
4. 连续两次验证都以相同缺口否决目标时,以 blocked 停止——这种分歧循环自己解决不了。
design 模式保留完整搜索预算:它是一次探索,不是完成条件,只在调用结束时按审计结果停止。
恢复
每轮前后都会原子写入 STATE.json。如果 harness 或机器在调用中途停止,用相同的 name、kind 和 goal 再调一次:
- 已完成的轮次绝不重跑;
- 报告已写好的轮次直接读取,不重跑(pi);
- 中途被打断的轮次按原编号重试;
- 向用户提问过的轮次,从下一轮带着答案继续——无论答案是实时转达的,还是在 needs-input 结果之后以 answer 提供的;
- 恢复的粒度是「被打断的那一轮」,不是整段对话;
- 同名但 goal 或 kind 不同会被拒绝,不会混在一起。
审查一次运行
git log --oneline -- docs/ralph/<slug>
git diff <start>.. -- docs/ralph/<slug>/
kind=build:先读 AUDIT.json——satisfied=false 表示目标没达成,gaps 说明缺什么。kind=design:AUDIT.json 里 material=true 表示设计仍有可实施性缺口。
安装 / 更新
两个 harness 注册的是同一个工具名,ralph。
DSH
在 DSH 配置档里以 bundle @local/dsh-plugin-arch-loop 安装(包名是历史遗留,现在提供的是 ralph)。用 plugin_manager / install_bundle 指向本仓库安装,然后重启 DSH。
工具可以注册在 host 作用域(每个智能体都能用)、预设内部,或两者都注册。如果同一预设里自带的 tool-ralph 行是启用的,请禁用它:作用域内的内置 ralph 会遮住这个。
需要 DSH 0.2.1-rc.2 或更新版本:一次性子进程通过 ctx.subagents.startActivation({ delivery: "caller" }) 启动。在 0.2.0-rc.2 上工具能加载,但第一次调用会失败,因为那个版本暴露的是 ctx.subagents.start()。插件只导入 Node 内置模块,所以没有 peer dependency 来强制这条要求——升级后用 dsh --version 检查。
改完 plugin.js 或任一补丁后,重启 DSH:运行中的进程只导入一次模块代。
cordis.patch.yml 里的配置:
| 字段 | 默认值 | 含义 |
| provider | spawn | 新子代理服务商;必须支持结构化输出。 |
| maxRounds | 64 | 每次调用的上限。 |
| defaultRounds | 24 | 省略 rounds 时使用。 |
pi
扩展位于 pi/。安装:
pi install ./pi
每一轮都会启动一个新的 pi 子进程,只带内置工具(read,write,edit,bash,grep,find,ls),在项目根目录下运行,继承父级的模型和思考等级。子进程写出 rounds/rNNN.json,由工具校验。改完代码后执行 /reload。
有意保留的限制
- 轮次是恢复的粒度:子进程在一轮中途挂掉就重试,不会接着对话中途继续。
- rederive 的盲区(设计如此)靠流程约束,不做强制。
- 目前没有单轮的实际耗时超时;控制手段是中断再恢复。
- 只有一个审计器/校验器,不是对抗式评审团。
- 完成与否取决于单次调用的预算加上审计结论;重启后不会自动续跑——用同样的名字和目标重新调用。
- 问题转交要求调用方正是当前存活的根智能体。在另一个智能体内部启动的 ralph 会以 needs-input 结束,而不是一直阻塞。
- pi 移植版不转交用户问题;pi 的一轮只能靠猜,或者报告 blocked。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
cperion/ralphi
用全新上下文分轮推进仓库改动或架构设计并审计
相关插件 · 搜索 / 抓取
LLM 知识平台Tencent/WeKnora
概览 ·快速开始 ·新特性 ·功能 ·客户端 ·文档 ·开发
★ 36,161已汉化DSH
72.1
智能体记忆系统MemTensor/MemOS
MemOS 2.0 Stardust星尘
★ 12,195已汉化DSH
71.2
跨代理记忆库zilliztech/memsearch
跨平台语义记忆,专为 AI 编程智能体打造。
★ 2,799已汉化DSH
70.9
技能语料库EverMind-AI/SkillCorpus
SkillCorpus 能给你什么
★ 694已汉化DSH
69.7
代码图谱记忆syncable-dev/memtrace-public
你的智能体值得拥有结构化记忆。
★ 509已汉化MCP
67.9
AnySearch 搜索插件anysearch-team/anysearch-dsh
AnySearch 网页搜索服务商,为 DeepSeek Harness(DSH)提供高级搜索工具
★ 457已汉化DSH
66.6