🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

任务图内核 StarChen-Cycler/octie-dsh-plugin

DeepSeek Harnessv1.3.2
StarChen-Cycler44 天前有提交已提供中文文档扫描:含敏感能力

用只读状态机规划并追踪 agent 任务依赖

31.2/100
综合分
2
GitHub 星标
20
npm 周下载
—/5
用户评分

数据截至 2026/9/23 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add octie-cli
npm 源 · octie-cli 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · tool
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 44 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包octie-cli @ 1.3.2
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 04:18:10

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 62 处,展示前 41 条)
  • 读取本地文件
    octie/plugin/index.mjs:479
    const data = JSON.parse(readFileSync(join(homedir(), '.octie', 'projects.json'), 'utf8'));
  • 读取本地文件
    octie/plugin/index.mjs:522
    const match = /^templateVersion: *( +)/m.exec(readFileSync(join(dir, 'preset.yml'), 'utf8'));
  • 读取本地文件
    octie/plugin/index.mjs:532
    hash.update(readFileSync(join(templateDir, 'agent.cordis.yml')));
  • 读取本地文件
    octie/plugin/index.mjs:533
    hash.update(readFileSync(join(templateDir, 'preset.yml')));
  • 读取本地文件
    octie/plugin/index.mjs:539
    return JSON.parse(readFileSync(join(dir, PRESET_STAMP), 'utf8'));
  • 写入本地文件
    octie/plugin/index.mjs:546
    writeFileSync(join(dir, PRESET_STAMP), JSON.stringify(stamp, null, 2) + '\n');
  • 读取本地文件
    octie/plugin/index.mjs:563
    const provisioned = existsSync(join(targetDir, 'agent.cordis.yml'));
  • 写入本地文件
    octie/plugin/index.mjs:590
    mkdirSync(targetDir, { recursive: true });
  • 写入本地文件
    octie/plugin/index.mjs:591
    copyFileSync(join(templateDir, 'agent.cordis.yml'), join(targetDir, 'agent.cordis.yml'));
  • 写入本地文件
    octie/plugin/index.mjs:592
    copyFileSync(join(templateDir, 'preset.yml'), join(targetDir, 'preset.yml'));
  • 写入本地文件
    octie/plugin/index.mjs:617
    mkdirSync(targetDir, { recursive: true });
  • 写入本地文件
    octie/plugin/index.mjs:619
    copyFileSync(join(template, 'agent.cordis.yml'), join(targetDir, 'agent.cordis.yml'));
  • 发起网络请求
    octie/client.js:39
    const res = await fetch(url, { headers: { Accept: 'application/json' } });
  • 发起网络请求
    octie/client.js:824
    const res = await fetch('/api/octie/preset/status', { headers: { Accept: 'application/json' } });
  • 发起网络请求
    octie/client.js:838
    const res = await fetch('/api/octie/preset/update', { method: 'POST', headers: { Accept: 'application/json' } });
  • 执行外部命令来自配置/变量
    octie/bin/octie.cjs:8
    const child = spawn(process.execPath, [cliPath, ...process.argv.slice(2)], {
  • 删除本地文件
    octie/dist/core/storage/file-store.js:246
    await unlink(this.lockFilePath).catch(() => undefined);
  • 读取本地文件
    octie/dist/core/storage/file-store.js:255
    const lockStats = await stat(this.lockFilePath);
  • 删除本地文件
    octie/dist/core/storage/file-store.js:257
    await unlink(this.lockFilePath).catch(() => undefined);
  • 读取本地文件
    octie/dist/core/registry/index.js:25
    const mtimeMs = statSync(join(projectPath, '.octie', 'project.json')).mtimeMs;
  • 读取本地文件
    octie/dist/core/registry/index.js:58
    if (!existsSync(octieDir)) {
  • 写入本地文件
    octie/dist/core/registry/index.js:59
    mkdirSync(octieDir, { recursive: true });
  • 读取本地文件
    octie/dist/core/registry/index.js:65
    if (!existsSync(entry.path)) {
  • 读取本地文件
    octie/dist/core/registry/index.js:85
    if (!existsSync(registryPath)) {
  • 读取本地文件
    octie/dist/core/registry/index.js:93
    const content = readFileSync(registryPath, 'utf-8');
  • 读取本地文件
    octie/dist/core/registry/index.js:146
    if (Object.keys(registry.projects).length === 0 && existsSync(registryPath)) {
  • 写入本地文件
    octie/dist/core/registry/index.js:160
    writeFileSync(tempPath, JSON.stringify(registry, null, 2), 'utf-8');
  • 写入本地文件
    octie/dist/core/registry/index.js:161
    renameSync(tempPath, registryPath);
  • 删除本地文件
    octie/dist/core/registry/index.js:172
    unlinkSync(tmpPath);
  • 删除本地文件
    octie/dist/core/registry/index.js:201
    unlinkSync(lockPath);
  • 删除本地文件
    octie/dist/core/registry/index.js:213
    unlinkSync(lockPath);
  • 读取本地文件
    octie/dist/service/engine.js:60
    if (!existsSync(notesPath)) {
  • 读取本地文件
    octie/dist/service/engine.js:64
    const fileContent = readFileSync(notesPath, 'utf-8').trim();
  • 发起网络请求
    octie/dist/service/engine.js:176
    const response = await fetch(`${serverUrl}/api/cache/invalidate?project=${encodeURIComponent(projectPath)}`, { method: 'POST', signal: AbortSignal.tim
  • 删除本地文件
    octie/dist/service/engine.js:210
    unlinkSync(LAST_SERVER_URL_FILE);
  • 读取本地文件
    octie/dist/service/engine.js:216
    if (existsSync(LAST_SERVER_URL_FILE)) {
  • 读取本地文件
    octie/dist/service/engine.js:217
    return readFileSync(LAST_SERVER_URL_FILE, 'utf-8').trim() || null;
  • 读取本地文件
    octie/dist/service/tasks.js:135
    if (!existsSync(notesPath))
  • 读取本地文件
    octie/dist/service/tasks.js:138
    return readFileSync(notesPath, 'utf-8').trim();
  • 删除本地文件递归
    octie/dist/service/handoff.js:43
    rmSync(childProjectPath, { recursive: true, force: true });
  • 读取本地文件
    octie/dist/service/handoff.js:59
    if (existsSync(childProjectPath)) {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 只读状态机规划任务
  • 追踪任务依赖
  • 实时DAG任务面板

面向智能体时代的状态导向任务图内核——DeepSeek Harness 插件包:13 个 octie_* 工具、octie Cordis 服务与事件、实时 DAG 任务面板、内置智能体预设。状态靠推导,不靠设置。

README

由 DeepSeek 最新模型翻译生成
octie-dsh-plugin 状态:项目处于增量维护中(under incremental maintenance) ——新特性、修复与文档会以小幅增量持续合入(例如 DSH 客户端任务面板、项目活跃度排序、外部变更实时同步、图物理开关、随插件预置的 Octie 任务图模式、octie 使用技能等)。 功能以「先可用、再迭代」的方式演进。 Octie —— agent 时代的状态导向任务图内核(state-oriented task graph kernel),重构为 DeepSeek Harness(DSH)可安装的 bundle 插件。State is derived, not set:状态只读派生,而非手工设置——the task layer that every agent framework can call。 Octie 是一个面向 agent 时代的持久化任务图状态机:节点 = 原子任务,边 = blocker 依赖,状态只读派生(ready → in_progress → in_review → completed,唯一手动转移是 approve),完成一个任务经 BFS 自动解锁下游;原子校验在创建时拒绝模糊任务;不可变快照(SHA-256)保证长会话可恢复。
展开完整文档(README 剩余 1 节)
octie-dsh-plugin

状态:项目处于增量维护中(under incremental maintenance) ——新特性、修复与文档会以小幅增量持续合入(例如 DSH 客户端任务面板、项目活跃度排序、外部变更实时同步、图物理开关、随插件预置的 Octie 任务图模式、octie 使用技能等)。
功能以「先可用、再迭代」的方式演进。

Octie —— agent 时代的状态导向任务图内核(state-oriented task graph kernel),重构为 DeepSeek Harness(DSH)可安装的 bundle 插件。State is derived, not set:状态只读派生,而非手工设置——the task layer that every agent framework can call。

Octie 是一个面向 agent 时代的持久化任务图状态机:节点 = 原子任务,边 = blocker 依赖,状态只读派生(ready → in_progress → in_review → completed,唯一手动转移是 approve),完成一个任务经 BFS 自动解锁下游;原子校验在创建时拒绝模糊任务;不可变快照(SHA-256)保证长会话可恢复。

两种使用方式

Octie 同时是两条并行的一等接口,共享同一份任务图存储(.octie/project.json),可随时互换使用:

| 方式 | 形态 | 适合 |
| 独立 CLI / Web UI | 全局安装 octie 命令 + octie serve 网页界面 | 终端驱动、脚本管道、不需要 DSH 的场景 |
| DSH bundle 插件 | 13 个 octie_ 模型工具 + Cordis 服务 + 任务面板 + 预置 agent preset | 让 DSH agent 直接在会话里规划、执行、追踪任务图 |

你能得到什么

- 独立 CLI(octie)与 Web UI(octie serve):不装 DSH 也能用,见下文「CLI 独立使用」
- 13 个 octie_ 模型工具 + octie Cordis 服务 + octie/ 事件——DSH 会话里直接规划、执行、追踪任务图
- DSH 客户端任务面板:列表 + 分层 DAG 图视图、项目活跃度排序、实时同步、图物理开关
- 「Octie 任务图模式」agent preset:随插件自动预置,开箱即用的任务图工作模式

CLI 独立使用

要求 Node.js ≥ 20。

安装(npm,已发布)
npm install -g octie-cli

或从源码构建(开发向,详见 docs/development.md)
git clone https://github.com/StarChen-Cycler/octie-dsh-plugin
cd octie-dsh-plugin/octie && npm install && npm run build:cli

快速上手:

octie init # 初始化项目(创建 .octie/)
octie create \
--title "Implement login endpoint" \
--description "POST /api/auth/login:校验凭据、签发 JWT。" \
--success-criterion "Returns 200 with JWT for valid credentials" \
--deliverable "src/api/auth/login.ts"
octie list --format md # 查看任务 octie update --complete-criterion # 维护进度 octie approve # 审批:BFS 解锁下游 octie serve # 网页界面(默认 3456 端口)

CLI 的完整使用原则(建任务 / 建依赖 / 图操作 / 执行审批 / need_fix)见 docs/cli-usage-principles.md。

安装(DSH)

要求 Node.js ≥ 20。

推荐:npm 包(预构建,秒级安装):

dsh plugin --profile add octie-cli

或直接从 GitHub 安装(仓库随附构建产物,开箱即用;不含 octie serve 的网页界面资源,如需使用自行构建):

dsh plugin --profile add github:StarChen-Cycler/octie-dsh-plugin

安装后重启 DSH:插件会自动预置「Octie 任务图模式」(见下文),cordis.patch.yml 挂载 octie-dsh 插件行,13 个工具与 octie 技能即时可用。

DSH 插件层的使用原则(13 个 octie_ 工具的用法规范)见 docs/dsh-plugin-usage-principles.md。

更新(Update)

两条接口各自更新,先全局 CLI、再 DSH 插件(顺序反了有旧全局包遮蔽问题,见下):

① 独立 CLI(终端 + octie serve)
npm update -g octie-cli
octie --version # 确认 ≥ 1.2.1

② DSH bundle 插件
dsh plugin --profile update octie-cli

③ 验证挂载形态(应为 bundle 层,而非 plain dependency)
dsh --profile --dump-config | grep -i octie

④ 重启 DSH 后刷新网页(Node 侧改动必须重启才生效)

两个已知坑:

- 旧全局包遮蔽:全局 octie-cli 若停留在 1.2.0 之前(尚无 dsh.bundle 声明的版本),DSH 会读到旧 manifest 并把插件当普通依赖安装——面板与工具静默失效。先更新全局 CLI,再 dsh plugin ... update 一次即可恢复;完整排查见 octie/TROUBLESHOOTING.md。
- git URL 安装:当初用什么来源 add,update 就带同一个来源(
dsh plugin --profile update github:StarChen-Cycler/octie-dsh-plugin),
否则两条安装路径会并存。

客户端任务面板

- 项目活跃度排序:项目下拉按「最近任务更新时间」排序——最近动过的项目自动浮到顶部并被面板默认选中;侧边栏树按子树内最新活动排名,活跃子项目会把父项目组一起顶上去。
- 实时同步:会话内 octie_ 工具变更秒级推送到面板(列表 + 图 + 下拉同步刷新);外部写入(终端 octie CLI、Web UI、其他 DSH 会话)也会被自动检测并实时刷新。
- 图物理开关:图视图右上角的 Physics 开关——开启时小球受力(扰动后弹回平衡布局、拖拽带动邻居、松手回弹);关闭时所有节点丝滑滑回整齐的无受力布局后定格。

Octie 任务图模式

插件自带一个 DSH agent preset 模板,安装后自动预置到你的用户 preset 目录($DSH_HOME/.agent-presets/octie/),已存在则绝不覆盖:

- persona 直接注入 Octie 心智模型与工作流程(图是持久真相、原子任务、显式绝对 project 路径、审批门、先可用再迭代)
- 要求 agent 在第一次调用 octie_ 工具前先读取 octie 技能全文
- 新建会话时在模式选择器中选择「Octie 任务图模式」即可使用

用法

任务图组件的使用原则(工具签名、绝对路径约定、不变式、模式库、陷阱):

- CLI:docs/cli-usage-principles.md
- DSH 插件工具:docs/dsh-plugin-usage-principles.md

License

MIT(沿用上游)

给开发者

开发相关内容——环境搭建、构建与测试、CI、dist 提交策略、发布流程、架构文档索引——请见 docs/development.md。
预览分享卡片长什么样 ↓StarChen-Cycler/octie-dsh-plugin
分享 · DeepSeek Harness Hub
StarChen-Cycler/octie-dsh-plugin

用只读状态机规划并追踪 agent 任务依赖

这是你的仓库?认领条目

回到顶部