每轮自动把项目决策与待办注入 AI 上下文
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add rui08984-dot/sessionrelay-eco该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 18 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/11/3) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 97 处,展示前 74 条)
- 执行外部命令固定命令packages/codex-adapter/brief-shared.mjs:101
const out = execFileSync('git', ['-c', 'core.quotepath=false', '-C', root, 'status', '--porcelain=v1', '--branch'], - 读取本地文件packages/codex-adapter/brief-shared.mjs:140
if (!existsSync(p)) return null; - 读取本地文件packages/codex-adapter/brief-shared.mjs:141
if (statSync(p).size > 1048576) { - 读取本地文件packages/codex-adapter/brief-shared.mjs:146
const lines = readFileSync(p, 'utf8').split(/ ? /); - 读取本地文件packages/codex-adapter/brief-turn.mjs:52
try { return JSON.parse(readFileSync(0, 'utf8') || '{}'); } catch { return {}; } - 读取本地文件packages/codex-adapter/brief-turn.mjs:119
if (!existsSync(f)) return ''; - 读取本地文件packages/codex-adapter/brief-turn.mjs:140
if (!existsSync(f)) return ''; - 读取本地文件packages/codex-adapter/brief.mjs:33
if (existsSync(fileURLToPath(here))) return import(here.href); - 读取本地文件packages/codex-adapter/brief.mjs:44
const raw = readFileSync(0, 'utf8'); - 读取本地文件packages/codex-adapter/brief.mjs:66
if (existsSync(join(dir, '.git'))) return dir; - 读取本地文件packages/codex-adapter/brief.mjs:89
|| (existsSync(join(root, 'core', 'SessionRelay', 'dist', 'srelay.js')) - 执行外部命令来自配置/变量packages/codex-adapter/brief.mjs:94
return execFileSync(process.execPath, [SRELAY, ...args], - 读取本地文件packages/codex-adapter/brief.mjs:99
const hasStack = existsSync(join(root, '.sessionrelay')); - 执行外部命令来自配置/变量packages/codex-adapter/brief.mjs:104
execFileSync(process.execPath, [SRELAY, 'init', '--yes', '--backfill', 'none'], - 读取本地文件packages/codex-adapter/brief.mjs:110
if (!existsSync(join(root, '.sessionrelay'))) { dbg('未接入记忆库,零打扰'); process.exit(0); } - 读取本地文件packages/codex-adapter/engine.mjs:29
if (!c || !existsSync(c)) { dbg('候选不存在:', c); continue; } - 读取本地文件packages/codex-adapter/install.mjs:48
if (!existsSync(file)) return null; - 读取本地文件packages/codex-adapter/install.mjs:51
for (let i = 1; existsSync(dst); i++) dst = file + '.bak-' + ts + '-' + i; - 写入本地文件packages/codex-adapter/install.mjs:52
if (!DRY) copyFileSync(file, dst); - 读取本地文件packages/codex-adapter/install.mjs:69
const srcDir = existsSync(siblingZcode) ? siblingZcode : HERE; - 读取本地文件packages/codex-adapter/install.mjs:70
const deps = readdirSync(srcDir) - 写入本地文件packages/codex-adapter/install.mjs:75
if (!DRY) mkdirSync(HOOK_DIR, { recursive: true }); - 读取本地文件packages/codex-adapter/install.mjs:78
if (!existsSync(src)) { log(' ⚠️ 缺文件 ' + src); continue; } - 写入本地文件packages/codex-adapter/install.mjs:80
if (!DRY) copyFileSync(src, join(HOOK_DIR, f)); - 读取本地文件packages/codex-adapter/install.mjs:101
if (existsSync(HOOKS_JSON)) { - 写入本地文件packages/codex-adapter/install.mjs:116
if (!DRY) { backup(HOOKS_JSON); writeFileSync(HOOKS_JSON, JSON.stringify(cfg, null, 2) + '\n'); } - 写入本地文件packages/codex-adapter/install.mjs:132
if (!DRY) { backup(HOOKS_JSON); writeFileSync(HOOKS_JSON, JSON.stringify(cfg, null, 2) + '\n'); } - 写入本地文件packages/codex-adapter/install.mjs:156
if (!DRY) { backup(CONFIG_TOML); writeFileSync(CONFIG_TOML, toml.replace(/ *$/, '') + block); } - 删除本地文件递归packages/codex-adapter/install.mjs:175
try { rmSync(SKILL_DST, { recursive: true, force: true }); } catch { } - 删除本地文件递归packages/codex-adapter/install.mjs:201
if (existsSync(HOOK_DIR) && !DRY) { rmSync(HOOK_DIR, { recursive: true, force: true }); act(' 删除 ' + HOOK_DIR); } - 删除本地文件递归packages/codex-adapter/install.mjs:202
if (existsSync(SKILL_DST) && !DRY) { rmSync(SKILL_DST, { recursive: true, force: true }); act(' 删除 ' + SKILL_DST); } - 发起网络请求packages/dsh-panel/lib/client.js:38
const res = await fetch(url, post - 写入剪贴板packages/dsh-panel/lib/client.js:78
navigator.clipboard.writeText(text).then(() => cb && cb(true)).catch(() => cb && cb(false)); - 执行外部命令来自配置/变量packages/dsh-panel/lib/index.js:123
execFile(process.execPath, [file, ...argv], { timeout: 300000, windowsHide: true, maxBuffer: 16 * 1024 * 1024, encoding: 'utf8' }, - 发起网络请求packages/dsh-panel/selftest.mjs:53
const res = await fetch(url, post ? { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify(params || {}) } : {}); - 发起网络请求packages/dsh-panel/selftest.mjs:64
ok('旧前缀 /srelay-panel/api 也通', (await fetch(base + '/srelay-panel/api/diagnostics')).status === 200); - 发起网络请求packages/dsh-panel/selftest.mjs:142
ok('POST 坏 JSON → 400', (await fetch(base + '/srelay/api/overview', { method: 'POST', headers: { 'content-type': 'application/json' }, body: '{oops' } - 发起网络请求packages/dsh-panel/selftest.mjs:143
ok('PUT → 405', (await fetch(base + '/srelay/api/overview', { method: 'PUT' })).status === 405); - 执行外部命令来自配置/变量packages/dsh-panel/selftest.mjs:183
const r = execFileSync(process.execPath, [cliPath, 'lifecycle', '--status', '--json'], { encoding: 'utf8', timeout: 60000, env: runEnv, windowsHide: t - 执行外部命令来自配置/变量packages/dsh-plugin/index.js:157
const child = spawn(NODE, [SRELAY, 'watch', '--foreground', '--global'], { - 执行外部命令来自配置/变量packages/dsh-plugin/index.js:166
execFile(NODE, [SRELAY, ...args], - 执行外部命令固定命令packages/dsh-plugin/index.js:349
const out = execFileSync('git', ['-c', 'core.quotepath=false', '-C', root, 'status', '--porcelain=v1', '--branch'], { - 执行外部命令来自配置/变量packages/dsh-plugin/index.js:543
execFile(NODE, [SRELAY, ...args], - 执行外部命令来自配置/变量packages/dsh-plugin/index.js:690
const decRaw = execFileSync(NODE, [SRELAY, 'decisions', '--limit', '200', '--json'], opts) - 执行外部命令来自配置/变量packages/dsh-plugin/index.js:691
const unrRaw = execFileSync(NODE, [SRELAY, 'unresolved', '--limit', '200', '--json'], opts) - 执行外部命令来自配置/变量packages/dsh-plugin/src/cli.js:55
const child = execFile( - 执行外部命令固定命令packages/dsh-plugin/src/selftest.mjs:24
const psOut = execFileSync('powershell', ['-NoProfile', '-Command', psCmd], { encoding: 'utf8', windowsHide: true }).trim() - 读取本地文件packages/dsh-plugin/src/tools.js:49
if (!existsSync(join(homedir(), '.dsh', 'sessions'))) return - 读取本地文件packages/dsh-plugin/src/tools.js:51
if (!existsSync(cfg)) return - 读取本地文件packages/dsh-plugin/src/tools.js:52
const j = JSON.parse(readFileSync(cfg, 'utf8')) - 写入本地文件packages/dsh-plugin/src/tools.js:56
writeFileSync(cfg, JSON.stringify(j, null, 2)) - 读取本地文件packages/dsh-plugin/src/tools.js:318
if (existsSync(dbFile)) { - 读取本地文件packages/dsh-plugin/src/tools.js:328
if (!existsSync(dbFile)) { - 执行外部命令固定命令packages/dsh-plugin/vendor-srelay.mjs:136
const out = execFileSync('npm', ['pack', PKG, '--pack-destination', tmp], { - 执行外部命令固定命令packages/dsh-plugin/vendor-srelay.mjs:141
execFileSync('tar', ['-xzf', tarball, '-C', tmp], { stdio: 'inherit' }) - 执行外部命令固定命令packages/dsh-plugin/vendor-srelay.mjs:149
execFileSync('npm', ['install', '--omit=dev', '--no-audit', '--no-fund'], { cwd: VENDOR, stdio: 'inherit' }) - 执行外部命令固定命令packages/zcode-adapter/brief-shared.mjs:101
const out = execFileSync('git', ['-c', 'core.quotepath=false', '-C', root, 'status', '--porcelain=v1', '--branch'], - 读取本地文件packages/zcode-adapter/brief-shared.mjs:140
if (!existsSync(p)) return null; - 读取本地文件packages/zcode-adapter/brief-shared.mjs:141
if (statSync(p).size > 1048576) { - 读取本地文件packages/zcode-adapter/brief-shared.mjs:146
const lines = readFileSync(p, 'utf8').split(/ ? /); - 读取本地文件packages/zcode-adapter/brief-turn.mjs:52
try { return JSON.parse(readFileSync(0, 'utf8') || '{}'); } catch { return {}; } - 读取本地文件packages/zcode-adapter/brief-turn.mjs:119
if (!existsSync(f)) return ''; - 读取本地文件packages/zcode-adapter/brief-turn.mjs:140
if (!existsSync(f)) return ''; - 读取本地文件packages/zcode-adapter/brief.mjs:20
if (process.env.SRELAY_CLI && existsSync(process.env.SRELAY_CLI)) return process.env.SRELAY_CLI; - 读取本地文件packages/zcode-adapter/brief.mjs:30
for (const c of candidates) { try { if (existsSync(c)) return c; } catch {} } - 读取本地文件packages/zcode-adapter/brief.mjs:40
if (existsSync(join(dir, '.git'))) return true; - 读取本地文件packages/zcode-adapter/brief.mjs:79
if (existsSync(join(startDir, '.sessionrelay', 'relay.sqlite'))) return null; - 读取本地文件packages/zcode-adapter/brief.mjs:84
if (existsSync(join(dir, '.git'))) { gitRoot = dir; break; } - 执行外部命令来自配置/变量packages/zcode-adapter/brief.mjs:100
return execFileSync(NODE, [SRELAY, ...args], { cwd: root, timeout: 4000, encoding: 'utf8', windowsHide: true }); - 读取本地文件packages/zcode-adapter/brief.mjs:112
let hasStack = existsSync(join(root, '.sessionrelay')); - 执行外部命令来自配置/变量packages/zcode-adapter/brief.mjs:131
if (SRELAY) execFileSync(NODE, [SRELAY, 'init', '--yes', '--backfill', 'none'], { cwd: target, timeout: 15000, windowsHide: true }); - 写入本地文件packages/zcode-adapter/brief.mjs:146
writeFileSync(cfgPath, JSON.stringify(j, null, 2)); - 读取本地文件packages/zcode-adapter/engine.mjs:29
if (!c || !existsSync(c)) { dbg('候选不存在:', c); continue; } - 执行外部命令来自配置/变量packages/zcode-adapter/install.mjs:112
out = execFileSync(NODE, [path.join(TARGET, 'brief.mjs')], { cwd: os.tmpdir(), timeout: 30000, encoding: 'utf8', windowsHide: true });
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
SessionRelay 生态 · AI 项目记忆层:DSH 插件 + ZCode 适配器 + 核心库(本地优先 · 零神经网络 · 离线可用)
README
由 DeepSeek 最新模型翻译生成SessionRelay 生态 · AI 项目记忆层
让你的 AI 记住这个项目:决策、未决问题、最近在动的东西,在你开口之前就摆到它面前。
本地优先 · 零神经网络 · 完全离线可用 · 一个项目一个库。
本项目是 SessionRelay(MIT)的深度改造,外加两端集成,一个仓库装下全部内容。
⬇️ 先看你用哪个客户端,就下哪个
| 你在用什么 | 下载 | 干什么用的 | 大小 |
| DeepSeek Harness (DSH) | dsh-plugin-0.2.1.zip | 每轮自动把项目简报注入 system prompt | ~20MB(自带运行时) |
| ZCode | zcode-adapter-1.0.1.zip | 开场简报 + 每轮相关召回(SessionStart + UserPromptSubmit) | ~21KB |
| 两个都用 / 新机器一次装齐 | ses-offline-\<日期\>.zip | 全家桶:内核产物 + 插件 + 适配器 + 技能 + 工具 | ~20MB |
三个包都在 Releases 页。
两个客户端都还需要内核(记忆本体)——从源码装一次即可,见下面「三分钟装上」。
展开完整文档(README 剩余 1 节)
SessionRelay 生态 · AI 项目记忆层 让你的 AI 记住这个项目:决策、未决问题、最近在动的东西,在你开口之前就摆到它面前。 本地优先 · 零神经网络 · 完全离线可用 · 一个项目一个库。 本项目是 SessionRelay(MIT)的深度改造,外加两端集成,一个仓库装下全部内容。 ⬇️ 先看你用哪个客户端,就下哪个 | 你在用什么 | 下载 | 干什么用的 | 大小 | | DeepSeek Harness (DSH) | dsh-plugin-0.2.1.zip | 每轮自动把项目简报注入 system prompt | ~20MB(自带运行时) | | ZCode | zcode-adapter-1.0.1.zip | 开场简报 + 每轮相关召回(SessionStart + UserPromptSubmit) | ~21KB | | 两个都用 / 新机器一次装齐 | ses-offline-\<日期\>.zip | 全家桶:内核产物 + 插件 + 适配器 + 技能 + 工具 | ~20MB | 三个包都在 Releases 页。 两个客户端都还需要内核(记忆本体)——从源码装一次即可,见下面「三分钟装上」。 傻瓜式安装(每端三步) DSH 用户 1. 下载 dsh-plugin-0.2.1.zip,解压 2. 把 dsh-plugin/ 整个目录复制到 <你的 DSH 配置目录>/profiles/<profile>/local-plugins/dsh-srelay-brief/ 3. 重启 DSH → 新开会话,开场应出现 📋 看板 / 决策行 (Windows 上 DSH 配置目录一般在 C:/Users/<你>/.dsh/;profile 常见是 web 或 desktop。) 包内 README-INSTALL.md 有同一份步骤 + 排障表。 ZCode 用户 1. 下载 zcode-adapter-1.0.1.zip,解压 2. 在解压出来的 zcode-adapter/ 里跑两条命令: node install.mjs # 先看计划,不写任何东西(dry-run) node install.mjs --apply # 真装:拷文件 + 注册 SessionStart / UserPromptSubmit 两个 hook 3. 在真实项目目录里跑一次 brief.mjs 验收,或直接新开会话看有没有 📍项目状态简报 (安装器会先备份你的 ZCode 配置,失败了能精确恢复。) 它解决什么问题 命令行 AI(ZCode、Claude Code…)的工作目录天然等于项目根,开场读一次项目状态是顺手的事; 桌面端 AI(DSH)三条常规信号全断——你换个窗口继续干活,它对项目既有的决策一无所知。 更麻烦的是静默半失效:装了一个看起来正常的记忆插件,命令成功、库建好了、自检全绿——而你的会话永远采不进来,全程零报错。这个仓库里几乎每一处设计,都是被这类「绿着的坏」逼出来的(详见 docs/ENGINEERING-NOTES.md)。 三个核心能力 1. 每轮自动带上项目简报(DSH 侧)不是写死在文件里,而是每个模型步骤前现查一次记忆库——这一轮你做的决定,下一轮它就知道。 简报限 1200 字符,走 SQL 直查:冷路径约 5ms,而调 CLI 子进程要 310–360ms。 2. 开场自动注入(ZCode 侧) SessionStart hook 组装简报塞进会话开场。任何失败 = 空输出 = 不阻塞会话。 3. 一个项目一个库,永不合并 <项目>/.sessionrelay/relay.sqlite,SQLite + FTS5,中文分词(jieba / bigram 可选)。 隐私边界就是文件边界:删掉目录即彻底消失。 三分钟装上(源码方式) 完整步骤(含离线、沙箱验证、卸载回滚):INSTALL.md 1) 内核:装到全局(两个客户端共用) cd packages/core && npm install && npm run build && npm i -g . 2) 给某个项目建记忆库 cd /path/to/your-project && srelay init 3) 选你的端(见上面「傻瓜式安装」) 完全离线(新机器、无 npm、无网络):用 Release 里的全家桶,见 release/README.md。 仓库结构 packages/core/ 核心库(TypeScript):采集 → 提取 → 检索 → 归档 → MCP packages/dsh-plugin/ DSH 插件(vendor 由 Release 包提供) packages/zcode-adapter/ ZCode SessionStart hook + 一键安装器 skills/handoff-atlas/ 交接与全资源地图技能(含锚点审计、地图生成器) tools/ 安装器 / 重建 / 一致性守门 / 召回探针 / 客户端打包 docs/ 架构、工程笔记、常见问题 release/ 离线包与客户端包说明、发布清单 全局经验层(🌍 跨项目经验) 记忆原本是一个项目一个库——你在 A 项目踩的坑,B 项目完全不知道。 经验层补上这一块:跨项目、有出处、会挑轻重、还会退休的老手经验本。 它收什么 | ✅ 收 | ❌ 不收 | | 环境/工具的事实(本机 pnpm 必须 ≥10.34) | 一次性的具体状态(今天改了 db.ts——那是项目记忆的活) | | 踩过的坑 + 判据(自动推翻实测误配 87%,别再试) | 主观评价、未验证的推测 | | 操作配方(改完必须跑 X) | 密钥/凭证(只存去哪儿找,永不存值) | | 跨项目都成立的口径(数字必须绑快照与口径) | 模型自己的感想 | 四道闸(越往上越权威) | 闸 | 判据 | 不过会怎样 | | 闸 0 出处(准入) | 必须挂得上可核验出处:真实工具调用记录 / 用户原话逐字 / 文件内容 | 降为 inferred,只能当草稿,永不进注入层 | | 闸 1 定级 | verified-tool 9.0 / verified-user 7.5 / verified-file 6.0;阈值 5.5 | 沉到线下(仍可搜到,不删) | | 闸 2 相关性 | 要与本轮具体重合(命中标识符或实词);常用词不算数 | 不注入 | | 闸 3 人工确认 | draft → verified,只有人能升 | 不许升作用域 | 不能随便入库的落地:模型自动产的一律 draft(不进注入层,等于候审);升 verified 只有两条路——证据到位 或 人工确认;升作用域必须人工确认;永不自动删(退休只是不再默认注入)。 作用域 | 作用域 | 谁看得见 | 怎么产生 | | project | 只有本工作区 | 默认 | | domain | 同领域标签的项目 | 需证据(同领域 ≥2 个工作区各自确认过) | | global | 所有项目 | 只有显式升级 | 用法 SRELAY_GLOBAL_HOME=~/.sessionrelay srelay lesson add "<一句话经验>" --source <出处> --grade verified-user --scope global srelay lesson list # ● 可进注入层 / ○ 已退休(仍可搜) srelay lesson search <关键词> # 换词能命中(复用项目同一套分词器) srelay lesson harvest # 从项目记忆里刨候选(只产草稿) srelay lesson confirm <id...> # 人工复核:确认即证据(inferred → verified-file 6.0) srelay lesson maintain # 年龄衰减 / 退休 / 复活 srelay lesson export # 导出 Markdown(人可读、可 git、可手改) 注入预算(两端不同,都不挤占简报) | 端 | 时机 | 预算 | | ZCode | SessionStart 开场 | 按重要度给最重要的几条(开场还没有本轮可言) | | ZCode | UserPromptSubmit 每轮 | 按相关性筛(经验 ≤200 字符 / 旧决策 ≤2 条);没命中就整段不出现 | | DSH | 每个模型步骤前 | 按重要度给 ≤200 字符 / ≤3 条 | 检索排序:多路融合 候选很多、但注入只放得下几条 —— 决定放哪几条的是融合排序:三条路各报一份名单(FTS 主路 / 改写路 / 不走分词器的子串路),按 Σ w/(60+rank) 合成一份, 被越多路认、且在各自名单越靠前,就越可信。长度惩罚进到每条路内部(巨型会话在每条路上都是第一名,事后乘系数改不动)。 实测(129 条/臂):hit@1 +1.5~7.0 个百分点、hit@3 +1.5~4.6;hit@10 −1.5~3.9(用尾部换头部,对注入场景正合适)。 复跑:npx tsx core/SessionRelay/scripts/recall-bench.ts <库路径> --n 150。 实测数字(不是宣传语) | 项 | 数字 | 怎么来的 | | 简报取数 | 冷路径 ~5ms / 热路径 ~1ms | SQL 直查 vs CLI 子进程 310–360ms | | 单库规模 | 583 会话 / 43,253 条消息 | 真实项目库 | | 关键词检索命中 | 20/20 进 top-10 | tools/ses-recall-probe.mjs 20 问基准 | | 大白话检索命中 | 17/20 进 top-10(top-1 仅 10/20) | 同上——这是本项目的已知短板,写在明处 | | 提取规则版本 | EXTRACT_VERSION = 18 | 每次改规则都要能重算存量 | | 一致性守门 | A–I 九段全绿 | tools/check-versions.mjs | 与上游的关系 上游骨架(旁路捕获 / 规则提取 / SQLite+FTS5 / 三反幻觉 / 删除权在人)一行没动,全部是增量: DSH 适配器、第六采集源 dsh、自动归档、提取质量八层防线、跨端简报、项目判定、 srelay doctor 体检、多副本一致性守门。 不追求与上游合并——本项目按自有仓库独立发展。上游版权与许可完整保留(见 LICENSE)。 许可 MIT。上游 © EwanJasper,本仓库改造部分 © rui08984-dot。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
rui08984-dot/sessionrelay-eco
每轮自动把项目决策与待办注入 AI 上下文
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,489已汉化DSH
73.1
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,918已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,453已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
Download DS Bot for Windows 10/11 64-bit / 下载 Windows…
★ 5,293已汉化DSH
71.2
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,797已汉化DSH
71.1
这是你的仓库?认领条目