绳子
握住你的编码代理的绳子:他们尊重你的架构并记住你的工程.
项目地点: fredarcito.github.io/res 互联网档案馆的存檔,存档日期2013-12-21
编码代理快速地写出代码,但他们忘记了您的架构(一个共享组件从一个特性导入,一个导入周期出现),他们也忘记了您的项目(每个会话都会重新读取一个模块来研究它做什么和为什么).
命令同时修正 :
- 你的建筑变成了一个检查. 它运行在每一个承诺 和每个拉请求, 任何代理写代码。 一个被打破的规则 阻止了承诺 与理由和固定, 所以代理纠正 它之前你审查。 在编辑之前,
reins impact告诉代理 哪些域会消耗一个共享文件, 所以在工作开始前, 真正是一个大重构的“ 小修正” 是这样说的 . - 每个模块都有一个简短的注释:它做什么,如何运作,作出的决定和原因,它的陷阱. 笔记一打开那个模块的文件就到达代理,在收缩后,任务笔记本会自行返回.
为前端团队制作 Vite + 反应 或者说 下一个 (应用程序和页面路由器,平版JS/JSX或TypeScript) 与克洛德代码, Codex, Cursor 或任何其他代理合作. 节点CLI和平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平.
所需资源
- 22号节点或更新
- 一个 git 仓库
- 类型脚本项目:
typescript已安装在工程中的软件包
安装
npm install -D @agentreins/cli @agentreins/adapter-js
# pnpm add -D @agentreins/cli @agentreins/adapter-js
# yarn add -D @agentreins/cli @agentreins/adapter-js
@agentreins/cli 这是 reins 命令; @agentreins/adapter-js 教它读取 JavaScript/ TypeScript 导入.
快开始
在您的项目根部 :
npx reins install # git hook, CI job, AGENTS.md, .reins/core/, .claude/ (--skip-claude to omit it)
npx reins init # architecture plan, baseline, module notes
npx reins check --update-baseline # freeze today's violations
npx reins check # from now on, only new violations fail
之间 init 财务报告和审定财务报表 check --update-baseline数字 :
- 审查建筑计划. 在克洛德代码中,类型
/reins-arch:你的代理人提出有证据的修改,你批准每一个。 否则改为:.reins/init-report.md编辑.reins/architecture.yml。 。 。 . - 填入模块注释. 在克洛德代码中,类型
/reins-notes; 与其他特工一起询问 "在TODO行中填入.reins/notes/"中的注。 。 。 .
那就承诺一切 无所不为: install 财务报告和审定财务报表 init 只添加文件或先询问( s)--dry-run 以示他们的行为.
你得到的东西
一个计划 .reins/architecture.yml,起草人: init 从您的代码, 检查每个承诺:
version: 1
adapter: js
preset: next-app
layers: # top to bottom: a layer only imports from itself and the layers below
- { name: app, paths: ["src/app/**"] }
- { name: features, paths: ["src/features/**"] }
- { name: components, paths: ["src/components/**"] }
- { name: shared, paths: ["src/lib/**", "src/hooks/**"] }
domains: # code outside a domain only imports its public API
billing: { paths: ["src/features/billing/**"], public_api: ["src/features/billing/index.js"] }
发现一个特工可以单独解决,作为正文或 --json数字 :
✖ error layer-direction src/components/PriceTag.js → src/features/billing/index.js
Why: src/components/PriceTag.js (components) imports src/features/billing/index.js (features), but features is above components.
Fix: Move what src/components/PriceTag.js needs from features down to components or a lower layer, or invert the dependency (pass it in as props or callbacks).
reins check: 1 new (1 error, 0 warnings) · 3 in baseline · 0 fixed
Result: FAIL (new errors)
基线:今天的侵犯行为被冻结在 .reins/baseline.json,所以你开始绿色 并且只有 新设 问题失败了。 基线只能收缩.
爆炸半径在重构之前. reins impact <file-or-folder> 将真实的导入图与您的计划合并, 并解答代理在接触共享文件前的问题 : 还有谁进口的?
$ npx reins impact src/lib/date.ts
File: src/lib/date.ts (no domain)
Imported by: 2 files — billing (1), no domain (1)
Public API: no
Boundary crossings: none
Existing violations: 1 (no-cycles new; run `reins check --files src/lib/date.ts` to see them)
Notes to read: .reins/notes/lib.md
Minimum level (if the change breaks importers): small (3 file(s) in 1 domain)
跨越边界是进入域内而不是其公共 API 的导入——同样的泄漏 domain-boundary 报告,在编辑前可见。 每一种进口类型都算数,包括只输入类型:一种类型变化也打破它们。 符号级别问题(“谁打电话来” formatDate )留在grep,运行在域内 impact 列表.
模块注释 内 .reins/notes/:每个模块一个,从导入图中起草,由您的代理人填入. 一个大模块将部分的注释保存在一个文件夹中(companies.md + 键 companies/salaries.md;一名在 salaries/ 先读两本,将军. reins notes stale 排行符在代码后面.
代理工作流程
什麽 install 设置,按照代理击中的顺序:
- 宣说. 每个任务都有一个层次——
small, (中文(简体) ),medium, (中文(简体) ),large- 从分类政策来看.reins/core/policies/。 。 。 .reins scope <paths>给出客观的信号:被触摸的域,被读取的注释,最小水平. - 计划. 在更改文件前, 其他域可能导入( 用户端、 类型、 桶、 公共 API) , 代理运行
reins impact就在这 "Medium",但如果另一个域出现,可能很大"不再是一个猜测. - 编辑. 模块注释到达时, 代理打开文件的那一刻—— Claude Code hook, 或注释索引 in
AGENTS.md对于任何其他特工. - 关闭.
reins check确定边界,而不是令人惊讶;reins doctor(当地,在CI中从未出现)将所申报的关卡与分行diff和旗子 stale或缺失的音符进行比较.
图标
| 命令 | 它会做什么 |
|---|---|
reins install | 线管会引导入回波:预承诺钩(Husky或lefthook),CI工作流程, .gitignore,将规则和笔记块 AGENTS.md,则 sync。 。 。 . --dry-run, (中文(简体) ), --skip-claude |
reins init | 草稿 architecture.yml、基线、审查报告和模块说明. --dry-run, (中文(简体) ), --preset <name> |
reins check | 检查规则(git hook and CI). --update-baseline, (中文(简体) ), --coverage, (中文(简体) ), --json, (中文(简体) ), --files |
reins scope <paths> | 域,公共API,要读的注释和一些路径的最小任务级别. --json |
reins impact <file-or-folder> | 反之则 scope: 消费文件的域, 绕过公共 API 导入的域, 已经涉及的违规域, 以及如果更改打破其进口商时的最低关卡 . --json |
reins notes <path...> | 打印路径的模块注释( E)--hook: Claude代码快道. notes new <domain|folder> 从导入图中起草一个; notes stale 代码后面的注释. --json |
reins resume | 笔记本、 更改文件和注释以恢复任务 . --json, (中文(简体) ), --hook (简体中文) SessionStart(中文(简体) ) |
reins sync | 刷新 .reins/core/ (规则、政策、技能、代理人) AGENTS.md,以及可选的 Claude 代码文件. --check, (中文(简体) ), --skip-claude, (中文(简体) ), --claude |
reins update | 更新 CLI 并用您的软件包管理器安装适配器, 然后运行新的 reins sync。 。 。 . --dry-run, (中文(简体) ), --skip-claude, (中文(简体) ), --claude |
reins doctor | 本地工作流程检查:宣布的任务级别与分支 diff,笔记本,注释, AGENTS.md 尺寸。 警告,永远不要挡道,永远不要在中情局 |
reins audit, (中文(简体) ), reins progress, (中文(简体) ), reins review | 当地积压的调查结果、分册、及时审查 |
reins <command> --help 解释每一个。 每一个命令除了 check 财务报告和审定财务报表 init 还在实验中.
经纪人的技能
reins sync 保持这些技能在 .reins/core/skills/ (你自己的版本在 .reins/skills/ ) (中文(简体) ). 在 Claude 代码中, 键入它们或用你自己的话问; 其他特工通过它们找到它们 AGENTS.md。 。 。 .
| 技能 | 你的经纪人做什么 |
|---|---|
/reins-done | 关闭任务: 检查一次, 更新笔记本和它所触及模块的注释 |
/reins-notes | 从代码中填入模块注释; 从不发明决定, 将问题留给您 |
/reins-arch | 审查 architecture.yml 与代码相对并提议修改; 在批准前不应用 |
/reins-audit | 寻找改进之处,只为积压工作增添新的调查结果 |
/reins-backlog | 显示待办事宜并提议下一步要做什么 |
/reins-agent | 在 .reins/agents/ |
更新
npx reins update # from 0.8.0 on: updates the packages, then runs reins sync
从0.7或更早, update 尚未存在 : 自己更新软件包( e)npm i -D @agentreins/cli@latest @agentreins/adapter-js@latest),然后运行 npx reins sync 一次 一次吗.
读取 更改日志 你跳过的每个版本:它写着当其他东西值得做的时候.
学多点
许可证
麻省理工学院