dsh-myagent(myagent):五条来路、一道门禁的个人 Agent 系统

前言

在 DSH 里跑智能体,常见做法是:你在 Web GUI 或某个 Session 里下指令,等它跑完再自己去找产物。定时任务、聊天消息、本地目录里丢下的 .md,往往要分别接进不同脚本或手工触发。myagent 把这个层次收成一套 bundle:多种来源经同一道确定性门禁变成 Ticket,每个 Ticket 在独立 DSH Session 和目录里无人值守执行,结果按「从哪来、回哪去」送回聊天室或文件。

下面按定位、能力、安装与典型用法说明 liyabgf/dsh-myagent,事实以仓库 README 与发布包为准。

这是什么

一句话:把你用一句话说清楚的事,无人值守做完,再把结果送回你说话的地方。

目标用户是一个人、一台自己的机器,不是团队多租户平台。它假定「能在本机写文件、能发 HTTP 请求的进程 = 操作者本人」,安全边界见仓库 SECURITY.md。装之前应先读 SECURITY.md:worker 无 OS 级沙箱,面板与 API 不在宿主统一认证之后。

核心功能

请求怎么走

定时排期、本地投递目录、主 Session 对话、规则、聊天平台五条来路,经同一道 gate(trigger, settings) 判定为 accepted、observed 或 ignored,理由固定八种(如 sender_not_allowed、paused、accepted 等),每次判定写入 Decision,面板可查「为什么没跑」。

放行后生成 Mandate 与 Ticket;Assignment 表示一轮执行,失败、中断、等人后再继续都会留历史。worker 通过 myagent_report 汇报状态(progress / waiting / ready / blocked / failed / dropped);结束时在 Ticket 目录写 RESULT.md,并送回来源(聊天消息或文件等)。跨进程副作用走持久化 effect 队列,崩溃后可重试。

架构裁剪自 dsh-superagent-prototype,保留 Source / Trigger / Policy / Decision / Mandate / Ticket / Assignment / Report / Delivery 等概念;门禁是确定性的,不做模型评审。

五条来路(摘要)

来源 触发方式 说明
cron 排期到点 every / daily / weekly / cron,含时区;漏跑时刻可折叠
inbox 向目录丢 *.md 约每 5 秒轮询;支持 front matter 的 title、scope、attach
session 主 Session 中 myagent_create_ticket 或面板派活 走同一门禁
rule 事件驱动(如 Ticket 结束) then 里配置 prompt 与 scope
chat Telegram / 飞书消息经桥写入频道目录 凭据不进 myagent 设置,只在桥进程 env

聊天桥在 bridges/telegram/、bridges/lark/;面板「聊天」页做接入引导(systemd / launchd 单元、env 路径、频道健康),不代管桥进程起停。

面板与日常界面

装好后第一件事:面板在 <你的 DSH Web GUI 地址>/myagent/(与 GUI 同端口子路径)。侧边栏设置旁会出现「myagent 面板」入口。日常下任务、收结果以 Telegram 或飞书为主;面板用于查账与干预。

默认 acceptMode 为 observe:门禁与 Decision 照常,但不执行、不写领域数据。确认记录合理后,再在面板改为 auto。

API 要求同源 loopback,并带请求头 x-myagent-request: 1(详见 SECURITY.md)。

刻意不做的边界

  • 不做真沙箱:worker 为完全访问;设 executor.sandbox 为 vm 不会假装隔离。
  • 不做多用户权限体系;发送者过滤依赖映射表与文件系统权限。
  • 产物可跨任务复用、手艺可沉淀,README 称这些默认自动处理,无需逐项批准。

bundle 注册 worker 专用 preset myagent-worker(去掉会向人提问、审批等易挂起无人值守的工具);主 Session 仍用 profile 默认 preset,额外挂载 myagent 工具与提示词。

安装与启用

在 DSH 宿主中安装 bundle(命令以 README 为准):

plugin_manager install_bundle  target=github:liyabgf/dsh-myagent

装进当前 profile 后启用 myagent 插件即可;路径类配置有默认值,不必先改 profile:

配置项 默认 说明
stateDir <DSH_HOME>/state/myagent 数据库与锁;修改会重挂插件
workRoot <stateDir>/work 各 Ticket 工作目录根
inboxDir <stateDir>/inbox 本地投递目录
mainSessionId myagent-main 前台主 Session
promptMaxChars 100000 提示词覆盖上限

package.json 标明许可证 MIT,当前发布版本 0.14.3;引擎要求 Node ^22.19.0 || >=24.0.0,DSH ^0.2.1-alpha.3 等 peer 依赖以包内 engines / peerDependencies 为准。

启用后可在日志中查看面板完整 URL,或访问 /myagent/api/state 的 health 排查问题。

典型用法

1. 先观察门禁,再自动执行

  1. 安装并启用插件,保持默认 observe。
  2. 打开 http://<DSH Web GUI>/myagent/,查看 Decision 与来路是否符合预期。
  3. 将 acceptMode 改为 auto,再发真实任务。

2. 本地 inbox 投递

向 inboxDir(默认 <stateDir>/inbox)放入 .md,例如:

---
title: 本周竞品动态
scope: 只读 ~/notes,产物写在本目录
attach: /abs/last-week.csv
---
整理这三家的更新,产出 digest.md 和 table.csv。

轮询接手后,文件会移到 accepted/、observed/ 或 rejected/(拒绝原因写在文件头)。

3. 聊天接入(Telegram / 飞书)

在面板「聊天」页按引导配置桥的环境变量与系统服务;消息写入频道目录后作为 chat 来源进入门禁。未映射发送者的消息会保留,映射补齐后由后续扫描放行。在聊天里回复机器人报告并追问时,系统可把追问与已完成任务归到同一工作上下文(门禁放行后处理)。

4. 主 Session 派活

在主 Session 调用 myagent_create_ticket,或在面板「派活」,与 inbox、cron 一样过同一门禁。

适用场景与注意

适合:个人单机、希望用聊天室下指令并无人值守收结果;需要 cron + 目录投递 + 规则联动;愿意用面板做监督而非日常主界面。

不适合:需要强隔离多租户、或把凭据写进面板 JSON 的团队平台场景。

安全与权限:插件以当前 DSH 进程权限运行;worker 无沙箱。安装前请阅读源码与 MIT 许可证,并阅读 SECURITY.md。社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,属 DSH 生态「一切皆插件」下的第三方 bundle。

结尾

myagent 把「多条来路 → 一道门禁 → 独立 Session 执行 → 按路返回」收进一个 DSH bundle,默认先 observe 再 auto,聊天优先、面板查账。若要试用,用官方 plugin_manager install_bundle 安装,从 /myagent/ 面板与 SECURITY.md 开始即可。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜