You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Closing the 0.4.0 architecture/design tracker following the maintainer's release confirmation in this discussion. The dual Native/PTC projections, shared kernel, discovery, result references, typed source and release documentation are implemented in the merged 0.4 series; current main is 0.4.1.
This does not mark later regression reports as fixed. Session performance and lifecycle work remains separately tracked in #333/#359/#369/#382/#386/#387, and Windows execution defects in #363/#373/#374. Keeping those concrete defects separate avoids treating completion of the design plan as proof of later runtime acceptance.
Activity
Thatgfsj commentedon Oct 18, 2026
打卡
T-Auto commentedon Oct 18, 2026
在之前的版本里,我们犯了一个错误,试图用一种数据结构来让两类截然不同工作情况共用。
在 Native 模式下,直接看工具输出的是 LLM,它需要的是清晰、一眼能看懂、带有行号、排版规整的返回,灌一个几千行的严格 JSON Array,反而更吃token;而在 PTC 模式下,接收工具输出的是一段运行在沙盒里的 JS 代码,如果为了省 token 吐出一堆排版好看的纯文本,程序就得写正则表达式去扣文本,一旦稍微改个换行,正则匹配失败,脚本直接崩掉。程序要的是严格、强类型、不可篡改、字段分明的标准数据结构。
所以,这次架构重构,Native 与 PTC 分别优化,底层能力共享,上层投影彻底分离。
这是哈基米画的架构图。你们不要再嘲笑哈基米了好吗,她真的很可爱啊!
她真的很可爱啊!
T-Auto commentedon Oct 18, 2026
所以我们的OPS 0.4.0主要逻辑部分会有5个主要组件:
dsh-ops/shell其他平台默认关
ops_bash,提供 Bashdsh-ops/filedsh-ops/ptcdsh-ops/discovery(新增)ops_discover),仅在模型需要时动态加载多文件、PDF、DOC 等具体能力。dsh-ops/hide-official(迁移升级)这两个和节省Token无关的存放代码的组件暂时不变,未来会调整来让用户理解起来更方便:
dsh-ops/paneldsh-ops/tui普通模式ops工具只管普通模式,PTC 模式ops工具只管PTC 模式,互不影响,而扩展高级工具则是渐进式纰漏的高级工具的入口——裸dsh对 PDF 解析、Word 解析、表格分析、其他各种日常工作需要自己编写脚本或者下载运行库,堆叠在工具层的话会占用大量固定系统prompt。
ops_discover即为工具发现入口,模型发现哪个就用哪个,用不着就加载。依旧哈基米的图:
【ops_discover 统一 Schema 规范】
{ "name": "ops_discover", "description": "按需动态能力检索入口。当前会话缺少处理特定任务(如多文件批处理、PDF/Word阅读、高级搜索)的工具时调用。激活后的真实工具将在下一轮交互中挂载可用。禁止用于执行具体业务动作。", "parameters": { "type": "object", "properties": { "query": { "type": "string", "description": "所需能力的自然语言描述(如 'read pdf pages')或精确指定(如 'select:ops_read_many')。" }, "max_results": { "type": "integer", "minimum": 1, "maximum": 5, "default": 3, "description": "本次期望激活的能力数量上限。" } }, "required": ["query"] } }关闭入口后,会话上下文完全不暴露
ops_discover工具声明,其余组件完全不受影响T-Auto commentedon Oct 18, 2026
对ops 2.0 的老本行ops_bash其实也写的非常不优雅,真正优雅的写法是:
这样的话:
不过注意ops_bash,对windowx下的read-only和workspace-write原本的权限必须完全对齐(如果dsh 原版的 bash-local 在windows做的不好就改改)
pwsh7则提供一建升级宿主pwsh的选项,不再携带二进制包。npm装二进制什么的,不需要啦!
T-Auto commentedon Oct 18, 2026
在在普通模式下,工具的返回值是返回大模型的阅读材料。在旧版本里,哪怕读一个 10 行的文件,工具也会吐出一个 JSON 结构:
{ "file_path": "...", "lines": [ { "number": 1, "text": "..." }, ... ] }。而在 Native 模式下,工具其实应该使用紧凑扁平化排版来节省Token。
此外,
ops_read_many可以把相关的 3 个文件各自前 50 行一次性端上来,避免来回跑 3 趟;以及ops_edit_many返回不要把整个文件又打印一遍给它。Native 紧凑排版格式化标准:
ops_edit_many Schema:
{ "name": "ops_edit_many", "description": "针对单个文件的原子化多段替换。所有编辑基于同一文件初始快照校验,全部匹配成功后一次性发布,彻底规避中间脏状态。", "parameters": { "type": "object", "properties": { "file_path": { "type": "string", "description": "目标文件相对或绝对路径" }, "expected_revision": { "type": "string", "description": "可选的文件版本标识,防止基于陈旧内容写入" }, "edits": { "type": "array", "items": { "type": "object", "properties": { "old_text": { "type": "string", "description": "待替换的精确文本块(必须全局唯一)" }, "new_text": { "type": "string", "description": "替换后的新文本" } }, "required": ["old_text", "new_text"] }, "minItems": 1, "maxItems": 100 } }, "required": ["file_path", "edits"] } }上下文感知重读去重:相同文件、相同行号区间、文件
mtime与size未发生任何改变,且宿主证实前一次读取的正文仍处于当前上下文窗口中。返回标准模板:触发会话压缩或上下文截断,该去重策略立即静默失效,恢复拉取全量物理文本。
T-Auto commentedon Oct 18, 2026
在 PTC 模式下,如果工具返回纯文本,编写脚本的模型就必须写一大堆
split('\n')去拆文本。所以在 PTC 里,数据应该是严谨、结构化的,模型写的脚本拿到数据后,可以在沙盒里做各种高阶筛选,最后只向外
return一个最终统计数字。这样既能保证程序执行可靠稳定,又能实现模型上下文节省。PTC 统一 Outcome 状态信封
PTC 典型安全调用范式
Haoming9527 commentedon Oct 18, 2026
Noted
T-Auto commentedon Oct 18, 2026
路径、编码、搜索与修改的一致性也是token节省的关键,在实际使用中,笨蛋大肥鱼经常出现:
done。模型误以为全工程只有这 50 个地方,直接大刀阔斧重构,把没搜出来的 200 处代码全搞挂了。so,基本功必须扎实稳定,诚实、确定、严格一致
SearchExecutionReport 结构定义:
workingDirectory为绝对基准,不擅自缓存或绑定过期的启动路径ERR_INVALID_ENCODING并推荐专用文档/二进制工具,不可以替换为乱码问号字符对防循环与反馈闭环,AI它反复重试一个错误动作,根本原因在于系统给的反馈含糊其辞,根本不知道是文件被锁了、路径打错了,还是因为自己没权限,于是它只能瞎蒙,改个参数再试。
OPS 工具的防循环核心就是,给出绝对清晰的反馈,不让模型自己找。
每一个报错,必须明确界定副作用和重试指引:
retry: "never",明确说“你没权限,除非人类在系统侧为你提权,否则再试一万次也没用”retry: "after-state-change",必须先重新读一遍最新代码,才能再次发起写入OPS 统一执行状态与重试决策表
effectState)retry)completedappliedneverpartialpartialafter-input-changerejectednoneneverconflictnoneafter-state-changeerrornoneafter-input-changeunknownunknownnever(需后验检查)T-Auto commentedon Oct 18, 2026
在实际开发中,模型可能会干出一些在一个拥有 10 万行庞大日志的目录里执行搜索之类的事情,这时候需要预算防御。如果一个搜索结果搜出了几千条匹配项,那应该在本地受控磁盘安全区落盘,给模型返回一个引用句柄:
ref://session-xxx/ops_search/chunk-1,模型如果确实需要这批数据,可以按页去读。这里注意防递归——当模型调工具去读一个引用数据时,返回的结果如果有截断,就截断报错,不能出现读一个引用结果,又生成了一个新引用结果包住旧引用导致无限套娃预算控制:
truncatedBy: "scan-budget"。StorageReference 数据结构:
T-Auto commentedon Oct 18, 2026
PDF、DOC,各种奇怪的日常格式读取这个——应该大概不用详细说,总之,常见格式文件,ocr,文字抓取,去重之类的高级工具塞渐进式发现里,这一块可以几乎无限制的增加,又不咋挤占系统token,还有各种常用用法对应的快速工具,一点一点补上
以及TypeScript 胶水代码和 Rust 底层代码分层:
暂定代码目录与 IPC 协议:
宿主 Node 进程与 Rust Worker 间采用带 4 字节大端序长度前缀的 IPC 帧传输:
{ "version": "1.0", "requestId": "req-20261018-01", "sessionId": "session-e842", "component": "native-file", "action": "read_range", "authRoot": "/workspaces/my-project", "params": { "file_path": "src/index.ts", "offset": 1, "limit": 100 }, "budget": { "timeoutMs": 10000, "maxBytes": 65536 } }T-Auto commentedon Oct 18, 2026
对于 0.3.x 到 0.4.0 的升级部分,原来 6 个组件的配置必须通过自动化平滑映射。替换原版文件工具”在新版本中默认保持关闭——一直等到ops完全稳定。
老版本 6 组件到 0.4.0 7 组件平滑映射表:
dsh-ops/shellops_bash。dsh-ops/filedsh-ops/ptcdsh-ops/discovery),默认开启,初始包含已就绪的高阶能力。dsh-ops/hide-officialdsh-ops/paneldsh-ops/tuiGPT龙娘最喜欢的测试门禁:
ops_read_many读取 3 个文件的局部片段。ops_edit_many对单个文件执行 5 处多段修改。ops_discover激活 PDF 解析能力。ops_pdf_read;初始未激活前 Schema 泄露为 0。rejected且绝对不泄露系统上层真实路径。Nicholas023 commentedon Oct 18, 2026
打卡
Richeir commentedon Oct 18, 2026
Wow, impressive!
T-Auto commentedon Oct 20, 2026
0.4.0版本已发布,接下来的小版本迭代是修bug,优化/添加新的渐进式纰漏工具~
zhenxian-1 commentedon Oct 20, 2026
期待
Haoming9527 commentedon Oct 24, 2026
Closing the 0.4.0 architecture/design tracker following the maintainer's release confirmation in this discussion. The dual Native/PTC projections, shared kernel, discovery, result references, typed source and release documentation are implemented in the merged 0.4 series; current main is 0.4.1.
This does not mark later regression reports as fixed. Session performance and lifecycle work remains separately tracked in #333/#359/#369/#382/#386/#387, and Windows execution defects in #363/#373/#374. Keeping those concrete defects separate avoids treating completion of the design plan as proof of later runtime acceptance.